3

JDBC 仕様alive or idle connectionsでは、データソース接続プールでの正確な意味が詳しく説明されていないようです。それは単に実装固有ですか?DBCP2またはHikariCPは実際にどのように接続ステータスを検査しますか?

アクティブなトランザクションのない接続は、以下でアイドルとマークされますか?

// assuming auto commit disabled already

Connection connection = dataSource.getConnection(); // idle?
/* issue some JDBC SQL statements */ // active?
connection.commit(); /* or rollback */ //idle again?
4

2 に答える 2

2

「アイドル」は、接続が現在貸し出されていないことを意味します。(Mark Rotteveel がコメントで述べているように、JDBC は特に接続プールを処理しないため、これは JDBC 仕様とは関係ありません。)「アクティブ」とは、接続が有効であり、使用できることを意味します。プールが明示的にそれを追跡しているため、何かがアイドル状態かどうかを判断するのは簡単ですが、有効かどうかを判断するのは困難です。これはネットワーク接続であり、いつでも失敗する可能性があるためです。

接続プールは、接続でいくつかのテスト SQL を実行することによって接続のステータスをチェックします。SQL は通常、「デュアルから 1 を選択」のような些細な設定プロパティを通じて提供されます。

于 2015-09-28T13:16:48.353 に答える