如何从Tomcat的JNDI获取PoolingDataSource

时间:2013-07-12 03:21:17

标签: java tomcat database-connection jndi

如果我将Web应用程序部署到Tomcat,并且具有以下代码:

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

如何指定此DataSourcePoolingDataSource?如何配置池(GenericObjectPool)以将PoolingDataSource注入?

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

2 个答案:

答案 0 :(得分:0)

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

详细了解tomcat doc: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>

答案 1 :(得分:0)

  

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"/>
    
  2. 将JDBC驱动程序JAR添加到Tomcat lib目录中。

  3. 添加context.xml

    <ResourceLink global="jdbc/TestDB" name="jdbc/TestDB" 
                  type="javax.sql.DataSource"/>
    
  4. The Tomcat JDBC Connection Pool中查看更多内容。