C3P0参数的使用(2)

[size=large]配置连接测试[/size]
C3P0能配置测试连接。一些连接由于不同的原因会变坏——一些JDBC驱动故意地“超时”长久地连接数据库;后台数据库或者网络有时处理能力下降;连接由于资源泄漏,驱动的BUG或者另外的原因被破坏。
C3P0在连接测试方面提供给用户了很大的灵活性。
idleConnrctionTestPeriod,testConnectionOnCheckout,以及testConnectionOnCheckin控制什么时候连接将会是被测试。automaticTestTable,connectionTesterClassName和preferredTestQuery 控制它们怎样被测试。
当配置连接测试的时候,首先尝试最小化每个测试的花销。默认情况下,通过调用与连接相关的DatabaseMetaData对象上的getTables()方法,测试连接。这有兼容数据库的优势,并且不需要关注数据库的Schema。然而,DatabaseMetaData.getTables()调用比简单的数据库查询是慢的。
加快连接测试的最便捷方式是定义参数automaticTestTable。使用你提供的名字,C3P0将会创建一个空表,并且创建简单的查询去测试数据库。另外,如果你的数据库Schema先于你应用的数据库确定,你可以使用preferredTestQuery参数定义一个测试查询。小心点。当连接测试失败时,如果查询目标表在你的数据库表中不存在的话设置preferedTestQuery将会导致错误。
高级用户也许定义了他们希望的任意种类的连接,通过实现连接ConnectionTester,并且提供类的全限定名作为connectionTesterClassName。如果你想要自定义ConnectionTesters支持preferredTestQuery和automaticTestTable参数,实现UnifiedConnectionTester,最方便的方法是扩展AbstractConnectionTester。
测试连接最可靠的时间是在check-out。但是从客户端性能考虑的话,这也是代价最大的选择。大部分应用应该使用idleConnectionTestPeriod和testConnectionsOnCheckIn的结合。idle和check-in的测试都是异步执行地,这将导致更好的性能,都是可感知的和真实的。
注意:对于选多的应用,高性能是比偶然的数据库异常更重要的。在默认的配置中,C3P0根本不做连接测试。设置相当长的idleConnectionTestPeriod,并且不要在checkout和check-in时测试是好的,高性能的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值