java - 如何从 Tomcat 的 JNDI 获取 PoolingDataSource

标签 java tomcat database-connection jndi

如果我将一个网络应用程序部署到 Tomcat,并且有这样的代码:

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

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

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

最佳答案

只需配置连接池设置(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>

关于java - 如何从 Tomcat 的 JNDI 获取 PoolingDataSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17606988/

相关文章:

java - 当进程达到一定内存大小时在 Linux 中重新启动服务

tomcat - 找不到根目录中的 Grails 文件

java - 处理 MySQL 查询花费的时间太长并抛出 "Communications link failure"

mongodb - mongo php副本连接非常慢

java - 在 Java Maven 项目中通过 Spark 查询 Cassandra 中的数据

Java - 为什么这种模式匹配不起作用?

java - JDBC错误 "Too many connections"

java - WebSockets 不适用于 OpenShift Tomcat 7.0 和 WildFly Application Server 8.1.0.CR1

Java string.replaceAll() 无法将\R 识别为字符类的一部分

php - Mysql db 类 - 连接问题