MyBatis DB 连接故障转移机制不起作用

MyBatis DB connection fail-over mechanism is not working

我在 Adob​​e Experience Manager 中安装了一个 java 应用程序 (jar) 作为 OSGI 包。

在 Java 应用程序中,我有以下数据源配置: 1. 我正在使用 MyBatis-3 来管理以下有人管理的数据源池连接: 使用 http://www.mybatis.org/mybatis-3/getting-started.html

中提到的属性
2.  Creating SQL Session factory in following manner :
       SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

3. Using SQL Server 2014 as my database.

我们有数据库服务器集群,每当我们必须对数据库应用补丁时,我们就会切换数据库服务器。 即使 dataSource URL 保持不变,应用程序也会导致数据库连接失败错误。 只有在捆绑重新启动后问题才会得到解决。 连接池有什么方法可以自动重新连接或恢复吗? 我是 MyBatis、SQL 服务器和 AEM 的新手,非常感谢任何帮助。

最简单的解决方法是设置 pool-ping-query。看来,您的连接无法在切换到冷备用数据库后继续存在。他们必须重新开放。通过此查询,连接池可以检查连接是否仍然正常。否则,将关闭此错误连接。

发表评论后,我查看了http://www.mybatis.org/mybatis-3/configuration.html。在那里你应该寻找参数

  • poolPingQuery
  • poolPingEnabled

我会尝试以下配置

<dataSource type="POOLED">
   ...
   <property name="poolPingQuery" value="/* ping */ SELECT 1"/>
   <property name="poolPingEnabled" value="true"/>
</dataSource>

但请注意,这仍然不是一个优雅的切换。它只检查池中的连接。您的所有 运行 交易仍然会出错。但如果您的事务很短,不是大规模并行,也不是高度关键,那可能没问题。