अपने कॉन्फ़िगरेशन गुणों में आपने c3p0 गुण maxIdleTime का उपयोग किया है, लेकिन c3p0 गुण c3p0.
का उपयोग करके कॉन्फ़िगर किए गए हैं। उपसर्ग या hibernate.c3p0.
. ध्यान दें कि किसी भी c3p0
. को सक्षम करना properties स्वचालित रूप से संबंधित कनेक्शन प्रदाता को हाइबरनेट ह्युरिस्टिक्स द्वारा सक्षम करता है। लॉग में यह नहीं देखा जाता है कि आप c3p0 का उपयोग कर रहे हैं। यदि आप कॉन्फ़िगर किए गए डेटा स्रोत नहीं हैं तो हाइबरनेट hibernate.connection.provider_class org.hibernate.connection.DriverManagerConnectionProvider
का उपयोग करेगा . इस कनेक्शन प्रदाता के पास इन-बिल्ट अल्पविकसित कनेक्शन पूल है जिसके लिए आप एक hibernate.connection.pool_size
सेट कर सकते हैं। , लेकिन इसका उपयोग केवल विकास उद्देश्यों के लिए किया जाता है। इसे उत्पादन वातावरण में कभी भी उपयोग न करें।
कैसे ठीक करें java.net.SocketException:ब्रोकन पाइप विषय पर आपकी अंतहीन चर्चा हो सकती है। . कुछ समय बाद आपको एहसास होगा कि आप खुले रह गए हैं पूल में कनेक्शन, जो निम्नलिखित कारणों से अचानक दूसरी तरफ बंद हो जाते हैं:
- फ़ायरवॉल या राउटर निष्क्रिय कनेक्शन पर बंद हो सकते हैं (MySQL क्लाइंट/सर्वर प्रोटोकॉल नोट नहीं करता है)।
- MySQL सर्वर निष्क्रिय कनेक्शनों को बंद कर सकता है जो
wait_timeout
. से अधिक हैं याinteractive_timeout
सीमा।
इन समस्याओं के निवारण में सहायता के लिए, निम्नलिखित युक्तियों का उपयोग किया जा सकता है:
- JDBC ड्राइवर के हाल के (5.1.13+) संस्करण का उपयोग किया गया है।
- सुनिश्चित करें कि
wait_timeout
औरinteractive_timeout
पर्याप्त ऊँचाई पर स्थापित हैं। जांचें कि क्याinteractiveClient
प्रयोग किया जाता है। - सुनिश्चित करें कि
tcpKeepalive
सक्षम है। - सुनिश्चित करें कि कोई भी कॉन्फ़िगर करने योग्य फ़ायरवॉल या राउटर टाइमआउट सेटिंग्स अधिकतम अपेक्षित कनेक्शन निष्क्रिय समय के लिए अनुमति देती हैं।
- सुनिश्चित करें कि कनेक्शन पूल से उपयोग किए जाने पर कनेक्शन मान्य हैं।
/* ping */
. से शुरू होने वाली क्वेरी का इस्तेमाल करें पूर्ण क्वेरी के बजाय हल्के पिंग निष्पादित करने के लिए। ध्यान दें, पिंग का सिंटैक्स बिल्कुल वैसा ही होना चाहिए जैसा यहां बताया गया है। - यदि कनेक्शन को लंबे समय तक निष्क्रिय छोड़ दिया गया है, तो इसका उपयोग करने से पहले कनेक्शन को स्पष्ट रूप से सत्यापित करें।
- एक कनेक्शन ऑब्जेक्ट के निष्क्रिय रहने की अवधि कम से कम करें जबकि अन्य एप्लिकेशन लॉजिक निष्पादित किया जाता है।
इनमें से कुछ विकल्पों का अनुपालन करने के लिए आप एक कनेक्शन पूल का बेहतर उपयोग करेंगे जिसे आप हाइबरनेट के साथ उपयोग कर सकते हैं। हाइबरनेट में कॉमन्स-डीबीसीपी, सी3पी0, और प्रॉक्सूल के लिए समर्थन है। इसके अलावा आप वेब सर्वर पर जेएनडीआई डेटा स्रोत को हाइबरनेट के साथ उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं, इसमें एक कनेक्शन पूल है। देखें अध्याय 7 कनेक्टर/जे के साथ कनेक्शन पूलिंग .
यदि आप हाइबरनेट को c3p0 के साथ कॉन्फ़िगर करना चाहते हैं, तो आपको यह C3P0 कनेक्शन पूल को कॉन्फ़िगर कैसे करें . डीबीसीपी उदाहरण विन्यास के लिए आपको इस पोस्ट की जांच करनी चाहिए MySQL, Hibernate and Broken Pipe Exception . आप जो भी कनेक्शन पूलिंग का उपयोग करेंगे वह आप पर निर्भर है।