DBCP链接有效性验证的两种配置方案

本文介绍了DBCP连接池的两种链接有效性验证方案,包括事件性质的验证(空闲时验证)和定时性质的验证,强调了合理配置时间间隔和校验数量的重要性。此外,还讨论了数据库链接为何需要验证,以及与MySQL的wait_timeout参数的关系。最后提到了处理遗漏链接的相关配置选项。
摘要由CSDN通过智能技术生成

一、依赖

这里试验的是1版本dbcp。实际上dbcp2的配置也如出一辙。

//  * commons-pool-1.6.jar
//  * commons-dbcp-1.4.jar 
//  * commons-logging-1.2.jar


二、基本配置

private static BasicDataSource setupDataSource() {
        BasicDataSource ds = new BasicDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/learn?characterEncoding=UTF-8");
        ds.setUsername("root");
        ds.setPassword(null);
        
        ds.setInitialSize(4);//default 0
        ds.setMaxActive(8);
        ds.setMaxWait(20);
        ds.setMaxIdle(4);
        ds.setMinIdle(0);
        return ds;
    }

此配置仅用于测试,生成环境依据负载调整。

三、验证配置

有两种方案能够实现验证。

1、事件性质-分别在连接归还、借出和空闲时控制;这里配置为仅空闲时验证

	public void config() {
		
		bds.setValidationQuery("SELECT 1");
		bds.setValidationQueryTimeout(1000*10);
		bds.setTestWhileIdle(true);// default false
		bds.setTestOnReturn(false);// default false
		bds.setTestOnBorrow(false);// default true
		bds.setTimeBetweenEvictionRunsMillis(4*1000);//default -1 which means turn off
		bds.setNumTestsPerEvictionRun(4);// default 3
		
	}

说明:

仅设置testWhileIdle为true时,timeBetweenEvictionRunsMillis和

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值