When doing an integrated test environment, Need to use Tomcat's start.bat to start and shutdown.bat to shut down the Tomat application server, but found that the use of Shutdown.bat shutdown, the Java process is closed, but Tomcat's boot window is not closed, the window has an error message, as follows:
Info: Illegal Access:this Web application instance have been stopped already (th e eventual following stack trace is caused By a error thrown for debugging Purp OSes as well as to attempt to terminate the thread which caused the illegal acce SS, and has no functional impact) 2012-2-15 23:10:15 Org.apache.catalina.loader.WebappClassLoader loadclass info: illegal acces S:this Web application instance has been stopped already (th e eventual following stack trace was caused by an error throw N for debugging Purp OSes as well as to attempt to terminate the thread which caused the illegal acce SS, and have no funct
ional impact) Exception in thread "Defaultquartzscheduler_quartzschedulerthread" org.apache.co Mmons.logging.LogConfigurationException:org.apache.commons.logging.LogConfigura tionexception: Java.lang.ThreadDeath (caused by Java.lang.ThreadDeath) (caused B y Org.apache.commons.logging.LogConfigurationException:java.lang.ThreadDeath (C aused by Java.lang.ThreadDeath)) at Org.apacHe.commons.logging.impl.LogFactoryImpl.newInstance (Logfactory impl.java:543) at ORG.APACHE.COMMONS.LOGGING.IMPL.L Ogfactoryimpl.getinstance (Logfactory impl.java:235) at Org.apache.commons.logging.impl.LogFactoryImpl.getInstance (Logfactory impl.java:209) at Org.apache.commons.logging.LogFactory.getLog (logfactory.java:351) at Org.qua Rtz.core.QuartzSchedulerThread.getLog (Quartzschedulerthread.ja va:475) at ORG.QUARTZ.CORE.QUARTZSCHEDULERTHREAD.R Un (quartzschedulerthread.java:404) caused by:org.apache.commons.logging.LogConfigurationException: Java.lang.Threa Ddeath (caused by java.lang.ThreadDeath) at Org.apache.commons.logging.impl.LogFactoryImpl.getLogC Onstructor (Logf actoryimpl.java:397) at Org.apache.commons.logging.impl.LogFactoryImpl.newInstance (Logfactory impl . java:529) ... 5 more caused By:java.lang.ThreadDeath at Org.apache.catalina.loader.WebappClassLoader.loadClass (Webappclassloa D er.java:1229) atOrg.apache.catalina.loader.WebappClassLoader.loadClass (Webappclassloa der.java:1189) at Org.apache.commons.loggin G.impl.logfactoryimpl$1.run (LOGFACTORYIMPL.J ava:441) at java.security.AccessController.doPrivileged (Native Method) ) at Org.apache.commons.logging.impl.LogFactoryImpl.loadClass (Logfactoryim pl.java:435) at Org.apache.comm Ons.logging.impl.LogFactoryImpl.getLogConstructor (Logf actoryimpl.java:376) ...
6 more
The problem arises because Tomcat does not shut down all the threads that are started when Tomcat is turned off, just by following the exception information, and then the Tomcat window can be closed.
The reason for this is that we use quarter to manage task scheduling, but when we start quarter, there is a class of timed tasks that does not exist, causing the thread to remain occupied, The use of Shutdown.bat can not be shut down, only need to delete the wrong scheduling task, the use of Shutdown.bat to close the Tomcat window.