Uploaded image for project: 'Geronimo'
  1. Geronimo
  2. GERONIMO-3528

Cannot lookup JNDI context inside some servlet event listeners.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.1.1, 2.0.1
    • 2.0.3, 2.1
    • naming
    • Security Level: public (Regular issues)
    • None

    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

        1. examples.war
          14 kB
          Kan Ogawa
        2. TestedResults_including_G3667.html
          2 kB
          Kan Ogawa
        3. TestedResults.html
          0.9 kB
          Kan Ogawa
        4. TestedResults2_including_G3667.html
          2 kB
          Kan Ogawa

        Issue Links

          Activity

            People

              gawor@mcs.anl.gov Jarek Gawor
              super-creek Kan Ogawa
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: