【问题标题】:How to reconnect lost connections with EclipseLink?如何使用 EclipseLink 重新连接丢失的连接?
【发布时间】:2014-06-24 21:48:33
【问题描述】:

如果 mySQL Server 在 500 秒“睡眠时间”后终止会话,我会遇到问题,即下一个请求不成功。如果 mySQL Server 没有关闭休眠连接,则可能在 700 秒后出现同样的问题。

我能做什么? 遵循我的 persistence.xml 的属性

<property name="eclipselink.query-results-cache" value="false" />
<property name="eclipselink.cache.size.default" value="0" />
<property name="eclipselink.cache.type.default" value="None" />
<property name="eclipselink.cache.alwaysRefresh.default" value="true" />
<property name="eclipselink.jdbc.read-connections.max" value="10" />
<property name="eclipselink.jdbc.cache-statements" value="true" />
<property name="eclipselink.jdbc.read-connections.shared" value="true" />

如果重要的话,事务类型是 RESOURCE_LOCAL。

【问题讨论】:

标签: java mysql jpa jdbc eclipselink


【解决方案1】:

您是如何配置连接池的?如果是服务器数据源,则应在服务器中设置连接测试等属性。有关示例设置,请参阅 http://docs.oracle.com/cd/E21764_01/web.1111/e13737/ds_tuning.htm#i1199711

如果是 EclipseLink 池,默认情况下它应该在检测到连接失败时自动尝试重试查询。控制行为的属性只能通过特定数据库的 DatabasePlaform 类中的 api 访问,并且可以通过定制器进行设置,如下所述: How To modify Eclipselink JPA 2.0 connection retry behavior

【讨论】:

  • 非常感谢。第二个对我有用。事实证明,我必须手动设置login.setConnectionHealthValidationOnError(true); ,我理解默认情况下应该是这样。
猜你喜欢
  • 2013-03-23
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 2022-08-11
  • 2022-01-20
相关资源
最近更新 更多