1

我在 TomCat 服务器上部署了一个 Spring MVC 项目,但我一直遇到与数据库连接的问题。几个小时后,当用户尝试登录时,他们将遇到 500 错误和以下消息:

HTTP Status 500 - Request processing failed; nested exception is org.springframework.dao.RecoverableDataAccessException: The last packet successfully received from the server was 75,026,904 milliseconds ago. The last packet sent successfully to the server was 75,031,521 milliseconds ago. is longer than the server configured value of 'wait_timeout'.

我相信这个问题是因为 TomCat 认为与 MySQL 的连接仍然打开,但是 MySQL 在 8 小时后关闭了连接。收到此错误后刷新页面后,一切正常。

我的问题是,有没有办法让我使用 NamedParameterJdbcTemplate 来查询数据库,每次使用时打开和关闭连接,而不是维护一个持久连接?或者有没有更好的方法来解决这个问题?

也许设置 autoReconnect=true?我现在正在尝试这个,但需要几个小时才能知道它是否有效。

4

1 回答 1

1

假设您使用的是 Tomcat 的连接池,您可以将池设置为 testOnBorrow="true" 和 validationQuery="SELECT 1 FROM my_test_table"。这样,将在线程签出之前检查连接。如果它已关闭,则会打开另一个并提供给为您的请求提供服务的线程。您可以在此处阅读 Tomcat 提供的选项的文档。

于 2013-02-13T18:20:47.170 回答