本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

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

发布于2025-01-07 21:28     阅读(1004)     评论(0)     点赞(23)     收藏(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?我现在正在尝试这个,但要花几个小时才能知道它是否有效。


解决方案


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



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/694706/8c4fc624853234b7419f/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

23 0
收藏该文
已收藏

评论内容:(最多支持255个字符)