Tomcat 6 で実行されている Java Web アプリケーションがあり、永続化のために jar を呼び出しています。この jar は tomcat lib フォルダーにあり、tomcat データソースを使用します。
<Resource name="jdbc/mydatasource"
auth="Container"
type="javax.sql.DataSource"
username="USER"
password="PASSWORD"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://HOST:5432/DATABASE"/>
jar は、ORM に hibernate 3.5.6-Final を使用する Java プロジェクトのバイナリです。休止状態の構成は次のとおりです。
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.connection.datasource">java:jdbc/mydatasource</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
最初は、hibernate-c3p0 バンドルをアプリケーションに含めていなかったため、c3p0 設定は使用されませんでした。そして、アプリケーション全体がこのようにうまく動作します。
プーリング管理を改善するために、hibernate-c3p0 バンドルを追加しました。そのため、このバンドルは永続化のために jar に埋め込まれています。
しかし、現在、このエラーが発生しています (weba アプリケーションが永続化 jar からデータを取得しようとすると、各起動後に表示されます)。
[Task-Thread-for-com.mchange.v2.async.ThreadPerTaskAsynchronousRunner@eafa5f] 13 :46:22 WARN - BasicResourcePool$AcquireTask: () com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@b321c1 -- 取得の試み失敗した!!!保留中の取得をクリアします。必要な新しいリソースを取得しようとしているときに、許可されている最大取得試行回数 (30 回) を超えて成功しませんでした。最後の取得試行の例外: java.lang.NullPointerException at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:507) at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476) at sun.jdbc. odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307) at java.sql.DriverManager.getDriver(DriverManager.java:253) at com.mchange.v2.c3p0.DriverManagerDataSource.
データソースで定義されている postgresql ドライバーの代わりに Ojdbc ドライバーが使用されているように見えるため、これは間違っているようです。
このエラーが表示される原因と解決方法を知っていますか?
休止状態の構成でさまざまなことを試しましたが、stackoverflow とさまざまなフォーラムで見つけましたが、問題は解決しません。
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="driverClass">org.postgresql.Driver</property>
<property name="hibernate.c3p0.driverClass">org.postgresql.Driver</property>
パーシスタンスと tomcat のインストールに使用される jar のみを制御できることを明確にする必要があります。jar を呼び出している Web アプリケーションを変更することはできません。