コネクションの枯渇

Oracleドライバを使用しているときに、例えばApコンテナの切り出すスレッドがMAX100、コネクションプールがMAX10にした場合の話の動作。
負荷をかければ当然コネクションプールが枯渇するわけです。


この時どのような動作になるかとは「JDBC開発者ガイドおよびリファレンス」*1によると、

ConnectionWaitTimeout
接続が要求され、すでにMaxLimit の数の接続がアクティブである場合のキャッシュの動作
を指定します。ConnectionWaitTimeout がゼロ(0)より大きい場合、各接続要求は、
指定された秒数、または接続がキャッシュに戻されるまで待機します。タイムアウトの期間
が経過しても接続がキャッシュに戻されない場合、接続要求はNULL を戻します。
デフォルト: 0(タイムアウトなし)


よってNullPointerExceptionないしはそれに起因する例外が発生するのは仕様ですよ、仕様。


・・・とここまで書いて気がついたが、「コネクションプール」と「接続キャッシュ」は別物なのだろうか?