HTTP状态500 - 无法提取ResultSet - Hibernate

时间:2013-09-26 16:52:51

标签: java hibernate jpa jdbc connection-pooling

HTTP Status 500 - could not extract ResultSet

type Exception report

message could not extract ResultSet

description The server encountered an internal error that prevented it from fulfilling this request.

exception

 1. 

org.hibernate.exception.JDBCConnectionException: could not extract ResultSet
    org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:132)
    org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
    org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
    org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61)
    org.hibernate.loader.Loader.getResultSet(Loader.java:2040)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1837)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1816)
    org.hibernate.loader.Loader.doQuery(Loader.java:900)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342)
    org.hibernate.loader.Loader.doList(Loader.java:2526)
    org.hibernate.loader.Loader.doList(Loader.java:2512)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2342)
    org.hibernate.loader.Loader.list(Loader.java:2337)
    org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338)
    org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1827)
    org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:231)
    org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:157)
    com.HealthCareInsights.Dao.RegistrationDao.checkUser(RegistrationDao.java:45)
    com.HealthCareInsights.Controller.Registration.doPost(Registration.java:80)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 475,905 milliseconds ago.  The last packet sent successfully to the server was 1 milliseconds ago.
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
    com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3102)
    com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2991)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3532)
    com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
    com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
    com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
    com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2293)
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
    org.hibernate.loader.Loader.getResultSet(Loader.java:2040)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1837)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1816)
    org.hibernate.loader.Loader.doQuery(Loader.java:900)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342)
    org.hibernate.loader.Loader.doList(Loader.java:2526)
    org.hibernate.loader.Loader.doList(Loader.java:2512)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2342)
    org.hibernate.loader.Loader.list(Loader.java:2337)
    org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338)
    org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1827)
    org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:231)
    org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:157)
    com.HealthCareInsights.Dao.RegistrationDao.checkUser(RegistrationDao.java:45)
    com.HealthCareInsights.Controller.Registration.doPost(Registration.java:80)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause

java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
    com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2552)
    com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3002)
    com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2991)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3532)
    com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
    com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
    com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
    com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2293)
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
    org.hibernate.loader.Loader.getResultSet(Loader.java:2040)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1837)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1816)
    org.hibernate.loader.Loader.doQuery(Loader.java:900)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342)
    org.hibernate.loader.Loader.doList(Loader.java:2526)
    org.hibernate.loader.Loader.doList(Loader.java:2512)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2342)
    org.hibernate.loader.Loader.list(Loader.java:2337)
    org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338)
    org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1827)
    org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:231)
    org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:157)
    com.HealthCareInsights.Dao.RegistrationDao.checkUser(RegistrationDao.java:45)
    com.HealthCareInsights.Controller.Registration.doPost(Registration.java:80)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.39 logs.

这是我得到的错误,我的连接池配置是

             <property name="hibernate.c3p0.min_size">5</property>
            <property name="hibernate.c3p0.max_size">20</property>
             <property name="hibernate.c3p0.timeout">3500</property>
             <property name="hibernate.c3p0.validate">true</property>
             <property ame="hibernate.c3p0.preferredTestQuery">SELECT 1</property>
            <property name="hibernate.c3p0.max_statements">50</property>
             <property name="hibernate.c3p0.idle_test_period">3000</property>

我用谷歌搜索了这个解决方案,但没有找到正确的解决方案。这个错误只发生了几次。当我提交表单时,花了一些时间后会发生此错误。否则应用程序正常。

1 个答案:

答案 0 :(得分:1)

请在jdbc网址中指定 autoReconnect = true

JDBC:MySQL的://主机名:端口/ DB_NAME autoReconnect的=真