2012-10-25 10:12:01 [org.hibernate.connection.ConnectionProviderFactory]-[INFO] Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
2012-10-25 10:12:01 [com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource]-[INFO] Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 5, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> true, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge16c8q15j7re5115y0nz|1a998c7, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> oracle.jdbc.driver.OracleDriver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge16c8q15j7re5115y0nz|1a998c7, idleConnectionTestPeriod -> 60, initialPoolSize -> 10, jdbcUrl -> jdbc:oracle:thin:@222.73.24.169:1521:orcl, lastAcquisitionFailureDefaultUser -> null, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 60, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 30, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 5, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]
2012-10-25 10:12:21 [com.mchange.v2.async.ThreadPoolAsynchronousRunner]-[WARN] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@17c50b9 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
2012-10-25 10:12:21 [com.mchange.v2.async.ThreadPoolAsynchronousRunner]-[WARN] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@17c50b9 -- APPARENT DEADLOCK!!! Complete Status: 
Managed Threads: 3
Active Threads: 3
Active Tasks: 
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@18a6890 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1d6d61d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@183268e (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
Pending Tasks: 
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@15872f5
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1e33bb8
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@165d0e0
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@17447c5
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@113f501
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@13a3d36
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@88b858
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
java.net.PlainSocketImpl.socketConnect(Native Method)
java.net.PlainSocketImpl.doConnect(Unknown Source)
java.net.PlainSocketImpl.connectToAddress(Unknown Source)
java.net.PlainSocketImpl.connect(Unknown Source)
java.net.SocksSocketImpl.connect(Unknown Source)
java.net.Socket.connect(Unknown Source)
oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:141)
oracle.net.nt.ConnOption.connect(ConnOption.java:123)
oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:337)
oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:422)
oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:672)
oracle.net.ns.NSProtocol.connect(NSProtocol.java:237)
oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
java.net.PlainSocketImpl.socketConnect(Native Method)
java.net.PlainSocketImpl.doConnect(Unknown Source)
java.net.PlainSocketImpl.connectToAddress(Unknown Source)
java.net.PlainSocketImpl.connect(Unknown Source)
java.net.SocksSocketImpl.connect(Unknown Source)
java.net.Socket.connect(Unknown Source)
oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:141)
oracle.net.nt.ConnOption.connect(ConnOption.java:123)
oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:337)
oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:422)
oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:672)
oracle.net.ns.NSProtocol.connect(NSProtocol.java:237)
oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
java.net.PlainSocketImpl.socketConnect(Native Method)
java.net.PlainSocketImpl.doConnect(Unknown Source)
java.net.PlainSocketImpl.connectToAddress(Unknown Source)
java.net.PlainSocketImpl.connect(Unknown Source)
java.net.SocksSocketImpl.connect(Unknown Source)
java.net.Socket.connect(Unknown Source)
oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:141)
oracle.net.nt.ConnOption.connect(ConnOption.java:123)
oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:337)
oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:422)
oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:672)
oracle.net.ns.NSProtocol.connect(NSProtocol.java:237)
oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
连接数据库用的是c3p0

解决方案 »

  1.   

    <!-- 定义数据源Bean,使用C3P0数据源实现 -->

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass">
    <value>oracle.jdbc.driver.OracleDriver</value>
    </property>
    <property name="jdbcUrl">
    <value>jdbc:oracle:thin:@localhost:1521:orcl</value>
    </property>
    <property name="user">
    <value>chengshi</value>
    </property>
    <property name="password">
    <value>[email protected]</value>
    </property>
    <property name="minPoolSize">
    <value>5</value>
    </property>
    <property name="maxPoolSize">
    <value>30</value>
    </property>
    <property name="initialPoolSize">
    <value>10</value>
    </property>
    <property name="maxIdleTime">
    <value>60</value>
    </property>
    <property name="acquireIncrement">
    <value>5</value>
    </property>
    <property name="maxStatements">
    <value>0</value>
    </property>
    <property name="idleConnectionTestPeriod">
    <value>60</value>
    </property>
    <property name="acquireRetryAttempts">
    <value>30</value>
    </property>
    <property name="breakAfterAcquireFailure">
    <value>true</value>
    </property>
    <property name="testConnectionOnCheckout">
    <value>false</value>
    </property>
    </bean>