Java JDBI(非JDBC)连接已关闭-如何处理

Java JDBI(非JDBC)连接已关闭-如何处理,java,postgresql,jdbi,Java,Postgresql,Jdbi,(贾罗德·罗伯森,这是一个JDBI问题,而不仅仅是一个博士后问题。) 我有一个业务类多次调用DAO方法。大约15分钟后,由于Postgres的一个连接关闭错误,这种情况就消失了 ! Caused by: org.postgresql.util.PSQLException: This connection has been closed. ! at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Conne

(贾罗德·罗伯森,这是一个JDBI问题,而不仅仅是一个博士后问题。)

我有一个业务类多次调用DAO方法。大约15分钟后,由于Postgres的一个连接关闭错误,这种情况就消失了

! Caused by: org.postgresql.util.PSQLException: This connection has been closed.
! at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:853) ~[hui-populator.jar:0.0.180]
! at org.postgresql.jdbc2.AbstractJdbc2Connection.rollback(AbstractJdbc2Connection.java:870) ~[hui-populator.jar:0.0.180]
! at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_51]
! at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_51]
! at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_51]
! at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_51]
! at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126) ~[hui-populator.jar:0.0.180]
! at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109) ~[hui-populator.jar:0.0.180]
! at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:80) ~[hui-populator.jar:0.0.180]
! at com.sun.proxy.$Proxy39.rollback(Unknown Source) ~[na:na]
! at org.skife.jdbi.v2.tweak.transactions.LocalTransactionHandler.rollback(LocalTransactionHandler.java:90) ~[hui-populator.jar:0.0.180]
! ... 62 common frames omitted
这是Dao类的实例化方式:

final DBI jdbi = factory.build(environment, configuration.getHuiDbDatabase(), "postgres");

    final MyDao myDao = jdbi.onDemand(MyDao.class);
然后这个dao有一个用@Transaction注释的方法,该方法在业务类中被多次调用


在某一点上,连接是关闭的。我应该怎么处理这个问题,这样我才能继续调用@Transaction方法?

XY问题?似乎问题不在于如何处理连接关闭,而是它为什么首先关闭。嗨,内森,我强烈怀疑是数据库关闭了它。当然,JDBI应该处理这个问题。
@Transactional
是Spring注释,
@Transaction
是JDBI注释。在你的问题中,你提到了
@Transactional
,你应该在哪里使用
@Transaction
。请检查代码中使用的注释好吗?对不起,这当然是正确的JDBI注释。数据库没有关闭连接。它只能走到尽头。你在什么地方关门了。