Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. JBAS-3039

javax.servlet.ServletContextListener contextDestroyed method fails

    XMLWordPrintable

Details

    • Low
    • Workaround Exists
    • Hide

      The workaround is to call the ServletContextEvent and call the class that I need to execute in the contextDestroyed method in the contextInitializedMethod.

      Show
      The workaround is to call the ServletContextEvent and call the class that I need to execute in the contextDestroyed method in the contextInitializedMethod.

    Description

      I have implemented a javax.servlet.ServletContextListener. I have created a contextInitialized method that simply returns b/c there is nothing I want to do during startup. However, I do want to ensure that all resources, such as loggers and a custom connection pool are closed in the contextDestroyed method.

      However, I get the following exception in my contextDestoyed method:
      2006-03-31 10:58:34,534 INFO [STDOUT] java.lang.NoClassDefFoundError: javax/servlet/ServletContextEvent
      2006-03-31 10:58:34,534 INFO [STDOUT] at MyServletContextListener.contextDestroyed(MyServletContextListener.java:43)
      2006-03-31 10:58:34,534 INFO [STDOUT] at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3710)
      2006-03-31 10:58:34,534 INFO [STDOUT] at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4283)
      2006-03-31 10:58:34,534 INFO [STDOUT] at org.apache.catalina.core.ContainerBase.destroy(ContainerBase.java:1131)
      2006-03-31 10:58:34,534 INFO [STDOUT] at org.apache.catalina.core.StandardContext.destroy(StandardContext.java:4358)
      2006-03-31 10:58:40,031 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      2006-03-31 10:58:40,031 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      2006-03-31 10:58:40,031 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      2006-03-31 10:58:40,031 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:585)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:503)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:150)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.web.tomcat.tc5.TomcatDeployer.performDeployInternal(TomcatDeployer.java:157)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.web.tomcat.tc5.TomcatDeployer.performDeploy(TomcatDeployer.java:88)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:357)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.web.WebModule.startModule(WebModule.java:68)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.web.WebModule.startService(WebModule.java:46)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:274)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:230)
      2006-03-31 10:58:40,031 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      2006-03-31 10:58:40,031 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      2006-03-31 10:58:40,031 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      2006-03-31 10:58:40,031 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:585)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:943)
      2006-03-31 10:58:40,031 INFO [STDOUT] at $Proxy0.start(Unknown Source)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.system.ServiceController.start(ServiceController.java:428)
      2006-03-31 10:58:40,031 INFO [STDOUT] at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
      2006-03-31 10:58:40,031 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      2006-03-31 10:58:40,031 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:585)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
      2006-03-31 10:58:40,031 INFO [STDOUT] at $Proxy30.start(Unknown Source)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:400)
      2006-03-31 10:58:40,031 INFO [STDOUT] at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
      2006-03-31 10:58:40,031 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      2006-03-31 10:58:40,031 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:585)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
      2006-03-31 10:58:40,031 INFO [STDOUT] at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:80)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
      2006-03-31 10:58:40,047 INFO [STDOUT] at $Proxy31.start(Unknown Source)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.deployment.MainDeployer.start(MainDeployer.java:989)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:790)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:753)
      2006-03-31 10:58:40,047 INFO [STDOUT] at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
      2006-03-31 10:58:40,047 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      2006-03-31 10:58:40,047 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:585)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
      2006-03-31 10:58:40,047 INFO [STDOUT] at $Proxy9.deploy(Unknown Source)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:319)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:507)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:192)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:203)
      2006-03-31 10:58:40,047 INFO [STDOUT] at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:182)

      My contextInitialized method is:
      public void contextInitialized(ServletContextEvent sce)

      { return; }

      The problems goes away If I add the following to my contextInitialized method:
      public void contextInitialized(ServletContextEvent sce)

      { sce.getServletContext().log("contextInitialized"); }

      However, I get a different exception if I have not attempted to access my web application:
      11:06:53,285 WARN [WebappClassLoader] Failed to open JAR
      java.util.zip.ZipException: The system cannot find the path specified
      at java.util.zip.ZipFile.open(Native Method)
      at java.util.zip.ZipFile.<init>(ZipFile.java:203)
      at java.util.jar.JarFile.<init>(JarFile.java:132)
      at java.util.jar.JarFile.<init>(JarFile.java:97)
      at org.apache.catalina.loader.WebappClassLoader.openJARs(WebappClassLoader.java:1544)
      at org.apache.catalina.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:1763)
      at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1570)
      at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:850)
      at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1299)
      at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1181)
      at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
      at MYServletContextListener.contextDestroyed(MYServletContextListener.java:43)
      at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3710)
      at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4283)
      at org.apache.catalina.core.ContainerBase.destroy(ContainerBase.java:1131)
      at org.apache.catalina.core.StandardContext.destroy(StandardContext.java:4358)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:503)
      at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:150)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
      at org.jboss.web.tomcat.tc5.TomcatDeployer.performDeployInternal(TomcatDeployer.java:157)
      at org.jboss.web.tomcat.tc5.TomcatDeployer.performDeploy(TomcatDeployer.java:88)
      at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:357)
      at org.jboss.web.WebModule.startModule(WebModule.java:68)
      at org.jboss.web.WebModule.startService(WebModule.java:46)
      at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:274)
      at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:230)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
      at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
      at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
      at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
      at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:943)
      at $Proxy0.start(Unknown Source)
      at org.jboss.system.ServiceController.start(ServiceController.java:428)
      at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
      at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
      at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
      at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
      at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
      at $Proxy30.start(Unknown Source)
      at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:400)
      at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
      at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
      at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
      at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
      at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
      at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:80)
      at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
      at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
      at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
      at $Proxy31.start(Unknown Source)
      at org.jboss.deployment.MainDeployer.start(MainDeployer.java:989)
      at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:790)
      at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:753)
      at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
      at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
      at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:118)
      at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
      at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
      at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
      at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:245)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
      at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
      at $Proxy9.deploy(Unknown Source)
      at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:319)
      at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:507)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:192)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:203)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:182)

      If I access my application, then the contextDestroyed method completes successfully. I believe this problem is caused b/c I have not loaded any of these classes if I don't call the ServletContextEvent in my contextInitialized method and if I don't load the classes for my application.
      These are my classloading configuration in jboss-service.xml for tomcat:

      <attribute name="Java2ClassLoadingCompliance">false</attribute>
      <attribute name="UseJBossWebLoader">false</attribute>

      Attachments

        Activity

          People

            Unassigned Unassigned
            p2auljr Paul Sideleau (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: