2013-02-27 133 views
15

यदि कनेक्शन पूलिंग को ग्रहण लिंक के लिए persistence.xml में परिभाषित नहीं किया गया है, तो डिफ़ॉल्ट व्यवहार क्या है?eclipselink कनेक्शन पूलिंग

क्या यह प्रत्येक लेनदेन के लिए जेडीबीसी कनेक्शन खोल देगा और बंद करेगा? क्या यह कुछ डिफ़ॉल्ट के साथ एक कनेक्शन पूल बना देगा?

+0

आपने अपने persistence.xml में किस लेनदेन-प्रकार को निर्दिष्ट किया है? – MRalwasser

उत्तर

11

डिफॉल डेटा स्रोत का उपयोग न करने पर EclipseLink के लिए टी कनेक्शन पूलिंग 1 कनेक्शन के आरंभ के साथ न्यूनतम/अधिकतम 32 कनेक्शन का पूल है। तो प्रत्येक लेनदेन एक पूल कनेक्शन का उपयोग करेगा, और कनेक्ट/डिस्कनेक्ट नहीं होगा।

+0

क्या आप हैं कह रहे हैं कि eclipselink persistence.xml फ़ाइल में पूलिंग के लिए कोई संदर्भ नहीं है, भले ही कनेक्शन पूलिंग का समर्थन करता हो? – user1796571

+0

हां, यह डिफ़ॉल्ट है (32 कनेक्शन का पूल) – James

+1

और यहां कॉन्फ़िगरेशन गुण हैं: http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/p_connection_pool.htm – eskatos

4

यदि आप एक एप्लिकेशन सर्वर (जावा ईई) और कंटेनर प्रबंधित दृढ़ता का उपयोग करते हैं, तो आपको अनुप्रयोग सर्वर के प्रशासन कंसोल में कनेक्शन पूलिंग सेट अप करने की आवश्यकता है, और दृढ़ता में पूलिंग गुण सेट करने की आवश्यकता नहीं है .xml, उदाहरण के लिए:

<persistence-unit name="myPU" transaction-type="JTA"> 
    <jta-data-source>jdbc_my_DataSource</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <shared-cache-mode>NONE</shared-cache-mode> 
    <properties/> 
</persistence-unit> 

आप अनुप्रयोग सर्वर (जावा SE) के बिना EclipseLink उपयोग करते हैं, का उपयोग कर आवेदन में कामयाब हठ, तो आप पूलिंग कॉन्फ़िगर नहीं है, Internal Connection Pooling उपयोग किया जाएगा, जैसे:

<persistence-unit name="DemoPU" transaction-type="RESOURCE_LOCAL"> 
    <properties> 
    <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe"/> 
    <property name="javax.persistence.jdbc.user" value="myuser"/> 
    <property name="javax.persistence.jdbc.password" value="mypassword"/> 
    <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/> 
    </properties> 
</persistence-unit> 
+0

जब आपका मतलब ऐप सर्वर है तो क्या आपका मतलब ईई या एसई है? तो जब कोई कनेक्शन पूलिंग परिभाषित नहीं किया जाता है तो यह प्रत्येक टीएक्स के लिए एक कनेक्शन है? वसंत/टोमकैट का उपयोग कर बीन प्रबंधित दृढ़ता के बारे में क्या? – user1796571

+3

Eclipselink अभी भी कनेक्शन पूल का उपयोग करता है, यह सिर्फ डेटास्रोत का उपयोग करने के बजाय पूल को बनाए रखता है। Eclipselink आंतरिक पूल कुछ हद तक यहां वर्णित हैं http://wiki.eclipse.org/Configuring_an_Internal_Connection_Pool_(ELUG) और जेपीए दृढ़ता गुणों का उपयोग करने के लिए यहां पोस्ट किया गया है http://wiki.eclipse.org/EclipseLink/Features/JPA#EntityManagerFactory_Properties – Chris

1
<property name="eclipselink.connection-pool.default.initial" value="1"/> 
<property name="eclipselink.connection-pool.default.min" value="64"/> 
<property name="eclipselink.connection-pool.default.max" value="64"/> 
+0

1/32/32 जेम्स ने कहा कि सही दिखाई देता है (इस धागे में मेरे उत्तर में संदर्भित स्रोत कोड देखें।) –

0

बस ऊपर जेम्स 'जवाब के लिए कोड स्रोत देना चाहते थे: आप देख सकते हैं कि एक डिफ़ॉल्ट कनेक्शन पूल ServerSession के निर्माताओं में बन जाता है, init का उपयोग कर/मिनट/अधिकतम चूक वैकल्पिक ConnectionPool में परिभाषित किया गया है, और EntityManagerSetupImpl में गुणों के माध्यम से डेवलपर द्वारा ओवरराइड/समायोजित।