Servlet.Service() NullPointer on Filter - Really need some help on this one...

2003-10-28 Thread Bradley Beddoes
Hi All,
I am hoping that someone is able to assist with some problems I am
currently having with a filter I have written. The filter is designed to
deal with authentication for users to check they have a particular
cookie set then place an object into the session for further use. I have
researched this error extensively online and can't find any
documentation on correcting it.

The error presented below only occurs on around 12% of requests
(sometimes a few percent either side of this) according to my profiler
when the code is put under some load - I am wondering if it may be
caused by some form of concurrent request error in the filters whereby
the Servlet object is being reset or otherwise nulled out.

The codebase looks like:
public void doFilter( ServletRequest request, ServletResponse response,
FilterChain chain )throws IOException, ServletException
{
try
{
req = (HttpServletRequest)request;
res = (HttpServletResponse)response;

..

//Create Session object
HttpSession session = req.getSession( true );
session.setAttribute( QutClientObject.NAME, qutClient );
sessionCreated = true;

//set REMOTE_USER
res.addHeader(REMOTE_USER,qutClient.getUserName());

// Filter chaining completed, move to next filter in chain
chain.doFilter( request, response );

return;
 }
 }

Error occurs on line: req.getSession( true );

The error from tomcat(both 4.1.24 and 4.1.27) is: 

2003-10-28 17:35:35 StandardWrapperValve[jsp]: Servlet.service() for
servlet jsp threw exception
java.lang.NullPointerException
at
org.apache.coyote.tomcat4.CoyoteRequestFacade.getSession(CoyoteRequestFacade.java:365)
at
au.edu.qut.jauth.client.JAuthFilter.doFilter(JAuthFilter.java:197)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:534)


Any help would be very much appreciated I am almost out of ideas for
this one...

cheers,
Bradley.




-
To unsubscribe, 

RE: Servlet.Service() NullPointer on Filter - Really need some he lp on this one...

2003-10-28 Thread Bradley Beddoes
Hi Andy,
I was considering that also however the req and res objects are specified
as private members of the overall class that has been created (extends
filter obviously) and i would have assumed that each request would
instatiate a new object.

Certainly willing to try them as local variables if you think that may
help.

cheers,
Bradley

 Where are your req and res variables defined? They should be
 local to the doFilter() method or you could get concurrency
 issues.
 
 Andy
 
 -Original Message-
 From: Bradley Beddoes [mailto:[EMAIL PROTECTED] 
 Sent: 28 October 2003 07:50
 To: [EMAIL PROTECTED]
 Subject: Servlet.Service() NullPointer on Filter - Really need
 some help on this one...
 
 
 Hi All,
 I am hoping that someone is able to assist with some problems I
 am currently having with a filter I have written. The filter is
 designed to deal with authentication for users to check they have
 a particular cookie set then place an object into the session for
 further use. I have researched this error extensively online and
 can't find any documentation on correcting it.
 
 The error presented below only occurs on around 12% of requests
 (sometimes a few percent either side of this) according to my
 profiler when the code is put under some load - I am wondering if
 it may be caused by some form of concurrent request error in the
 filters whereby the Servlet object is being reset or otherwise
 nulled out.
 
 The codebase looks like:
 public void doFilter( ServletRequest request, ServletResponse
 response, FilterChain chain )throws IOException, ServletException
 {
 try
 {
 req = (HttpServletRequest)request;
 res = (HttpServletResponse)response;
 
 ..
 
 //Create Session object
 HttpSession session = req.getSession( true );
 session.setAttribute( QutClientObject.NAME,
 qutClient );
 sessionCreated = true;
 
 //set REMOTE_USER
 
 res.addHeader(REMOTE_USER,qutClient.getUserName());
 
   // Filter chaining completed, move to next filter
 in chain
 chain.doFilter( request, response );
 
 return;
  }
  }
 
 Error occurs on line: req.getSession( true );
 
 The error from tomcat(both 4.1.24 and 4.1.27) is: 
 
 2003-10-28 17:35:35 StandardWrapperValve[jsp]: Servlet.service()
 for servlet jsp threw exception
 java.lang.NullPointerException
 at
 org.apache.coyote.tomcat4.CoyoteRequestFacade.getSession(CoyoteRe
 questFacade .java:365)
 at
 au.edu.qut.jauth.client.JAuthFilter.doFilter(JAuthFilter.java:197
 )
 at
 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
 Application FilterChain.java:213)
 at
 org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicat
 ionFilterCh ain.java:193)
 at
 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrap
 perValve.ja va:256)
 at
 org.apache.catalina.core.StandardPipeline$StandardPipelineValveCo
 ntext.invok eNext(StandardPipeline.java:643)
 at
 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline
 .java:480)
 at
 org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:
 995)
 at
 org.apache.catalina.core.StandardContextValve.invoke(StandardCont
 extValve.ja va:191)
 at
 org.apache.catalina.core.StandardPipeline$StandardPipelineValveCo
 ntext.invok eNext(StandardPipeline.java:643)
 at
 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline
 .java:480)
 at
 org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:
 995)
 at
 org.apache.catalina.core.StandardContext.invoke(StandardContext.j
 ava:2416)
 at
 org.apache.catalina.core.StandardHostValve.invoke(StandardHostVal
 ve.java:180 )
 at
 org.apache.catalina.core.StandardPipeline$StandardPipelineValveCo
 ntext.invok eNext(StandardPipeline.java:643)
 at
 org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispa
 tcherValve. java:171)
 at
 org.apache.catalina.core.StandardPipeline$StandardPipelineValveCo
 ntext.invok eNext(StandardPipeline.java:641)
 at
 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportVal
 ve.java:172 )
 at
 org.apache.catalina.core.StandardPipeline$StandardPipelineValveCo
 ntext.invok eNext(StandardPipeline.java:641)
 at
 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline
 .java:480)
 at
 org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:
 995)
 at
 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngin
 eValve.java :174)
 at
 org.apache.catalina.core.StandardPipeline$StandardPipelineValveCo
 ntext.invok eNext(StandardPipeline.java:643)
 at
 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline
 .java:480)
 at
 org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:
 995