जैसा कि @swanliu ने बताया कि यह खराब कनेक्शन के कारण है।
हालांकि सर्वर टाइमिंग और क्लाइंट टाइमआउट को एडजस्ट करने से पहले, मैं पहले एक बेहतर कनेक्शन पूलिंग रणनीति का उपयोग करने का प्रयास करूंगा।
कनेक्शन पूलिंग
हाइबरनेट स्वयं स्वीकार करता है कि इसकी कनेक्शन पूलिंग रणनीति न्यूनतम है
मैं व्यक्तिगत रूप से C3P0
. का उपयोग करता हूं . हालांकि DBCP
. सहित अन्य विकल्प भी उपलब्ध हैं .
चेक आउट करें
मेरे आवेदन में प्रयुक्त C3P0 का न्यूनतम विन्यास नीचे दिया गया है:
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="c3p0.max_size">100</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.min_size">10</property>
<property name="c3p0.timeout">1800</property> <!-- seconds -->
संपादित करें:
मैंने कॉन्फ़िगरेशन फ़ाइल अपडेट की (Reference
), जैसा कि मैंने पहले ही अपने प्रोजेक्ट के लिए कॉपी पेस्ट किया था। टाइमआउट आदर्श रूप से समस्या का समाधान करना चाहिए, अगर यह आपके लिए काम नहीं करता है तो एक महंगा समाधान है जो मुझे लगता है कि आप देख सकते हैं:
एक फ़ाइल "c3p0.properties" बनाएं जो क्लासपाथ की जड़ में होनी चाहिए (यानी एप्लिकेशन के विशेष हिस्सों के लिए इसे ओवरराइड करने का कोई तरीका नहीं)। (संदर्भ )
# c3p0.properties
c3p0.testConnectionOnCheckout=true
इस कॉन्फ़िगरेशन के साथ प्रत्येक कनेक्शन का उपयोग करने से पहले परीक्षण किया जाता है। हालांकि यह साइट के प्रदर्शन को प्रभावित कर सकता है।