[ Pobierz całość w formacie PDF ]

jeszcze przed przekazaniem sterowania do niej. Strategie zarz dzania sesj Hibernate
opisane s wyczerpuj co w ksi kach POJOs in Action. Developing Enterprise Appli-
cations with Lightweight Frameworks2 oraz Java Persistence with Hibernate3. Wzorzec
OSIV pozwala na realizacj wielu operacji w trakcie jednej sesji z Hibernate. Na listingu
2.13 przedstawiono u yty w aplikacji ISRP filtr implementuj cy wzorzec OSIV. Filtr
przechwytuje wszystkie dania p yn ce do aplikacji i dla ka dego z nich rozpoczyna
now transakcj , w której realizowane s wszystkie operacje na bazie danych, reali-
zowane w trakcie przetwarzania dania HTTP. Transakcja jest zatwierdzana dopiero
po zako czeniu przetwarzania dania. Filtr zawiera obs ug wszelkich wyj tków i b -
dów, które mog wyst pi podczas przetwarzania dania. Je li istnieje aktywna sesja
Hibernate, to po wyst pieniu b dów lub wyj tków zmiany w bazie danych s wyco-
fywane (rollback). W kodzie do pobrania bie cej sesji Hibernate u yto klasy po-
mocniczej HibernateUtil, zaprezentowanej na listingu 2.14. Interakcje wyst puj ce
pomi dzy elementami implementacji wzorca OSIV przedstawione zosta y na rysunku 2.9.
Rejestracja filtru w pliku web.xml w najprostszym schemacie b dzie mie nast puj c
posta :
2
Chris Richardson, POJOs in Action. Developing Enterprise Applications with Lightweight Frameworks,
Manning 2006.
3
Christian Bauer, Gavin King, Java Persistence with Hibernate, Manning 2006.
94 JavaServer Faces i Eclipse Galileo. Tworzenie aplikacji WWW
HibernateSessionFilter
isrp.filters.HibernateSessionFilter
HibernateSessionFilter
/*
Jak atwo zauwa y , w powy szym kodzie wykonano mapowanie filtru na wszystkie
zasoby URL, co jest rozwi zaniem wysoce niewydajnym  sesja Hibernate jest two-
rzona zawsze, równie dla tych da HTTP, których przetwarzanie nie wymaga po-
czenia do bazy danych. U ytkownik w tym miejscu w zale no ci od potrzeb mo e
zmieni mapowanie na wybrane dania lub filtracj da obs ugiwanych tylko
przez wybrany serwlet (np. poprzez wstawienie w miejsce znaczników
znacznika Faces Servlet do obs ugi da przez apli-
kacj JSF).
Listing 2.14. Kod klasy u ytkowej HibernateUtil
package isrp.hibernate.model.util;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
private static final Log log = LogFactory.getLog(HibernateUtil.class);
static {
try {// Tworzy SessionFactory na podstawie konfiguracji w pliku hibernate.cfg.xml
sessionFactory = new AnnotationConfiguration()
.configure().buildSessionFactory();
} catch (Throwable ex) {
log.error("Nie mo na pobra sesji Hibernate " + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Organizuj c kod aplikacji, nale y pami ta , e HibernateSessionFilter jest elemen-
tem warstwy widoku aplikacji WWW, podczas gdy klasa HibernateUtil zapewnia
dost p do warstwy trwa o ci.
Rozdzia 2. Planowanie, modelowanie i projektowanie aplikacji JSF na platformie Java 95
Klient Kontener Web Hibernate Filter HibernateUtil FacesServlet
JSF Request()
doFilter()
getSessionFactory()
beginTransaction()
service()
commit()
Rysunek 2.9. Diagram sekwencji wzorca OSIV dla aplikacji JSF
2.3. Organizacja kodu aplikacji
w Eclipse
Kod aplikacji WWW opartych na technologii Java EE zazwyczaj jest wytwarzany
w postaci wielu modu ów, rozwijanych niezale nie przez ró ne zespo y projektowe.
Rozproszenie kodu aplikacji w wielu projektach u atwia m.in.:
zarz dzanie kodem ród owym i plikami zasobów,
podzia pracy w zespo ach,
zautomatyzowanie procesu wytwarzania i testowania aplikacji.
W dalszej cz ci rozdzia u znajduje si opis rozwi za , jakie zapewnia Eclipse WTP
w zakresie organizacji kodu ród owego oraz integracji i wdra ania skompilowanych
modu ów aplikacji na serwerze.
2.3.1. Projekty i modu y Java EE w Eclipse
Zanim zajmiemy si planowaniem rozmieszczenia kodu aplikacji ISRP, warto przybli y
podstawowe koncepcje zwi zane z wytwarzaniem i wdra aniem aplikacji Java EE w ro-
dowisku Eclipse Web Tools Platform, a mianowicie projekt i modu aplikacji.
96 JavaServer Faces i Eclipse Galileo. Tworzenie aplikacji WWW
Wszystkie pliki ród owe oraz inne zasoby aplikacji b d biblioteki musz by umiesz-
czone w projekcie sk adaj cym si z jednego lub wielu zagnie d onych katalogów.
Projekt stanowi podstawow jednostk organizacyjn kodu aplikacji i jest zapisywany
w przestrzeni projektów (ang. workspace). Projekt opisywany jest za pomoc meta-
danych, które zawieraj pomocnicze informacje o wymaganych zasobach zewn trz-
nych, sposobie kompilacji czy rodowisku uruchomieniowym. Logiczna struktura
prezentowanych w oknie Project Explorer katalogów i zasobów projektu jest zopty-
malizowana pod k tem u atwienia pracy deweloperom.
Modu aplikacji (ang. module) reprezentuje gotowy do wdro enia na serwerze apli-
kacji kod wynikowy projektu (powsta y po jego skompilowaniu), który mo e by re-
prezentowany przy u yciu plików archiwalnych, np. WAR lub JAR. Modu y Java EE
posiadaj okre lon przez specyfikacj Java EE fizyczn struktur katalogów oraz
plików. Modu y mog by wdra ane w kontenerze Java EE zarówno w postaci spa-
kowanych plików archiwum, jak te rozpakowanych struktur katalogów. Eclipse
WTP wspiera wytwarzanie i wdra anie nast puj cych modu ów Java EE (w nawiasach
podano typy archiwum oraz nazwy odpowiadaj cych im projektów Eclipse po my lniku):
Enterprise application (EAR)  Enterprise application Project,
Enterprise application client (JAR)  Application Client Project,
Enterprise JavaBean (JAR)  EJB Project,
Web application (WAR)  Dynamic Web Project,
Resource adapter for JCA (RAR)  Connector Project,
Utility module (JAR)  Utility Project.
Pierwszych pi wymienionych typów modu ów jest okre lonych w specyfikacji Java
EE, natomiast ostatni typ zosta wprowadzony przez rodowisko Eclipse i stanowi
modu u ytkowy (Utility module) ogólnego przeznaczenia, umo liwiaj cy podzia
kodu aplikacji na oddzielne projekty. Ka dy projekt WTP mo e generowa tylko jeden
modu aplikacji, ale w kodzie ród owym projektu mo na odwo ywa si do kodu
umieszczonego w innych modu ach. Odwo ywanie si do kodu znajduj cego si w innych
modu ach wymaga jednak jawnego zdefiniowania zale no ci pomi dzy projektami,
co jest zilustrowane przyk adem w dalszej cz ci rozdzia u.
2.3.2. Zastosowanie projektu u ytkowego
do przechowywania kodu warstwy biznesowej
Za ó my, e chcemy umo liwi rozwijanie aplikacji ISRP w dwóch projektach, tak
by kod warstwy prezentacji opartej na szkielecie JSF znajdowa si w jednym projek-
cie, a kod pozosta ych warstw (biznesowej i dost pu do danych) w innym. Zalet ta-
kiego podzia u b dzie mo liwo wielokrotnego wykorzystania modu u zawieraj cego
warstw biznesow w aplikacjach zawieraj cych interfejsy oparte na ró nych tech-
nologiach (np. JSF i Swing).
Rozdzia 2. Planowanie, modelowanie i projektowanie aplikacji JSF na platformie Java 97
W materia ach pomocniczych do ksi ki Czytelnik znajdzie m.in. kod modu u u yt-
kowego ISRPModel, zawieraj cy implementacj warstwy biznesowej, udost pniony
w postaci zarchiwizowanego pliku projektu Eclipse oraz skompilowanej wersji mo-
du u w pliku JAR. Czytelnik, który chcia by pomin zagadnienia wytwarzania war-
stwy biznesowej, mo e skorzysta z gotowego do u ycia modu u ISRPModel i skupi
si wy cznie na implementacji interfejsu u ytkownika wed ug wskazówek zamieszczo-
nych w nast pnych rozdzia ach.
Na rysunku 2.10 przedstawiono struktur aplikacji ISRP, która sk ada si z modu ów
Web Application oraz Utility Module. Modu Web Application zawiera kod warstwy [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • szkla.opx.pl
  •