Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate теряет коннект к БД, Hibernate, Tomcat, MySQL 
:(
    Опции темы
ochnev
Дата 22.12.2007, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 253
Регистрация: 27.3.2006

Репутация: нет
Всего: нет



Я периодически получаю ошибку:
org.hibernate.exception.JDBCConnectionException: could not execute query

Такое впечатление, что Hibernate теряет коннект к БД. Почему такое может быть?

Вот сам Exception с описанием и причиной:

Цитата

org.hibernate.exception.JDBCConnectionException: could not execute query
    org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
    org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    org.hibernate.loader.Loader.doList(Loader.java:2223)
...

root cause 

com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: 
No operations allowed after connection closed.Connection was implicitly closed 
due to underlying exception/error:

** BEGIN NESTED EXCEPTION ** 

com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: Broken pipe

STACKTRACE:

java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
...
** END NESTED EXCEPTION **

Last packet sent to the server was 1 ms ago.


Использую Hibernate 3.2, сайт работает под Tomcat 5.5.25, MySQL 5.0.45, ОС Linux, Fedora Core 6.

Конфиг hibernate.cfg.xml:

Код

<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/courses_fl</property>
        <property name="connection.username">courses</property>
        <property name="connection.password">cspwd</property>
        <property name="connection.pool_size">1</property>
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="current_session_context_class">thread</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="show_sql">true</property>

        <mapping resource="..."/>
        ...

    </session-factory>
</hibernate-configuration>


В результате сайт то работает, то не работает (вываливается выше описанная ошибка).
Иногда перезагрузка страницы помогает, иногда нет.
Перезапуск Tomcat на какое-то время помогает (но это не решение).

Что делать, чтобы коннект оставался постоянным?



В догонку.

Коннект к базе делаю так:

В web.xml прописан listener (подкласс ServletContextListener), в нём 

Код

    public void contextInitialized(ServletContextEvent event) {
        ServletContext context = event.getServletContext();

        try {
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch(Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }

        context.setAttribute("sf", sessionFactory);
    }


В сервлете (суперклассе для других):

Код

    protected SessionFactory sf;

    public void init() {
        ServletContext context = getServletContext();
        sf = (SessionFactory) context.getAttribute("sf");
        if(sf == null) {
            throw new NullPointerException("Can't get the SessionFactory from ServletContext!");
        }
    }


В подклассах этого сервлета:

Код

    public void doGet(...) ... {
        ...
        Session session = sf.getCurrentSession();
        session.beginTransaction();
        ...
    }


Может быть, я как-то глобально неправильно делаю коннект к базе? Как тогда правильно?


Это сообщение отредактировал(а) ochnev - 22.12.2007, 23:07
PM MAIL   Вверх
tux
Дата 22.12.2007, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Ровно та же проблема обсуждалась здесь - http://forum.vingrad.ru/forum/topic-173917...ysql/index.html.
PM MAIL Skype GTalk Jabber YIM   Вверх
ochnev
Дата 23.12.2007, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 253
Регистрация: 27.3.2006

Репутация: нет
Всего: нет



Почитал ту тему.

Ещё небольшие вопросы:
C3p0 - это и есть "default connection pooling mechanism" или это другой? (просто он в комплекте с Hibernate, вот и подумалось)
Умеет ли он поддерживать постоянный/обновляемый коннект к БД?

PM MAIL   Вверх
tux
Дата 23.12.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(ochnev @  23.12.2007,  19:35 Найти цитируемый пост)
C3p0 - это и есть "default connection pooling mechanism" или это другой?

Нет. У Hibernate есть свой простейший пул соединений.

Цитата(ochnev @  23.12.2007,  19:35 Найти цитируемый пост)
просто он в комплекте с Hibernate, вот и подумалось

С ним в комплекте не только C3P0, но и DBCP.

Цитата(ochnev @  23.12.2007,  19:35 Найти цитируемый пост)
Умеет ли он поддерживать постоянный/обновляемый коннект к БД?

Умеют и C3P0 и DBCP.
PM MAIL Skype GTalk Jabber YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.