Spring mvc + hibernate dbcp长时间访问时Could not open Hibernate Session for transaction

spring mvc + hibernate +mysql使用dbcp连接池。长时间间隔访问时报:

Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed

 

Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该 connection。connections如果空闲超过8小时,Mysql将其断开,而DBCP并不知道该connection已经失效,如果这时有 Client请求connection,DBCP将该失效的Connection提供给Client,将会造成上面的异常。

网上查询结果

 

timeBetweenEvictionRunsMillis和minEvictableIdleTimeMillis一起使用,每

timeBetweenEvictionRunsMillis毫秒秒检查一次连接池中空闲的连接,把空闲时间超过minEvictableIdleTimeMillis毫秒的连接断开,直到连接池中的连接数到minIdle为止

minEvictableIdleTimeMillis 连接池中连接可空闲的时间,毫秒。


dbcp配置中加入以上两个参数,正在试验中。2012年11月14日


 

posted @ 2012-11-14 12:19  现役程序员  阅读(1304)  评论(0编辑  收藏  举报