JNDIレベルまたはWebアプリケーションレベルで接続プールを作成する方が理にかなっていますか?例えば、私はthusly単純にはjavax.sql.DataSourceで作成することができます。その後、接続プールまたはデータソース?どちらをJNDIに入れますか?
<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スプリングBeanはc3p0接続プーリングされたデータソースですが、どちらが優れていますか?私はJNDIでプールを持つのが最も理にかなっていると思っていますが、それに対しては、c3p0のlibをサーブレットコンテナレベルにプッシュしなければならないということです。しかし、それをJNDIに入れると、あなたのアプリケーションはまったくプールすることを心配する必要はありません。あなたはどう思いますか?
それを実行してください(各アプリケーションは、それが自身のプールの使用を開始するときには、何が起こるかです)あなたが好きなように、もしできれば。可能であれば、確かに1か所にすべてがあることをお勧めします。 – EJP