[nanocontainer-scm] [jira] Assigned: (NANO-109) Occasional NullPointerException in ServletContainerListener

"Konstantin Pribluda (JIRA)" <jira-yCVjj/[email protected]> Sun, 3 Apr 2005 13:57:55 -0400 (EDT)
Newsgroups gmane.comp.java.nanocontainer.cvs
Message-ID <[email protected]>
     [ http://jira.codehaus.org/browse/NANO-109?page=history ]

Konstantin Pribluda reassigned NANO-109:
----------------------------------------

    Assign To: Konstantin Pribluda

> Occasional NullPointerException in ServletContainerListener
> -----------------------------------------------------------
>
>          Key: NANO-109
>          URL: http://jira.codehaus.org/browse/NANO-109
>      Project: NanoContainer
>         Type: Bug
>   Components: nanowar
>     Versions: 1.0-beta-3
>  Environment: WinXP running with j2sdk1.4.2_06 and Tomcat-5.5.4
>     Reporter: Jacob Kjome
>     Assignee: Konstantin Pribluda

>
>
> I'm not sure I've pineed down exactly why this happens, but I've found the following in my logs a couple times...
> WARN [talina]]]:  org.apache.catalina.core.ContainerBase 68953  - Exception processing manager org.apache.catalina.session.StandardManager@1e4853f background process
> java.lang.NullPointerException
> 	at org.nanocontainer.nanowar.ServletContainerListener.killContainer(ServletContainerListener.java:201)
> 	at org.nanocontainer.nanowar.ServletContainerListener.access$100(ServletContainerListener.java:66)
> 	at org.nanocontainer.nanowar.ServletContainerListener$1.valueUnbound(ServletContainerListener.java:173)
> 	at org.apache.catalina.session.StandardSession.removeAttributeInternal(StandardSession.java:1586)
> 	at org.apache.catalina.session.StandardSession.expire(StandardSession.java:718)
> 	at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:558)
> 	at org.apache.catalina.session.StandardManager.processExpires(StandardManager.java:813)
> 	at org.apache.catalina.session.StandardManager.backgroundProcess(StandardManager.java:826)
> 	at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1272)
> 	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1553)
> 	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1562)
> 	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1562)
> 	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1542)
> 	at java.lang.Thread.run(Thread.java:534)
> INFO [Thread-1]: org.apache.coyote.http11.Http11Protocol 124969 - Pausing Coyote HTTP/1.1 on http-8080
> INFO [Thread-1]: rg.apache.catalina.core.StandardService 125984 - Stopping service Catalina
> INFO [Thread-1]: org.apache.coyote.http11.Http11Protocol 126047 - Stopping Coyote HTTP/1.1 on http-8080
> It seems that there are cases when Tomcat calls valueUnbound() on the container killer helper, but our transient reference to the container killer is already null.  The fix is one of two possibilities...
> 1.  Get rid of the transient containerKiller in SerlvetContainerListener and simply create a "new DefaultLifecycleContainerBuilder(null)" inside killContainer() each time it is called.
> 2.  Check for a null containerKiller in killContainer() and avoid calling containerKiller.killContainer() if it is null.
> I think the first one is most appropriate since it guarantees cleanup of the containers.  Plus it gets rid of the only instance variable in ServletContainerListener.  I think in a previous design, it needed to be there, but since the killer helper stuff made it in there, it really hasn't been necessary.
> Jake

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.codehaus.org/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira