2009-07-06 15 views
11

मैं OracleConnectionCacheImpl के माध्यम से ओरेकल कनेक्शन पूलिंग के साथ एक समस्या में भाग रहा हूं। जब मैं पतली चालक के माध्यम से अपने डेटाबेस सर्वर (ओरेकल 10 जी) पर एक कनेक्शन पूल से कनेक्ट करता हूं, तो सबकुछ अनिश्चित समय के बाद ठीक काम करता है, डीबी कनेक्शन गिर जाता है (संभवतः निष्क्रिय कनेक्शन के कारण?) और मुझे एक त्रुटि संदेश मिलता है:कनेक्शन बाधा के बाद ओरेकल कनेक्शन पूल को फिर से कनेक्ट कैसे करें?

बंद कनेक्शन।

पेज रिफ्रेशिंग और कनेक्शन reattempting डेटाबेस पुन: कनेक्ट हो, तो यह नेटवर्क या डेटाबेस में कोई समस्या होने के लिए प्रतीत नहीं होता। ओरेकल कनेक्शन पूल के लिए अपने कनेक्शन को सत्यापित करने का कोई तरीका है और किसी भी कारण से पूल में कनेक्शन मरने पर फिर से कनेक्ट हो सकता है?

मैं अपाचे बिलाव 6.0.18, जावा EE6 अद्यतन 11.

उपयोग कर रहा हूँ (वहाँ ओरेकल पतली चालक में एक पिंग समारोह हो रहा है। कि मदद करता है और जहां मैं इसे पा सकते हैं?)

+2

1) आप बंद कनेक्शन 2) यदि आप InactivityTimeout, TimeToLiveTimeout या AbandonedConnectionTimeout किसी भी गैर डिफ़ॉल्ट मानों के लिए सेट किया है के लिए पूरे स्टैक ट्रेस जोड़ सकते हैं? 3) क्या आप ValidateConnection का उपयोग करते हैं? –

+0

4) ऐप सर्वर और डीबी सर्वर के बीच भौतिक कनेक्शन नेटवर्क स्तर पर कट ऑफ हो रहे हैं, उदा। फ़ायरवॉल द्वारा? –

+0

मैं इन पैरामीटर को कहां सेट करूं? मैं ओरेकल प्रोग्रामिंग के लिए नया हूं, इसलिए मुझे यकीन नहीं है कि इन पैरामीटर को कहां खोजें। मैं ValidateConnection कहां पा सकता हूं और पुन: कनेक्ट कर सकता हूं? (बस मुझे लगता है कि त्रुटि तुरंत ठीक हो जाएगी, मेरे ब्राउज़र को रीफ्रेश करना। मुझे यकीन नहीं है कि यह फ़ायरवॉल मुद्दा है।) – futureelite7

उत्तर

-1

सी 3 पी 0 जैसे अन्य कनेक्शन पूल लाइब्रेरी का उपयोग करें और स्वचालित reconnect के लिए सुविधा का उपयोग करें।

0

अपाचे डीबीसीपी (डीबी कनेक्शन पूल) यहां मदद करेगा। आप 'validationQuery' पैरामीटर के साथ कॉन्फ़िगर कर सकते हैं, जो कि पूल से हटाए गए कनेक्शन पर चलाने के लिए एक SQL क्वेरी है इससे पहले कि यह आपको देता है। यदि क्वेरी विफल हो जाती है, तो कनेक्शन को त्याग दिया जाता है और एक नया बनाया जाता है और आपको दिया जाता है।

अधिक जानकारी के लिए यहां http://commons.apache.org/proper/commons-dbcp/configuration.html देखें।

नोट, सत्यापन से प्रत्येक बार पूल से कनेक्शन प्राप्त होने पर सत्यापन बुलाया जाएगा, इसलिए इसे जितनी जल्दी हो सके उतनी जल्दी होनी चाहिए। उदाहरण:

SELECT id FROM users LIMIT 1; 
0

आप context.xml में कुछ कॉन्फ़िगरेशन पैरामीटर जोड़ सकते हैं ताकि टॉमकैट कनेक्शन पूल मृत कनेक्शन का ख्याल रखे। Context.xml का एक उदाहरण यहां दी गई है, कृपया सेटिंग्स के अनुसार उपयोगकर्ता/पासवर्ड/यूआरएल/बंदरगाहों आदि का उपयोग करें।

<?xml version="1.0" encoding="UTF-8"?> 
<Context path=""> 
    <!-- Specify a JDBC data source --> 
    <Resource name="jdbc/db" auth="Container" 
       type="javax.sql.DataSource" 
       username="user" 
       password="password" 
       driverClassName="driver.class.fullpath" 
       url="jdbc:oracle://localhost:3306/ 
       maxActive="50" 
       maxIdle="10" 
       testOnBorrow="true" 
       testWhileIdle="true" 
       validationQuery="/* ping */" 
       removeAbandoned="true" 
       logAbandoned="true"/> 
</Context>