我在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的新手,非常感谢任何帮助。
答案 0 :(得分:2)
最简单的解决方法是设置池ping查询。看来,您的连接在切换到冷备用数据库时无法生存。他们必须重新开放。使用此查询,连接池可以检查连接是否仍然正常。如果没有,这个错误的连接将被关闭。
在发表评论后,我查看了http://www.mybatis.org/mybatis-3/configuration.html。你应该在那里寻找参数
我会尝试使用以下配置
<dataSource type="POOLED">
...
<property name="poolPingQuery" value="/* ping */ SELECT 1"/>
<property name="poolPingEnabled" value="true"/>
</dataSource>
但请注意,这仍然不是一个优雅的开关。它仅检查池中的连接。所有正在运行的事务仍会出错。但是,如果您的交易很短,而不是大规模并行,并且不是非常关键,那么它可能没问题。