DBCP的配置参数

tomcatde DHCP的配置
<Resource driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
logAbandoned="true" maxActive="20" maxIdle="2" maxWait="5000" name="system"
removeAbandonedTimeout="60" removeAbandoned="true"
password="xx" type="javax.sql.DataSource"
url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=base"
username="sa"/>
当中的
logAbandoned="true"  removeAbandoned="true" removeAbandonedTimeout="60"
就是用来配置数据库断开后自动连接的。


数据库连接池会在启动时就建立所需的若干连接,并一直保持连接状态,
但是当数据库服务停止后,这些连接就被外部因素给中断了
网上优化了的配置信息:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
<property name="driverClassName" value="${db.driverClassName}"/> 
<property name="url" value="${db.url}"/> 
<property name="username" value="${db.username}"/> 
<property name="password" value="${db.password}"/> 
<!--initialSize: 初始化连接--> 
<property name="initialSize" value="5"/> 
<!--maxIdle: 最大空闲连接--> 
<property name="maxIdle" value="10"/> 
<!--minIdle: 最小空闲连接--> 
<property name="minIdle" value="5"/> 
<!--maxActive: 最大连接数量--> 
<property name="maxActive" value="15"/> 
<!--removeAbandoned: 是否自动回收超时连接--> 
<property name="removeAbandoned" value="true"/> 
<!--removeAbandonedTimeout: 超时时间(以秒数为单位)--> 
<property name="removeAbandonedTimeout" value="180"/> 
<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒--> 
<property name="maxWait" value="3000"/> 
<property name="validationQuery"> 
<value>SELECT 1</value> 
</property> 
<property name="testOnBorrow"> 
<value>true</value> 
</property> 
</bean>  

dbcp配置中文版本,自apache 官方文档
原文请见http://commons.apache.org/dbcp/configuration.html。

参数  描述
username  传递给JDBC驱动的用于建立连接的用户名
password  传递给JDBC驱动的用于建立连接的密码
url  传递给JDBC驱动的用于建立连接的URL
driverClassName  使用的JDBC驱动的完整有效的java 类名
connectionProperties  当建立新连接时被发送给JDBC驱动的连接参数,
格式必须是 [propertyName=property;]*
注意 :参数user/password将被明确传递,所以不需要包括在这里。

参数  默认值  描述
defaultAutoCommit  true  连接池创建的连接的默认的auto-commit状态
defaultReadOnly  driver default  连接池创建的连接的默认的read-only状态.
如果没有设置则setReadOnly方法将不会被调用. (某些驱动不支持只读模式,比如:Informix)
defaultTransactionIsolation  driver default  连接池创建的连接的默认的TransactionIsolation状态.
下面列表当中的某一个: (参考javadoc)

    * NONE
    * READ_COMMITTED
    * READ_UNCOMMITTED
    * REPEATABLE_READ
    * SERIALIZABLE

defaultCatalog   连接池创建的连接的默认的catalog

参数  默认值  描述
initialSize  0  初始化连接:连接池启动时创建的初始化连接数量,1.2版本后支持
maxActive  8  最大活动连接:连接池在同一时间能够分配的最大活动连接的数量,
如果设置为非正数则表示不限制
maxIdle  8  最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,
如果设置为负数表示不限制
minIdle  0  最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,
如果设置为0则不创建
maxWait  无限  最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),
超过时间则抛出异常,如果设置为-1表示无限等待

参数  默认值  描述
validationQuery   SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,
则查询必须是一个SQL SELECT并且必须返回至少一行记录
testOnBorrow  true  指明是否在从池中取出连接前进行检验,如果检验失败,
则从池中去除连接并尝试取出另一个.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
testOnReturn  false  指明是否在归还到池中前进行检验
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
testWhileIdle  false  指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,
则连接将被从池中去除.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串
timeBetweenEvictionRunsMillis  -1  在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位.
 如果设置为非正数,则不运行空闲连接回收器线程
numTestsPerEvictionRun  3  在每次空闲连接回收器线程(如果有)运行时检查的连接数量
minEvictableIdleTimeMillis  1000 * 60 * 30  连接在池中保持空闲而不被空闲连接回收器线程
(如果有)回收的最小时间值,单位毫秒

参数  默认值  描述
poolPreparedStatements  false  开启池的prepared statement 池功能
maxOpenPreparedStatements  不限制  statement池能够同时分配的打开的statements的最大数量,
如果设置为0表示不限制


