मुझे पहले भी इस तरह की समस्या का सामना करना पड़ा है जब डेटाबेस एक अलग बॉक्स पर होता है और बीच में एक फ़ायरवॉल होता है जो निष्क्रिय कनेक्शन को टाइमआउट करने के लिए सेट होता है।
कुछ परिस्थितियों में फ़ायरवॉल कनेक्शन को इस तरह से काट देता है कि JDBC अंत का पता नहीं चलता है, और इसका उपयोग करने का प्रयास अनिश्चितकालीन ब्लॉक में परिणत होता है।
मेरे मामले में यह एक कस्टम कनेक्शन पूल था जिसने इसे पूल से वापस करने से पहले कनेक्शन के नीचे एक परीक्षण क्वेरी भेजी थी। मैंने इस परीक्षण क्वेरी को टाइमआउट (Statement.setQueryTimeout का उपयोग करके) के लिए कॉन्फ़िगर किया है ताकि यह अनिश्चित काल तक अवरुद्ध न हो।