コネクションの枯渇
Oracleドライバを使用しているときに、例えばApコンテナの切り出すスレッドがMAX100、コネクションプールがMAX10にした場合の話の動作。
負荷をかければ当然コネクションプールが枯渇するわけです。
この時どのような動作になるかとは「JDBC開発者ガイドおよびリファレンス」*1によると、
ConnectionWaitTimeout 接続が要求され、すでにMaxLimit の数の接続がアクティブである場合のキャッシュの動作 を指定します。ConnectionWaitTimeout がゼロ(0)より大きい場合、各接続要求は、 指定された秒数、または接続がキャッシュに戻されるまで待機します。タイムアウトの期間 が経過しても接続がキャッシュに戻されない場合、接続要求はNULL を戻します。 デフォルト: 0(タイムアウトなし)
よってNullPointerExceptionないしはそれに起因する例外が発生するのは仕様ですよ、仕様。
・・・とここまで書いて気がついたが、「コネクションプール」と「接続キャッシュ」は別物なのだろうか?