C3P0 问题
?? <property name="driverClass" value="${jdbc.driverClass}" />
?? <property name="jdbcUrl" value="${jdbc.jdbcUrl}" />
?? <property name="user" value="${jdbc.user}" />
?? <property name="password" value="${jdbc.password}" />
?? <property name="minPoolSize" value="${jdbc.miniPoolSize}" />
?? <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>??
?? <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
?? <property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>
?? <property name="acquireIncrement" value="${jdbc.acquireIncrement}"/>
??
?? <property name="acquireRetryAttempts" value="${jdbc.acquireRetryAttempts}"/>
?? <property name="acquireRetryDelay" value="${jdbc.acquireRetryDelay}"/>
?? <property name="testConnectionOnCheckin" value="${jdbc.testConnectionOnCheckin}"/>
?? <property name="automaticTestTable" value="${jdbc.automaticTestTable}"/>
?? <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"/>
?? <property name="checkoutTimeout" value="${jdbc.checkoutTimeout}"/>
</bean>
?
+++++++++++
报错误:
APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
一般设置maxStatements=0解决该问题
但是:
把max_statements设置为0。
c3p0在同时关闭statement和connection的时候,或者关闭他们之间的时间很短的时候,有时候connection并没有被关闭,因为有些preparedstatement还在被cached住。这是c3p0的作者自己说的。
http://forum.hibernate.org/viewtopic.php?t=947246&highlight=apparent+deadlock+c3p0
C3P0增加以下配置信息:
//set to 'SELECT 1'??????
Connection test is often slow.
See "Configuring Connection Testing" in c3p0's docs for more information.
在使用c3p0作为连接池时,其中的一些配置参数需要修改。主要是maxIdleTime和idleConnectionTestPeriod。 MySQL默认是8小时(28800秒)后自动关闭已打开的连接,所以c3p0要在8小时内关闭不使用的连接,上面的2参数要小于28800秒。附上在 hibernate中配置c3p0的关键字。
c3p0-native property name hibernate configuration key
c3p0.acquireIncrement hibernate.c3p0.acquire_increment
c3p0.idleConnectionTestPeriod hibernate.c3p0.idle_test_period
c3p0.initialPoolSize not available -- uses minimum size
c3p0.maxIdleTime hibernate.c3p0.timeout
c3p0.maxPoolSize hibernate.c3p0.max_size
c3p0.maxStatements hibernate.c3p0.max_statements
c3p0.minPoolSize hibernate.c3p0.min_size