我有几个服务器进程,它们有时会响应来自客户端的消息并执行只读事务。
在服务器运行大约几天后,它们停止正常工作,当我检查发现有大量有关关闭连接的消息时。
当我检查出它时,发现默认情况下,hibernate模式在某种开发模式下起作用,在这种模式下,几个小时后连接被断开,我开始使用c3po进行连接池。
但是,即使使用c3po,在启动服务器后约24小时仍会出现此问题。
有没有人遇到过这个问题,并且知道如何解决?我对配置hibernate的复杂性还不够熟悉。
在闲置8个小时后,MySQL JDBC驱动程序超时并断开连接。
您可以autoReconnect=true在JDBC URL中进行设置,如果断开连接后尝试进行查询,这将导致驱动程序重新连接。但这有副作用。例如会话状态和事务无法通过新连接维护。
autoReconnect=true
如果使用autoReconnect,则将重新建立JDBC连接,但它不会自动重新执行获得异常的查询。因此,您确实需要捕获SQLException应用程序并重试查询。
autoReconnect
SQLException
阅读http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration- properties.html了解更多详细信息。