Java MySql超时-我应该在Spring应用程序中设置autoReconnect=true吗?
在我的网站(使用Spring 2.5和MySql)处于非活动状态后,我得到以下错误:Java MySql超时-我应该在Spring应用程序中设置autoReconnect=true吗?,java,mysql,spring,jdbc,database-connection,Java,Mysql,Spring,Jdbc,Database Connection,在我的网站(使用Spring 2.5和MySql)处于非活动状态后,我得到以下错误: org.springframework.dao.RecoverableDataAccessException:成功发送到服务器的最后一个数据包是52847830毫秒前。长于服务器配置的“等待超时”值。在应用程序使用之前,您应该考虑终止和/或测试连接有效性,增加客户端超时的服务器配置值,或者使用连接器/J连接属性“AutoReNeNeCT= true”来避免这个问题。< /代码> < /P> 根据,和,我不应该只
org.springframework.dao.RecoverableDataAccessException:成功发送到服务器的最后一个数据包是52847830毫秒前。长于服务器配置的“等待超时”值。在应用程序使用之前,您应该考虑终止和/或测试连接有效性,增加客户端超时的服务器配置值,或者使用连接器/J连接属性“AutoReNeNeCT= true”来避免这个问题。< /代码> < /P>
根据,和,我不应该只设置autoReconnect=true。这是否意味着我必须在执行任何查询时捕获此异常,然后重试事务?该逻辑应该在数据访问层还是模型层?有没有一种简单的方法来处理这个问题,而不是包装每个查询来捕获这个问题?我建议您使用连接池。它们可以提高性能,并可以处理诸如超时后重新连接等低级细节
一个好的是,但还有其他的。春天来了,虽然我不知道所有的细节。是Spring的数据源的配置 此异常可能有两个原因:
您没有正确关闭JDBC资源。所有连接
、语句
和结果集
必须在获取它们的try
块的finally
块中按相反顺序关闭。这与您是否使用连接池无关
您正在正确关闭JDBC资源,但使用的连接池设置不佳。您需要确保连接池保持连接打开的时间不会超过DB configrured超时。减少配置中的一个或增加另一个
我们需要设置以下属性,以避免连接池超时;我们使用ApacheCommonsDBCP
<property name="validationQuery"> <value>SELECT 1</value> </property>
<property name="testOnBorrow"> <value>true</value> </property>
选择1
真的
在过去3年的生产中,我一直在使用c3p0,而且它非常棒。您能告诉我如何使用application.properties配置编写相同的配置吗?