バグの原因判明。

 Eclipse上でステップ実行して追ってみて判明。

  • とりあえず jar が古かった(爆)。
  • timeBetweenEvictionRunsMillis が 0 じゃダメ。待機状態のオブジェクトを監視するシステムって別スレッドで timeBetweenEvictionRunsMillis ミリ秒おきにチェックする仕組みになってるんで。

 あと、「最大アクティブ数」と「最大アイドル数」の違いがわからなかったんだけどソース見て納得。前者が 5 、後者が 2 とすると、同時に 5 個貸し出せるけど、そのあと返却する時にプールへと返されるのは 2 、そのあと返されそうになる残りの 3 は破棄されるんですね。頻繁に貸し出しがあるなら数字を近づけて、そうでないなら差を付けるのがいいんかな。