データベースが別のボックスにあり、その間にファイアウォールがあり、その間にアイドル接続をタイムアウトするように設定されている場合、以前にこのような問題が発生しました。
状況によっては、ファイアウォールがJDBCエンドが検出しないように接続を切断し、それを使用しようとすると、ブロックが無期限になります。
私の場合、プールから返す前に接続にテストクエリを送信したのはカスタム接続プールでした。このテストクエリを(Statement.setQueryTimeoutを使用して)タイムアウトするように構成し、無期限にブロックされないようにしました。