Hibernate 4 + C3P0 连接池返回错误

标签 hibernate c3p0

我使用 Hibernate 4 并使用 C3P0 作为其连接提供程序。我目前没有使用 Spring框架。

开发环境

Windows 7
Eclipse Juno
JRE-7
JDK -7

我使用的 jar 是...

hibernate-core-4.1.7.Final.jar
c3p0-0.9.2-pre6.jar
jtds-1.3.0.jar

但在同一个lib路径中也有

hibernate-c3p0-4.1.1.Final.jar
spring-orm-3.2.0.RC1.jar

其他 jars(hibernate-c3p0-4.1.1.Final.jar 和 spring-orm-3.2.0.RC1.jar)是否有可能对此错误产生一些影响(见下文)?

是的,整个 spring 框架 jar 都在路径中,但我只是想 先习惯 hibernate 。我还不知道如何使用Spring。我们暂时把这个问题留在这里。

我可以创建连接并成功查询数据库。 但我收到这个错误

类似的东西

关闭 com.mchange.v2.c3p0.impl.NewPooledConnection@4d0106e5 时,某些资源无法正确关闭

WARNING: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@4d0106e5

我收到的错误非常重复。 它们看起来都是这样的

11월 30, 2012 4:39:59 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] Exceptions occurred while trying to close a PooledConnection's resources normally.
11월 30, 2012 4:39:59 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] NewPooledConnection close Exception.
java.sql.SQLException: I/O Error: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2388)
    at net.sourceforge.jtds.jdbc.TdsCore.clearResponseQueue(TdsCore.java:736)
    at net.sourceforge.jtds.jdbc.JtdsStatement.reset(JtdsStatement.java:722)
    at net.sourceforge.jtds.jdbc.JtdsStatement.close(JtdsStatement.java:966)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:718)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:592)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)
Caused by: java.io.IOException: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:755)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2282)
    ... 9 more

11월 30, 2012 4:39:59 오후 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask run
WARNING: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@4d0106e5
java.sql.SQLException: Some resources failed to close properly while closing com.mchange.v2.c3p0.impl.NewPooledConnection@4d0106e5
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:638)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)

11월 30, 2012 4:42:17 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] Exceptions occurred while trying to close a PooledConnection's resources normally.
11월 30, 2012 4:42:17 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] NewPooledConnection close Exception.
java.sql.SQLException: I/O Error: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2388)
    at net.sourceforge.jtds.jdbc.TdsCore.clearResponseQueue(TdsCore.java:736)
    at net.sourceforge.jtds.jdbc.JtdsStatement.reset(JtdsStatement.java:722)
    at net.sourceforge.jtds.jdbc.JtdsStatement.close(JtdsStatement.java:966)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:718)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:592)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)
Caused by: java.io.IOException: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:755)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2282)
    ... 9 more

11월 30, 2012 4:42:17 오후 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask run
WARNING: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@40a4d015
java.sql.SQLException: Some resources failed to close properly while closing com.mchange.v2.c3p0.impl.NewPooledConnection@40a4d015
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:638)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)

11월 30, 2012 4:42:17 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] Exceptions occurred while trying to close a PooledConnection's resources normally.
11월 30, 2012 4:42:17 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] NewPooledConnection close Exception.
java.sql.SQLException: I/O Error: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2388)
    at net.sourceforge.jtds.jdbc.TdsCore.clearResponseQueue(TdsCore.java:736)
    at net.sourceforge.jtds.jdbc.JtdsStatement.reset(JtdsStatement.java:722)
    at net.sourceforge.jtds.jdbc.JtdsStatement.close(JtdsStatement.java:966)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:718)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:592)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)
Caused by: java.io.IOException: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:755)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2282)
    ... 9 more

11월 30, 2012 4:42:17 오후 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask run
WARNING: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@2ee657fa
java.sql.SQLException: Some resources failed to close properly while closing com.mchange.v2.c3p0.impl.NewPooledConnection@2ee657fa
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:638)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)

11월 30, 2012 4:42:18 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] Exceptions occurred while trying to close a PooledConnection's resources normally.
11월 30, 2012 4:42:18 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] NewPooledConnection close Exception.
java.sql.SQLException: I/O Error: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2388)
    at net.sourceforge.jtds.jdbc.TdsCore.clearResponseQueue(TdsCore.java:736)
    at net.sourceforge.jtds.jdbc.JtdsStatement.reset(JtdsStatement.java:722)
    at net.sourceforge.jtds.jdbc.JtdsStatement.close(JtdsStatement.java:966)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:718)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:592)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)
Caused by: java.io.IOException: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:755)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2282)
    ... 9 more

