gpt4 book ai didi

java - MySQL 重启后 Hibernate 应用程序无法连接到 MySQL

转载 作者:行者123 更新时间:2023-11-29 06:27:03 26 4
gpt4 key购买 nike

我有一个在 tomcat 上的 amazon ec2 上运行的 webapp hibernate 和休息,我的 mySQL 是通过 amazon rds 的独立实例。

一旦我启动我的 web 应用程序 - 一切正常,但最近我在我的数据库上配置了每日备份,然后开始看到我的 web 应用程序连接到 mySQL 时出现问题。

基本上,只有在我的 mysql 实例重新启动(备份)之前启动我的 webapp 时才会出现问题。然后在 mySQL 出于某种原因重新启动后,从我的 webapp 到它的任何连接都失败了。

一旦我重新启动我的 ec2 虚拟机,一切都会解决(如果我也重新启动 tomcat,它可能会解决,但我还没有尝试过)

如何确保我的 webapp 在 mysql 重启后连接回 mysql?

这是我写入日志的内容:

21-May-2015 11:42:27.857 WARN [http-nio-8080-exec-2] org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions SQL Error: 0, SQLState: 08S01
21-May-2015 11:42:27.857 ERROR [http-nio-8080-exec-2] org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions Communications link failure
The last packet successfully received from the server was 200,187 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.

对深入研究有什么建议吗?

最佳答案

您应该使用连接池。对于 Hibernate,您可以使用 c3p0。在您的 hibernate 属性中设置以下内容

hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider

然后,在 c3p0.properties 文件中,将这些属性设置为在数据库关闭时每 3 秒无限期重新连接:

c3p0.acquireRetryAttempts = 0
c3p0.acquireRetryDelay = 3000
c3p0.breakAfterAcquireFailure = false

参见 this section有关如何从数据库中断中恢复的更多详细信息。

关于java - MySQL 重启后 Hibernate 应用程序无法连接到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30380878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com