Pool de connexion ou source de données? Que dois-je mettre dans JNDI?

- T-elle plus de sens pour le pool de connexion à la JNDI niveau ou à la webapp? Par exemple, j'ai pu créer simplement javax.sql.Source de données comme ceci:

<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>

et ensuite configurer la piscine au Printemps ainsi:

<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>

Ou, j'ai pu configurer la piscine directement dans JNDI lui-même:

<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" />

Laissant ce printemps:

<jee:jndi-lookup id="myDataSource" jndi-name="java:comp/env/jdbc/myDataSource" />

Dans les deux cas, la myDataSource printemps bean serait un c3p0 de connexion commun de la source de données, mais lequel est le mieux? Je pense que le fait d'avoir de la piscine dans JNDI fait le plus de sens, mais l'inconvénient de cette est que vous devez pousser votre c3p0 lib dans le conteneur de servlet niveau qui pourrait provoquer des conflits avec les existants servlets si ils utilisent actuellement une version différente. Cependant, la placer dans JNDI signifie que vos applications n'avez pas à vous soucier de mise en commun à tous. Ce qui ne pense y'all?

source d'informationauteur Lucas