Java MySql超时-我应该在Spring应用程序中设置autoReconnect=true吗?

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> 根据,和,我不应该只

在我的网站(使用Spring 2.5和MySql)处于非活动状态后,我得到以下错误:

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配置编写相同的配置吗?