我已经使用apache CXF实现了Rest Web服务,并且已经设置了org.apache.tomcat.jdbc.pool
中提供的Tomcat连接池。
一切似乎工作正常,我的连接池工作但我不断得到与PoolCleaner
相关的异常。问题是我无法在发生此异常时找到特定模式。对我来说似乎是随机的,有时候它与以前不同。有时会在我启动tomcat时发生,有时则在我访问或部署Web应用程序时发生。
所以这是我得到的变种
的例外我大多数时候都会这样:
Exception in thread "PoolCleaner[28224875:1372776292150]" java.lang.NullPointerException
at org.apache.tomcat.jdbc.pool.ConnectionPool.unregisterCleaner(ConnectionPool.java:1296)
at org.apache.tomcat.jdbc.pool.ConnectionPool.access$400(ConnectionPool.java:57)
at org.apache.tomcat.jdbc.pool.ConnectionPool$PoolCleaner.stopRunning(ConnectionPool.java:1364)
at org.apache.tomcat.jdbc.pool.ConnectionPool$PoolCleaner.run(ConnectionPool.java:1341)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
有时候我会得到这个
INFO: Illegal access: this web application instance has been stopped already. Could not load org.apache.tomcat.jdbc.pool.FairBlockingQueue$FairIterator. 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:1566)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.apache.tomcat.jdbc.pool.FairBlockingQueue.iterator(FairBlockingQueue.java:233)
at org.apache.tomcat.jdbc.pool.ConnectionPool.testAllIdle(ConnectionPool.java:1034)
at org.apache.tomcat.jdbc.pool.ConnectionPool$PoolCleaner.run(ConnectionPool.java:1352)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Exception in thread "PoolCleaner[6345204:1372865832250]" java.lang.NoClassDefFoundError: org/apache/tomcat/jdbc/pool/FairBlockingQueue$FairIterator
at org.apache.tomcat.jdbc.pool.FairBlockingQueue.iterator(FairBlockingQueue.java:233)
at org.apache.tomcat.jdbc.pool.ConnectionPool.testAllIdle(ConnectionPool.java:1034)
at org.apache.tomcat.jdbc.pool.ConnectionPool$PoolCleaner.run(ConnectionPool.java:1352)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.jdbc.pool.FairBlockingQueue$FairIterator
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
... 5 more
有关为何发生这种情况的任何想法?我如何追踪其根本原因?我该如何解决?
由于
答案 0 :(得分:1)
这会发生因为缺少jar文件或jar文件的版本被更改..
我花了一天后得到了解决方案。
答案 1 :(得分:0)
大多数情况下,这是一个后续错误,例如“ org.apache.catalina.core.StandardContext.startInternal Context []启动因以前的错误而失败 “ 可以在 catalina.out 中找到。
最好在文件 localhost.log 中的tomcat / logs目录中找到上一个错误。
答案 2 :(得分:0)
我通过执行以下步骤(在Eclipse Mars中)解决了它,
我不知道这是不是偶然的,但是在无用的调试和检查jar版本后它对我有用。
答案 3 :(得分:0)
当数据库迁移脚本包含另一个迁移脚本但是该文件丢失时,我在grails中发生了这个错误(例如grails-app / migration / dbchanges.groovy包括grails-app / migration / changelog-1.0.0.groovy ,但changelog-1.0.0.groovy已被删除)。更新dbchanges.groovy修复它。