JNDI 레벨 또는 webapp 레벨에서 연결 풀을 가져야하는 것이 더 합리적입니까?연결 풀 또는 데이터 소스? 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 히 봄에 풀을 구성 : 예를 들어, 단순히는 javax.sql.DataSource 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 연결 풀링 된 데이터 소스이지만 어느 것이 더 낫습니까? 나는 JNDI에서 풀을 갖는 것이 가장 합리적이라고 생각하지만, 그 단점은 c3p0 라이브러리를 서블릿 컨테이너 레벨로 밀어 넣어 현재 다른 서블릿 버전을 사용하고 있다면 기존 서블릿과 충돌을 일으킬 수 있다는 것이다. 그러나 JNDI에두면 응용 프로그램에서 풀링에 대해 전혀 염려하지 않아도됩니다. 너 모두 어떻게 생각하니?
을 수행 (각 응용 프로그램이 자신의 풀을 사용하기 시작하면 그 일이 무엇인가) 당신이 원한다면, 당신이 할 수 있다면. 가능한 경우 한 곳에서 모두 확인하는 것이 가장 좋습니다. – EJP