Saya pernah mengalami masalah seperti ini sebelumnya ketika database berada di kotak terpisah dan ada firewall di antaranya yang disetel ke batas waktu koneksi idle.
Dalam beberapa keadaan, firewall memutuskan koneksi sedemikian rupa sehingga ujung JDBC tidak mendeteksi, dan mencoba menggunakannya menghasilkan blok yang tidak terbatas.
Dalam kasus saya, itu adalah kumpulan koneksi khusus yang mengirim kueri pengujian ke koneksi sebelum mengembalikannya dari kumpulan. Saya mengonfigurasi kueri pengujian ini untuk memiliki batas waktu (menggunakan Statement.setQueryTimeout) sehingga tidak memblokir tanpa batas waktu.