使用tomcat manage发布项目报错Illegal access: this web application instance has been stopped already

错误信息:

Caused by: java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [META-INF/services/javax.xml.parsers.DocumentBuilderFactory]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.

        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1335)
        at org.apache.catalina.loader.WebappClassLoaderBase.findResources(WebappClassLoaderBase.java:973)
        at java.lang.ClassLoader.getResources(ClassLoader.java:1139)
        at java.util.ServiceLoader$LazyIterator.hasNextService(ServiceLoader.java:348)
        at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:393)
        at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:474)
        at javax.xml.parsers.FactoryFinder$1.run(FactoryFinder.java:293)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:289)
        at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:267)
        at javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:120)
        at org.springframework.beans.factory.xml.DefaultDocumentLoader.createDocumentBuilderFactory(DefaultDocumentLoader.java:90)
        at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:71)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)

        ... 19 more

原因:因为在tomcat重启的时候,因为之前的tomcat中的线程还没有完全关闭,新启动tomcat就会报这个异常

解决方案:

    网上有很多解决方案是将Context中的reloadable设置为false,但是我们项目没有设置context,既然是由于线程没有关闭导致的,那么将现有线程先关闭,然后在重启就可以了,使用python脚本如下(最好是写成一个脚本,两个还是比较麻烦的)

a.py

#coding:utf-8
import os
if __name__ == '__main__':
##重新加载前删除当前执行的app


   ret1 =  os.popen('curl --upload-file ./abc.war  -u admin:Pdmi1234 "http://172.17.1.57:8080/manager/text/deploy?path=/abc&update=true"')

   ##打印返回值
   print ret1.read()


   print '-------------------------------------------------'
   det1 = os.popen('curl -u admin:Pdmi1234 "http://172.17.1.57:8080/manager/text/stop?path=/abc"')
   print det1.read()
  等待a.py执行成功并且返回值都为OK,执行b.py

#coding:utf-8
import os
if __name__ == '__main__':
##重新加载前删除当前执行的app
   det11 = os.popen('curl -u admin:Pdmi1234 "http://172.17.1.57:8080/manager/text/start?path=/abc"')
   print det11.read()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值