java - टोमकैट-डीबीसीपी बनाम कॉमन्स-डीबीसीपी




apache-commons apache-commons-dbcp (4)

ऐसा लगता है कि इन दो कनेक्शन पूलिंग पुस्तकालयों के बीच बहुत भ्रम है। मैं क्या जानना चाहता हूं कि कौन सा बेहतर है (अगर बिल्कुल)?

यहां कुछ बिंदु दिए गए हैं जिन्हें मैं रखना चाहता हूं ... क्या कोई कृपया सत्यापित कर सकता है?

  1. टॉमकैट डीबीसीपी: डिफ़ॉल्ट tomcat-dbcp.jar का उपयोग करता है जो आपके tomcat / lib निर्देशिका में मौजूद होगा। आपको अपने वेब-इंफ / lib में commons-dbcp.jar या commons-pool.jar लाइब्रेरी की आवश्यकता नहीं है। डीबी चालक को टॉमकैट / लिब में रखा जाना चाहिए।

  2. टॉमकैट डीबीसीपी डेटासोर्स क्लास org.apache.tomcat.dbcp.dbcp.BasicDataSource । कॉमन्स डीबीसीपी डेटासोर्स क्लास org.apache.commons.dbcp.BasicDataSource

  3. इन दोनों के बीच एकमात्र अंतर इस ब्लॉग में पाया जा सकता है। पता नहीं है कि जानकारी सही है या नहीं।

  4. आधिकारिक टोमकैट दस्तावेज स्पष्ट रूप से उल्लेख करता है कि ज्यादातर वर्गों को फिर से नामित किया गया है और फिर से पैक किया गया है।

तो सवाल यह है कि कौन सा उपयोग करना है और कौन सा बेहतर है ?


ऐसा लगता है कि इन दो कनेक्शन पूलिंग पुस्तकालयों के बीच बहुत भ्रम है। मैं क्या जानना चाहता हूं कि कौन सा बेहतर है (अगर बिल्कुल)?

टीएल / डीआर: ये वही हैं, उनमें से किसी का भी उपयोग न करें।

टॉमकैट-डीबीसीपी टोमकैट वितरण में शामिल अपाचे कॉमन्स पूल का मूल पुन: पैकेज है। क्लास टकराव पैकेज से बचने के लिए org.apache.tomcat.dbcp.dbcp का नाम बदल दिया गया था। *

टॉमकैट 7 (जुलाई 2011 में 7.0.1 9 से शुरू) में एक अतिरिक्त कनेक्शन पूल डिफ़ॉल्ट रूप से टोमकैट पैकेज (टॉमकैट-जेडीबीसीजर के हिस्से के रूप में) में शामिल किया गया था, जिसे "द टॉमकैट जेडीबीसी कनेक्शन पूल" कहा जाता है,

https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

इस लेख में दोनों के बीच मतभेद शामिल हैं:

http://vigilbose.blogspot.com/2009/03/apache-commons-dbcp-and-tomcat-jdbc.html

संक्षिप्त सारांश क्यों नया टॉमकैट पूल बेहतर है:

  • सक्रिय रूप से समर्थित है
  • बहुत छोटा, समझने और बनाए रखने में आसान (यदि आप स्रोत को देखना चाहते हैं)
  • सभी कॉमन्स-डीबीसीपी फीचर्स का समर्थन करता है + "इनिटएसक्यूएल", "सत्यापन इंटरवल", "जेडीबीसीइंटरसेप्टर्स" और अधिक जैसे सुपर उपयोगी लोगों को जोड़ता है

अपाचे कॉमन्स डीबीसीपी (यानी संस्करण 1.2) के पुराने संस्करणों में उच्च लोड स्थितियों के तहत कुछ ग़लत धागे-सुरक्षा समस्याएं थीं, जिससे इसे इस तरह के उपयोग के लिए अनुपयुक्त बना दिया गया। यह मुझे आश्चर्य नहीं करता कि टॉमकैट लोगों ने इन मुद्दों को ठीक करने के लिए फिर से काम किया।

