c3p0 APPARENT DEADLOCK问题

来源:互联网 发布:网络促销方案模板 编辑:程序博客网 时间:2024/06/06 09:30
2013-9-13 16:25:18 com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDet  ector run  警告: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@200d0c  -- APPARENT DEADLOCK!!! Complete Status:          Managed Threads: 3          Active Threads: 3          Active Tasks:                  com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@bdb859   (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)                  com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@191f61  c (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)                  com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1b4b24  d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)          Pending Tasks:                  com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@260829                    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@e1fb6c    Pool thread stack traces:          Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5  ,main]                  java.lang.Thread.sleep(Native Method)                  com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba  sicResourcePool.java:1805)                  com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run  (ThreadPoolAsynchronousRunner.java:547)          Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5  ,main]                  java.lang.Thread.sleep(Native Method)                  com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba  sicResourcePool.java:1805)                  com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run  (ThreadPoolAsynchronousRunner.java:547)          Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5  ,main]                  java.lang.Thread.sleep(Native Method)                  com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba  sicResourcePool.java:1805)                  com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run  (ThreadPoolAsynchronousRunner.java:547)  




下载c3p0-0.2.9.1.zip文件。里面包含3个jar文件。

倒入项目并buildpath;

然后参看配置:application.xml

<bean id="parentDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"><property name="driverClass" value="${jdbc.driverClassName}" /><property name="user" value="${jdbc.username}"/><property name="password" value="${jdbc.password}" /><!-- 连接池信息 -->          <!-- 当连接池中的连接用完时,C3P0一次性创建新连接的数目 -->          <property name="acquireIncrement" value="${c3p0.acquireIncrement}" />          <!-- 初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值。默认为3; -->          <property name="initialPoolSize" value="${c3p0.initialPoolSize}" />          <!-- 最大空闲时间,超过空闲时间的连接将被丢弃。为0或负数则永不丢弃。默认为0; -->          <property name="maxIdleTime" value="${c3p0.maxIdleTime}" />          <!-- 连接池中保留的最小连接数。默认为15 -->          <property name="minPoolSize" value="${c3p0.minPoolSize}" />          <!-- 连接池中保留的最大连接数。默认为15; -->          <property name="maxPoolSize" value="${c3p0.maxPoolSize}" />          <!-- JDBC的标准参数,用以控制数据源内加载的PreparedStatement数量。但由于预缓存的Statement属 于单个Connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素,如果maxStatements与 maxStatementsPerConnection均为0,则缓存被关闭。默认为0;  -->          <property name="maxStatements" value="${c3p0.maxStatements}" />          <!-- 连接池内单个连接所拥有的最大缓存Statement数。默认为0;  -->          <property name="maxStatementsPerConnection" value="${c3p0.maxStatementsPerConnection}"/>

jdbc.properties

c3p0.acquireIncrement=50  c3p0.initialPoolSize=100  c3p0.maxIdleTime=50  c3p0.minPoolSize=50  c3p0.maxPoolSize=1000  c3p0.maxStatements=0  c3p0.maxStatementsPerConnection=5 

然后就可以了。

0 0
原创粉丝点击