11월 30, 2012 4:42:18 오후 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask run
WARNING: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@51b2f91b
java.sql.SQLException: Some resources failed to close properly while closing com.mchange.v2.c3p0.impl.NewPooledConnection@51b2f91b
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:638)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)

11월 30, 2012 4:42:19 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] Exceptions occurred while trying to close a PooledConnection's resources normally.
11월 30, 2012 4:42:19 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] NewPooledConnection close Exception.
java.sql.SQLException: I/O Error: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2388)
    at net.sourceforge.jtds.jdbc.TdsCore.clearResponseQueue(TdsCore.java:736)
    at net.sourceforge.jtds.jdbc.JtdsStatement.reset(JtdsStatement.java:722)
    at net.sourceforge.jtds.jdbc.JtdsStatement.close(JtdsStatement.java:966)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:718)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:592)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)
Caused by: java.io.IOException: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:755)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2282)
    ... 9 more

11월 30, 2012 4:42:19 오후 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask run
WARNING: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@7bb39e5e
java.sql.SQLException: Some resources failed to close properly while closing com.mchange.v2.c3p0.impl.NewPooledConnection@7bb39e5e
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:638)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)

11월 30, 2012 4:42:21 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] Exceptions occurred while trying to close a PooledConnection's resources normally.
11월 30, 2012 4:42:21 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] NewPooledConnection close Exception.
java.sql.SQLException: I/O Error: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2388)
    at net.sourceforge.jtds.jdbc.TdsCore.clearResponseQueue(TdsCore.java:736)
    at net.sourceforge.jtds.jdbc.JtdsStatement.reset(JtdsStatement.java:722)
    at net.sourceforge.jtds.jdbc.JtdsStatement.close(JtdsStatement.java:966)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:718)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:592)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)
Caused by: java.io.IOException: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:755)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2282)
    ... 9 more

11월 30, 2012 4:42:21 오후 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask run
WARNING: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@155767ad
java.sql.SQLException: Some resources failed to close properly while closing com.mchange.v2.c3p0.impl.NewPooledConnection@155767ad
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:638)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)

11월 30, 2012 4:42:22 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] Exceptions occurred while trying to close a PooledConnection's resources normally.
11월 30, 2012 4:42:22 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] NewPooledConnection close Exception.
java.sql.SQLException: I/O Error: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2388)
    at net.sourceforge.jtds.jdbc.TdsCore.clearResponseQueue(TdsCore.java:736)
    at net.sourceforge.jtds.jdbc.JtdsStatement.reset(JtdsStatement.java:722)
    at net.sourceforge.jtds.jdbc.JtdsStatement.close(JtdsStatement.java:966)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:718)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:592)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)
Caused by: java.io.IOException: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:755)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2282)
    ... 9 more

11월 30, 2012 4:42:22 오후 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask run
WARNING: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@299bdc58
java.sql.SQLException: Some resources failed to close properly while closing com.mchange.v2.c3p0.impl.NewPooledConnection@299bdc58
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:638)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)

11월 30, 2012 4:42:22 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] Exceptions occurred while trying to close a PooledConnection's resources normally.
11월 30, 2012 4:42:22 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] NewPooledConnection close Exception.
java.sql.SQLException: I/O Error: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2388)
    at net.sourceforge.jtds.jdbc.TdsCore.clearResponseQueue(TdsCore.java:736)
    at net.sourceforge.jtds.jdbc.JtdsStatement.reset(JtdsStatement.java:722)
    at net.sourceforge.jtds.jdbc.JtdsStatement.close(JtdsStatement.java:966)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:718)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:592)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)
Caused by: java.io.IOException: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:755)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2282)
    ... 9 more

11월 30, 2012 4:42:22 오후 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask run
WARNING: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@550a9854
java.sql.SQLException: Some resources failed to close properly while closing com.mchange.v2.c3p0.impl.NewPooledConnection@550a9854
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:638)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)

11월 30, 2012 4:42:22 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] Exceptions occurred while trying to close a PooledConnection's resources normally.
11월 30, 2012 4:42:22 오후 com.mchange.v2.c3p0.impl.NewPooledConnection logCloseExceptions
INFO: [c3p0] NewPooledConnection close Exception.
java.sql.SQLException: I/O Error: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2388)
    at net.sourceforge.jtds.jdbc.TdsCore.clearResponseQueue(TdsCore.java:736)
    at net.sourceforge.jtds.jdbc.JtdsStatement.reset(JtdsStatement.java:722)
    at net.sourceforge.jtds.jdbc.JtdsStatement.close(JtdsStatement.java:966)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.cleanupUncachedStatements(NewPooledConnection.java:718)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:592)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)
Caused by: java.io.IOException: Stream 2 attempting to read when no request has been sent
    at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:755)
    at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:477)
    at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:114)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2282)
    ... 9 more

