コネクションプーリングって切れるんですねー

DBCPでコネクションプーリングをやっている時
デフォルトの設定のままだと
長い間使われないコネクションに対して
プール上は有効だが、DBMS的には無効になります。

その為に、
validationQuery
という設定にて、プールからコネクションを取得する時に
生きてるかチェックすることをする必要があります。

ただ、毎回行うのは何だかナンセンスなので
ある程度時間がたった時にチェックするようにすると
エレガント。


毎日APサーバーをリブートする運用であれば問題ないですが・・・。
本番運用前に見つかってよかった・・・汗



【考えられる方法】
validationQuery・・・死活監視の為に発行するSQL
testOnBorrow・・・getConnectionした時に死活監視のSQLを発行するか?

死活監視スレッド設定
timeBetweenEvictionRunsMillis・・・死活監視スレッドの起動間隔
minIdle・・・アイドル接続を維持する個数
testWhileIdle・・・死活監視をするか?
minEvictableIdleTimeMillis・・・どのくらいアイドル接続しているかを設定(デフォルト30分)
numTestsPerEvictionRun・・・プール内で生きているかどうかチェックするアイドル接続数



【値】
validationQuery・・・select 1 from dual
testOnBorrow・・・false

死活監視スレッド
timeBetweenEvictionRunsMillis・・・3時間くらいをミリ秒で
minIdle・・・コネクションプールの中のminコネクションくらい設定
testWhileIdle・・・true
minEvictableIdleTimeMillis・・・どのくらいアイドル接続しているかを設定(デフォルト30分)
numTestsPerEvictionRun・・・コネクションプールの中のminコネクションくらい設定