आप वास्तव में कनेक्शन पूल का उपयोग नहीं कर रहे हैं। एक ConnectionPoolDataSource सीधे इस्तेमाल करने का इरादा नहीं है। यह एक (विशेष) DataSource . के रूप में अभिप्रेत है PooledConnection के लिए ऑब्जेक्ट्स जो तब कनेक्शन पूल में एक (सामान्य) DataSource . द्वारा रखे जाते हैं कार्यान्वयन जो कनेक्शन पूलिंग प्रदान करता है।
एक सामान्य डेवलपर को ConnectionPoolDataSource . का उपयोग नहीं करना चाहिए सीधे तौर पर, यह एप्लिकेशन सर्वर द्वारा प्रदान किए गए कनेक्शन पूल के साथ उपयोग के लिए या सामान्य उद्देश्य DataSource में लपेटने के लिए अभिप्रेत है। s जो कनेक्शन पूलिंग प्रदान करते हैं।
जब कोई Connection कनेक्शन पूल से अनुरोध किया गया है, यह मौजूदा PooledConnection . को चेकआउट करेगा (या इसके ConnectionPoolDataSource . से एक नया अनुरोध करें ), एक Connection प्राप्त करें और इसे उपयोगकर्ता को वापस कर दें। जब उपयोगकर्ता Connection को बंद कर देता है , PooledConnection कनेक्शन पूल को संकेत देगा कि यह फिर से उपलब्ध है।
इस मामले में आप एक PooledConnection creating बना रहे हैं , एक Connection प्राप्त कर रहा है इसमें से और फिर PooledConnection . को त्यागना . इसका मतलब है कि PooledConnection छोड़ दिया जाता है, और डेटाबेस से इसके भौतिक कनेक्शन का पुन:उपयोग नहीं किया जा सकता है और अंत में कचरा एकत्र होने पर इसे बंद/त्याग दिया जाएगा (आमतौर पर जब कनेक्शन पूल भौतिक कनेक्शन को बंद करना चाहता है, तो यह close() को कॉल करेगा> PooledConnection . पर )।
आपको या तो अपने एप्लिकेशन सर्वर द्वारा प्रदान किए गए कनेक्शन पूलिंग का उपयोग करने की आवश्यकता है, या सामान्य प्रयोजन कनेक्शन पूल जैसे DBCP, c3p0 या BoneCP का उपयोग करना होगा।