访问 Web 服务时我随机收到此错误。很难复制,一旦我刷新它,一切都按预期运行。
引起:org.hibernate.exception.JDBCConnectionException:无法执行查询 在 org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:97) 在 org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 在 org.hibernate.loader.Loader.doList(Loader.java:2235) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129) 在 org.hibernate.loader.Loader.list(Loader.java:2124) 在 org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118) 在 org.hibernate.impl.SessionImpl.list(SessionImpl.java:1597) 在 org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306) 在 edu.asd.myproj.hibernate.adapter.CriteriaAdapter.list(CriteriaAdapter.java:380) 在 edu.asd.myproj.DaoHibernateImpl.findByCriteria(DaoHibernateImpl.java:778) 在 edu.asd.myproj.DaoHibernateImpl.findByCriteria(DaoHibernateImpl.java:765) 在 edu.asd.myproj.DaoHibernateImpl.findByProperty(DaoHibernateImpl.java:361) 在 edu.asd.myproj.ProfilesDaoImpl.count(ProfilesDaoImpl.java:81) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 在 $Proxy27.count(未知来源) 在 edu.asd.myproj.ResourceProfileLoaderNew.loadProfiles(ResourceProfileLoaderNew.java:66) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:297) 在 org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:250) 在 org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:144) ... 50 更多 原因:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收的最后一个数据包是44323秒前。最后一个成功发送到服务器的数据包是44323秒前,比服务器配置的值长'等待超时”。您应该考虑在应用程序中使用之前使连接有效性过期和/或测试,增加客户端超时的服务器配置值,或使用连接器/J 连接属性“autoReconnect=true”来避免此问题。 在 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:406) 在 com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074) 在 com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3246) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1917) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542) 在 com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734) 在 com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1885) 在 org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93) 在 org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208) 在 org.hibernate.loader.Loader.getResultSet(Loader.java:1812) 在 org.hibernate.loader.Loader.doQuery(Loader.java:697) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 在 org.hibernate.loader.Loader.doList(Loader.java:2232) ... 79 更多 引起:java.net.SocketException: Broken pipe 在 java.net.SocketOutputStream.socketWrite0(本机方法) 在 java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 在 java.net.SocketOutputStream.write(SocketOutputStream.java:136) 在 java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 在 java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) 在 com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3227) ... 90 更多
这是我的 hibernate.properties 文件
# Turn on for SQL debugging
hibernate.show_sql=true
# Generate schema?
hibernate.hbm2ddl.auto=validate
#============================================================
# C3P0 connection pool configuration
#============================================================
#changed to default values
c3p0.acquireIncrement=hibernate.c3p0.acquire_increment
c3p0.idleConnectionTestPeriod=hibernate.c3p0.idle_test_period
c3p0.initialPoolSize=10
c3p0.maxIdleTime=hibernate.c3p0.timeout
c3p0.maxPoolSize=hibernate.c3p0.max_size
c3p0.maxStatements=hibernate.c3p0.max_statements
c3p0.minPoolSize=hibernate.c3p0.min_size
c3p0.testConnectionsOnCheckout=hibernate.c3p0.validate
该错误随机出现一次,需要很长时间才能再次出现。刷新后消失。