这里可以开启PreparedStatements池. 当开启时, 将为每个连接创建一个statement池,
并且被下面方法创建的PreparedStatements将被缓存起来:
    * public PreparedStatement prepareStatement(String sql)
    * public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
注意: 确认连接还有剩余资源可以留给其他statement
参数  默认值  描述
accessToUnderlyingConnectionAllowed  false  控制PoolGuard是否容许获取底层连接


如果容许则可以使用下面的方式来获取底层连接:
    Connection conn = ds.getConnection();
    Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate();
    ...
    conn.close();

默认false不开启, 这是一个有潜在危险的功能, 不适当的编码会造成伤害.
(关闭底层连接或者在守护连接已经关闭的情况下继续使用它).请谨慎使用,
并且仅当需要直接访问驱动的特定功能时使用.
注意: 不要关闭底层连接, 只能关闭前面的那个.
参数  默认值  描述
removeAbandoned  false  标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制.
如果设置为true, 连接被认为是被泄露并且可以被删除,如果空闲时间超过removeAbandonedTimeout.
设置为true可以为写法糟糕的没有关闭连接的程序修复数据库连接.
removeAbandonedTimeout  300  泄露的连接可以被删除的超时值, 单位秒
logAbandoned  false  标记当Statement或连接被泄露时是否打印程序的stack traces日志。
被泄露的Statements和连接的日志添加在每个连接打开或者生成新的Statement,
因为需要生成stack trace。


如果开启"removeAbandoned",那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2)
 and (getNumActive() > getMaxActive() - 3)时被触发.
举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".
但是活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒.
在resultset中游历不被计算为被使用.

转载于:https://www.cnblogs.com/sand-tiny/p/3866306.html

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

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

相关文章

递归函数里面又有2个调用自身的递归函数里面参数变化总结

