我有一个使用扫描地址连接到数据库的应用程序。在此扫描地址下有两个相同的数据库Oracle示例。如果一个示例由于某种原因关闭或崩溃,应用程序应该自动恢复并尝试连接到数据库的其他工作示例。
我使用HikariCP,Hibernate,jdbc:瘦客户端和Oracle DB。
我应该强制检查哪一个到DB的连接是否是活动的,如果不是,则尝试建立新的连接?
两个数据库示例上方的扫描地址工作正常。当我的应用程序崩溃并刷新页面时,它会自动在其他工作数据库上创建一个连接池,但我需要自动完成此过程。
我使用Hikari xml配置:
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="minimumIdle" value="${jdbc.minPoolSize:0}" />
<property name="maximumPoolSize" value="${jdbc.maxPoolSize:10}" />
<property name="idleTimeout" value="${jdbc.maxIdleTimeSeconds:10000}" />
</bean>
1条答案
按热度按时间uttx8gqw1#
有各种事情要考虑:
Connection.isValid()
。在Oracle的情况下,它与OCIPing做同样的事情。它在应用程序和数据库服务器之间交换单个数据包往返。在每个连接借用上执行特定的SQL属于过去-今天有更好的方法。