क्या यह जेएनडीआई स्तर पर या वेबएप स्तर पर कनेक्शन पूल के लिए अधिक समझ में आता है? उदाहरण के लिए, मैं बस javax.sql.DataSource thusly पर बना सकते हैं:कनेक्शन पूल या डेटा स्रोत? मुझे जेएनडीआई में क्या रखा जाना चाहिए?
<Context antiJARLocking="true">
<Resource name="jdbc/myDataSource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/myDataSource" user="user" password="password" />
</Context>
और फिर thusly वसंत में पूल कॉन्फ़िगर करें:
<bean id="myDataSource" class="com.mchange.v2.c3p0.DataSources"
factory-method="pooledDataSource">
<constructor-arg>
<jee:jndi-lookup jndi-name="java:comp/env/jdbc/myDataSource" />
</constructor-arg>
</bean>
या, मैं JNDI अपने आप में सीधे पूल कॉन्फ़िगर कर सकते हैं: इस वसंत
<Resource name="jdbc/myDataSource"
auth="Container"
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
driverClassName="com.mysql.jdbc.Driver"
jdbcUrl="jdbc:mysql://localhost/myDataSource"
user="user" password="password"
minPoolSize="3"
maxPoolSize="15"
maxIdleTime="5000"
idleConnectionTestPeriod="300"
acquireIncrement="3" />
छोड़कर:
<jee:jndi-lookup id="myDataSource" jndi-name="java:comp/env/jdbc/myDataSource" />
दोनों मामलों में, myDataSource वसंत बीन एक c3p0 कनेक्शन पूल डेटा स्रोत होगा, लेकिन कौन सा बेहतर है? मैं सोच रहा हूं कि जेएनडीआई में पूल सबसे ज्यादा समझ में आता है, लेकिन इसका नकारात्मक पक्ष यह है कि आपको अपने c3p0 lib को सर्वलेट कंटेनर स्तर पर धक्का देना चाहिए जो मौजूदा सर्लेट्स के साथ संघर्ष कर सकता है यदि वे वर्तमान में एक अलग संस्करण का उपयोग करते हैं। हालांकि, इसे जेएनडीआई में डालने का मतलब है कि आपके आवेदनों को पूलिंग के बारे में चिंता करने की ज़रूरत नहीं है। आप क्या सोचते हैं?
कर (कि जब प्रत्येक आवेदन स्वयं के पूल यह है का उपयोग शुरू होता है) जिस तरह से आप चाहें, अगर आप कर सकते हैं। यदि संभव हो, तो निश्चित रूप से इसे एक ही स्थान पर रखना सर्वोत्तम है। – EJP