【问题标题】:Jboss not re-connects automatically to DB connections on outageJboss 在中断时不会自动重新连接到数据库连接
【发布时间】:2015-03-11 09:54:23
【问题描述】:

我有这个项目:https://github.com/AndreaCatania/libreria

我已经将此项目部署到 WildFly 8.2 中,当数据库连接中断时,AS 无法自动重新连接,并且应用程序被冻结(我必须重新启动 AS)。

如果我将相同的项目部署到 GlassFish 中,我没问题。

我该如何解决这个问题?

WildFly 配置:

https://github.com/AndreaCatania/libreria/blob/master/standalone-full.xml

https://github.com/AndreaCatania/libreria/blob/master/standalone.xml

【问题讨论】:

标签: java jboss


【解决方案1】:

在您的 hibernate.cfg.xml 中,您可以添加如下行:

<property name="hibernate.c3p0.validate">true</property>
<property name="hibernate.c3p0.preferredTestQuery">select 1</property>

这将验证与数据库的连接。取自https://confluence.atlassian.com/display/CONF43/Surviving+Database+Connection+Closures

【讨论】:

  • 问题依然存在……嗯……WildFly会是问题吗?
【解决方案2】:

您似乎正在使用 C3P0,它在数据库出现故障时会出现已知问题。您应该考虑切换到HikariCP,它在这种情况下反应更好。 Here is an excellent comparison数据库中断下的各种连接池。

或者,考虑使用应用服务器提供的池化功能。

【讨论】:

  • 我试过 HikariCP 但我也有同样的问题……WildFly 会是问题吗? (如果你愿意,你可以检查 git,我已经推送了更改)。
  • 也许是时候去 Wildfly 社区论坛 (developer.jboss.org/en/wildfly) 提出问题了。
  • 我认为切换到 HikariCP 是一个很好的举措。持续存在的问题似乎来自 JBoss 事务管理器,从您上面共享的日志来看,它似乎在负载下超时。将您的事务超时增加到一个非常高的值,例如 1 小时,然后检查。这个threadthis 似乎表明这是JBoss 的常见问题。
  • @manish 如何增加事务超时?使用 GlassFish 是个好主意吗?
  • 全局设置事务超时通常是个好主意。我使用过 JBoss 但我自己没有使用 Wildfly,所以如果 Wildfly 提供某种控制台(JBoss 有一个 Web 控制台),您应该能够在控制台中设置超时。 Glassfish 也很好,如果它适合你,一定要使用它。
猜你喜欢
  • 2011-02-02
  • 1970-01-01
  • 2015-11-07
  • 2014-11-27
  • 2015-04-26
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
相关资源
最近更新 更多