近日调试一个项目的时候, 总是在运行一段时间之后出现如下的警告:
2006-05-01 03:26:06,812 WARN [HouseKeeper] proxool.default (HouseKeeper.java:149) - #0001 was active for 324234 milliseconds and has been removed automaticaly. The Thread responsible was named ‘Thread-32′, but the last SQL it performed is unknown because the trace property is not enabled.
然后就会关闭连接数据库的Connection, 导致程序出现Socket Close异常. 后来查阅了官方以及网络上, 终于找到了解决的方法.
产生如上警告的原因是:proxool中有一个参数maximum-active-time 缺省为 5 分钟, 其含义是一个线程持有一个连接的最长时间,而不管这个连接是否处于 active 状态, 并且如果线程的持有时间超过这个时间的之后会自动清除掉这个连接. 但是很多时候5分钟并不够用, 所以需要在配置文件中进行设置, 其单位为毫秒(ms).
参考资料:
Proxool Properties
http://proxool.sourceforge.net/properties.html
用 proxool 需要注意的一个问题
http://blogsite.3322.org/jspwiki/pages/viewblog?id=1056
c3p0 & proxool
http://www.52blog.net/user1/580/archives/2005/235827.shtml