2

サーバーにTomcatとPostgreSQLをインストールしています。c3p0プールを使用してサーブレットからPostgreSQLデータベースに接続しようとすると接続に問題が発生します。

ラップトップでローカルにTomcatを実行している場合は、DBにアクセスできます。また、psql(つまりコマンドラインSQLユーティリティ)を使用してサーバーからDBに接続できます。しかし、サーブレットをサーバーにデプロイして接続を確立しようとすると、次のエラーが発生します。

java.sql.SQLException: Connections could not be acquired from the underlying database!
    com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
...
    com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
        com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1319)
        com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
        com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)

問題を見つけるために何をチェックする必要がありますか?些細な問題かもしれませんが、午前4時が原因である可能性があります。何かが足りません:)よろしくお願いします!

PS:すべてのネットワークインターフェースからの接続はデータベースに許可されています。PostgreSQLJDBCドライバーとc3p0プールはWARで配布されます。Tomcat構成は非常にデフォルトです。JNDIは使用されません。

4

2 に答える 2

2

あなたはいくつかのことをチェックする必要があります:

  1. tomcatが使用しているjava.policy(例:/etc/tomcat5.5/policy.d/02debian.policy)
  2. dbサーバー設定(例:/etc/postgresql/pg_hba.conf)
  3. 私の場合、c3p0が重要な情報を私から隠していたので、最初にプールなしで接続してみてください
于 2010-02-18T14:35:19.957 に答える
2

@Alexeyの回答に加えて、TomcatとPostgreSQL9.4でこの問題が発生しました。私の場合、のmd5認証方法postgresが問題の原因でした。

Windows serverまたはを使用している場合は、ファイル内RHEL serverの認証方法を必ず更新してください。pg_hba.confに変更してtrustpostgresqlを再起動します。

于 2016-04-22T17:33:17.277 に答える