当数据库重新启动,而导致程序无法连接,需要重启tomcat才能重连的解决办法
方法一、将连接池由DBCP改为C3P0
c3p0连接池本身具有数据库重连机制:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" name="TagDataSource,dataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxPoolSize" value="100"/>
<property name="checkoutTimeout" value="10000"/>
<property name="maxIdleTime" value="60"/>
<property name="maxStatements" value="100"/>
<property name="idleConnectionTestPeriod" value="60"/>
<property name="autoCommitOnClose" value="true"/>
<property name="breakAfterAcquireFailure" value="true"/>
</bean>
方法二、数据源DBCP不变,只要在原来的配置上进行如下修改:
1、在配置文件中每个数据源增加:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" name="TagDataSource,dataSource">
......
<property name="validationQuery">
<value>${jdbc.validationQuery}</value>
</property>
</bean>
2、在xd.properties每个数据源配置加上:
jdbc.validationQuery=select count(1) from dual
或者jdbc.validationQuery=select sysdate from dual只要是执行一句sql语句就行了。