NamedParameterJdbcTemplate + TomCat,打开和关闭数据库连接

时间:2013-02-13 16:45:57

标签: java tomcat spring-mvc

我在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?我现在正在尝试这个,但我知道它是否有效需要几个小时。

1 个答案:

答案 0 :(得分:1)

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