【发布时间】:2011-10-18 14:24:14
【问题描述】:
我正在使用 Java 和 SpringFramework 在 Mysql Server 上使用 JdbcTemplate 类进行数据库编程。
使用org.apache.commons.dbcp.BasicDataSource作为db数据源。
有时当连接长时间空闲时,CommunicationException 会抛出以下消息:
The last packet successfully received from the server was XXXXX milliseconds ago.
我不想通过将 autoReconnect 参数添加到连接或添加将在每个查询之前执行 select 1 的属性来处理此问题,以确保正确打开连接。我也不想碰mysql服务器的配置和提高超时值。
我想做的是正确处理该异常。
我想过捕获CommunicationException,然后重试直到成功,如果失败超过 X 次,则抛出异常,表明重试 X 次失败。
- 有没有人知道如何处理这个问题?
- 我的想法怎么样? :)
- 也许 springframework 中有一些东西会自动为我做这件事而我错过了?
任何信息将不胜感激。
谢谢!
【问题讨论】:
-
为什么不想使用自动重连?
-
我读到 autoReconnect 参数已被弃用
-
"不推荐使用 autoReconnect 选项,因为没有安全的方法重新连接到 MySQL 服务器而不会有损坏连接状态或数据库状态信息的风险。相反,您应该使用连接池这将使您的应用程序能够使用池中的可用连接连接到 MySQL 服务器。不推荐使用 autoReconnect 工具,并且可能会在将来的版本中删除。",来自dev.mysql.com/doc/refman/5.1/en/…
标签: java mysql spring connection-timeout communicationexception