Thank you, Andy! That did it. Nice and easy!

-AR

Date: Sun, 11 Oct 2009 20:56:18 -0700
> From: Andy Clement <[email protected]>
> Subject: Re: [aspectj-users] NPE when shutting down tomcat that runs
>        Spring  webapp using LoadTimeWeaver
> To: [email protected]
> Message-ID:
>        <[email protected]>
> Content-Type: text/plain; charset=ISO-885
> 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

Reply via email to