tomcat的JDBC连接池org.apache.tomcat.jdbc.pool更换或替代吗Apache Commons DBCP连接池。
为什么我们须要一个新的连接池?
这里有几个原因:
1.DBCP 1.x是单线程的。
为了成为线程安全的 共享锁整个池在短时间内在两个对象 分配和对象返回。
注意,这并不适用 下议院DBCP 2.x。
2.DBCP 1.x能够缓慢。 逻辑cpu数量的添加和 并发线程的数量试图借或返回 对象的添加,性能会减少。 对高并发 系统能够显著的影响。
请注意,这并不适用 Commons DBCP 2.x。
3.DBCP超过60类。
tomcat-jdbc-pool核心是8类, 因此未来需求将须要更少的改动 的变化。
这是全部你须要执行连接池本身 歇息是肉汁。
4.DBCP使用静态接口。
这意味着你必须使用 正确的版本号为给定的JRE版本号或您可能会看到NoSuchMethodException例外。
5.不值得重写60多个类,当一个连接池 是一个更简单的实现完毕。
6.Tomcat jdbc池实现检索连接的能力 异步,无需添加额外的线程库 本身。
7.Tomcat jdbc池是Tomcat模块,这取决于Tomcat朱莉·, 简化的日志框架用于Tomcat。
8.检索底层连接使用javax.sql.PooledConnection接口。
9.饥饿的证明。 假设池是空的,和线程正在等待 返回连接,连接时,将醒着 正确的线程等待。
大多数池仅仅会饿死。
10.特性添加了其它连接池实现
11.支持高并发环境和多核心/ cpu系统。
12.动态实现的接口,将支持java.sql和javax.sql接口 您的执行时环境(仅仅要你的JDBC驱动程序做了相同的事情),即使编译较低版本号的JDK。
13.验证间隔——我们不须要验证我们每一次使用的连接,我们能够做到这一点 当我们借或返回的连接,就不是我们能够配置比间隔更频繁。
14.Run-Once查询,一个可配置的查询,将仅仅执行一次,当连接到数据库。 很实用的设置会话设置,您想要存在在整个时间建立连接。
15.配置自己定义拦截器的能力。 这同意您编写自己定义拦截器来增强功能。 您能够使用拦截器收集查询统计, 缓存会话状态,又一次连接失败,重试查询,缓存查询结果,等等。 你的选择是无尽的,拦截器是动态的,而不是绑定到一个JDK版本号的java.sql/javax.sql接口。
16.高性能——我们将展示一些性能上的差异
17.很easy,因为很简化实现,行数和源文件数量很低,和c3p0相比 有200多个源文件(上次我们检查),Tomcat jdbc 8的核心文件,连接池本身就是一半 那 错误可能发生,他们会更快的追踪,和更easy修复。
降低复杂性一直是重点从《盗梦空间》。
18.异步检索——你能够连接你的连接请求和接收队列Future<Connection>回来了。
19.更好的空暇连接处理。 而不是直接关闭连接,它仍然能够连接池大小和空暇池的智能算法。
20.你能够决定什么时候连接被觉得是放弃了,当池满了,还是直接在超时 通过指定一个池的使用门槛。
21.放弃连接计时器将重置/查询活动发表声明。 同意一个连接,在使用非常长一段时间不超时。 这是通过使用ResetAbandonedTimer
22.关闭连接后,连接为一个特定的时间。
年龄接近基于返回到池中。
23.JMX通知,当连接被怀疑是废弃的日志条目。
这类似于 的removeAbandonedTimeout但它不採取不论什么行动,仅仅是报告的信息。 这是通过使用suspectTimeout属性。
24.连接能够从检索java.sql.Driver,javax.sql.DataSource或javax.sql.XADataSource这是通过使用dataSource和dataSourceJNDI属性。
25.支持 JMX,支持 XA Connection
tomcat7的数据库连接池tomcatjdbc的25优势