当前位置: 首页 > 知识库问答 >
问题:

Spring Boot JPA-配置自动重新连接

田意致
2023-03-14

我有一个很好的小Spring Boot JPA web应用程序。它部署在Amazon Beanstalk上,并使用Amazon RDS持久化数据。然而,它并不经常使用,因此会在一段时间后失效,这是一种例外:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收的最后一个数据包是79,870,633毫秒之前。
成功发送到服务器的最后一个数据包是79,870,634毫秒之前。长于服务器配置的值'WAIT_TIMEOUT'。您应该考虑在应用程序中使用之前过期和/或测试连接有效性,增加客户端超时的服务器配置值,或者使用Connector/J connection属性'autoreconnect=true'来避免此问题。

我不知道如何配置这个设置,也无法在http://spring.io(不过这是一个很好的站点)上找到关于它的信息。信息的一些想法或指针是什么?

共有1个答案

梁成双
2023-03-14

我假设引导正在为您配置数据源。在本例中,由于您使用的是MySQL,因此可以将以下内容添加到application.properties中,直到1.3

spring.datasource.testOnBorrow=true
spring.datasource.validationQuery=SELECT 1

正如djxak在注释中指出的那样,1.4+为Spring Boot支持的四个连接池定义了特定的名称空间:TomcatHikariDBCPDBCP2(DBCP从1.5开始就不推荐使用)。您需要检查您使用的是哪个连接池,并检查是否支持该功能。上面的示例是针对tomcat的,因此您必须在1.4+中编写如下:

spring.datasource.tomcat.testOnBorrow=true 
spring.datasource.tomcat.validationQuery=SELECT 1

注意,不建议使用autoreconnect:

不建议使用此功能,因为当应用程序不能正确处理SQLExceptions时,它会产生与会话状态和数据一致性有关的副作用,并且仅在您无法配置应用程序以正确处理因连接失效和陈旧而导致的SQLExceptions时才会使用此功能。

 类似资料:
  • 我有一个Spring Boot应用程序,我使用ElasticsearchTemplate连接到我的ElasticSearch。然而,当它工作时,我关闭了Elasticsearch,每次我使用ElasticTemplate方法时,我都会得到一个组织。elasticsearch。客户运输NoNodeAvailableException。这很好,因为ElasticSearch不起作用。 然而,当Elas

  • 问题内容: 我有两台Jenkins服务器,它们共享一个作业目录,以实现高可用性。但是,如果一台服务器构建了任何工作区,则另一台服务器将无法构建该工作区,因为它们将下一个可用的内部编号存储在内存中。 因此,我需要一个可以定期自动重新加载作业配置的插件。有人知道合适的插件吗? 问题答案: 我不知道这种插件是否存在。但是,要定期重新加载作业的配置,可以结合实用程序以编程方式使用。 第1步: 编写一个Gr

  • 我们正在使用Spring框架5和Spring Boot 2.0.0。M6,我们也在使用WebClient进行反应式编程。我们为我们的反应式Restendpoint创建了测试方法,所以我查找了一些关于如何做到这一点的例子。我发现这个或这个以及许多其他的都一样。他们只是自动绑定一个WebTestClient。所以我尝试了同样的方法: 我无法运行此操作,因为我收到错误信息: 因此,似乎不存在自动配置。我

  • 问题内容: 我正在尝试通过Mongoose设置MongoDB自动重新连接功能。我尝试通过该选项的所有方式均无效,或者至少未发出该事件。 我尝试过的 如果其中之一是正确的,则应触发该事件并在控制台中记录一条消息,但是这永远不会发生。 如果重新连接前有延迟,有人知道如何配置吗? 提前致谢 对于任何寻找到这一点,看看这个和这个问题在猫鼬库。 问题答案: 我和您有同样的问题,而robertklep的解决方

  • 下面是我到目前为止的代码: 有人能解释一下在和情况下我该做什么吗?以及如何知道网络已断开并重新连接?