读书人

配置多个数据源,该如何解决

发布时间: 2012-02-27 10:00:22 作者: rapoo

配置多个数据源
做了一个用Hibernate切换连接多个sqlserver数据库&其他数据库的程序,开始用ms的sqlserver驱动,用一段时间以后就会出现connection reset exception,后面改为jtds驱动+c3p0连接池,但还是不稳定,会报异常。不知道有什么好的方法能解决不稳定问题
问题补充 2011-09-04 17:54
异常信息如下:
java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicRe
sourcePool.java:1805)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(Thre
adPoolAsynchronousRunner.java:547)
- com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@188e804 --
APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
- com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@188e804 --
APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@bb0a41
(com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@19e61f
d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1334ec
d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResou
rceTask@17a941e
com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResou
rceTask@9278cc
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5
,main]
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
java.io.DataInputStream.readFully(Unknown Source)
java.io.DataInputStream.readFully(Unknown Source)
net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.j
ava:841)
net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket
.java:722)
net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStrea
m.java:466)
net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.jav
a:103)
net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2202)
net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:602)
net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2
.java:344)
net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3
.java:50)
net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(Driver
ManagerDataSource.java:134)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
nection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
nection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnect
ionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicRes
ourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicRe
sourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
sicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run


(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5
,main]
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
java.io.DataInputStream.readFully(Unknown Source)
java.io.DataInputStream.readFully(Unknown Source)
net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.j
ava:841)
net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket
.java:722)
net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStrea
m.java:466)
net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.jav
a:103)
net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2202)
net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:602)
net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2
.java:344)
net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3
.java:50)
net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(Driver
ManagerDataSource.java:134)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
nection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
nection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnect
ionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicRes
ourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicRe
sourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
sicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run
(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5
,main]
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
java.io.DataInputStream.readFully(Unknown Source)
java.io.DataInputStream.readFully(Unknown Source)
net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.j
ava:841)
net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket
.java:722)
net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStrea
m.java:466)
net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.jav
a:103)
net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2202)
net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:602)
net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2
.java:344)
net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3
.java:50)
net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(Driver
ManagerDataSource.java:134)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
nection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon


nection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnect
ionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicRes
ourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicRe
sourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
sicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run
(ThreadPoolAsynchronousRunner.java:547)


- Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@e7fe3c (in dead
locked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt(
).
- com.mchange.v2.resourcepool.BasicResourcePool@1e8b63d -- Thread unexpectedly i
nterrupted while performing an acquisition attempt.
java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicRe
sourcePool.java:1805)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(Thre
adPoolAsynchronousRunner.java:547)
- Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@e43775 (in dead
locked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt(
).
- Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@f4e8ef (in dead
locked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt(
).


[解决办法]
思路有问题
本来连接装的是连接A数据库的连接,突然将要连接B数据库,你让刚才的连接池的连接怎么办?
[解决办法]
帮顶一下
[解决办法]
mark~~~~~~~
[解决办法]
帮顶!!!!!

读书人网 >J2EE开发

热点推荐