web-dev-qa-db-ja.com

PostgreSQLJDBCを使用した接続プール

最近、PostgreSQL用のJDBCドライバーを ここ からダウンロードしました。 Java 1.7 JVMを使用しているので、次のように記述されています。

1.6または1.7JVMを使用している場合は、JDBC4バージョンを使用する必要があります。

JDBC4をダウンロードします。問題は、そこにPoolingDataSource'sが存在しないことです。 JDBC3を入手した場合は、org.postgresql.jdbc3.Jdbc3PoolingDataSourceまたはその他の例を使用できます ここ

JDBC4に私が知らないプーリングDataSourceはありますか、または代わりに何を使用する必要がありますか? JDBC4で見つけたのは PGPoolingDataSource だけですが、Java doc)に基づいているため、これを使用することになっているのかどうかわかりません。メッセージ:

サーバー/ミドルウェアベンダーがPostgreSQLConnectionPoolDataSource実装とインターフェイスする接続プール実装を提供している場合は、これを使用しないでください。

11
insumity

使用する org.postgresql.ds.PGPoolingDataSource
ここに例があります: http://jdbc.postgresql.org/documentation/head/ds-ds.html
JDBC4ドライバーを使用してこの例を確認しましたが、正常に機能しました。

ただし、このリンクのドキュメントでは、制限があるため、postgreSQLプーリングデータソースの使用を推奨していません。

ここで提供されるプーリングデータソースの実装は、世界で最も機能が豊富ではありません。特に、プール自体が閉じられるまで接続が閉じられることはありません。プールを縮小する方法はありません。同様に、デフォルトで構成されたユーザー以外のユーザーに要求された接続はプールされません。そのエラー処理では、壊れた接続をプールから削除できない場合があります。一般に、PostgreSQL˘が提供する接続プールを使用することはお勧めしません。アプリケーションサーバーを確認するか、優れたjakarta commonsDBCPプロジェクトを確認してください。

DBCP接続プールの使用をお勧めします: http://commons.Apache.org/proper/commons-dbcp/ 確認してください。はるかに優れています-ライブラリファイルをダウンロードしてクラスパッチに配置し、プロジェクトにインポートすると、上記のリンクのドキュメントに、コードでの使用方法の例が含まれています。

ほとんど(すべて?)のアプリケーションサーバーは独自の接続プールを実装しています。アプリケーションサーバーを使用している場合は、それが最適なオプションです。
たとえば、Tomcat 7には接続プールの独自の実装があり、DBCPよりも優れています。ドキュメントを確認してください: http://Tomcat.Apache.org/Tomcat-7.0-doc/jdbc-pool .html

15
krokodilko