[ Pobierz całość w formacie PDF ]
nikatów. Wystarczy jednak zamienić wartość info na debug w kategorii log4j.
logger.net.sf.hibernate, by poznać szczegóły działania Hibernate. Warto się
upewnić, że tego rodzaju konfiguracja nie trafi na serwer produkcyjny zapis
do dziennika będzie wolniejszy od dostępu do bazy danych.
Konfiguracja zawiera się obecnie w trzech plikach: hibernate.properties, hiber-
nate.cfg.xml i log4j.properties.
2.4. Zaawansowane ustawienia konfiguracyjne 73
Istnieje jeszcze jeden sposób konfiguracji Hibernate, jeśli serwer aplikacji
obsługuje JMX (Java Management Extensions).
2.4.4. Java Management Extensions
Zwiat Javy pełen jest specyfikacji, standardów i ich implementacji. Stosunkowo
nowym i istotnym już od pierwszej wersji jest standard Java Management Exten-
sions (JMX). Dotyczy on zarządzania komponentami systemowymi, a w zasadzie
usługami systemu.
Gdzie w tym całym obrazie mieści się Hibernate? Gdy umieści się go na ser-
werze aplikacji, korzysta z innych usług, na przykład zarządzania transakcjami
i pulą połączeń z bazą danych. Dlaczego nie uczynić samego Hibernate zarzą-
dzalną usługą, której mogą używać inne elementy systemu? Integracja z JMX czyni
z Hibernate zarządzalny komponent JMX.
Specyfikacja JMX definiuje następujące komponenty:
JMX MBean komponent wielokrotnego użytku (najczęściej
infrastrukturalny), który udostępnia interfejs zarządzania (administracji),
kontener JMX zapewnia uogólniony dostęp (lokalny lub zdalny)
do MBean,
klient JMX (najczęściej uogólniony) umożliwia administrację dowolnym
MBean dzięki kontenerowi JMX.
Serwer aplikacji obsługujący JMX (na przykład JBoss) działa jak kontener JMX,
umożliwiając konfigurację i inicjalizację komponentów MBean jako części pro-
cesu uruchamiania serwera aplikacji. Można monitorować i administrować MBean,
stosując konsolę administracyjną serwera aplikacji (działa jak klient JMX).
Komponent MBean daje się utworzyć jako usługę JMX, która nie tylko jest
przenośnia między różnymi serwerami aplikacji z wbudowaną obsługą JMX,
ale również zapewnia wdrożenie w działającym systemie (tak zwane wdrożenie
na gorąca ).
Hibernate można administrować jako JMX MBean. Usługa JMX dopuszcza
inicjalizację Hibernate w momencie uruchamiania serwera aplikacji i sterowania
(konfigurowania) go dzięki klientowi JMX. Z drugiej strony komponenty JMX nie
są automatycznie zintegrowane z transakcjami zarządzanymi przez kontener. Z tego
powodu opcje konfiguracyjne z listingu 2.7 (deskryptor wdrożenia usługi w JBoss)
wyglądają podobnie do ustawień Hibernate dla środowiska zarządzanego.
Listing 2.7. Deskryptor wdrożenia Hibernate jako JMX w JBoss plik
jboss-service.xml
name="jboss.jca:service=HibernateFactory, name=HibernateFactory">
jboss.jca:service=RARDeployer
jboss.jca:service=LocalTxCM,name=DataSource
auction/Item.hbm.xml, auction/Bid.hbm.xml
74 ROZDZIAA 2.
Wprowadzenie i integracja Hibernate
java:/hibernate/HibernateFactory
java:/comp/env/jdbc/AuctionDB
net.sf.hibernate.dialect.PostgreSQLDialect
net.sf.hibernate.transaction.JTATransactionFactory
net.sf.hibernate.transaction.JBossTransactionManagerLookup
java:/UserTransaction
Usługa HibernateService zależy od dwóch innych usług JMX service=RARDe-
ployer i service=LocalTxCM,name=DataSource znajdujących się w domenie usłu-
gowej jboss.jca.
MBean dla Hibernate znajduje się w pakiecie net.sf.hibernate.jmx. Niestety,
metody zarządzania cyklem życia JMX nie stanowią części specyfikacji JMX 1.0.
Z tego powodu metody start() i stop() z HibernateService są specyficzne dla
serwera aplikacji JBoss.
Uwaga Jeśli jesteś zainteresowany zaawansowanymi użyciami JMX, warto zajrzeć
do kodu serwera JBoss. Wszystkie usługi (nawet kontener EJB) z JBoss są
zaimplementowane jako MBean i mogą być zarządzane dzięki interfej-
sowi konsolowemu.
Zalecamy konfigurację Hibernate w sposób programowy (z zastosowaniem obiektu
Configuration) przez próbą jego uruchomienia jako usługa JMX. Niektóre funk-
cje (na przykład wdrażanie na gorąco aplikacji z Hibernate) jest możliwe tylko
z JMX. Największą zaletą Hibernate działającego z JMX jest automatyczny roz-
ruch. Nie trzeba ręcznie tworzyć obiektów Configuration i SessionFactory. Wy-
starczy korzystać z obiektu SessionFactory przez JNDI zaraz po uruchomieniu
HibernateService.
2.5. Podsumowanie 75
2.5. Podsumowanie
W rozdziale przyjrzeliśmy się Hibernate z nieco wyższego poziomu. Dodatkowo
przedstawiliśmy jego architekturę, stosując przykład Witaj świecie . Pokazali-
śmy, jak konfigurować Hibernate w różnych środowiskach z zastosowaniem roz-
maitych sposobów przekazywania konfiguracji, włączając w to JMX.
Interfejsy Configuration i SessionFactory to punkty początkowe dla aplikacji
[ Pobierz całość w formacie PDF ]