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.非常简单,由于非常简化实现,行数和源文件数量非常低,和c3p0相比 有200多个源文件(上次我们检查),Tomcat jdbc 8的核心文件,连接池本身就是一半 那 错误可能发生,他们会更快的追踪,和更容易修复。 减少复杂性一直是重点从《盗梦空间》。
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优势