Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate如何检测连接是否已在Hibernate之外关闭_Java_Hibernate_H2_C3p0 - Fatal编程技术网

Java Hibernate如何检测连接是否已在Hibernate之外关闭

Java Hibernate如何检测连接是否已在Hibernate之外关闭,java,hibernate,h2,c3p0,Java,Hibernate,H2,C3p0,Im使用Hibernate 4.3.11和H2 1.4.199 为了防止偶尔的会议被卡住,我设置了 config.setProperty("hibernate.c3p0.debugUnreturnedConnectionStackTraces", "true"); config.setProperty("hibernate.c3p0.unreturnedConnectionTimeout","1500"); 这会导致c3p0在该时间段后释放连接 java.lang.Exc

Im使用Hibernate 4.3.11和H2 1.4.199

为了防止偶尔的会议被卡住,我设置了

config.setProperty("hibernate.c3p0.debugUnreturnedConnectionStackTraces", "true");
        config.setProperty("hibernate.c3p0.unreturnedConnectionTimeout","1500");
这会导致c3p0在该时间段后释放连接

   java.lang.Exception: DEBUG STACK TRACE: Overdue resource check-out stack trace.
            at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:555)
            at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:755)
            at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:682)
            at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)
            at org.hibernate.c3p0.internal.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:90)
            at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380)
            at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228)
            at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:171)
            at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67)
            at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:162)
            at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1471)
            at com.jthink.songlayer.hibernate.HibernateUtil.beginTransaction(HibernateUtil.java:209)
            at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher.call(MusicBrainzSongGroupMatcher.java:469)
            at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher1.call(MusicBrainzSongGroupMatcher1.java:84)
            at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher1.call(MusicBrainzSongGroupMatcher1.java:37)
            at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.base/java.lang.Thread.run(Unknown Source)
问题是,当我的代码使用现在无效的连接时,HIbernate似乎不知道它已被取消

org.h2.jdbc.JdbcSQLNonTransientException: The object is already closed [90007-199]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:502)
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
        at org.h2.message.DbException.get(DbException.java:205)
        at org.h2.message.DbException.get(DbException.java:181)
        at org.h2.message.DbException.get(DbException.java:170)
        at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1568)
        at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1557)
        at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:561)
        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:211)
        at com.jthink.songkong.util.SessionUtil.rollback(SessionUtil.java:25)
        at com.jthink.songkong.analyse.analyser.RecordingOnlyMatcher.matchRecordingsOnlyByAcoustid(RecordingOnlyMatcher.java:452)
        at com.jthink.songkong.analyse.analyser.AbstractMusicBrainzGroupMatcher.matchSongs(AbstractMusicBrainzGroupMatcher.java:138)
        at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher1.doTask(MusicBrainzSongGroupMatcher1.java:418)
        at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher.call(MusicBrainzSongGroupMatcher.java:470)
        at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher1.call(MusicBrainzSongGroupMatcher1.java:84)
        at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher1.call(MusicBrainzSongGroupMatcher1.java:37)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
即使在我的代码中,我确实检查了我的会话是否打开,txn激活了ectera

public static void rollback(Session session)
{
    try
    {
        if (session!=null && session.isOpen() && session.getTransaction() != null && !session.getTransaction().wasRolledBack())
        {
            session.getTransaction().rollback();
        }
    }
    catch(HibernateException he)
    {
        //Hide erorr cause can occur after timeout txn
        MainWindow.logger.log(Level.SEVERE, he.getMessage(), he);
    }
}

这些似乎并不能阻止回滚()被调用然后失败,我在会话中也有类似的问题。close()

尝试在youpr配置中添加这个适当的属性
hibernate.c3p0.min\u size
hibernate.c3p0.min\u size
hibernate.c3p0.timeout
hibernate.c3p0.min_语句
@vincenzopalazzo这有什么关系?