MyBatis数据库连接故障转移机制无法正常工作

时间:2017-07-19 01:21:11

标签: sql-server database-connection aem mybatis osgi-bundle

我在Adobe体验管理器中安装了一个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保持不变,应用程序也会导致数据库连接失败错误。 只有在bundle restard之后才能解决问题。 连接池是否可以自动重新连接或恢复? 我是MyBatis,SQL服务器和AEM的新手,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

最简单的解决方法是设置池ping查询。看来,您的连接在切换到冷备用数据库时无法生存。他们必须重新开放。使用此查询,连接池可以检查连接是否仍然正常。如果没有,这个错误的连接将被关闭。

在发表评论后,我查看了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>

但请注意,这仍然不是一个优雅的开关。它仅检查池中的连接。所有正在运行的事务仍会出错。但是,如果您的交易很短,而不是大规模并行,并且不是非常关键,那么它可能没问题。