DBCPプールを使用し、testOnBorrowおよびtestOnReturnを使用してテストする接続はまだ有効です。
残念ながら、プロパティvalidationQueryを設定して動作させる必要があります。
質問:validationQueryにはどの値が必要ですか?
ValidationQueryは、少なくとも1行を返すSQL SELECTステートメントでなければなりません。
問題は、さまざまなデータベース(DB2、Oracle、hsqldb)を使用していることです。
すべてのデータベースに対して1つのvalidationQueryのみがあります。各データベースで、異なるvalidationQueryを使用する必要があります。
数時間のグーグルとテストの後、私はこの表を収集しました:
データベースの検証
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
select 1 from dual
select 1 from sysibm.sysdummy1
select 1
select 1
(SQL-Server 9.0、10.5 [2008]でテスト済み)select 1
select 1
values 1
select 1
select 1 from rdb$database
私は自分のブログでそれについて書いた- さまざまなデータベースの検証クエリ 。
事前に、JDBCドライバーに従ってvalidationQueryを返すクラスの例があります。
または誰かがより良い解決策を持っていますか?
Connector/Jドライバーを使用するMySQLの場合、サーバーにpingを送信し、ダミーの結果セットを返す軽量の検証クエリがあります。検証クエリは、正確に次の文字列にすることができます(または最初から開始する必要があります)。
/* ping */
詳細については、MySQLドライバーマニュアルの Validating Connections を参照してください。
Informixの場合、検証クエリは、systablesから1を選択します