11월 30, 2012 4:42:22 오후 com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask run
WARNING: Failed to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@67a80f8e
java.sql.SQLException: Some resources failed to close properly while closing com.mchange.v2.c3p0.impl.NewPooledConnection@67a80f8e
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:638)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:247)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:607)
    at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1012)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:636)

提前致谢。 如果我可以改进写问题的几点,请告诉我:)

编辑 哎呀我忘了粘贴我的配置。来了

<hibernate-configuration>

<session-factory>

 <!-- Database connection settings -->
 <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
 <!--  -->

 <!-- JDBC connection pool (use the built-in) -->
 <property name="connection.pool_size">5</property>

 <!-- connection pooling -->

        <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <!-- 
        <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>        
         -->
        <property name="hibernate.c3p0.acquire_increment" >1</property>
        <property name="hibernate.c3p0.idle_test_period">30</property>
        <property name="hibernate.c3p0.min_size">1</property>
        <property name="hibernate.c3p0.max_size">2</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.timeout">60</property>

        <!-- 
        <property name="hibernate.c3p0.acquireRetryAttempts">1</property>
        <property name="hibernate.c3p0.acquireRetryDelay">250</property>
         -->

 <!-- SQL dialect -->
 <!--  
 <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
 -->

 <!-- Enable Hibernate's automatic session context management -->
 <property name="current_session_context_class">thread</property>

 <!-- Disable the second-level cache -->
 <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

 <!-- Echo all executed SQL to stdout -->
 <property name="show_sql">true</property>

 <!-- Drop and re-create the database schema on startup -->
 <!-- <property name="hbm2ddl.auto">update</property> -->

 <!-- Mapping files -->
 <mapping resource="standard.hbm.xml"/>
 <mapping resource="revisionedFile.hbm.xml"/>
 <mapping resource="keyword.hbm.xml"/>  
 <mapping resource="device.hbm.xml"/>
 <mapping resource="reference.hbm.xml"/>
 <mapping resource="commonSpecification.hbm.xml"/>
 <mapping resource="item.hbm.xml"/>
 <mapping resource="superItem.hbm.xml"/>
 <mapping resource="defaultURLResource.hbm.xml" />
 <mapping resource="test.hbm.xml"/>

  <!--  Enver Listeners -->
   <listener class="org.hibernate.envers.event.AuditEventListener" type="post-insert"/>
   <listener class="org.hibernate.envers.event.AuditEventListener" type="post-update"/>
   <listener class="org.hibernate.envers.event.AuditEventListener" type="post-delete"/>
   <listener class="org.hibernate.envers.event.AuditEventListener" type="pre-collection-update"/>
   <listener class="org.hibernate.envers.event.AuditEventListener" type="pre-collection-remove"/>
   <listener class="org.hibernate.envers.event.AuditEventListener" type="post-collection-recreate"/>


</session-factory>

</hibernate-configuration>  

最佳答案

我不知道为什么你会看到这些异常,但它们是 c3p0 正在清理本应由用户关闭但实际上没有关闭的语句的异常。解决该问题的一种方法(可以解决问题或为您提供有关问题发生位置的更清晰的信息)是确保您的客户端应用程序在使用语句后立即关闭语句。当您 checkin 连接时(或者在本例中,当从池中删除 PooledConnection 时),c3p0 会小心地为您清理未关闭的语句,但是如果发生异常,它们将在资源期间报告为异常。清理,即在 close() 期间。这就是你所看到的。

在 PooledConnection 被销毁时,如何/为什么有未缓存的语句需要关闭,这有点神秘。池不应该在 checkout 时尝试 close() PooledConnection,如果它已 checkin ,则语句应该在 checkin 时被清理。我将向记录器 com.mchange.v2.c3p0.impl.NewPooledConnection 添加更多日志记录(在 FINER/DEBUG 级别)到 c3p0 的下一个预版本,这可能有助于跟踪此问题。如果有机会请务必看一下。

关于Hibernate 4 + C3P0 连接池返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13641065/

相关文章:

java - hibernate中的注释是hibernate还是java持久化API?

Hibernate 自定义 SQL 查询与连接 - 避免返回数组列表

spring - 如何在 Spring+Hibernate+C3P0 环境中构建/获取 ConnectionProvider?

mysql - 类 'URL' 中没有可写属性 'com.mchange.v2.c3p0.ComboPooledDataSource'

java - Hibernate 返回 BigIntegers 而不是 longs

hibernate - Spring/Hibernate/JUnit - 没有绑定(bind)到线程的 hibernate session

java - Spring Security ACL 层次结构

java - 服务器整夜闲置后 C3P0 死锁

java - HibernateUtil 不返回与 c3p0 池的连接

java - C3P0 ComboPooledDataSource.getConnection 方法在部署后带空