为什么hibernate不会放弃尝试获取连接

时间:2014-12-18 12:14:13

标签: java hibernate c3p0

我的java代码我在ExecutorService上运行了一些挂起的任务,我在30分钟后打断它们。他们都试图寻求数据库连接,我实际上并不认为这是因为没有连接,因为这些是尝试将数据写入数据库的第一个任务。但无论我的问题是为什么他们都没有放弃尝试在30分钟之前获取连接,因为 hibernate.c3p0.acquireRetryAttempts 设置为10,并且retrys之间的默认间隔只有一秒。

堆栈跟踪

org.hibernate.exception.GenericJDBCException: Could not open connection
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:304)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160)
at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1392)
at com.jthink.songlayer.hibernate.HibernateUtil.beginTransaction(HibernateUtil.java:145)
at com.jthink.songkong.analyse.acoustid.AcoustId.addToDatabase(AcoustId.java:1052)
at com.jthink.songkong.analyse.acoustid.AcoustId.getListOfRecordingTitlesForAcoustIds(AcoustId.java:1218)
at com.jthink.songkong.analyse.musicbrainz.scoring.MusicBrainzScorer.calculateReleaseScore2(MusicBrainzScorer.java:342)
at com.jthink.songkong.analyse.musicbrainz.scoring.MusicBrainzScorer.calculateReleaseScores(MusicBrainzScorer.java:524)
at com.jthink.songkong.analyse.musicbrainz.scoring.MusicBrainzScorer.calculateBestReleaseScore(MusicBrainzScorer.java:222)
at com.jthink.songkong.analyse.analyser.AbstractMusicBrainzGroupMatcher.scoreAndUpdateWithBestMatch(AbstractMusicBrainzGroupMatcher.java:144)
at com.jthink.songkong.analyse.analyser.AbstractMusicBrainzGroupMatcher.matchSongsToRelease(AbstractMusicBrainzGroupMatcher.java:122)
at com.jthink.songkong.analyse.analyser.AbstractMusicBrainzGroupMatcher.matchSongs(AbstractMusicBrainzGroupMatcher.java:69)
at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher.call(MusicBrainzSongGroupMatcher.java:236)
at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher1.call(MusicBrainzSongGroupMatcher1.java:69)
at com.jthink.songkong.analyse.analyser.MusicBrainzSongGroupMatcher1.call(MusicBrainzSongGroupMatcher1.java:12)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

休眠配置

 Configuration config = new Configuration();

        config.setProperty(Environment.DRIVER,"org.h2.Driver");
        config.setProperty(Environment.URL,"jdbc:h2:"+Db.DBFOLDER+"/"+Db.DBNAME+";FILE_LOCK=SOCKET;MVCC=TRUE;DB_CLOSE_ON_EXIT=FALSE;CACHE_SIZE=50000");
        config.setProperty(Environment.DIALECT,"org.hibernate.dialect.H2Dialect");
        config.setProperty("hibernate.connection.username","jaikoz");
        config.setProperty("hibernate.connection.password","jaikoz");
        config.setProperty("hibernate.c3p0.numHelperThreads","10");
        config.setProperty("hibernate.c3p0.min_size","20");
        config.setProperty("hibernate.c3p0.max_size","100");
        config.setProperty("hibernate.c3p0.timeout","300");
        config.setProperty("hibernate.c3p0.maxStatementsPerConnection","50");
        config.setProperty("hibernate.c3p0.idle_test_period","3000");
        config.setProperty("hibernate.c3p0.acquireRetryAttempts","10");

0 个答案:

没有答案