Java 如何从Tomcat';s JNDI

Java 如何从Tomcat';s JNDI,java,tomcat,database-connection,jndi,Java,Tomcat,Database Connection,Jndi,如果我将一个web应用部署到Tomcat,并使用如下代码: Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("jdbc/myDB"); 如何将此数据源指定为池数据源?如何配置池(GenericObjectPool)以将PoolgDataSource注入 或者,这是Tomcat的JNDI实现的默认行为吗?提前谢谢 只需配置连接池设置(maxActive、maxWait、maxIdle等)。 To

如果我将一个web应用部署到Tomcat,并使用如下代码:

Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("jdbc/myDB");
如何将此
数据源
指定为
池数据源
?如何配置池(
GenericObjectPool
)以将
PoolgDataSource
注入


或者,这是Tomcat的JNDI实现的默认行为吗?提前谢谢

只需配置连接池设置(maxActive、maxWait、maxIdle等)。 Tomcat附带apache commons dbcp库。它被重新打包为$CATALINA_HOME/lib/tomcat-dbcp.jar

查看tomcat文档了解详细信息:


JDBC连接池
org.apache.tomcat.JDBC.Pool
是替代品还是替代品 连接池

  • GlobalNamingResources
    部分的
    server.xml
    文件中添加如下内容:

    <Resource name="jdbc/TestDB" 
              auth="Container" 
              type="javax.sql.DataSource" 
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
              testWhileIdle="true"
              testOnBorrow="true"
              testOnReturn="false"
              validationQuery="SELECT 1"
              validationInterval="30000"
              timeBetweenEvictionRunsMillis="30000"
              maxActive="100" 
              minIdle="10" 
              maxWait="10000" 
              initialSize="10"
              removeAbandonedTimeout="60"
              removeAbandoned="true"
              logAbandoned="true"
              minEvictableIdleTimeMillis="30000" 
              jmxEnabled="true"
              jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
              username="root" 
              password="password" 
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/mysql"/>
    
  • 更多信息请参阅

    <Resource name="jdbc/TestDB" 
              auth="Container" 
              type="javax.sql.DataSource" 
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
              testWhileIdle="true"
              testOnBorrow="true"
              testOnReturn="false"
              validationQuery="SELECT 1"
              validationInterval="30000"
              timeBetweenEvictionRunsMillis="30000"
              maxActive="100" 
              minIdle="10" 
              maxWait="10000" 
              initialSize="10"
              removeAbandonedTimeout="60"
              removeAbandoned="true"
              logAbandoned="true"
              minEvictableIdleTimeMillis="30000" 
              jmxEnabled="true"
              jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
              username="root" 
              password="password" 
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/mysql"/>
    
    <ResourceLink global="jdbc/TestDB" name="jdbc/TestDB" 
                  type="javax.sql.DataSource"/>