验证数据库连接有效性
有三种办法:主动测试(创建连接时、获取连接时、释放连接时)、定时测试(通过定时器定期测试)、关闭孤儿连接。使用配置的validationQuery(如果不配置默认调用Connection#isValid进行验证)和maxConnLifetimeMillis(连接生存的最长时间)来验证连接是否可用。
主动测试
testOnBorrow是获取连接时测试,testOnCreate是创建连接时测试,testOnReturn是释放连接时测试,测试代码如下。
MySQL 汽车房产抵押贷款 个人小额信用贷 Connector也提供了autoReconnect和autoReconnectForPools配合maxReconnects来实现重连。
在每次执行SQL之前根据配置进行一次ping测试。很多人在数据库连接URL上都配置了此参数,但MySQL官方不推荐这种做法,而是推荐通过如DBCP2使用testOnBorrow在获取连接时只进行一次测试。
定时测试
使用timeBetweenEvictionRunsMillis配置定时器执行周期,如果配置为<=0,则表示禁用,配置代码如下所示(BaseGenericObjectPool#startEvictor)。
EvictionTimer是static,因此一个ClassLoader将只有一个Timer进行调度,主要做以下两件事情。
Evict任务主要有以下几件事情执行(GenericObjectPool#evict)。
接着会调用EvictionPolicy(默认为DefaultEvictionPolicy)判断当前连接是否需要被释放。
可以配置evictionPolicyClassName来定义个性化释放策略。
如果配置了testWhileIdle=true,则会调用factory.validateObject(underTest)进行连接可用测试。
本文地址:验证数据库连接有效性 _http://longshunzhuangshi.com/wangzhanxitong/211.html 本文tag标签:验证数据库连接有效性
上一篇:用户数据排名因素
下一篇:SEO没有秘籍,不过可以有绝招