欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一个DBCP的比较完整的连接池配置(Mysql)

程序员文章站 2022-07-14 20:13:07
...
在看了
http://agapple.iteye.com/blog/772507这篇文章后,对公司现有的系统做了改良。使用的是MYSQL配置。
MYSQLURL与驱动不贴出来了,配置文件里都有。

mysql.user=root
mysql.password=root
mysql.connectionPool.maxActive=20
mysql.connectionPool.initialSize=4
mysql.connectionPool.minIdle=5
mysql.connectionPool.maxIdle=20
mysql.connectionPool.maxWait=60000
mysql.connectionPool.removeAbandoned=true


在项目中,我使用SPRING去配置DBCP,读取上述资源文件信息
	<bean id="dsMysql"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName">
			<value>${driver.mysql}</value>
		</property>
		<property name="url">
			<value>${mysql.url}</value>
		</property>
		<property name="username">
			<value>${mysql.user}</value>
		</property>
		<property name="password">
			<value>${mysql.password}</value>
		</property>
		<!--  连接池启动时创建的初始化连接数量(不设定即为0)-->
		<property name="initialSize">
			<value>${mysql.connectionPool.initialSize}</value>
		</property>
		<!-- 连接池中可同时连接的最大的连接数(默认值为8) -->
		<property name="maxActive">
			<value>${mysql.connectionPool.maxActive}</value>
		</property>
		<!-- 连接池中最小的空闲的连接数,低于这个数量会被创建新的连接 -->
		<property name="minIdle">
			<value>${mysql.connectionPool.minIdle}</value>
		</property>
		<!-- 连接池中最大的空闲的连接数,超过的空闲连接将被释放 -->
		<property name="maxIdle">
			<value>${mysql.connectionPool.maxIdle}</value>
		</property>
		<!-- 最大等待时间,当没有可用连接时,连接池等待连接释放的最大时间,超过该时间限制会抛出异常 -->
		<property name="maxWait">
			<value>${mysql.connectionPool.maxWait}</value>
		</property>
		<!-- removeAbandoned属性说明 -->
		<!-- 超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false) -->
		<!-- 举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".但是活动连接只有在没有被使用的时间超 过"removeAbandonedTimeout(这里默认为300秒)"时才被回收 -->
		<!--  遇到数据库死锁。以前遇到过后端存储过程做了锁表操作,导致前台集群中连接池全都被block住,后续的业务处理因为拿不到链接所有都处理失败了。  -->
		<property name="removeAbandoned">
			<value>${mysql.connectionPool.removeAbandoned}</value>
		</property>
	</bean>