2012-02-17 11 views
10

मैंने अभी बोनेसीपी का उपयोग करना शुरू कर दिया है और लेखकों साइट से नमूना जेडीबीसी कोड खींच लिया है।बोनसीपी सही उपयोग

मैं) एक समारोह getConnection (कहा जाता है कि एक कनेक्शन देता है यहाँ एक टुकड़ा है:

// setup the connection pool 
BoneCPConfig config = new BoneCPConfig(); 
// Config goes here. 
connectionPool = new BoneCP(config); // setup the connection pool 

return connectionPool.getConnection(); // fetch a connection 

अब, मेरे सवालों का: 1) जब मैं का उपयोग समाप्त कर रहा हूँ मैं connection.close() फोन करो कनेक्शन जो उपरोक्त फ़ंक्शन से वापस लौटाया जाता है, इसलिए इसे पूल में वापस कर दिया जाता है या क्या यह कनेक्शन को पूरी तरह बंद कर देता है? मैं पूल से कनेक्शन कैसे वापस कर सकता हूं?

2) आवेदन पर पूल को कैसे साफ करें? क्या मैं कनेक्शन पुल को कॉल करता हूं। शटडाउन() जब मैं खत्म कर रहा हूं? और, मैंने कहीं पढ़ा है कि मुझे व्यक्तिगत रूप से सभी पूल कनेक्शन बंद करने की आवश्यकता है? क्या ये सच है?

धन्यवाद।

उत्तर

17

1. पूल के कनेक्शन को वापस करने के लिए हमेशा connection.close() पर कॉल करें (यह शारीरिक रूप से बंद नहीं होगा) जब आप इसके साथ काम करेंगे।

2. कॉल connectionPool.shutDown() जब आप पूल के साथ पूरी तरह से कर रहे हैं और फिर से कनेक्ट करने की योजना नहीं बनाते हैं।

1
Connection connection = dbPool.getConnection(); 

पूल से प्राप्त कनेक्शन ऑब्जेक्ट, एक रैपर वर्ग है। यह अपवाद में अंतर्निहित कनेक्शन को ठीक से बनाए रखेगा।

कनेक्शन से संबंधित अपवादों में भी, उदाहरण के लिए, TERMINATE_ALL_CONNECTIONS, बोनसीपी पूल सभी अंतर्निहित कनेक्शन ठीक से बंद कर देगा।

संक्षेप में, बोनसीपी पूल कैश पारदर्शी बनाता है। क्लाइंट साइड केवल, स्टैंड प्रवाह का पालन की जरूरत है

  1. अनुरोध कनेक्शन (पूल से कनेक्शन ले, पूल तय करेगा पुन: उपयोग करने के लिए कि क्या/बनाएं)
  2. अनुरोध PreparedStatement/CallableStatement (पुन: उपयोग पूल से वस्तु अगर यह सक्षम है)
  3. , बयान
  4. पास बयान पर अमल (पूल के बयान वस्तु जारी अगर यह सक्षम है)
  5. +०१२३५१६४१०६
  6. घनिष्ठ संबंध, (पूल के लिए कनेक्शन वस्तु जारी)

जब अनुप्रयोग बंद, बंद सभी संचित कनेक्शन जारी करने के लिए पूल।

boneCP.shutdown() 
+0

मैं सोच रहा हूँ, अगर अपने सर्वर क्रैश हो जाता है और मैं पुनः आरंभ करना, मैं कैसे बाहर कनेक्शन बंद के बाद से जारी नहीं किया गया साफ़ करूं कभी नहीं कहा जाता था? – PixMach

+0

बोनसीपी उन्हें सही तरीके से सौंपेगा। इसे स्पष्ट करने के लिए, BoneCP आपके लिए कनेक्शन प्रबंधित करने के लिए एजेंट की तरह अधिक है। आप इससे "उधार" कनेक्शन, बस वापस "वापसी" याद रखने की जरूरत है। अन्य सभी कनेक्शन जीवन चक्र प्रबंधन कठिन चीजों को बोनेसीपी द्वारा ख्याल रखा जाएगा। –

+0

यह जानना बहुत अच्छा है, लेकिन यह अभी भी कनेक्शन ऑब्जेक्ट को बंद करने के लिए अजीब लगता है, जो वास्तविक कनेक्शन ऑब्जेक्ट की तरह दिखता है जो बोनसीपी कोड पर एक नज़र में दिखता है। किसी भी तरह से मैं इसे देख सकता हूँ? सार्वजनिक कनेक्शन getConnection() SQLException फेंकता है {// संकलित कोड} – mikato

संबंधित मुद्दे