सबसे आसान तरीका है autoReconnect
. निर्दिष्ट करना JDBC url में संपत्ति, हालांकि यह अनुशंसित तरीका नहीं है।
spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true
जब आपके पास एक सक्रिय कनेक्शन होता है और लेन-देन के दौरान कुछ होता है और एक पुन:कनेक्ट होने वाला होता है तो यह समस्याएं दे सकता है। जब लेन-देन की शुरुआत में कनेक्शन को मान्य किया जाता है और शुरुआत में एक नया कनेक्शन प्राप्त किया जाता है तो यह समस्या नहीं देगा।
हालांकि आपके आवेदन के जीवनकाल के दौरान आपके कनेक्शन के सत्यापन को सक्षम करना शायद बेहतर है। इसके लिए आप कई गुण निर्दिष्ट कर सकते हैं ।
पहले पूल के लिए आपके द्वारा अनुमत अधिकतम संख्या में कनेक्शन निर्दिष्ट करके प्रारंभ करें। (अधिकतम पूल आकार निर्धारित करने पर पढ़ने के लिए यह पढ़ें )।
spring.datasource.max-active=10
आप आरंभिक कनेक्शनों की संख्या भी निर्दिष्ट करना चाहेंगे
spring.datasource.initial-size=5
आगे आप निष्क्रिय कनेक्शन की न्यूनतम और अधिकतम संख्या निर्दिष्ट करना चाहते हैं।
spring.datasource.max-idle=5
spring.datasource.min-idle=1
कनेक्शन को मान्य करने के लिए आपको एक सत्यापन-क्वेरी निर्दिष्ट करने की आवश्यकता है और कब मान्य करना है। जैसा कि आप समय-समय पर सत्यापित करना चाहते हैं, इसके बजाय जब पूल से कनेक्शन पुनर्प्राप्त किया जाता है (यह आपके पूल में टूटे कनेक्शन को रोकने के लिए)।
spring.datasource.test-while-idle=true
spring.datasource.test-on-borrow=true
spring.datasource.validation-query=SELECT 1
नोट: validation-query
. का उपयोग वास्तव में निराश है क्योंकि जेडीबीसी 4 के पास कनेक्शन सत्यापन करने का एक बेहतर/अलग तरीका है। उपलब्ध होने पर HikariCP स्वचालित रूप से JDBC सत्यापन विधि को कॉल करेगा।
अब जब आप एक कनेक्शन के निष्क्रिय होने पर भी मान्य कर रहे हैं, तो आपको यह निर्दिष्ट करने की आवश्यकता है कि आप कितनी बार कनेक्शन के लिए इस क्वेरी को चलाना चाहते हैं और जब एक कनेक्शन को निष्क्रिय माना जाता है।
spring.datasource.time-between-eviction-runs-millis=5000 (this is the default)
spring.datasource.min-evictable-idle-time-millis=60000 (this is also default)
यह सब आपके (निष्क्रिय) कनेक्शनों के सत्यापन को ट्रिगर करना चाहिए और जब कोई अपवाद होता है या निष्क्रिय अवधि बीत जाती है तो आपके कनेक्शन पूल से हटा दिए जाएंगे।
मान लें कि आप कनेक्शन पूल के रूप में टॉमकैट जेडीबीसी का उपयोग कर रहे हैं यह क्या और कैसे कॉन्फ़िगर करना है, इसका एक अच्छा पठन है।
अद्यतन करें: स्प्रिंग बूट 2.x ने टॉमकैट JDBC के बजाय डिफ़ॉल्ट कनेक्शन पूल को HikariCP में बदल दिया।