这两个连接池之间似乎有很多混淆之处。我想知道的是哪一个更好(如果有的话)?
这里有一些我想提出来的观点。有没有人能验证一下?
tomcat tomcat DBCP:使用默认的-dbcp.jar,它将出现在您的
org.apache.tomcat.dbcp.dbcp.BasicDataSource
。Commons DBCP数据源类是org.apache.commons.dbcp.BasicDataSource
.所以问题是:使用哪一个,哪个更好
发布于 2012-04-26 00:02:44
Tomcat DBCP只是Apache Commons DBCP的重命名版本,还有一个不同的内部包名前缀。
在构建时,Tomcat获取Commons DBCP源代码(版本取决于Tomcat版本,例如Tomcat 7.0.27使用Commons DBCP 1.4),并进行包名替换(org.apache.commons
-> org.apache.tomcat.dbcp
)并将结果构建为tomcat-dbcp.jar
。
这样做是为了使内部Tomcat JDBC池永远不会与Commons DBCP类的可能应用程序使用冲突。这避免了许多潜在的类加载问题。
编辑: "dbcp“包是关于数据源管理的。对于纯池实现,Commons DBCP依赖于Commons pool (包org.apache.commons.pool
),但在Tomcat中,池的实现被Tomcat自己的JDBC pool (包org.apache.tomcat.jdbc.pool
)替代。
发布于 2015-03-25 14:38:44
这两个连接池之间似乎有很多混淆之处。我想知道的是哪一个更好(如果有的话)?
TL/DR:它们是一样的,不要使用它们中的任何一个。
Tomcat-dbcp是包含在Tomcat发行版中的apache commons池的原始重新打包。为避免类冲突,包被重命名为org.apache.tomcat.dbcp.dbcp。*
在Tomcat 7(从2011年7月的7.0.19开始)中,默认Tomcat包(作为Tomcat -jdbc.jar的一部分)中包含了一个额外的连接池,作为陈旧的apache commons实现的替代方案,称为“Tomcat JDBC连接池”:
https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
这篇文章介绍了两者之间的区别:
http://vigilbose.blogspot.com/2009/03/apache-commons-dbcp-and-tomcat-jdbc.html
简短总结为什么新的Tomcat池更好:
发布于 2011-01-17 18:55:22
Apache Commons DBCP的旧版本(即1.2版)在高负载条件下存在一些严重的线程安全问题,使其不适合这种使用。Tomcat的人重新修改了它来解决这些问题,我对此并不感到惊讶。
然而,我的理解是Commons DBCP 1.4解决了这些问题。我个人不能证实这一点,但这可能会使Tomcat版本变得多余。
有趣的是,SpringSource还为他们重新打包的Tomcat (tc-Server)版本重写了Commons DBCP,并声称从中获得了巨大的性能好处。不过,他们还没有将其开源。
https://stackoverflow.com/questions/4711943
复制相似问题