Настройте Hibernate для получения нового соединения из пула соединений - PullRequest
1 голос
/ 15 апреля 2010

Как настроить Hibernate так, чтобы каждый раз, когда я вызываю sessionFactory.openSession (), он подключался с новым соединением из пула соединений? Пул соединений управляется сервером приложений Websphere и является источником данных JDBC.

Спасибо

1 Ответ

2 голосов
/ 16 апреля 2010

Как настроить Hibernate таким образом, чтобы при каждом вызове sessionFactory.openSession () он подключался к новому соединению из пула соединений?

Это поведение по умолчанию, каждый сеанс получает выделенное соединение из пула соединений.

Сейчас кажется, что оба сеанса используют одно и то же соединение, потому что когда первый сеанс закрывается (вручную вызывая session.close ()), иногда другой сеанс выдает исключение «закрытый сеанс» при попытке запустить больше запросов к нему.

Нет, это не так. Но, возможно, второе соединение освобождается в конце транзакции, инициированной для запроса. Посмотрите на hibernate.connection.release_mode параметр конфигурации , вы можете использовать on_close. Но без более подробной информации о вашей стратегии транзакций невозможно ничего сказать.

Второй сеанс открыт дочерним потоком, что означает, что дочерний поток может продолжать жить даже после завершения (HTTP) запроса.

Примите мой предыдущий совет с небольшим количеством соли, вы просто не должны порождать неуправляемых потоков , и я не знаю, как будет вести себя сервер приложений. Я объясню в этом другом ответе , что будет правильным путем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...