Tomcat 报错 org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading

1. 背景

我尝试使用scp 直接向远程Tomcat服务器路径传输war包,

scp -r ./target/courseDesign.war root@x x.xx.xx.xx:/usr/local/tomcat/webapps

传输完以后,发现所有发送过去的请求都无响应,在日志中查到以下信息。

07-Sep-2020 15:31:19.633 INFO [C3P0PooledConnectionPoolManager[identityToken->1bqqnffacsmkhtl17op5zq|1ac4152d]-HelperThread-#2] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load [com.mysql.jdbc.SQLError]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
        java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [com.mysql.jdbc.SQLError]. 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:1385)
                at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1373)
                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1226)
                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
                at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3562)
                at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3462)
                at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3905)
                at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)
                at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1714)
                at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224)
                at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2199)
                at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2230)
                at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2025)
                at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:778)
                at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
                at sun.reflect.GeneratedConstructorAccessor114.newInstance(Unknown Source)
                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
                at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
                at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386)
                at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
                at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
                at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
                at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
                at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
                at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
                at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
                at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
                at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
                at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)




搜索了一些结局方案以后,发现是Tomcat启动了两个服务导致的报错。

2. 解决方案

  1. 首先找出Tomcat的进程
ps -ef |grep tomcat
root     13527     1  3 16:13 pts/1    00:00:03 /usr/local/jdk1.8.0_211/jre/bin/java -Djava.util.logging.config.file=/usr/local/myTomcat/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/myTomcat/tomcat/bin/bootstrap.jar:/usr/local/myTomcat/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/myTomcat/tomcat -Dcatalina.home=/usr/local/myTomcat/tomcat -Djava.io.tmpdir=/usr/local/myTomcat/tomcat/temp org.apache.catalina.startup.Bootstrap start
root     13598 12422  0 16:15 pts/1    00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox tomcat
root     14985     1  0 Jun19 ?        03:25:17 /usr/local/jdk1.8.0_211/jre/bin/java -Djava.util.logging.config.file=/usr/local/myTomcat/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/myTomcat/tomcat/bin/bootstrap.jar:/usr/local/myTomcat/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/myTomcat/tomcat -Dcatalina.home=/usr/local/myTomcat/tomcat -Djava.io.tmpdir=/usr/local/myTomcat/tomcat/temp org.apache.catalina.startup.Bootstrap start









果然有两个进程。

  1. 杀掉两个进程
kill -9 13527 ; kill -9 14985
  1. 启动Tomcat
sh startup.sh

如果访问Tomcat服务显示404 Not Found,把war包重新传到服务器路径即可。


联系邮箱:curren_wong@163.com

CSDNhttps://me.csdn.net/qq_41729780

知乎https://zhuanlan.zhihu.com/c_1225417532351741952

公众号复杂网络与机器学习

欢迎关注/转载,有问题欢迎通过邮箱交流。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值