递归函数里面又有2个调用自身的递归函数里面参数变化总结 我们经常看见 public void f(int i){ //逻辑代码 f(i+1) f(i+1); } public void f(Queue queue){ //逻辑代码 f(queue); f(queue); } 这个时候我们的i,和参数queue怎么变…

推荐系统相关算法(2):k-nearest neighbor

1. kNN 1.1 基本的kNN模型 kNN(k-nearest neighbor)的思想简单来说就是&#xff0c;要评价一个未知的东西U&#xff0c;只需找k个与U相似的已知的东西&#xff0c;并通过k个已知的&#xff0c;对U进行评价。假如要预测风炎君对一部电影M的评分&#xff0c;根据kNN的思想&#…

看了《OCP/OCA认证考试指南全册:Oracle Database 11g(1Z0-051,...

为什么80%的码农都做不了架构师&#xff1f;>>> 一直对考试用书没好感&#xff0c;觉得里边的内容都刻板不实用。在查找Oracle书籍时&#xff0c;无意中看到有人在豆瓣里说&#xff0c;如果给他一次重新的机会&#xff0c;他只看OCP 052、053&#xff0c;Oracle编程…

.net 集合分成几个等数量集合_巧用数学游戏,帮助幼儿轻松掌握12种数量关系!...

网校在手 轻松教研线上学习灵活高效海量资源轻松获取一键搞定园本教研感知数量关系是幼儿园数学教育的核心内容&#xff0c;是发展幼儿数学思维的重要因素。那么&#xff0c;孩子在幼儿园阶段需要了解哪些数量关系呢&#xff1f;幼儿园有哪些数学教育内容包含着数量关系呢&…

我做的百度飞桨PaddleOCR .NET调用库

.NET Conf 2021中国我做了一次《.NET玩转计算机视觉OpenCV》的分享&#xff0c;其中提到了一个效果特别好的OCR识别引擎——百度飞桨PaddleOCR&#xff0c;后来我逐步把它封装了一下&#xff0c;代码全部开源&#xff08;可点击查看原文跳转到Github&#xff09;&#xff1a;ht…

python核心模块之pickle和cPickle讲解

pickle模块使用的数据格式是python专用的&#xff0c;并且不同版本不向后兼容&#xff0c;同时也不能被其他语言说识别。要和其他语言交互&#xff0c;可以使用内置的json包使用pickle模块你可以把 Python 对象直接保存到文件&#xff0c;而不需要把他们转化为字符串&#xff0…

反序列化层遍历二叉树

反序列化层遍历二叉树 规则: 序列化:如果这个节点有值,则打印“值!" 如果这个节点没有值,则打印“#!” 从上到下,从左到右 比如: 1 …

超棒的在线Bootstrap主题编辑工具 - lollytin

lollytin 是一款帮助制作Bootstrap3主题的在线工具&#xff0c;虽然现在仍旧是Beta版本&#xff0c;但是已经非常不错了。 主要功能&#xff1a; 通过拖拽来生成主题支持拖拽页头&#xff0c;页脚&#xff0c;内容&#xff0c;幻灯&#xff0c;地图&#xff0c;表单&#xff0c…

CentOS 5.9 yum安装LAMP(Apache+MySQL+PHP)

2019独角兽企业重金招聘Python工程师标准>>> 1、 yum -y install mysql mysql-server /*yum安装MySQL*/ 2、chkconfig --levels 235 mysqld on /*设置开机启动*/ 3、以MySQL用户root登陆: mysql -u root 登陆后设置root密码&#xff1a; set password for rootl…

C#获2021年度编程语言奖,开发者们最该关注这些亮点!

2022年的第一个好消息&#xff0c;应该就是C#获得“TIOBE 年度编程语言奖”。虽然眼下TIOBE的新闻尚未发布&#xff0c;但早在21年12月榜单发布的同时&#xff0c;TIOBE的CEO Paul Jansen表示&#xff0c;C#将获取“TIOBE 年度编程语言奖”。C#有着21年的悠久历史了&#xff0c…

编写程序在窗口中写出自己名字的拼音缩写_各类英文缩写:全称居然这么朴素?网友:最后一个我笑了...

提到听起来很牛的缩写&#xff0c;小优第一个想到的单词是VIP&#xff0c;一直认为它是一个很厉害的单词&#xff0c;那它的全称一定更厉害吧!直到初中&#xff0c;被英语老师打破幻想&#xff0c;原来VIP的全称就只是 Very Important Person! Excuse me ??好吧&#xff01;那…

如何像Uber一样给工程师派单,解放外包生产力?

2019独角兽企业重金招聘Python工程师标准>>> 2014年&#xff0c;陈柯好的第一个创业项目失败&#xff0c;半年之内&#xff0c;陈柯好以技术合伙人的方式游走于旅游、电商、团购、票务等各种领域。正当他对职业方向感到迷茫时&#xff0c;“大众创业、万众创新”的口…

为什么越来越多的人消失在朋友圈?

全世界只有3.14 % 的人关注了爆炸吧知识微博上有个热门话题讨论&#xff1a;#越来越多的人开始消失在朋友圈#。网友们纷纷评论&#xff0c;也道出了背后的辛酸真相。“越来越觉得自己渺小和不重要。”“其实根本没人关心你朋友圈写的是什么。”……是的&#xff0c;越来越多的人…

判断一棵树是否为平衡二叉树

代码: 平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法 平衡二叉树的常用算法有红黑树、AVL、 Treap 等。 最小二叉平衡树…

Java类集-list

Collection 子接口&#xff1a; ArrayList是List 接口和Collection接口的一个子类&#xff0c;用于实例化两种接口 package leiji; import java.util.ArrayList; import java.util.List; import java.util.Collection; public class ArryList { public static void main(String…

magento 插件

magento 后台删除订单插件 插件地址 http://www.magentocommerce.com/magento-connect/delete-orders-2.html转载于:https://www.cnblogs.com/echofrank/p/3867225.html

只显示标准采购订单

应用 Oracle Purchasing 层 Level Function 函数名 Funcgtion Name PO_POXPOVPO 表单名 Form Name POXPOVPO 说明 Description 只显示标准采购订单 条件 Condition 触发器事件 Tirgger Event WHEN-NEW-FORM-INSTANCE 触发器对象 Tirgger Object / 条件 Condit…

教你10分钟对接人大金仓EF Core 6.x

【导读】目前.NET Core中据我了解到除了官方的EF Core外&#xff0c;还用的比较多的ORM框架&#xff08;恕我孤陋寡闻哈&#xff0c;可能还有别的&#xff09;有FreeSql、SqlSugar&#xff08;排名不分先后&#xff09;。FreeSql和SqlSugar都已早早支持国产数据库比如人大金仓、…

mfc怎么改按钮的按下状态_【荐读】马桶上一大一小的按钮该怎么按?原来这些年都错了...

马桶水箱上有两个冲水钮&#xff0c;一半大一半小&#xff0c;你知道它们有什么作用吗&#xff1f;日常使用马桶时两个冲水按钮&#xff0c;要怎么按才正确&#xff1f;今天终于有答案了.....两按钮的作用水箱一大一小的按钮&#xff0c;分别代表着满水和半水排水的功能。小按钮…