非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。

非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。


今天写web工程时,重新部署项目的时候控制台突然出现异常,但是对我的web工程功能好像没什么影响,于是我上网找大神的文章,了解他们如何理解与解决这个问题,下面是报错信息。

java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
		at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1378)
		at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1030)
		at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:117)
		at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:84)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at java.lang.Thread.run(Thread.java:748)

在这里插入图片描述

理解与解释:

当我重新部署项目的时候,程序会被卸载,但是此时还有些线程还没有关闭,当tomcat已经关闭类加载器后,因为一些线程依然在运行,这个时候由于堆栈跟踪调试的,想试图终止线程,导致非法访问,于是抛出一个异常,但是这个异常对项目功能是没有影响的。

解决方法
修改tomcat目录下conf文件夹下的server.xml,在Host标签添加子元素找到Context标签,把reloadble的属性值设为:reloadable=“false”。

reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用 ,也就是热部署。 有助于调试servlet和其它的class文件,但这样用加重服务器运行负荷,建议在Web应用的发存阶段将reloadable设为false。

参考文献

你可能感兴趣的:(Java基础学习,java,多线程,tomcat)