JNDI seviyesinde veya webapp seviyesinde bağlantı havuzuna sahip olmak daha mantıklı mı?Bağlantı havuzu veya veri kaynağı? JNDI'ye hangi bilgileri koymalıyım?
<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>
ve sonra thusly ilkbaharda havuzu yapılandırmak: Örneğin, ben sadece javax.sql.DataSource thusly de yaratabilir
<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>
Ya da, doğrudan JNDI kendisi havuza yapılandırabilirsiniz:
<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" />
Leaving bu bahar:
<jee:jndi-lookup id="myDataSource" jndi-name="java:comp/env/jdbc/myDataSource" />
Her iki durumda da, myDataSource bahar fasulyesi bir c3p0 bağlantı havuzlu veri kaynağı olurdu, ancak hangisi daha iyi? JNDI'da havuza sahip olmanın en mantıklı olduğunu düşünüyorum, ancak bunun için dezavantajı, c3p0 lib'inizi şu anda farklı bir sürüm kullanıyorsa var olan servletlerle çakışmaya neden olabilecek servlet konteyner seviyesine itmenizdir. Bununla birlikte, JNDI'ye eklemek, uygulamalarınızın hiç bir şekilde havuz oluşturma konusunda endişelenmemesi anlamına gelir. Ne düşünüyorsun?
Do it (her uygulama bu kadar kendi havuzu kullanarak başladığında bu böyle olur) eğer istersen, istediğin gibi. Mümkünse hepsini tek bir yerde en iyisi. – EJP