jiuweideqixu 2011-06-30
在Spring项目中使用C3p0-JDBC3ConnectionandStatementPooling
C3p0Document在http://www.mchange.com/projects/c3p0/index.html
Spring的DataSourcebean定义如下,把可变的变量抽出放在jdbc.propertiesfile中,方便修改jdbc.propertiesfile只要放在当前项目的classes路径下,或放在Tomcat的Shared/classes下,Spring就可以找到
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:jdbc.properties</value> </property> </bean> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="autoCommitOnClose" value="true"/> <property name="checkoutTimeout" value="${cpool.checkoutTimeout}"/> <property name="initialPoolSize" value="${cpool.minPoolSize}"/> <property name="minPoolSize" value="${cpool.minPoolSize}"/> <property name="maxPoolSize" value="${cpool.maxPoolSize}"/> <property name="maxIdleTime" value="${cpool.maxIdleTime}"/> <property name="acquireIncrement" value="${cpool.acquireIncrement}"/> <property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}"/> </bean>
jdbc.properties # Database URL jdbc.url=jdbc:mysql://192.168.0.25"3306/db # Database login information jdbc.username=root jdbc.password= # Time to wait for an open connection before timing out # (in milliseconds) cpool.checkoutTimeout=5000 # Connection pool size cpool.minPoolSize=5 cpool.maxPoolSize=40 # How long to keep unused connections around(in seconds) # Note: MySQL times out idle connections after 8 hours(28,800 seconds) # so ensure this value is below MySQL idle timeout cpool.maxIdleTime=25200 # How long to hang on to excess unused connections after traffic spike # (in seconds) cpool.maxIdleTimeExcessConnections=1800 # Acquiring new connections is slow, so eagerly retrieve extra connections # when current pool size is reached cpool.acquireIncrement=5