[英]Why Does Restarting Applications From /manager Cause A Slew of “this web application instance has been stopped already. ” warnings. Why?
Tomcat 7 install w/jvm 1.7. Tomcat 7使用jvm 1.7安装。
Several webapps loaded. 加载了几个webapp。 Hibernate 3.3 w/ c3p0 connection pooling running on affected application.
在受影响的应用程序上运行的带有c3p0连接池的Hibernate 3.3。
Quartz 1.8.3 jobs running on affected application. 在受影响的应用程序上运行的Quartz 1.8.3作业。
If I restart a web app from the /manager console, my catalina out starts filling up with this kind of thing: 如果我从/ manager控制台重新启动Web应用程序,我的Catalina就会开始填满这种事情:
INFO: Illegal access: this web application instance has been stopped already. 信息:非法访问:该Web应用程序实例已被停止。 Could not load org.hsqldb.jdbc.JDBCDriver.
无法加载org.hsqldb.jdbc.JDBCDriver。 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:1610) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at java.sql.DriverManager.isDriverAllowed(Unknown Source) at java.sql.DriverManager.getDrivers(Unknown Source) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:317) at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134) at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182) at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137) at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(Ba
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)处org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1610)处的java.lang.IllegalStateException。 oracle.jdbc.driver.OracleDriver上java.sql.DriverManager.isDriverAllowed(未知源)处的java.lang.Class.forName(未知方法)处的forName0(本机方法)。在com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)处com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)处connect(OracleDriver.java:317) .v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)位于com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool $ 1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.Release (Ba sicResourcePool.java:1014) at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32) at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810) at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
com.mchange.v2.resourcepool.sicResourcePool.java:1014)com.mchange.v2.resourcepool.BasicResourcePool $ AcquireTask.run(BasicResourcePool.java:1810)com.mchange.v2.resourcepool.BasicResourcePool $ AcquireTask.run(BasicResourcePool.java:1810) mchange.v2.async.ThreadPoolAsynchronousRunner $ PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Most curiously, I'm not trying to run anything invoking hsqldb, but am trying to touch an oracle database. 最奇怪的是,我没有尝试运行任何调用hsqldb的东西,而是试图接触一个oracle数据库。 Anyways, once I see this behavior in the logs, the oracle environment starts getting blasted with login requests, listener.log starts filling up and eventually the DBAs are screaming at me about my process.
无论如何,一旦我在日志中看到此行为,oracle环境便开始受到登录请求的攻击,listener.log开始填充,最终DBA对我的过程大吼大叫。
If I restart the application server as a whole, none of this happens and everything is great. 如果从整体上重新启动应用程序服务器,则不会发生任何事情,一切都很好。
What is going on? 到底是怎么回事? Any insight is greatly appreciated.
非常感谢任何见解。
ServletContextListener
is a good place to handle initialization and destruction of Connection pools. ServletContextListener
是处理连接池的初始化和销毁的好地方。 I think I need to work harder on destroying some threads. 我认为我需要更加努力地破坏一些线程。 Will poke around there and see if I can get it to work.
会在那附近戳一下,看看我能否使它工作。 Thanks.
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.