使用BasicDataSource引发的数据库连接中断的问题和解决方法
2014-06-16 10:33
786 查看
最近碰到一个问题,应用程序每天的第一次进行系统访问时,会报一个奇怪的错误,最后经过仔细的跟踪,错误信息找到了,如下所示:
很明显,这个错误信息表示数据库连接实际上已经断开了,因为在深夜没有客户来访问系统。但是程序中并没有检测到这个信息,仍然使用过期的数据库连接,那肯定会报错。而在之后,datasource检测到这个问题,则尝试重新进行连接,这样接下来的链接就正常了。
在项目中使用的数据库连接池是dbcp,即apache-dbcp的BasicDataSource。最初的配置为:
经仔细分析,这样的配置不会对连接的连接超时以及有效性进行检测,因此会发生以上的问题。要解决这个问题,就需要额外的检测手段和处理方法,还好,dbcp本身提供了这些配置,只不过当前系统中并没有这样的配置。
在处理这个问题中,需要处理好以下这些问题
连接多少时间的数据库连接被认为是无效的
如何检测一个连接是有效的
如何检测那些执行SQL时间长的连接
周期性连接检测需要多长时间执行一次
上面的这些问题,dbcp都提供了有效的配置方法,只需要详细的配置即可。如详细的配置如下:
经过这样配置之后,之前的问题就不再出现了。引起这个问题的原因是多方面的,但对于问题主因,仍是对dbcp未完全了解,总是按默认配置进行开发。在某些场景下就会突发一些想不到的问题。
转载请标明出处:i flym
本文地址:http://www.iflym.com/index.php/code/201308280001.html
在项目中使用的数据库连接池是dbcp,即apache-dbcp的BasicDataSource。最初的配置为:
在处理这个问题中,需要处理好以下这些问题
连接多少时间的数据库连接被认为是无效的
如何检测一个连接是有效的
如何检测那些执行SQL时间长的连接
周期性连接检测需要多长时间执行一次
上面的这些问题,dbcp都提供了有效的配置方法,只需要详细的配置即可。如详细的配置如下:
转载请标明出处:i flym
本文地址:http://www.iflym.com/index.php/code/201308280001.html
相关文章推荐
- 使用BasicDataSource引发的数据库连接中断的问题和解决方法
- 使用BasicDataSource引发的数据库连接中断的问题和解决方法
- 关于在英创em9161板上使用ADO.net连接远程数据库提示 “无法找到 PInvoke dll"dbnetlib.dll"”问题解决方法
- 第一次使用jdbc连接postgre数据库碰到的问题及解决方法
- 使用JDBC连接数据库遇到的问题,以及查找到的解决方法
- 关于使用CreateUserWinzard控件创建用户时出现连接数据库问题的解决方法
- ireport连接数据库、工具使用过程出现的问题及解决方法
- MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结
- Delphi使用BDE连接远程MS SQL SERVER 2000数据库时出现“Db-library network communciations layer not loaded.”错误的解决方法
- oracle 9i数据库连接问题解决方法
- 使用vs2005连接sql2005 并用远程登录问题解决方法
- MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结
- WindowsXP中用IIS浏览ASP不能连接数据库问题的解决方法
- dreamweaver连接数据库典型问题解决方法
- 安装VS2005后,使用sqlcmd连接数据库出错的解决方法(转载)
- [ASP/PHP/JSP]MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结
- Delphi使用BDE连接远程MS SQL SERVER 2000数据库时出现“Db-library network communciations layer not loaded.”错误的解决方法
- 在从池中获取连接之前超时时间已过,所有池连接都已被使用并已达到最大池大小的问题解决方法
- dreamweaver连接数据库典型问题解决方法
- dreamweaver连接数据库典型问题解决方法