[jboss-user] [JBoss Cache: Core Edition] - Clean shutdown/redeploy in Tomcat
lovelyliatroim
do-not-reply at jboss.com
Thu Jul 17 07:15:45 EDT 2008
Hi Guys,
I am trying to to shutdown cleanly and redeploy cleanly in tomcat but have failed to date. Reason I think has to do with the use of commons logging in both jgroups and jboss cache.
Here is my stack trace when shutdown.sh is called.
| INFO: Stopping Coyote HTTP/1.1 on http-8080
| 17.07.2008 10:50:14 org.apache.catalina.loader.WebappClassLoader loadClass
| INFO: Illegal access: this web application instance has been stopped already. Could not load java.io.PrintWriter. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
| java.lang.IllegalStateException
| at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1244)
| at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
| at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
| at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:154)
| at org.apache.log4j.Category.forcedLog(Category.java:388)
| at org.apache.log4j.Category.log(Category.java:853)
| at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:251)
| at org.jgroups.protocols.Discovery$PingSenderTask$1.run(Discovery.java:389)
| at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
| at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
| at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
| at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
| at java.lang.Thread.run(Thread.java:619)
| 17.07.2008 10:50:14 org.apache.catalina.loader.WebappClassLoader loadClass
| INFO: Illegal access: this web application instance has been stopped already. Could not load org.apache.log4j.spi.VectorWriter. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
| java.lang.IllegalStateException
| at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1244)
| at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
| at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
| at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:154)
| at org.apache.log4j.Category.forcedLog(Category.java:388)
| at org.apache.log4j.Category.log(Category.java:853)
| at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:251)
| at org.jgroups.protocols.Discovery$PingSenderTask$1.run(Discovery.java:389)
| at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
| at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
| at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
| at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
| at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
| at java.lang.Thread.run(Thread.java:619)
| Exception in thread "EvictionTimer-0" java.lang.NullPointerException
| at org.apache.log4j.LogManager.getLogger(LogManager.java:188)
| at org.apache.log4j.Logger.getLogger(Logger.java:104)
| at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:283)
| at org.apache.commons.logging.impl.Log4JLogger.isTraceEnabled(Log4JLogger.java:327)
| at org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:107)
| at org.jboss.cache.eviction.EvictionTimerTask$1.run(EvictionTimerTask.java:114)
| at java.util.TimerThread.mainLoop(Timer.java:512)
| at java.util.TimerThread.run(Timer.java:462)
| Listening for transport dt_socket at address: 8000
| 17.07.2008 10:50:27 org.apache.catalina.loader.WebappClassLoader loadClass
| INFO: Illegal access: this web application instance has been stopped already. Could not load org.apache.log4j.spi.VectorWriter. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
| java.lang.IllegalStateException
| at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1244)
| at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
| at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
| at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:154)
| at org.apache.log4j.Category.forcedLog(Category.java:388)
| at org.apache.log4j.Category.log(Category.java:853)
| at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:251)
| at org.jgroups.protocols.UDP.run(UDP.java:268)
| at java.lang.Thread.run(Thread.java:619)
| Exception in thread "EvictionTimer-1" java.lang.NullPointerException
| at org.apache.log4j.LogManager.getLogger(LogManager.java:188)
| at org.apache.log4j.Logger.getLogger(Logger.java:104)
| at org.apache.commons.logging.impl.Log4JLogger.getLogger(Log4JLogger.java:283)
| at org.apache.commons.logging.impl.Log4JLogger.isTraceEnabled(Log4JLogger.java:327)
| at org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:107)
| at org.jboss.cache.eviction.EvictionTimerTask$1.run(EvictionTimerTask.java:114)
| at java.util.TimerThread.mainLoop(Timer.java:512)
| at java.util.TimerThread.run(Timer.java:462)
|
Now I have looked around to see if any one else has this problem. I cant find a definitive answer that the problem is x,y,z but it looks like a class loader issue with regards logging.
Here is a bug report in tomcat 5.x version with similar exception problems.
https://issues.apache.org/bugzilla/show_bug.cgi?id=41504
Im using the 6 version and still get it(Even though it was never marked as fixed).
So the question is where is the problem, tomcats fault, commons logging,log4j or jboss cache/jgroups for not cleaning up when using commons logging? The logging libraries are packed in the war, have moved them out of the war into the common lib directory in tomcat but made no difference. I have tried commons 1.1 and 1.1.1. Using log4j 1.2.14 version.
Any thoughts??
Thanks,
LL
p.s When i say jboss/jgroups fault for not cleaning up, i have read that sometimes you should call
LogFactory.release(Thread.currentThread().getContextClassLoader()) to release the resources it takes.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4164997#4164997
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4164997
More information about the jboss-user
mailing list