我有几个服务器进程,偶尔会响应来自客户端的消息并执行只读事务.
大约几天后,服务器正在运行,它们停止正常工作,当我检查时发现有大量关于连接被关闭的消息.
当我检查出来时,事实证明,默认情况下,hibernate在某种开发模式下工作,在几种小时后连接被丢弃,我开始使用c3po进行连接池.
但是,即使使用c3po,我在服务器启动后大约24小时左右就会遇到这个问题.
有没有人遇到过这个问题并知道如何解决它?我对配置hibernate的复杂性不够熟悉.
MySQL JDBC驱动程序在8小时不活动后超时并断开连接.
您可以autoReconnect=true
在JDBC URL中进行设置,如果在断开连接后尝试查询,则会导致驱动程序重新连接.但这有副作用; 例如,无法通过新连接维护会话状态和事务.
如果使用autoReconnect
,则重新建立JDBC连接,但它不会自动重新执行获得异常的查询.因此,您需要捕获SQLException
应用程序并重试查询.
有关详细信息,请阅读http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html.
默认情况下,MySql在8小时内基本超时.
我得到了同样的例外并在3天忙碌之后解决了这个问题.检查你是否正在使用我的hibernate3.在此版本中,需要明确提及连接类名称.还要检查jar是否在classpath中.检查以下链接中的步骤和评论
http://hibernatedb.blogspot.com/2009/05/automatic-reconnect-from-hibernate-to.html
去掉 autoReconnect=true