如何测试MySQL连接是否已被服务器超时(Java)?

时间:2013-07-06 20:24:09

标签: java mysql connection-timeout

Java中用于测试MySQL连接是否已被服务器超时/保持连接存活的标准方法是什么? (com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 73.596.145 milliseconds ago ...)

有些文章建议定期ping以保持连接活动。我可以启动一个分离的线程,这样做,好吧。但是,是否有一些简单的测试我可以执行并仅在必要时重新连接?或者是定期ping最好的方式去这里?

boolean java.sql.Connection.isClosed()表示“只有在调用Connection.close方法后调用它时,才能保证此方法返回true”,我想这对我来说不起作用。

我可以在内部跟踪自上次请求以来的秒数,将其与select @@wait_timeout;进行比较,如果时间过长则重新连接。

那么,知道连接是否超时/保持连接存活的标准方法是什么?

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。

必须测试的解决方案是从java.sql.Connection调用“isValid(int timeout)”方法

或者在mysql中设置自动连接:http://dev.mysql.com/doc/refman/5.0/en/auto-reconnect.html

或者更改mysql中的超时(默认= 8小时):http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout

编辑:但我认为最好的做法是在交易期间打开连接,然后在此之后直接关闭。