2017-11-16 54 views
0

PostgreSQL JDBCは、接続プーリング用にいくつかのクラスを提供しています。使用するには、PGConnectionPoolDataSourceをお勧めします。このクラスでは、受信した接続がビジーの場合、ライブラリは別の接続を作成します。Postgresql jdbcプール接続の量を制限する方法は?

PGPoolingDataSource(電話がsetMaxConnections)は、いくつかの接続がフリーになるまで待っています(すべてがビジー状態の場合)。しかし、このクラスは@Deprecatedとマークされています。

ソースコードではPGPooledConnectionを使用していますが、そのうちの1つはBaseDataSourceを使用しており、制限はありません。

プール接続を制限する正しい方法はありますか?

答えて

0

HikariCPまたはDBCPのようなサードパーティの接続プールライブラリ、またはアプリケーションサーバーに含まれている(存在する場合)ライブラリを使用する必要があります。

また、これは(source on GitHubを参照)PGPoolingDataSourceの非推奨ノートに文書化されて:あなたはHikariCP、vibur-DBCP、のような完全な機能を 接続プールを使用する必要があり、42.0.0ので

代わりに、このクラスのなどコモンズ・DBCP、C3P0、

クラスPGConnectionPoolDataSourceは、接続の工場として接続プールでを使用することを意図して、接続プールを実装していません。

+0

これは悲しいことです。いつかプーリングがJDBCの一部になることを願っています! – Dmitry

+0

@Dmitry JDBCはAPIと仕様であり、決してプールを提供することはありません。JDBCの 'DataSource'を提供するサードパーティのライブラリを使用する必要がある理由は簡単です:接続プールを正しく行うことは難しいです。多くのJDBCドライバでは、最初に独自の接続プール実装が行われていましたが、ほとんどの場合、バグがあったり正常に実行されたりしませんでした。市場はより良い選択肢を生み出しました。 –

関連する問題