i'm developing server-client application. server 1 embed grizzly server exposing rest services , client should android app. exposing rest services i'm using spring.my resource this:
@component @path("/info") public class inforesource { private static logger logger = logger.getlogger(inforesource.class); @suppresswarnings("unchecked") @path("/") @get @consumes(mediatype.application_json) @produces(mediatype.application_json) public response info(){ response response = null; jsonobject jsonobject = new jsonobject(); jsonobject.put("server name", "woghetto server"); jsonobject.put("date", new date()); response = response.ok(jsonobject).build(); logger.debug(jsonobject.tojsonstring()); response = response.ok(jsonobject).build(); return response; } the server not meant being deployed on external domain should accessible public ip. i'm using jtcpfwd-lite-0.5 tunneling private ip public ip @ port 80. testing purpose, need access exposed resources same laptop server deployed. basically, reach server, deployed @ localhost:8080, jersey 2 client using public ip target.i tried several ways build client either this:
response response = client.target("http://" + targetaddress + ":80/info") .request().get(); and stacktrace
javax.ws.rs.processingexception: java.net.unknownhostexception: 109.134.124.94%0a @ org.glassfish.jersey.client.httpurlconnector.apply(httpurlconnector.java:244) @ org.glassfish.jersey.client.clientruntime.invoke(clientruntime.java:254) @ org.glassfish.jersey.client.jerseyinvocation$1.call(jerseyinvocation.java:671) @ org.glassfish.jersey.client.jerseyinvocation$1.call(jerseyinvocation.java:668) @ org.glassfish.jersey.internal.errors.process(errors.java:315) @ org.glassfish.jersey.internal.errors.process(errors.java:297) @ org.glassfish.jersey.internal.errors.process(errors.java:228) @ org.glassfish.jersey.process.internal.requestscope.runinscope(requestscope.java:444) @ org.glassfish.jersey.client.jerseyinvocation.invoke(jerseyinvocation.java:668) @ org.glassfish.jersey.client.jerseyinvocation$builder.method(jerseyinvocation.java:402) @ org.glassfish.jersey.client.jerseyinvocation$builder.get(jerseyinvocation.java:302) @ be.pcab.wonghetto.wonghettoserver.resources.inforesourcetest.testtunnelinginforesource(inforesourcetest.java:70) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:497) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:47) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:44) @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:17) @ org.junit.internal.runners.statements.runbefores.evaluate(runbefores.java:26) @ org.junit.internal.runners.statements.runafters.evaluate(runafters.java:27) @ org.junit.runners.parentrunner.runleaf(parentrunner.java:271) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:70) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:50) @ org.junit.runners.parentrunner$3.run(parentrunner.java:238) @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:63) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:236) @ org.junit.runners.parentrunner.access$000(parentrunner.java:53) @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:229) @ org.junit.runners.parentrunner.run(parentrunner.java:309) @ org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:50) @ org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:38) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:459) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:675) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetestrunner.java:382) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.main(remotetestrunner.java:192) caused by: java.net.unknownhostexception: 109.134.124.94%0a @ java.net.abstractplainsocketimpl.connect(abstractplainsocketimpl.java:184) @ java.net.sockssocketimpl.connect(sockssocketimpl.java:392) @ java.net.socket.connect(socket.java:589) @ sun.net.networkclient.doconnect(networkclient.java:175) @ sun.net.www.http.httpclient.openserver(httpclient.java:432) @ sun.net.www.http.httpclient.openserver(httpclient.java:527) @ sun.net.www.http.httpclient.<init>(httpclient.java:211) @ sun.net.www.http.httpclient.new(httpclient.java:308) @ sun.net.www.http.httpclient.new(httpclient.java:326) @ sun.net.www.protocol.http.httpurlconnection.getnewhttpclient(httpurlconnection.java:1168) @ sun.net.www.protocol.http.httpurlconnection.plainconnect0(httpurlconnection.java:1104) @ sun.net.www.protocol.http.httpurlconnection.plainconnect(httpurlconnection.java:998) @ sun.net.www.protocol.http.httpurlconnection.connect(httpurlconnection.java:932) @ sun.net.www.protocol.http.httpurlconnection.getinputstream0(httpurlconnection.java:1512) @ sun.net.www.protocol.http.httpurlconnection.getinputstream(httpurlconnection.java:1440) @ java.net.httpurlconnection.getresponsecode(httpurlconnection.java:480) @ org.glassfish.jersey.client.httpurlconnector._apply(httpurlconnector.java:335) @ org.glassfish.jersey.client.httpurlconnector.apply(httpurlconnector.java:242) ... 36 more or
response response = client.target(basicuri) .request().get(); getting
javax.ws.rs.processingexception: uri not absolute @ org.glassfish.jersey.client.clientruntime.invoke(clientruntime.java:263) @ org.glassfish.jersey.client.jerseyinvocation$1.call(jerseyinvocation.java:671) @ org.glassfish.jersey.client.jerseyinvocation$1.call(jerseyinvocation.java:668) @ org.glassfish.jersey.internal.errors.process(errors.java:315) @ org.glassfish.jersey.internal.errors.process(errors.java:297) @ org.glassfish.jersey.internal.errors.process(errors.java:228) @ org.glassfish.jersey.process.internal.requestscope.runinscope(requestscope.java:444) @ org.glassfish.jersey.client.jerseyinvocation.invoke(jerseyinvocation.java:668) @ org.glassfish.jersey.client.jerseyinvocation$builder.method(jerseyinvocation.java:402) @ org.glassfish.jersey.client.jerseyinvocation$builder.get(jerseyinvocation.java:302) @ be.pcab.wonghetto.wonghettoserver.resources.inforesourcetest.testtunnelinginforesource(inforesourcetest.java:70) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:497) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:47) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:44) @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:17) @ org.junit.internal.runners.statements.runbefores.evaluate(runbefores.java:26) @ org.junit.internal.runners.statements.runafters.evaluate(runafters.java:27) @ org.junit.runners.parentrunner.runleaf(parentrunner.java:271) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:70) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:50) @ org.junit.runners.parentrunner$3.run(parentrunner.java:238) @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:63) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:236) @ org.junit.runners.parentrunner.access$000(parentrunner.java:53) @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:229) @ org.junit.runners.parentrunner.run(parentrunner.java:309) @ org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:50) @ org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:38) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:459) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:675) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetestrunner.java:382) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.main(remotetestrunner.java:192) caused by: java.lang.illegalargumentexception: uri not absolute @ java.net.uri.tourl(uri.java:1088) @ org.glassfish.jersey.client.httpurlconnector._apply(httpurlconnector.java:272) @ org.glassfish.jersey.client.httpurlconnector.apply(httpurlconnector.java:242) @ org.glassfish.jersey.client.clientruntime.invoke(clientruntime.java:254) ... 35 more where
basicuri = uribuilder.fromuri(targetaddress) .port(80) .path("/info").build(); and targetaddress public ip, 123.456.789.11
the server should reached outside router guess should work but, told before, need test application , junit test case. suppose test android app doesn't seem me neither practice nor quick one.
any appreciated!!
i found several problems app:
- the inforesource not registered in configuration, /info never available.
in inforesourcetest don't register servlets:
webcontainer.registerservlet(webappcontext);the inforesource return json object, wanted declare as:
@produces(mediatype.application_json)once changes above applied, application accessible directly on localhost:8082, still not via forwarder server, there should wrong part well.
Comments
Post a Comment