tomcat7的数据库连接池tomcatjdbc的25个优势

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优势

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

weakhashmap_Java WeakHashMap entrySet()方法与示例

weakhashmapWeakHashMap类entrySet()方法 (WeakHashMap Class entrySet() method) entrySet() method is available in java.util package. entrySet()方法在java.util包中可用。 entrySet() method is used to retrieve the mappings that exist in this map to be viewed in …

定义整型数组_C++数组的定义与初始化(学习笔记:第6章 01)

数组的定义与使用[1]数组是具有一定顺序关系的若干相同类型变量的集合体&#xff0c;组成数组的变量称为该数组的元素。数组的定义方括号里面列出的常量表达式是数组每一维的下标个数。数组的下标不管从哪一维它都是从0开始数的。例如&#xff1a;int a[10]; 表示a为整型数组&a…

我们正在经历一个应用疲惫时代?

在移动互联网时代到来之后&#xff0c;应用程序成为了智能手机必备&#xff0c;也正因为万千开发者的参与&#xff0c;才让移动终端充分发挥出了强大的能量&#xff0c;当然&#xff0c;这些开发者也不断创造着造富神话&#xff0c;一个小团队在几个月的努力之后可能就会成为亿…

Java LinkedHashMap values()方法与示例

LinkedHashMap类的values()方法 (LinkedHashMap Class values() method) values() method is available in java.util package. values()方法在java.util包中可用。 values() method is used to get all the values exist in this LinkedHashMap to be viewed in a Collection.…

语句拼接_第2课:一个周末学会R语言数据处理:表拆分和拼接

从一线收集了两百个文件&#xff0c;要整合到一起&#xff1f;总部一张全国两百个城市的汇总表&#xff0c;拆成两百个小文件&#xff1f;开什么玩笑&#xff0c;难道要复制粘贴到天荒地老。。。不用这么麻烦&#xff0c;一个循环&#xff0c;一个语句&#xff0c;实现快速表拆…

Anaconda配置多spyder多python环境

作者&#xff1a;桂。 时间&#xff1a;2017-04-17 22:02:37 链接&#xff1a;http://www.cnblogs.com/xingshansi/p/6725298.html 前言 最近在看《统计学习方法》&#xff0c;打算配合《机器学习实战》一起&#xff0c;可后者的代码是基于python2.6的&#xff1a; All the co…

pytorch自定义新层demo_从头学pytorch(十一):自定义层

自定义layer不含模型参数的layer含模型参数的layer核心都一样,自定义一个继承自nn.Module的类,在类的forward函数里实现该layer的计算,不同的是,带参数的layer需要用到nn.Parameter不含模型参数的layer直接继承nn.Moduleimport torchfrom torch import nnclass CenteredLayer(n…

java日历类add方法_Java日历computeTime()方法及示例

java日历类add方法日历类computeTime()方法 (Calendar Class computeTime() method) computeTime() method is available in java.util package. java.util包中提供了computeTime()方法 。 computeTime() method is for conversion of current field values to the ms(millisec…

C++——智能指针和RAII

该文章代码均在gitee中开源 C智能指针hpphttps://gitee.com/Ehundred/cpp-knowledge-points/tree/master/%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88​​​​​​​ 智能指针 传统指针的问题 在C自定义类型中&#xff0c;我们为了避免内存泄漏&#xff0c;会采用析构函数的方法释…

移除元素所有事件监听_DOM 事件模型或 DOM 事件机制

DOM 事件模型DOM 的事件操作&#xff08;监听和触发&#xff09;&#xff0c;都定义在EventTarget接口。所有节点对象都部署了这个接口&#xff0c;其他一些需要事件通信的浏览器内置对象&#xff08;比如&#xff0c;XMLHttpRequest、AudioNode、AudioContext&#xff09;也部…

gettimezone_Java日历getTimeZone()方法与示例

gettimezone日历类的getTimeZone()方法 (Calendar Class getTimeZone() method) getTimeZone() method is available in java.util package. getTimeZone()方法在java.util包中可用。 getTimeZone() method is used to return this Calendar time zone. getTimeZone()方法用于返…

cass展点不在原位置_cass展点之步骤及方法

cass展点之步骤及方法cass展点是根据手工或坐标正反算软件自动计算的结果&#xff0c;利用cass软件将点号、坐标及其高程自动展示到图纸上的一种方法。其基本步骤和方法如下&#xff1a;一、将井下测点的点号、以及计算好的Y坐标、X坐标、及高程由sheet1复制并粘贴到sheet2上面…

Java BufferedWriter close()方法与示例

BufferedWriter类close()方法 (BufferedWriter Class close() method) close() method is available in java.io package. close()方法在java.io包中可用。 close() method is used to flushes the characters from the stream and later will close it by using close() metho…

ISCC2014-reverse

这是我做reverse的题解。在咱逆向之路上的mark一下&#xff0c;&#xff0c;水平有限&#xff0c;大牛见笑。题目及题解链接&#xff1a;http://pan.baidu.com/s/1gd3k2RL 宗女齐姜 果然是仅仅有50分的难度&#xff0c;OD直接找到了flag. 找到杀手 这题用OD做非常麻烦。我改用I…

python 获取当前时间再往前几个月_Python 中的时间和日期操作

Python中,对日期和时间的操作,主要使用这3个内置模块: datetime 、 time 和 calendar 获取当前时间对应的数字 开发程序时,经常需要获取两个代码位置在执行时的时间差,比如,我们想知道某个函数执行大概耗费了多少时间,就可以使用time.time()来做。 import time before =…

Java BigDecimal restder()方法与示例

BigDecimal类的restder()方法 (BigDecimal Class remainder() method) Syntax: 句法&#xff1a; public BigDecimal remainder(BigDecimal divsr);public BigDecimal remainder(BigDecimal divsr, MathContext ma_co);remainder() method is available in java.math package.…

python程序需要编译么_python需要编译么

一个经常听见的问题&#xff0c;那就是&#xff1a;Python是解释型的语言吗&#xff1f;它会被编译吗&#xff1f;这个问题没有想象中那么好回答。和很多人认识世界一样&#xff0c;习惯以一个简单的模型去评判一些事物。而事实上&#xff0c;里面包含了很多很多的细节。通常的…

DevOps平台中的自动化部署框架设计

本文目录&#xff1a; 一、背景 二、我们的需求是什么&#xff1f; 三、概念澄清 四、概念模型 五、总体设计 六、关键点设计 七、总结 一、背景 说到自动化部署&#xff0c;大家肯定都会想到一些配置管理工具&#xff0c;像ansible,chef,puppet, saltstack等等。虽然这些工具给…

插入排序算法 ,递归实现_C程序实现递归插入排序

插入排序算法 ,递归实现The only difference between Insertion sort and Recursive Insertion Sort is that in the Recursive method, we start from placing the last element in its correct position in the sorted array instead of starting from the first. 插入排序和…

python虚拟机直接加载字节码运行程序_第二章 python如何运行程序

一.python解释器介绍Python解释器是一种让程序运行起来的程序。实际上&#xff0c;解释器是代码与机器的计算机硬件之间的软件逻辑层。当Python包安装在机器上后&#xff0c;它包含了一些最小化的组件&#xff1a;一个解释器和支持的库。二.python的视角当Python运行脚本时&…