Details
Description
In some servlet event listeners, JNDI context lookup fails.
I encountered this issue while testing the following use case:
- When http session has became invalid by timeout, web container automatically updates the logoff datetime to database system.
So I have made sample application to reproduce this issue and the tested results.
This stack trace is one of NG results:
16:23:35,661 ERROR [[/examples]] Session event listener threw exception
java.lang.NullPointerException
at org.apache.xbean.naming.context.ContextFlyweight.lookup(ContextFlyweight.java:44)
at org.apache.xbean.naming.context.ContextFederation.getFederatedBinding(ContextFederation.java:71)
at org.apache.xbean.naming.context.AbstractFederatedContext.getBinding(AbstractFederatedContext.java:63)
at org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:129)
at org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:611)
at org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:152)
at org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:597)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at examples.DBConnector.testConnection(DBConnector.java:26)
at examples.HttpSessionListenerImpl.sessionDestroyed(HttpSessionListenerImpl.java:15)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:702)
at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:592)
at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:682)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:667)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1316)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:595)
If Geronimo v1.1, the stack trace is:
[ERROR] HttpSession - SystemDatabase doesn't have been lookuped from JNDI Context.
javax.naming.NameNotFoundException: comp/env/jdbc/SystemDatasource
at org.apache.geronimo.naming.java.RootContext.lookup(RootContext.java:45)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at examples.DBConnector.testConnection(DBConnector.java:26)
at examples.HttpSessionListenerImpl.sessionDestroyed(HttpSessionListenerImpl.java:15)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:685)
at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:577)
at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:678)
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:663)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1283)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1568)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1577)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1577)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1557)
at java.lang.Thread.run(Thread.java:595)
Attachments
Attachments
Issue Links
- is related to
-
GERONIMO-3667 JNDI is not available in servlet.destroy() or ServletContextListener.contextDestroyed() callbacks
- Resolved