On Feb 24, 2009, at 3:42 PM, Erick Dovale wrote:
> Folks,
> Have any of you experienced this before?
>
What version of Jersey are you using? I suspect it is 1.0 from looking
at the package names.
The IllegalStateExeption is thrown when a method is called on
HttpContext for which there is no HTTP request, and thus no
HttpContext, in scope.
I looked at the 1.0 code for WebApplicationImpl [1] and i cannot see
how this can manifest itself since the thread local context value is
set to null after the ContainerResponse.write method is called.
Can you describe a bit more the function of
ErrorObjectToJSONMessageBodyWriter? is the "error object" returned
from a resource method?
Can you try using Jersey 1.0.1 or 1.0.2 and see if the same error
occurs?
Thanks,
Paul.
[1]
https://jersey.dev.java.net/source/browse/*checkout*/jersey/tags/jersey-1.0/jersey/jersey-server/src/main/java/com/sun/jersey/impl/application/WebApplicationImpl.java?rev=1602
public void handleRequest(ContainerRequest request,
ContainerResponse response) throws IOException {
try {
final WebApplicationContext localContext = new
WebApplicationContext(this, request, response);
context.set(localContext);
/**
* The matching algorithm currently works from an
absolute path.
* The path is required to be in encoded form.
*/
StringBuilder path = new StringBuilder();
path.append("/").append(localContext.getPath(false));
if (!
resourceConfig.getFeature(ResourceConfig.FEATURE_MATCH_MATRIX_PARAMS)) {
path = stripMatrixParams(path);
}
// TODO convert to filter
// If there are URI conneg extensions for media and
language
if (!resourceConfig.getMediaTypeMappings().isEmpty() ||
!resourceConfig.getLanguageMappings().isEmpty()) {
uriConneg(path, request);
}
for (ContainerRequestFilter f : requestFilters)
request = f.filter(request);
if (!rootsRule.accept(path, null, localContext)) {
throw new NotFoundException();
}
} catch (WebApplicationException e) {
mapWebApplicationException(e, response);
} catch (ContainerCheckedException e) {
if (!mapException(e.getCause(), response)) {
context.set(null);
throw e;
}
} catch (RuntimeException e) {
if (!mapException(e, response)) {
context.set(null);
throw e;
}
}
try {
for (ContainerResponseFilter f : responseFilters)
response = f.filter(request, response);
} catch (WebApplicationException e) {
mapWebApplicationException(e, response);
} catch (RuntimeException e) {
if (!mapException(e, response)) {
context.set(null);
throw e;
}
}
try {
response.write();
} catch (WebApplicationException e) {
if (response.isCommitted()) {
throw e;
} else {
mapWebApplicationException(e, response);
response.write();
}
} finally {
context.set(null);
}
}
> Thanks.
>
> java.lang.IllegalStateException
> at
> com
> .sun
> .jersey
> .impl.ThreadLocalHttpContext.getRequest(ThreadLocalHttpContext.java:
> 75)
> at com.sun.jersey.impl.application.WebApplicationImpl
> $1.invoke(WebApplicationImpl.java:179)
> at $Proxy195.getLanguage(Unknown Source)
> at
> com
> .bps
> .iproject
> .jersey
> .entityproviders
> .errors
> .ErrorObjectToJSONMessageBodyWriter
> .resolveMessage(ErrorObjectToJSONMessageBodyWriter.java:113)
> at
> com
> .bps
> .iproject
> .jersey
> .entityproviders
> .errors
> .ErrorObjectToJSONMessageBodyWriter
> .buildJSONEntity(ErrorObjectToJSONMessageBodyWriter.java:83)
> at
> com
> .bps
> .iproject
> .jersey
> .entityproviders
> .errors
> .ErrorObjectToJSONMessageBodyWriter
> .writeTo(ErrorObjectToJSONMessageBodyWriter.java:72)
> at
> com
> .bps
> .iproject
> .jersey
> .entityproviders
> .errors
> .ErrorObjectToJSONMessageBodyWriter
> .writeTo(ErrorObjectToJSONMessageBodyWriter.java:1)
> at
> com
> .sun
> .jersey.spi.container.ContainerResponse.write(ContainerResponse.java:
> 251)
> at
> com
> .sun
> .jersey
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:752)
> at
> com
> .sun
> .jersey
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:692)
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:344)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 269)
> at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at
> com
> .opensymphony
> .module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
> at
> com
> .opensymphony
> .module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)
> at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 215)
> at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at com.bps.iproject.web.filter.CleanupBPSThreadLocalFilter.doFilter
> (CleanupBPSThreadLocalFilter.java:47)
> at
> org
> .acegisecurity
> .util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
> at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 215)
> at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at org.acegisecurity.util.FilterChainProxy
> $VirtualFilterChain.doFilter(FilterChainProxy.java:265)
> at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke
> (FilterSecurityInterceptor.java:107)
> at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter
> (FilterSecurityInterceptor.java:72)
> at org.acegisecurity.util.FilterChainProxy
> $VirtualFilterChain.doFilter(FilterChainProxy.java:275)
> at
> org
> .acegisecurity
> .ui
> .ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:
> 110)
> at org.acegisecurity.util.FilterChainProxy
> $VirtualFilterChain.doFilter(FilterChainProxy.java:275)
> at
> org
> .acegisecurity
> .ui
> .basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:
> 175)
> at org.acegisecurity.util.FilterChainProxy
> $VirtualFilterChain.doFilter(FilterChainProxy.java:275)
> at
> org
> .acegisecurity
> .ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:
> 229)
> at org.acegisecurity.util.FilterChainProxy
> $VirtualFilterChain.doFilter(FilterChainProxy.java:275)
> at com.bps.iproject.web.security.TrustedSSOAuthenticationProcessingFilter.doFilter
> (TrustedSSOAuthenticationProcessingFilter.java:116)
> at org.acegisecurity.util.FilterChainProxy
> $VirtualFilterChain.doFilter(FilterChainProxy.java:275)
> at
> org
> .acegisecurity
> .context
> .HttpSessionContextIntegrationFilter
> .doFilter(HttpSessionContextIntegrationFilter.java:286)
> at org.acegisecurity.util.FilterChainProxy
> $VirtualFilterChain.doFilter(FilterChainProxy.java:275)
> at
> org
> .acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:
> 149)
> at
> org
> .acegisecurity
> .util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
> at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 215)
> at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at
> org
> .springframework
> .orm
> .hibernate3
> .support
> .OpenSessionInViewFilter
> .doFilterInternal(OpenSessionInViewFilter.java:198)
> at
> org
> .springframework
> .web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
> 76)
> at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 215)
> at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> at
> org
> .apache
> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
> 213)
> at
> org
> .apache
> .catalina.core.StandardContextValve.invoke(StandardContextValve.java:
> 174)
> at
> org
> .apache
> .catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> at
> org
> .apache
> .catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
> at
> org
> .apache
> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
> 108)
> at
> org
> .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
> 174)
> at
> org
> .apache.coyote.http11.Http11Processor.process(Http11Processor.java:
> 874)
> at org.apache.coyote.http11.Http11BaseProtocol
> $Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:
> 665)
> at
> org
> .apache
> .tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:
> 528)
> at
> org
> .apache
> .tomcat
> .util
> .net
> .LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
> at org.apache.tomcat.util.threads.ThreadPool
> $ControlRunnable.run(ThreadPool.java:689)
> at java.lang.Thread.run(Unknown Source)
>