क्या कोई भी अपने आप को पूल लिखने के लिए उत्पादन में कॉमन्स पूल का उपयोग करता है?
हाँ, मैं करता हूं और पूल में टीसीपी कनेक्शन होते हैं, जैसे आप इसका इरादा रखते हैं। यह वसंत के माध्यम से तार है, ताकि आप स्प्रिंग विन्यास को समझते हैं यह सोचते हैं:
<bean class="com.company.ConnectionSupplier">
<constructor-arg>
<!-- The ConnectionSupplier wraps an object pool -->
<bean class="org.apache.commons.pool.impl.GenericObjectPool">
<constructor-arg>
<!-- The ObjectPool uses a ConnectionFactory to build new connections -->
<bean class="com.company.ConnectionFactory">
<constructor-arg value="server" />
<constructor-arg value="3000" />
</bean>
</constructor-arg>
<property name="maxActive" value="20" />
<property name="testOnBorrow" value="true" />
</bean>
</constructor-arg>
</bean>
ConnectionFactory BasePoolableObjectFactory प्रदान करता है और चारों ओर एक SocketFactory एक छोटा सा आवरण है।
@ फर्स्ट टिप्पणी: कनेक्शन फैक्टरी कन्स्ट्रक्टर एक सर्वर और एक बंदरगाह लेता है। Overriden makeObject() में, यह सॉकेट बनाता है जो उस सर्वर और पोर्ट से कनेक्ट होता है। यह 'कनेक्शन' ऑब्जेक्ट देता है जो सॉकेट के माध्यम से संचार करने के लिए कुछ सुविधा विधियों के साथ बनाई गई सॉकेट को लपेटता है।
कनेक्शन सॉकेट पर संवाद करने के लिए प्रयुक्त प्रोटोकॉल द्वारा प्रदान की जाने वाली 'पिंग' या 'गूंज' का उपयोग करके परीक्षण किया जाता है। अगर यह उपलब्ध नहीं होना चाहिए, तो कनेक्शन की सत्यापन/परीक्षण वास्तव में संभव नहीं है, सॉकेट पूछने के अलावा कि यह बंद कर दिया गया है या नहीं। उस स्थिति में, पूल में एक कनेक्शन को अवैध कर दिया गया होगा यदि उसने अपवाद फेंक दिया और कनेक्शन का उपयोग करने वाली हर विधि को उस तरह की विफलता के लिए तैयार किया जाना चाहिए और दूसरे कनेक्शन के साथ एक ही ऑपरेशन का प्रयास करना चाहिए।
डीबीसीपी के बारे में मैंने पहली बार सुना है ... क्या आपके पास कुछ और विशिष्ट है? – skaffman
@ स्काफमैन - ज्यादातर कारणों के बिना कनेक्शन खो गए –
यह दिलचस्प है: http://static.springsource.com/projects/tc-server/6.0/admin/radmjdbc.html ... डीबीसीपी की अपर्याप्तता का उल्लेख करता है। हालांकि, बहुत मदद नहीं है, क्योंकि यह बंद स्रोत है। – skaffman