2013-10-06 3 views
11

के साथ कनेक्शन पूलिंग हाल ही में मैंने here से PostgreSQL के लिए जेडीबीसी ड्राइवर डाउनलोड किया। जब से मैं जावा 1.7 JVM उपयोग कर रहा हूँ और यह लिखा है:PostgreSQL जेडीबीसी

आप 1.6 या 1.7 JVM का उपयोग कर रहे हैं, तो आप JDBC4 संस्करण का उपयोग करना चाहिए।

मैं जेडीबीसी 4 डाउनलोड करता हूं। समस्या यह है कि इसमें PoolingDataSource's मौजूद नहीं है। यदि आपको जेडीबीसी 3 मिलता है तो आप org.postgresql.jdbc3.Jdbc3PoolingDataSource या अन्य का उपयोग here देख सकते हैं।

क्या जेडीबीसी 4 में DataSource कोई पूलिंग है जो मुझे नहीं पता है, या मुझे इसके बजाय उपयोग करना चाहिए? केवल एक चीज मैं JDBC4 में पाया PGPoolingDataSource है, लेकिन मैं यकीन है कि अगर मैं इस का उपयोग करने के लिए अपने जावा दस्तावेज़ संदेश के आधार पर क्योंकि माना जाता रहा हूँ नहीं कर रहा हूँ:

का उपयोग न करें यह आपके सर्वर/मिडलवेयर विक्रेता प्रदान करता है, तो एक कनेक्शन पूलिंग कार्यान्वयन जो PostgreSQL कनेक्शन PoolDataSource कार्यान्वयन के साथ इंटरफेस करता है!

उत्तर

15

उपयोग org.postgresql.ds.PGPoolingDataSource
यहाँ एक उदाहरण है: http://jdbc.postgresql.org/documentation/head/ds-ds.html
मैं इस उदाहरण JDBC4 ड्राइवर का उपयोग कर जांच की है और यह ठीक काम किया।

हालांकि इस लिंक से दस्तावेज में वे डेटा स्रोत पूलिंग PostgreSQL का उपयोग करने से हतोत्साहित की वजह से यह सीमाओं है:

पूलिंग डेटा स्रोत यहाँ प्रदान कार्यान्वयन दुनिया में सबसे सुविधा संपन्न नहीं है। अन्य चीजों के अलावा, कनेक्शन बंद नहीं होने तक कनेक्शन कभी बंद नहीं होते हैं; पूल को कम करने का कोई तरीका नहीं है। साथ ही, डिफॉल्ट कॉन्फ़िगर किए गए उपयोगकर्ता के अलावा अन्य उपयोगकर्ताओं के लिए अनुरोध किए गए कनेक्शन पूल नहीं किए गए हैं। कभी-कभी इसकी त्रुटि हैंडलिंग पूल से टूटे हुए कनेक्शन को नहीं हटा सकती है। सामान्य रूप से PostgreSQL˘ प्रदान किए गए कनेक्शन पूल का उपयोग करने की अनुशंसा नहीं की जाती है। अपने आवेदन सर्वर की जांच करें या उत्कृष्ट जकार्ता कॉमन्स डीबीसीपी परियोजना देखें।

वे DBCP कनेक्शन पूल का उपयोग करने की सलाह देते हैं: http://commons.apache.org/proper/commons-dbcp/ यह जाँच, यह बहुत बेहतर है - बस पुस्तकालय फ़ाइलों को डाउनलोड, उन्हें एक classpatch और परियोजना के लिए आयात में जगह, ऊपर के लिंक से प्रलेखन उदाहरण कैसे उपयोग करने के लिए होता है कोड में

अधिकांश (सभी?) एप्लिकेशन सर्वर अपने स्वयं के कनेक्शन पूल लागू करते हैं, यदि आप एप्लिकेशन सर्वर का उपयोग कर रहे हैं, तो यह सबसे अच्छा विकल्प है।
उदाहरण के लिए टॉमकैट 7 में कनेक्शन पूल का अपना कार्यान्वयन है, यह डीबीसीपी से भी बेहतर है, दस्तावेज जांचें: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html