1

ubuntu 14.04 OS で tomcat 7、tomcat-jdbc.jar、p6spy 2.14、C3p0、および休止状態を使用します。

私の p6spy.jar は、私の cp にある /usr/share/tomcat7/lib にあります。spy.properties ファイルは、システム プロパティを介して tomcat に適切に渡されています。

hibernate.cfg.xml の関連セクション

<hibernate-config>
      <driver_class>com.p6spy.engine.spy.P6SpyDriver</driver_class>
      <url>jdbc:p6spy:mysql://myhost:3306/mydatabase</url>
      <username>xxx</username>
      <password>xxx</password>
</hibernate-config>

driverlist=com.mysql.jdbc.Driver を明示的に追加すると

spy.properties tomcat は次の例外をスローします。

Warning: Error registering driver names: [com.mysql.jdbc.Driver]
Caused By: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
com.p6spy.engine.spy.P6DriverNotFoundError: Error registering driver names: [com.mysql.jdbc.Driver]
Caused By: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at com.p6spy.engine.spy.P6ModuleManager.loadDriversExplicitly(P6ModuleManager.java:220)
        at com.p6spy.engine.spy.P6ModuleManager.<init>(P6ModuleManager.java:130)
        at com.p6spy.engine.spy.P6ModuleManager.initMe(P6ModuleManager.java:73)
        at com.p6spy.engine.spy.P6ModuleManager.<clinit>(P6ModuleManager.java:61)...

driverlist 設定を外したり、上記のように設定したりすると、常にこの例外が発生します。奇妙なことに、接続文字列から p6spy プレフィックスが切り捨てられたようです。

WARN [com.mchange.v2.resourcepool.BasicResourcePool]: com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@309efc1f -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
java.sql.SQLException: Unable to find a driver that accepts jdbc:mysql://devtestrds.cdsug1b8degu.us-west-1.rds.amazonaws.com:3306/biz_eng
        at com.p6spy.engine.spy.P6SpyDriver.findPassthru(P6SpyDriver.java:119)
        at com.p6spy.engine.spy.P6SpyDriver.connect(P6SpyDriver.java:94)
        at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
        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(BasicResourcePool.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)

p6spy がこのドライバーを見つけられない理由がわかりません。これはおそらくある種のクラス読み込みエラーでしょうか? 手がかりをいただければ幸いです

4

3 に答える 3

2

P6Spy 2.X では、spy.properties で driverlist=com.mysql.jdbc.Driver を設定する必要があります。

P6Spy 1.3 はドライバーを自動的に登録するため、登録が重複することがありました。これが、1.3 にもドライバーの登録を解除する設定があった理由です。

于 2015-11-30T16:57:27.680 に答える
0

この問題に直面しながら、今日は夢中になっています。ログを上にスクロールすると、ojdbc ドライバーが Java 6 でサポートされていないことがわかりました。Java 7 を構成すると、すべてがうまくいきます。

于 2016-08-26T09:26:18.773 に答える
0

mysql-connector-java-5.1.37-bin.jar を CP に追加した後、p6spy ドライバー パススルーを介して tomcat で SQL ドライバーを見つけることができましたが、最終的にリンケージ例外がスローされました。

しかし、最終的には、p6spy v1.3 にダウングレードし、対応する 1.3 形式の spy.properties ファイルで「deregisterdrivers=true」を設定することで、tomcat7/hibernate 構成で p6spy が正しく動作するようになりました。

于 2015-11-30T02:01:25.740 に答える