为啥使用 tomcat 进行数据库连接池有两种选择(tomcat-dbcp 和 tomcat-jdbc)?
Posted
技术标签:
【中文标题】为啥使用 tomcat 进行数据库连接池有两种选择(tomcat-dbcp 和 tomcat-jdbc)?【英文标题】:Why there are two options for database connection pooling with tomcat (tomcat-dbcp and tomcat-jdbc)?为什么使用 tomcat 进行数据库连接池有两种选择(tomcat-dbcp 和 tomcat-jdbc)? 【发布时间】:2021-10-21 13:27:43 【问题描述】:我想将数据库连接池添加到现有应用程序。我找到了两个基于tomcat的库tomcat-dbcp
和tomcat-jdbc
。我只是遇到了麻烦,我应该去哪一个?
【问题讨论】:
【参考方案1】:总结
来自 Tomcat 提交团队成员的注释(请参阅 here):
Tomcat JDBC 是 Tomcat 的“自制”数据库连接池,不使用 poolPreparedStatements。 Tomcat DBCP是Tomcat的包重命名为Apache Commons DBCP 2的fork。默认使用Tomcat DBCP。
默认 DBCP 2 Tomcat 池
这是 Tomcat 中包含的两个池中较新的一个,也是默认使用的一个。它基于 Commons DBCP 2 池,如 here 所述。
您可以访问official DBCP site查看更多详情。
Tomcat 自行开发的 JDBC 池
这方面的主要文档页面是here。
您可能会在 Tomcat 文档的某些地方看到这被称为“新” - 例如here:
那么为什么我们需要一个新的连接池呢?
它在某个时间点是新的。它已被 DBCP2 池取代。
使用哪一个?
这有点见仁见智,也可能取决于您的具体情况。如果您无法决定,可以从 Tomcat 的默认 DBCP 2 池开始。
只是补充一下:你可以使用上面的任何一个池与Tomcat,也可以使用其他池,例如HikariCP,c3p0等。您不必在两个 Tomcat 提供的池之间选择only。
【讨论】:
以上是关于为啥使用 tomcat 进行数据库连接池有两种选择(tomcat-dbcp 和 tomcat-jdbc)?的主要内容,如果未能解决你的问题,请参考以下文章