4

apache CXF を使用して Rest Web サービスを実装し、.xml で提供される Tomcat の接続プールをセットアップしましたorg.apache.tomcat.jdbc.pool

すべてが正常に動作しているようで、接続プールも動作しますが、に関連する例外が発生し続けます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

なぜこれが起こっているのかについてのアイデアはありますか? その根本原因を追跡するにはどうすればよいですか? どうすれば解決できますか?

ありがとう

4

4 に答える 4

1

これは、jar ファイルが見つからないか、jar ファイルのバージョンが変更されたために発生します。

1日過ごした後、私は解決策を得ました。

于 2014-06-17T09:57:50.047 に答える
0

次の手順(Eclipse Marsで)を実行して解決しました。

  1. Tomcat の作業ディレクトリを消去する
  2. プロジェクトをクリーンアップして、ビルド/デプロイします
  3. サーバーを再起動します

偶然かどうかはわかりませんが、無駄なデバッグとjarのバージョンの確認を行った後、うまくいきました。

于 2016-05-02T09:42:06.727 に答える
0

このエラーは、データベース移行スクリプトに別の移行スクリプトが含まれていたが、そのファイルが見つからなかったときに grails で発生しました (たとえば、grails-app/migration/dbchanges.groovy には grails-app/migration/changelog-1.0.0.groovy が含まれていましたが、changelog -1.0.0.groovy は削除されていました)。dbchanges.groovy を更新すると修正されました。

于 2016-06-08T21:05:50.377 に答える
0

ほとんどの場合、これはフォローアップ エラーであり、「org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors 」のようなものがcatalina.out の早い段階で見つかる可能性があります。

前のエラーは、ファイルlocalhost.logの tomcat /logs dir で最もよく見つかります。

于 2015-01-19T13:03:05.337 に答える