-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Wangke,

On 3/27/14, 2:18 AM, wangke wrote:
> Hi All: Recently I've encountered a very strange problem, I managed
> to crash tomcat entirely with my application for a few times.
> Personally,  I am quite suspicious about the the settings of a
> shared library libswipl. What I did according to 
> https://code.google.com/p/javanaproche/wiki/HowToJPL is I have
> Java.library.path point to libswipl for a jar file called JPL (a
> bidirectional interface between Java and Prolog since I need to run
> some simple Prolog rules) and then when I start calling JPL
> provided interface in my application code, the following exceptions
> are thrown:

That sounds like a lot of fun!

> Can anybody help me to figure out what happened exactly, BTW,
> Tomcat is not crashing all the time but fairly frequent though. 
> Thanks very much.
> 
> WARNING: Error while removing context [/XXXXXX] 
> java.lang.NoClassDefFoundError:
> org/apache/struts2/util/ObjectFactoryDestroyable at
> org.apache.struts2.dispatcher.Dispatcher.cleanup(Dispatcher.java:265)
>
> 
at
org.apache.struts2.dispatcher.ng.PrepareOperations.cleanupDispatcher(PrepareOperations.java:188)
> at
> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.destroy(StrutsPrepareAndExecuteFilter.java:100)
>
> 
at
org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:358)
> at
> org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:4107)
>
> 
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4876)
> at
> org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:936)
>
> 
at
org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1212)
> at
> org.apache.catalina.startup.HostConfig.check(HostConfig.java:1382) 
> at
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:306)
>
> 
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
> at
> org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1389)
>
> 
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)
> at
> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
>
> 
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
> at java.lang.Thread.run(Thread.java:662) Caused by:
> java.lang.ClassNotFoundException:
> org.apache.struts2.util.ObjectFactoryDestroyable at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
>
> 
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
> ... 16 more Mar 26, 2014 6:18:51 PM
> org.apache.catalina.core.ContainerBase stop INFO: Container
> org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/XXXXXX].[jsp]
> has not been started Mar 26, 2014 6:18:51 PM
> org.apache.catalina.core.ContainerBase stop INFO: Container
> org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/XXXXXX].[default]
> has not been started Mar 26, 2014 6:18:51 PM
> org.apache.catalina.startup.HostConfig checkResources WARNING:
> Error during context [/XXXXXX] destroy 
> java.lang.NoClassDefFoundError:
> org/apache/struts2/util/ObjectFactoryDestroyable at
> org.apache.struts2.dispatcher.Dispatcher.cleanup(Dispatcher.java:265)
>
> 
at
org.apache.struts2.dispatcher.ng.PrepareOperations.cleanupDispatcher(PrepareOperations.java:188)
> at
> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.destroy(StrutsPrepareAndExecuteFilter.java:100)
>
> 
at
org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:358)
> at
> org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:4107)
>
> 
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4876)
> at
> org.apache.catalina.core.ContainerBase.destroy(ContainerBase.java:1176)
>
> 
at
org.apache.catalina.core.StandardContext.destroy(StandardContext.java:4976)
> at
> org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1219)
>
> 
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1382)
> at
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:306)
>
> 
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
> at
> org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1389)
>
> 
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)
> at
> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
>
> 
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
> at java.lang.Thread.run(Thread.java:662) Mar 26, 2014 6:19:05 PM
> org.apache.coyote.http11.Http11Protocol pause INFO: Pausing Coyote
> HTTP/1.1 on http-8080 Mar 26, 2014 6:19:06 PM
> org.apache.catalina.core.StandardService stop INFO: Stopping
> service Catalina Mar 26, 2014 6:19:06 PM
> org.apache.coyote.http11.Http11Protocol destroy INFO: Stopping
> Coyote HTTP/1.1 on http-8080

It looks like Tomcat is stopping -- really shutting-down your web
application, but something is trying to load classes after the
WebappClassLoadet for your webapp has been marked as stopped.

This can happen under something like the following:

1. Application is running fine
2. Application launches a thread
3. Application is stopped
[time passes, maybe only a few ms]
4. The thread from #2 attempts to perform an operation which requires
a class to be loaded (e.g. ObjectFactoryDestroyable from above)
5. You get an error from the WebappClassLoader because the application
stopped in step #3

If you re-deploy your web application, this kind of thing can easily
happen to the "old" application while the new copy is running.

Given the stack trace above, it seems like Tomcat is trying to
intentionally stop your web application (your Filter is being
shut-down) and so the WebappClassLoader should still be valid. Is it
possible that the Struts component you are using plays games with the
ClassLoader and so it's using the wrong one? For example, it may cache
the first ClassLoader that was used for some static operation, and
then retain it longer than appropriate. You would then have an error
the *second* time you tried to re-deploy.

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJTNE/MAAoJEBzwKT+lPKRYj2wP/RKtRO5m/IRNjRRSicKeSBDD
AFhYbh5I8ESipHgFSv60sUgEUMIWrYnAW9xUdVKlGei18U27+8gjEalROXIwMDx7
KyICJWU6ykJQCVOmxxEiWOq61RGN811bgs4lL2sCYDpm5zkUtycauhenuWgG6NFC
+YbFc3wQdrHErLknmM4XppdZNzQUCH9Sgrb2AOC/SKaxqTyyCRTXUIDkhfzbY1Ne
f4FqkSXmxPjWOxJ0VeMrC18GOJx2sQfCJO87OUNWs4f+sx/Wgl4abtcsQ0DbrMoJ
o8zUFg+vvsLd9BPJJuCvoMSYaggJUW9IgbdtOgqu1UUQ7iTdaZsLsklVc0nvYL7R
wdVTauWLM+YFHEVcwL6d2XD9ecdDsUt7YMj+C6yU3n331FYK9GTtl+LRtYA69h70
2Z/w+yE/9ZEg0FVYVTaFRIRjsqDd1yOBQwnGDRWihOC5SUfGhrnz495BM+Y6v7cQ
OtK4DdpblrktCJeLX6EUlmZw2MNqDGN+KRDWj79A4BLqexDhRjzIDoRTj3aP2qF4
cl3X8gKh4dbtLER6Gvq8lecvIXtxJ8QifOGsHoSxArU1Qi+y/n4+Mjzsh0yRn5Nw
GEyZf8rzeHUvoKjFsMeZlVokzWg5MBa6mgPk9e68xeRn8TkikcU8hJ0s9MeFZ0Mq
//Vwg5wjlpNJhSYNcLEl
=JoZT
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to