![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
Доброго времени суток!
Использую Hibernate+Struts2+Postgres 8.4. Когда заходишь на веб-страничку и долго ничего не делаешь, то вываливается нижеприведенное исключение. Я не очень понимаю, в чем причина. Может кто-нибудь сталкивался с подобным? P.S. Мне кажется, что это связано с обрывом соединения базой данных по таймауту.
|
|||
|
||||
| drG100k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 31.3.2006 Репутация: нет Всего: нет |
Вопрос на засыпку:
Используете транзакции? коммит пишете? Есть подозрение что транзакция не закрывается |
|||
|
||||
| Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
Пользую. Открываю и закрываю сразу же в методах DAO-классов.
|
|||
|
||||
| dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
>P.S. Мне кажется, что это связано с обрывом соединения базой данных по таймауту
И мне так кажется. Посмотри настройки таймаутов в клиенте (JDBC Driver) и на сервере. |
|||
|
||||
| Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
Я только не пойму, если соединение разрывается, почему Хибернейт его сам не переустанавливает?
|
|||
|
||||
| dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
Это, обычно, является задачей пула. Посмотри на DBPool и поищи как это работает конкретно с этим драйвером.
|
|||
|
||||
| Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
Я не очень силен в Hibernate и, если можно, то поподробнее пожалуйста, куда лезть и что смотреть)
Это сообщение отредактировал(а) Ares4322 - 13.4.2010, 10:33 |
|||
|
||||
| drG100k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 31.3.2006 Репутация: нет Всего: нет |
тут вот ещё вариант: в Пуле таймаут больше чем в субд => субд рвёт соединение, не оповещая клиентов
а что, кстати, лог PostgreSQL на этом месте говорит? Когда на сервере приложений DataSource создаёте и привязываетесь к базе данных что там пишите? Там как раз Connection Pool настраивается. Может в конфиге Postgres что-то не так как хотите настроено. Это сообщение отредактировал(а) drG100k - 13.4.2010, 21:02 |
|||
|
||||
| Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
Мой hibernate.cfg:
Даже если и соединение разрывается по таймауту, то как сделать, чтоб Hibernate сам его восстанавливал? Я не верю, что такой возможности не предусмотрено. |
|||
|
||||
| dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
По конфигурации пула смотри на c3po properties . Там есть
http://docs.jboss.org/hibernate/core/3.3/r...figuration.html http://community.jboss.org/wiki/HowToconfi...0connectionpool Конкретно по твой ошибке. Если база и томкат не на одной сетке, то посмотри не рубиться ли соединение раутерами и файрволлами. |
|||
|
||||
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 3 Всего: 9 |
Скорее всего вы где-то открыли транзакцию, и забыли ее закрыть.
|
|||
|
||||
| Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
Может быть, хотя все методы, которые используют entity-классы такого вида:
Commit везде ставиться. Или надо еще как-то явно закрывать? |
|||
|
||||
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 3 Всего: 9 |
В случае эксепшна транзакция закрыта не будет.
Я писал примерно так. Попробуйте, может помочь. |
|||
|
||||
| Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
я вообще не замечал исключения в работе приложения
|
|||
|
||||
| drG100k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 31.3.2006 Репутация: нет Всего: нет |
Вот это можете выложить?
XXX.logic.dao.UsersDAO.getUsers(UsersDAO.java:23) XXX.logic.Login.execute(Login.java:29) А ещё... Зачем вам hibernate.cfg? Во всех EE примерах (по крайней мере в последнее время) доступ к базе происходит через DataSource т.е. 1. Создаём DataSource в сервере приложений (как сделать есть в мануале по Postgresql jdbc driver на примере Tomcat) 2. Пишем persistence.xml В котором указываем Провайдера JPA (в Вашем случае это как раз hibernate) и определяем Persistence Unit 3. Пользуемся чистым JPA не завязываясь ни на базу, ни на hibernate Реализация DataSource в jdbc драйвере org.postgresql.ds.PGPoolingDataSource - она пулы поддерживает. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |