Hibernate 冬眠+;c3p0+;postgres=SQLState:08006发送到后端时发生I/O错误
您好,我有一个事务性的带注释的服务函数,它调用一个外部RESTAPI,有时速度很快,有时大约需要10秒 当api快速返回时,一切正常,当它花费太长时间时,hibernate会给我以下异常:Hibernate 冬眠+;c3p0+;postgres=SQLState:08006发送到后端时发生I/O错误,hibernate,timeout,Hibernate,Timeout,您好,我有一个事务性的带注释的服务函数,它调用一个外部RESTAPI,有时速度很快,有时大约需要10秒 当api快速返回时,一切正常,当它花费太长时间时,hibernate会给我以下异常: http-bio-8080-exec-5 03/06/2014 16:05:59,346 | WARN | org.hibernate.engine.jdbc.spi.SqlExceptionHelper | logExceptions | SQL Error: 0, SQLState: 08006 http
http-bio-8080-exec-5 03/06/2014 16:05:59,346 | WARN | org.hibernate.engine.jdbc.spi.SqlExceptionHelper | logExceptions | SQL Error: 0, SQLState: 08006
http-bio-8080-exec-5 03/06/2014 16:05:59,351 | ERROR | org.hibernate.engine.jdbc.spi.SqlExceptionHelper | logExceptions | An I/O error occured while sending to the backend.
http-bio-8080-exec-5 03/06/2014 16:05:59,353 | WARN | com.mchange.v2.c3p0.impl.NewPooledConnection | handleThrowable | [c3p0] A PooledConnection that has already signalled a Connection error is still in use!
http-bio-8080-exec-5 03/06/2014 16:05:59,354 | WARN | com.mchange.v2.c3p0.impl.NewPooledConnection | handleThrowable | [c3p0] Another error has occurred [ org.postgresql.util.PSQLException: This connection has been closed. ] which will not be reported to listeners!
org.postgresql.util.PSQLException: This connection has been closed.
at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:714)
at org.postgresql.jdbc2.AbstractJdbc2Connection.rollback(AbstractJdbc2Connection.java:731)
at com.mchange.v2.c3p0.impl.NewProxyConnection.rollback(NewProxyConnection.java:860)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:163)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:209)
at org.springframework.orm.hibernate4.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:574)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:846)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:823)
at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:493)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:264)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
postgres服务器会记录此事件
2014-06-03 16:04:40 CEST LOG: unvollständige Message vom Client
unvollstÃndige Message vom客户端~~来自客户端的消息不完整
所以我假设有任何超时。。。但我不知道在哪里,我的hibernate配置:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<!-- Connection properties -->
<property name="driverClass" value="org.postgresql.Driver" />
<property name="jdbcUrl" value="jdbc:postgresql://localhost:5432/dbname" />
<property name="user" value="postgres" />
<property name="password" value="xxx" />
<!-- Pool properties -->
<property name="numHelperThreads" value="10" />
<property name="acquireIncrement" value="3" />
<property name="initialPoolSize" value="5" />
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="20" />
<property name="maxStatements" value="50" />
<property name="idleConnectionTestPeriod" value="300000" />
<property name="loginTimeout" value="300" />
</bean>
<property name="hibernateProperties">
<value>
hibernate.hbm2ddl.auto=update
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.bytecode.use_reflection_optimizer=false
hibernate.max_fetch_depth=0
</value>
</property>
hibernate.hbm2ddl.auto=更新
hibernate.dialogue=org.hibernate.dialogue.PostgreSqlDialogue
hibernate.bytecode.use\u reflection\u optimizer=false
hibernate.max\u fetch\u depth=0
问题出在这一行
Restrictions.in("id", hugeidlist)
hugeidlist来自外部api,包含超过100000个条目,生成了一个太长的查询,我现在已经拆分了该列表。问题是这一行
Restrictions.in("id", hugeidlist)
hugeidlist来自外部api,包含超过100000个条目,生成了一个太长的查询,我现在已经拆分了该列表。问题是这一行
Restrictions.in("id", hugeidlist)
hugeidlist来自外部api,包含超过100000个条目,生成了一个太长的查询,我现在已经拆分了该列表。问题是这一行
Restrictions.in("id", hugeidlist)
hugeidlist来自外部api,包含超过100000个条目,生成的查询太长,我现在已经拆分了列表