日期:2014-05-16  浏览次数:20644 次

java中c3p0数据库重启后自动重连配置

一、几个参数详解

(1)breakAfterAcquireFailure

如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。

如果设为false,获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。

?

(2)testConnectionOnCheckin

如果设为true,那么在取得连接的同时将校验连接的有效性。性能消耗大。

?

(3)idleConnectionTestPeriod

每X秒检查所有连接池中的空闲连接。

?

二、application.xml文件中的c3p0配置

?

<bean id="dataSource"
		class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="automaticTestTable" value="CONNECTION_TEST" />
		<property name="testConnectionOnCheckout" value="true" />
		<property name="acquireRetryAttempts" value="5" />
		<property name="driverClass">
			<value>${CHECK_ST_ORL_driverClassName}</value>
		</property>
		<property name="jdbcUrl">
			<value>${CHECK_ST_ORL_URL}</value>
		</property>
		<property name="user">
			<value>${CHECK_ST_ORL_USER}</value>
		</property>
		<property name="password">
			<value>${CHECK_ST_ORL_PASSWD}</value>
		</property>

		<property name="minPoolSize">
			<value>30</value>
		</property>
		<property name="maxPoolSize">
			<value>100</value>
		</property>
		<property name="initialPoolSize">
			<value>30</value>
		</property>
		<property name="maxConnectionAge">
			<value>1800</value>
		</property>
		<property name="maxIdleTime">
			<value>1800</value>
		</property>
		<property name="maxIdleTimeExcessConnections">
			<value>300</value>
		</property>
		<property name="maxStatements">
			<value>0</value>
		</property>
		<property name="testConnectionOnCheckin">
			<value>false</value>
		</property>
		<property name="idleConnectionTestPeriod">
			<value>60</value>
		</property>
		<property name="checkoutTimeout">
			<value>1000</value>
		</property>
		<property name="breakAfterAcquireFailure">
            <value>false</value>
        </property> 
	</bean>
?

?

三、测试详情

?

?

breakAfterAcquireFailure

testConnectionOnCheckin

idleConnectionTestPeriod

oracle

mysql

false