java 如何从Tomcat的JNDI获取PoolingDataSource

uqjltbpv  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(94)

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

Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("jdbc/myDB");

如何将此DataSource指定为PoolingDataSource?如何配置池(GenericObjectPool)以注入PoolingDataSource
或者,这是Tomcat的JNDI实现的默认行为吗?

wvmv3b1j

wvmv3b1j1#

只需配置连接池设置(maxActive,maxWait,maxIdle,...)。Tomcat附带了apache commons-dbcp库。它被重新打包为$ Catalina HOME/lib/tomcat-dbcp.jar。
请查看tomcat文档了解详细信息:http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html#Database_Connection_Pool
%28DBCP%29_Configurations

<Context>
  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/javatest"/>
</Context>
zbsbpyhn

zbsbpyhn2#

**JDBC连接池org.apache.tomcat.jdbc.pool**是commons-dbcp连接池的替代或替代。

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

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

1.将JDBC驱动程序JAR添加到Tomcat lib目录中。
1.添加您的context.xml

<ResourceLink global="jdbc/TestDB" name="jdbc/TestDB" 
              type="javax.sql.DataSource"/>

查看更多The Tomcat JDBC Connection Pool

相关问题