После того, как соединение session.close() все еще активно с базой данных

Я работаю со свингом и спящим режимом. Теперь для восстановления соединения я использую sessionFactory.openSession(). Как только я закончил работу с БД, я закрываю тот же сеанс на session.close(). Теперь проблема в том, что когда я продолжаю использовать свое приложение, после некоторых вызовов приложение выдает исключение

40503 [AWT-EventQueue-0] WARN org.hibernate.cfg.SettingsFactory - Could not obtain connection to query metadata
java.sql.SQLException: Io exception: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12519)(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4))))
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:334)
    at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:418)
    at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:521)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:325)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:113)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870)

При использовании приложения я отслеживаю активные соединения с БД, используя следующий запрос

select count(*) from v$session

Я узнаю, что количество подключений увеличивается, и после некоторых подключений БД перестает давать новые.

Я не знаю, как закрыть соединения с БД, используя спящий режим, поскольку session.close() это бесполезно.


person Navnath    schedule 23.04.2013    source источник
comment
Вы работаете в транзакционной среде? Вы звоните flush() на свой Session перед тем, как закрыть его?   -  person Mike    schedule 23.04.2013
comment
@ Майк Нет. Это обязательно?   -  person Navnath    schedule 24.04.2013
comment
@Майк, я пытаюсь с session.flush() и session.clear(). Но та же ошибка. Еще одна вещь. Это исключение возникает после 15 подключений, открытых приложением.   -  person Navnath    schedule 24.04.2013
comment
Это решено. Для решения обратитесь к ответу на этот stackoverflow.com/questions/9755523/ вопрос.   -  person Navnath    schedule 24.04.2013
comment
Рад, что вы исправили это. Я думаю, что мы в разных часовых поясах, так что я только что получил сообщения, которые ты оставил.   -  person Mike    schedule 24.04.2013