打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java数据库连接池commons

背景

Spring Web系统数据库连接池使用的还是老版的commons-dbcp,打算由commons-dbcp升级到commons-dbcp2最新版。

步骤

1、升级maven依赖。

commons-dbcp 1.2.2 升级到 commons-dbcp2 2.1.1
maven项目依赖变更,由

<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.2.2</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

变更为:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
    <version>2.1.1</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

2、更换BasicDataSource和配置连接项

spring-mybatis.xml文件中的bean配置,class由 org.apache.commons.dbcp.BasicDataSource更换为org.apache.commons.dbcp2.BasicDataSource
bean配置由:

<bean id="dataSource-base" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${driver}" />
    <property name="url" value="${url-test}" />
    <property name="username" value="${username-test}" />
    <property name="password" value="${password-test}" />
    <!-- 初始化连接大小 -->
    <property name="initialSize" value="${initialSize}"/>
    <!-- 连接池最大数量 -->
    <property name="maxActive" value="${maxActive}"/>
    <!-- 连接池最大空闲 -->
    <property name="maxIdle" value="${maxIdle}"/>
    <!-- 连接池最小空闲 -->
    <property name="minIdle" value="${minIdle}"/>
    <!-- 获取连接最大等待时间 -->
    <property name="maxWait" value="${maxWait}"/>
    <!-- 指明连接是否被空闲连接回收器(如果有)进行检验 -->
    <property name="testWhileIdle" value="true"/>
    <!-- 运行一次空闲连接回收器的时间间隔(60秒)-->
    <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/>
    <!-- 验证时使用的SQL语句 -->
    <property name="validationQuery" value="SELECT 1" />
    <!-- 借出连接时不要测试,否则很影响性能 -->
    <property name="testOnBorrow" value="false"/>
</bean>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

变更为:

<bean id="dataSource-base" class="org.apache.commons.dbcp2.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${driver}" />
    <property name="url" value="${url-test}" />
    <property name="username" value="${username-test}" />
    <property name="password" value="${password-test}" />
    <!-- 初始化连接大小 -->
    <property name="initialSize" value="${initialSize}"/>
    <!-- 连接池最大数量 -->
    <property name="maxTotal" value="${maxTotal}"/>
    <!-- 连接池最大空闲 -->
    <property name="maxIdle" value="${maxIdle}"/>
    <!-- 连接池最小空闲 -->
    <property name="minIdle" value="${minIdle}"/>
    <!-- 获取连接最大等待时间 -->
    <property name="maxWaitMillis" value="${maxWaitMillis}"/>
    <!-- 指明连接是否被空闲连接回收器(如果有)进行检验 -->
    <property name="testWhileIdle" value="true"/>
    <!-- 运行一次空闲连接回收器的时间间隔(60秒)-->
    <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/>
    <!-- 验证时使用的SQL语句 -->
    <property name="validationQuery" value="SELECT 1" />
    <!-- 借出连接时不要测试,否则很影响性能 -->
    <property name="testOnBorrow" value="false"/>
</bean>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

其中的jdbc.properties:

driver=com.mysql.jdbc.Driver
url-test=jdbc:mysql://localhost:3306/abc?useUnicode=true&characterEncoding=utf8&autoReconnect=true
username-test=username
password-test=password

#定义初始连接数  
initialSize=0
#定义最大连接数  
maxTotal=20
#定义最大空闲  
maxIdle=20
#定义最小空闲  
minIdle=1
#定义最长等待时间  
maxWaitMillis=60000
#空闲回收期运行周期(60秒)
timeBetweenEvictionRunsMillis=60000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3、连接池配置项变更说明

由于dbcp2使用的连接池pool对配置属性做了修改,需要修改连接池bean配置中的属性,涉及到的修改:

maxWait -> maxWaitMillis
maxActive -> maxTotal
  • 1
  • 2

注:dbcp2需要jdk1.7以上环境 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
spring4.x dbcp,dbcp2连接池基本配置BasicDataSource
配置Spring数据源c3p0与dbcp
spring配置dbcp连接池
DBCP连接池配置及参数说明
class "org.apache.commons.dbcp.BasicDataSource" not found
mysql报错"Host '1' is blocked because of many connection errors; unblock with 'mysqladmin flush-hos
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服