हालांकि, मेरी समझ यह है कि कॉमन्स डीबीसीपी 1.4 इन मुद्दों को हल करता है। मैं व्यक्तिगत रूप से इसकी पुष्टि नहीं कर सकता, लेकिन यह टॉमकैट संस्करण को अनावश्यक प्रस्तुत कर सकता है।

दिलचस्प बात यह है कि स्प्रिंगसोर्स कॉमन्स डीबीसीपी को टॉमकैट (टीसी-सर्वर) के अपने पुनर्वित्तित संस्करण के लिए फिर से लिखता है, और वे इससे बड़े प्रदर्शन लाभ का दावा करते हैं। हालांकि, उन्होंने खुले तौर पर सोर्स नहीं किया है।


टॉमकैट 7 डीबीसीपी का उपयोग जारी रखता है। मुख्य कारण उनके टॉमकैट दस्तावेज़ों में छिपाया जा सकता है:

  • अपाचे कॉमन्स डीबीसीपी को इन छोड़े गए डेटाबेस कनेक्शन को ट्रैक और पुनर्प्राप्त करने के लिए कॉन्फ़िगर किया जा सकता है। न केवल उन्हें पुनर्प्राप्त कर सकता है, बल्कि कोड के लिए एक स्टैक ट्रेस भी उत्पन्न कर सकता है जो इन संसाधनों को खोला और उन्हें कभी बंद नहीं किया।

  • टॉमकैट जेडीबीसी-पूल लाइब्रेरी, शायद अत्यधिक समवर्ती परिदृश्यों में तेज़ी से हो सकती है लेकिन स्वचालित रूप से बयान बंद नहीं कर सकती है और रिलीज नहीं कर सकती है (जो एक डेवलपर बंद करना भूल गया है) जिसके परिणामस्वरूप कुछ जेडीबीसी ड्राइवरों में संभावित मेमोरी लीक हो सकती है।

हालांकि डीबीसीपी कोड के साथ समस्याओं में से एक प्रतिनिधिमंडल मॉडल है जिसका उपयोग वे करते हैं, वर्तमान में उनके नवीनतम संस्करण जेडीके 1.6 और उससे कम का समर्थन करते हैं। 1.7 का समर्थन करने के लिए अपने वर्गों में से कम से कम चौथाई परिवर्तन करना है, जो जेडीबीसी पूल लाइब्रेरी अस्तित्व में आने के कारणों में से एक था।

नोट: आगे की जांच के बाद, जेडीबीसी पूल में StatementFinalizer इंटरसेप्टर का उपयोग करते हुए कनेक्शन बंद होने पर उद्घाटन वक्तव्य बंद करने का एक तरीका होता है।


टॉमकैट डीबीसीपी अपाचे कॉमन्स डीबीसीपी का एक नामित संस्करण है, साथ ही एक अलग आंतरिक पैकेज नाम उपसर्ग भी है।

बिल्ड समय पर, टॉमकैट कॉमन्स डीबीसीपी स्रोत प्राप्त करता है (संस्करण टोमकैट संस्करण पर निर्भर करता है, उदाहरण के लिए टॉमकैट 7.0.27 कॉमन्स डीबीसीपी 1.4 का उपयोग करता है), और पैकेज नाम प्रतिस्थापन ( org.apache.commons -> org.apache.tomcat करता है org.apache.tomcat.dbcp ) और परिणाम को tomcat-dbcp.jar रूप में बनाता है।

ऐसा इसलिए किया जाता है कि आंतरिक टोमकैट जेडीबीसी पूल कॉमन्स डीबीसीपी कक्षाओं के संभावित अनुप्रयोग उपयोगों के साथ कभी भी संघर्ष नहीं करते हैं। यह कई संभावित वर्गीकरण मुद्दों से बचाता है।

संपादित करें: "डीबीसीपी" पैकेज डेटासोर्स प्रबंधन के बारे में हैं। शुद्ध पूल कार्यान्वयन के लिए, कॉमन्स डीबीसीपी कॉमन्स पूल (पैकेज org.apache.commons.pool ) पर निर्भर करता है, लेकिन org.apache.commons.pool में पूल के कार्यान्वयन को टॉमकैट के अपने जेडीबीसी पूल (पैकेज org.apache.tomcat.jdbc.pool ) के साथ बदल दिया गया है। ।





apache-commons-dbcp