首页 > 解决方案 > Eclipselink 异常后重试查询

问题描述

我正在使用 JPA/Eclipselink 连接到处于 HA 模式的 PostgreSQL 实例。当触发 PostgreSQL 的故障转移时,当前主实例将打开只读模式。有时,我会在故障转移的确切时刻收到PSQLException: Fatal terminating connection due to administrator command并插入一些数据。发生这种情况是因为我也在使用连接池。当重试相同的语句时,它会在重新连接连接时再次工作。是否有任何最佳实践来避免这种情况?当然,我可以包装 JPAEntityManager并构建某种重试机制。我还发现了一个异常处理程序 [1],其中文档明确提到了查询的重试:

使用接受 java.lang.RuntimeException 的类的 handleException 方法来:

重新抛出异常

抛出不同的异常

重试查询或数据库操作。

我还没有找到一个ExceptionHandler使用“重试查询或数据库操作”的例子。

问候

[1] https://www.eclipse.org/eclipselink/documentation/2.5/jpa/extensions/p_exception_handler.htm#CCHCJCDJ

标签: javapostgresqljpaeclipselink

解决方案


推荐阅读