I believe you are hitting https://bugs.eclipse.org/bugs/show_bug.cgi?id=231945.
The problem is a (configurable) behaviour in tomcat is nulling static data on shutdown, and during shutdown it then turns out another class needs to be woven. The weaver was using a bit of static information but it got splatted by tomcat - and so it NPEs. As discussed in the bug report: > I'm not sure why I didn't notice this before, > but WebappClassLoader.clearReferences() is configurable. I just added the > following to my VM arguments when launching Tomcat: > > -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false Andy 2009/10/11 Andrey Radchenko <[email protected]>: > Hi All, > > I am getting NPE when I am stopping tomcat (6.0.14) that runs my Spring web > application that uses loadTimeWeaver object to add aspects to JPA classes. > I am getting few such NPE's. > > Have anybody seen it before? > > Here is one of such stack traces that I get: > >> Oct 11, 2009 2:32:23 PM org.aspectj.weaver.tools.Jdk14Trace error >> SEVERE: >> org/apache/commons/httpclient/MultiThreadedHttpConnectionManager$ReferenceQueueThread >> java.lang.NullPointerException >> at >> org.aspectj.bridge.context.CompilationAndWeavingContext.getContextStack(CompilationAndWeavingContext.java:185) >> at >> org.aspectj.bridge.context.CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.java:154) >> at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1112) >> at >> org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:423) >> at >> org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:286) >> at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:95) >> at >> org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:52) >> at >> org.springframework.context.weaving.AspectJWeavingEnabler$AspectJClassBypassingClassFileTransformer.transform(AspectJWeavingEnabler.java:92) >> at >> org.springframework.instrument.classloading.WeavingTransformer.transformIfNecessary(WeavingTransformer.java:95) >> at >> org.springframework.instrument.classloading.WeavingTransformer.transformIfNecessary(WeavingTransformer.java:78) >> at >> org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader.findResourceInternal(TomcatInstrumentableClassLoader.java:114) >> at >> org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1757) >> at >> org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872) >> at >> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325) >> at >> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) >> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402) >> at java.lang.Class.getDeclaredFields0(Native Method) >> at java.lang.Class.privateGetDeclaredFields(Class.java:2291) >> at java.lang.Class.getDeclaredFields(Class.java:1743) >> at >> org.apache.catalina.loader.WebappClassLoader.clearReferences(WebappClassLoader.java:1598) >> at >> org.apache.catalina.loader.WebappClassLoader.stop(WebappClassLoader.java:1495) >> at org.apache.catalina.loader.WebappLoader.stop(WebappLoader.java:707) >> at >> org.apache.catalina.core.StandardContext.stop(StandardContext.java:4537) >> at >> org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:924) >> at >> org.apache.catalina.startup.HostConfig.undeployApps(HostConfig.java:1180) >> at org.apache.catalina.startup.HostConfig.stop(HostConfig.java:1151) >> at >> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:313) >> at >> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) >> at >> org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1086) >> at >> org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1098) >> at >> org.apache.catalina.core.StandardEngine.stop(StandardEngine.java:448) >> at >> org.apache.catalina.core.StandardService.stop(StandardService.java:584) >> at >> org.apache.catalina.core.StandardServer.stop(StandardServer.java:744) >> at org.apache.catalina.startup.Catalina.stop(Catalina.java:616) >> at org.apache.catalina.startup.Catalina.start(Catalina.java:591) >> 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:597) >> at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) >> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) > > Please help. Thank you in advance! > -AR > > > _______________________________________________ > aspectj-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users > > _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
