Michael Karneim
2012-01-10 07:20:32 UTC
Hi all,
I am having an issue forwardig a request from one resource to another.
I get the following exception: java.lang.IllegalStateException: No thread local value in scope for proxy of class $Proxy55
The sample code below reproduces this issue.
@Path("/forwarder")
public class ForwardingResource {
@GET
@Produces("text/plain")
public String getContent(@Context HttpServletRequest request, @Context HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("target").forward(request, response);
return ""; // Nothing
}
}
@Path("/target")
public class TargetResource {
@GET
@Produces("text/plain")
public String getContent() {
return "I am the target";
}
}
When I call
Client c = Client.create();
WebResource r = c.resource("http://localhost:8080/jersey.repo1");
String result = r.path("forwarder").get(String.class);
I get a HTTP Status 500 with the following stacktrace:
java.lang.IllegalStateException: No thread local value in scope for proxy of class $Proxy55
com.sun.jersey.server.impl.ThreadLocalInvoker.invoke(ThreadLocalInvoker.java:93)
$Proxy55.removeAttribute(Unknown Source)
jersey.repo1.ForwardingResource.getContent(ForwardingResource.java:19)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
I am running jersey within tomcat 6.
WEB-INF/lib contains the following jars:
asm-3.3.1.jar
jaxb-impl.jar
jersey-bundle-1.11.jar
jsr311-api-1.1.1.jar
Any suggestions or workarounds would be much appreciated!
Michael
I am having an issue forwardig a request from one resource to another.
I get the following exception: java.lang.IllegalStateException: No thread local value in scope for proxy of class $Proxy55
The sample code below reproduces this issue.
@Path("/forwarder")
public class ForwardingResource {
@GET
@Produces("text/plain")
public String getContent(@Context HttpServletRequest request, @Context HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("target").forward(request, response);
return ""; // Nothing
}
}
@Path("/target")
public class TargetResource {
@GET
@Produces("text/plain")
public String getContent() {
return "I am the target";
}
}
When I call
Client c = Client.create();
WebResource r = c.resource("http://localhost:8080/jersey.repo1");
String result = r.path("forwarder").get(String.class);
I get a HTTP Status 500 with the following stacktrace:
java.lang.IllegalStateException: No thread local value in scope for proxy of class $Proxy55
com.sun.jersey.server.impl.ThreadLocalInvoker.invoke(ThreadLocalInvoker.java:93)
$Proxy55.removeAttribute(Unknown Source)
jersey.repo1.ForwardingResource.getContent(ForwardingResource.java:19)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
I am running jersey within tomcat 6.
WEB-INF/lib contains the following jars:
asm-3.3.1.jar
jaxb-impl.jar
jersey-bundle-1.11.jar
jsr311-api-1.1.1.jar
Any suggestions or workarounds would be much appreciated!
Michael