users@jersey.java.net

Re: [Jersey] NPE at com.sun.jersey.spi.container.ContainerRequest

From: Gili <cowwoc_at_bbs.darktech.org>
Date: Wed, 22 Oct 2008 15:03:44 -0700 (PDT)

Here is the real stack trace for Jersey 1.0:

java.lang.NullPointerException
        at
com.sun.jersey.spi.container.ContainerRequest.<init>(ContainerRequest.java:153)
        at
com.sun.jersey.impl.container.servlet.ServletContainerRequest.<init>(ServletContainerRequest.java:63)
        at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:331)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at
com.wideplay.warp.servlet.ServletDefinition.doService(ServletDefinition.java:188)
        at
com.wideplay.warp.servlet.ServletDefinition.service(ServletDefinition.java:115)
        at
com.wideplay.warp.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:43)
        at
com.wideplay.warp.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:50)
        at
com.wideplay.warp.jpa.SessionPerRequestFilter.doFilter(SessionPerRequestFilter.java:52)
        at
com.wideplay.warp.servlet.FilterDefinition.doFilter(FilterDefinition.java:101)
        at
com.wideplay.warp.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:46)
        at
com.wideplay.warp.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:52)
        at com.wideplay.warp.servlet.WebFilter.doFilter(WebFilter.java:67)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
        at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
        at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
        at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
        at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
        at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
        at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
        at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
        at
com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380)
        at
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
        at
com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)

I tracked this down to a bug in my Warp-Servlet configuration. I defined
GuiceServlet extends ServletContainer to handle Guice injection but then I
forgot to declare it as a @Singleton. For those of you familiar with
Warp-Servlet unintuitive behavior, it'll assume that the servlet is not a
singleton by default. As a result a new Servlet instance gets constructed
every time but init() only gets invoked once.

Again, very confusing, but this isn't a bug in Jersey. Sorry for the false
alarm. The above stack-trace should only occur if the servlet.service() is
invoked without a prior call to init().

Gili
-- 
View this message in context: http://n2.nabble.com/NPE-at-com.sun.jersey.spi.container.ContainerRequest-tp1365881p1365926.html
Sent from the Jersey mailing list archive at Nabble.com.