Hibernate wygasa?

0

Witam

Mam nastepujący problem, zaimplementowałem silnik wyszukiwarki w lucene. Do łączenia się z bazą przy budowaniu indeksu używam hibernate a same metody wyszukujące są dostępne poprzez serwer xml rpc, ustawiony jest timer budujący automatycznie co 24 indeks. Problem jest tego typu, że przykładowo serwer działa przez cały dzień a rano już nie, objawia się to wywaleniem wyjątku org.hibernate.exception.GenericJDBCException a pod nim poł metra stacktrac`u Smile . Może ma ktoś pomysł co może być nie tak czy Hibernate sam po prostu gaśnie po kilku godiznach a potem trzeba na nowe zainicjalizować go załadować mapowanie dla klas itd. Pozdrawiam z góry dzieki za sugestie

0

To nie Hibernate, ale prawdopodobnie problem z połączeniem z bazą danych / zarządzaniem sesjami.
Używamy Hibernate w naszych systemach i nic się takiego nie dzieje.

Jeśli ręcznie otwieracie sesje, to zawsze musicie je ręcznie zamykać (session.close()). Szczególnie zwróćcie uwagę na obsługę błędów. Inaczej będziecie mieć przeciek połączeń bazodanowych i wtedy są takie efekty, że dobrze działa przez jakiś czas, dopóki się połączenia z puli nie skończą. Jednak najprościej używać jakiegoś kontenera, np. Jboss albo Spring, które mają już wbudowaną integrację z hibernatem i same otwierają / zamykają sesje / zarządzają transakcjami.
Na wszelki wypadek zwiększcie pule połączeń i zobaczcie, czy problem występuje później.

Oczywiście problemem może też być sama baza danych. Np. MySQL w którejś tam starej wersji miał taki myk, że chodził przez 2 dni, a później się wywalał... :D

0

Nie sądzę, żeby wina leżała po stronie niezamykania sesji bo pierwsze ja ją tylko w jednym miejscu ją otwieram i na 100% zamykam, po drugie bodajże ustawiony jest domyślnie property automatycznego zamykania sesji. Wiem jedno jest to związane z engine`m MySQL, który po 8 godzinach bezczynności rozłącza połączenie. W zasadzie jedyne rozwiązanie jakie na dzień dzisiejszy wykombinowałem to task, który odpytuję co godzine o coś tam bazę np count jakiejś tabeli. Mało eleganckie ale wydaje się, że działa no chyba, że po kilku dniach przestanie bo ponad dobe wytrzymało. Pozdr

0

W takim razie użyj commons-dbcp i po problemie. Raz że pooling połączeń poprawia wydajność, a dwa, że automatycznie robi reconnect.

1 użytkowników online, w tym zalogowanych: 0, gości: 1