Re: on redeploy: WebappClassLoader: LifeCycle error : CL stopped

Serge Huber <[email protected]>
Newsgroups gmane.comp.cms.jahia.devel
Message-ID <[email protected]>
Hi chris,

Argh classloader issues can really be tricky. Sometimes it's the 
database drivers that cause problems because they get loaded by the JDK 
when using JDBC. Unfortunately there is not *ultimate* trick.

Maybe getting rid of as many classes from the shared directory and 
putting everything in WEB-INF/lib might help you ? You might have to do 
this for multiple webapps and eat up a lot more memory during dev, but 
you could redeploy.

Regards,
  Serge Huber.

chris markiewicz wrote:
> I recently began deploying some newly developed webapps and I am seeing some
> odd behavior.  
>
> 1) When I deploy it the first time, it works properly.
> 2) When I redeploy it, I get an error while running the app.
> 3) When I restart Tomcat, it works properly.
>
> The top of the stack trace is shown below.  It starts with:
>
> WebappClassLoader: Lifecycle error : CL stopped
> java.lang.Exception: Stack trace
>
> I tracked down the location of the error - essentially the class loader is
> trying to instantiate a shared class and it fails.  
>
> I did some research and learned that this is a Tomcat 4x issue involving
> shared libraries, etc.  An excerpt from the release notes is also below.
>
> Does anyone have any experience with this, and/or any suggested solutions?
> I tried moving the shared code to various places, but nothing has worked so
> far.
>
> Thanks for your time.
> Chris
>
>
> ---------------------------------------------------------------
> Web application reloading and static fields in shared libraries:
> ---------------------------------------------------------------
>
> Some shared libraries (many are part of the JDK) keep references to objects
> instantiated by the web application. To avoid class loading related problems
> (ClassCastExceptions, messages indicating that the classloader 
> is stopped, ...), the shared libraries state should be reinitialized.
>
> Something which could help is to avoid putting classes which would be 
> referenced by a shared static field in the web application classloader, 
> and put them in the shared classloader instead (the JARs should be put in
> the "lib" folder, and classes should be put in the "classes" folder).
>
>
>
> 10:27:47,116  INFO SFUtility:83 - Trying to instantiate
> SforceServiceLocator...
> 10:27:47,120  INFO SFUtility:89 - load class...
> 10:27:47,125  INFO SFUtility:91 - instantiate obj...
> WebappClassLoader: Lifecycle error : CL stopped
> WebappClassLoader: Lifecycle error : CL stopped
> WebappClassLoader: Lifecycle error : CL stopped
> java.lang.Exception: Stack trace
> 	at java.lang.Thread.dumpStack(Thread.java:1064)
> 	at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.jav
> a:1329)
> 	at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.jav
> a:1289)
> 	at
> org.apache.commons.discovery.ResourceClass$1.run(ResourceClass.java:119)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at
> org.apache.commons.discovery.ResourceClass.loadClass(ResourceClass.java:115)
> 	at
> org.apache.axis.configuration.EngineConfigurationFactoryFinder$1.run(EngineC
> onfigurationFactoryFinder.java:122)
> 	at java.security.AccessController.doPrivileged(Native Method)
>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.