Escolar Documentos
Profissional Documentos
Cultura Documentos
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
J2EE. Wzorce
projektowe. Wydanie 2
Autor: Deepak Alur, John Crupi, Dan Malks
Tumaczenie: Rafa Joca
ISBN: 83-7361-344-7
Tytu oryginau: Core J2EE Patterns.
Best Practices and Design Strategies, 2nd Edition
Format: B5, stron: 518
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Dan Malks jest gwnym inynierem w Sun Java Center. Posiada 16-letnie
dowiadczenie i zajmuje si technologiami obiektowymi oraz ich zastosowaniem
w projektach biznesowych i usugach sieciowych. Pisze artykuy do czasopism
branowych, jest take wspautorem ksiek o Javie, wzorcach i technologii J2EE.
Spis treci
Przedmowa I ................................................................................................................................................11
Przedmowa II ..............................................................................................................................................13
Wstp...........................................................................................................................................................15
Cz I Wzorce i J2EE
21
Rozdzia 1. Wprowadzenie......................................................................................................................... 23
Czym jest J2EE? ........................................................................................................... 24
Czym s wzorce? .......................................................................................................... 24
Odniesienie historyczne ........................................................................................... 24
Definiowanie wzorca ................................................................................................ 25
Kategoryzacja wzorcw............................................................................................. 26
Katalog wzorcw J2EE ................................................................................................... 27
Ciga ewolucja ....................................................................................................... 27
Jak korzysta z katalogu wzorcw? ............................................................................ 28
Zalety stosowania wzorcw....................................................................................... 29
Wzorce, szkielety i ponowne uycie elementw ................................................................ 31
Podsumowanie ............................................................................................................. 31
Spis treci
Tworzenie rozbudowanych kontrolerw....................................................................... 48
Uycie skryptletw w widoku ..................................................................................... 48
103
Spis treci
Spis treci
Rozwizanie .......................................................................................................... 232
Konsekwencje ....................................................................................................... 236
Przykadowy kod .................................................................................................... 236
Powizane wzorce.................................................................................................. 241
Dispatcher View.......................................................................................................... 241
Problem ................................................................................................................ 241
Siy....................................................................................................................... 241
Rozwizanie .......................................................................................................... 242
Konsekwencje ....................................................................................................... 246
Przykadowy kod .................................................................................................... 247
Powizane wzorce.................................................................................................. 251
Spis treci
10
Spis treci
Dodatki
477
Dodatek A Epilog.......................................................................................................................................479
Mikroarchitektura Web Worker ..................................................................................... 479
Czym s systemy organizacji pracy? ........................................................................ 479
Mikroarchitektura Web Worker ................................................................................ 482
Problem ................................................................................................................ 482
Siy....................................................................................................................... 484
Rozwizanie .......................................................................................................... 485
Konsekwencje ....................................................................................................... 511
Podejcie warstwowe.
Wzorce J2EE.
Wprowadzenie do katalogu.
Mapa wzorcw.
Podsumowanie.
Wzorce J2EE to zbir rozwiza dotyczcych typowych problemw zwizanych z platform J2EE. S efektem wiedzy i dowiadczeniu architektw z Sun Java Center, ktrzy brali
udzia w tworzeniu wielu udanych projektw J2EE. Sun Java Center jest organizacj konsultingow skupiajc si na tworzeniu rozwiza opartych na technologii Java. Zajmuje si
rozwizaniami dla platformy J2EE od pocztku jej istnienia koncentrujc si przede wszystkim na takich aspektach oglnie pojtego QoS (Quality of Service) jak skalowalno, dostpno, wydajno, bezpieczestwo, pewno i elastyczno.
Wzorce opisuj typowe problemy napotykane podczas tworzenia aplikacji J2EE i wskazuj
moliwe rozwizania. Rozwizania te powstay dziki dowiadczeniu zdobytemu w trakcie
prac nad wieloma rnymi projektami i wymianie informacji midzy programistami. Wzorce zawieraj istot tych rozwiza, a poza tym zostay ju zoptymalizowane przez ich uytkownikw. Mona powiedzie inaczej: wzorce wydobywaj najwaniejsze aspekty problemu
i oferuj rozwizania dobrze przemylane i ujednolicone.
W niniejszej ksice zajmujemy si wzorcami pod ktem J2EE, a w szczeglnoci komponentami EJB, stronami JSP i serwletami. W trakcie pracy z klientami J2EE implementujcymi rne komponenty poznalimy typowe problemy i znalelimy dla nich optymalne rozwizania. Opracowalimy te najlepsze praktyki wykorzystywane do tworzenia komponentw J2EE.
106
Identyfikacja wzorca
W Sun Java Center zajmowalimy si wieloma projektami J2EE i wkrtce zauwaylimy, i
niektre problemy pojawiaj si w prawie wszystkich projektach. Co waniejsze, rozwizania
tych problemw take byy podobne. Cho strategie implementacyjne si rniy, oglny
zarys rozwizania by taki sam. Opiszemy teraz pokrtce, jak odkrywalimy wzorcw.
Gdy zauwaamy, e problem i jego rozwizanie pojawiaj si kilkakrotnie, staramy si zidentyfikowa i udokumentowa jego charakterystyk, stosujc szablon wzorcw. Najpierw
rozwaamy t pocztkow dokumentacj jako kandydata na wzorzec. Nie dodajemy kandydatw do katalogu wzorcw a do momentu ich wielokrotnego wystpienia w wielu projektach. Sprawdzamy take, czy wzorzec ten nie zosta ju zastosowany we wczeniejszych
projektach.
107
Jako proces walidacji wzorca stosujemy zasad trzech (Rule of Three); pod tak nazw znana
jest w spoecznoci programistw. Zasada ta okrela kandydata na wzorzec moe pojawi si
w katalogu. Zgodnie z ni kandydat staje si penoprawnym wzorcem, gdy zosta zidentyfikowany w co najmniej trzech rnych systemach. Oczywicie zasada ta jest elastyczna, ale
pomaga w identyfikacji wzorcw.
Czsto podobne rozwizania mog dotyczy jednego wzorca. W trakcie prac nad wzorcem
naley zastanowi si nad tym, w jaki sposb najlepiej z jego pomoc przekaza rozwizanie. Czasem wystarczy nadanie odpowiedniej nazwy, by wszyscy programici od razu
wiedzieli, o co chodzi. W takiej sytuacji warto sprbowa udokumentowa dwa podobne
rozwizania jako dwa rne wzorce. Z drugiej strony lepsze moe si okaza przekazanie
rozwizania jako kombinacji wzorca i strategii.
Wzorce a strategie
Gdy rozpoczlimy dokumentowanie wzorcw J2EE, staralimy si uywa do wysokiego
poziomu abstrakcji. Jednoczenie kady wzorzec zawiera rne strategie dotyczce szczegw implementacji. Dziki strategiom wzorzec dokumentowa rozwizanie na rnym
poziomie abstrakcji. Niektre z tych strategii mogyby stanowi osobne wzorce, ale sdzilimy, e aktualna struktura szablonu najlepiej obrazuje relacje pomidzy strategiami a wzorcami, w ktrych si zawieraj.
Cho cay czas toczyy si debaty dotyczce zamiany tych strategii na wzorce, cigle opieralimy si takim rozwizaniom, gdy uwaalimy istniejc dokumentacj za przejrzyst.
Oto kilka spostrzee dotyczcych relacji pomidzy wzorcami a strategiami:
n
Podejcie warstwowe
Poniewa katalog opisuje wzorce pomagajce budowa aplikacje dziaajce na platformie
J2EE, a platforma ta jest systemem wielowarstwowym, przygldamy si systemowi pod ktem warstw. Warstwy stanowi logiczny podzia zada w systemie. Poszczeglne warstwy
maj zdefiniowane waciwe zakresy odpowiedzialnoci. Warstwy s od siebie logicznie
oddzielone. Kada z warstw jest luno zwizana z warstwami ssiednimi. Cay system mona
przedstawi jako stos warstw (patrz rysunek 5.1).
108
Rysunek 5.1.
Podejcie
warstwowe
Warstwa klienta
Warstwa ta reprezentuje wszystkie urzdzenia albo systemy klienckie majce dostp do systemu lub aplikacji. Klientem moe by przegldarka internetowa, aplikacja Javy lub inna,
aplet Javy, telefon komrkowy z WAP, aplikacja sieciowa albo inne urzdzenie, dla ktrego
jeszcze nie ma nazwy. Moe to by nawet proces wsadowy.
Warstwa prezentacji
Warstwa ta zawiera ca logik prezentacyjn wymagan do obsugi klientw uywajcych
systemu. Warstwa ta odbiera dania klienta, zapewnia system logowania, zarzdza sesj,
steruje dostpem do usug biznesowych, tworzy i dostarcza odpowiedzi do klienta. W tej warstwie znajduj si serwlety i strony JSP. Pamitajmy, e cho nie s one elementami interfejsu uytkownika, to takowe elementy tworz.
Warstwa biznesowa
Warstwa biznesowa udostpnia usugi biznesowe wymagane przez klientw aplikacji.
Warstwa ta zawiera dane i logik biznesow. Zazwyczaj wewntrz tej warstwy wykonywana jest najwiksza liczba zada zwizanych z przetwarzaniem biznesowym. Moliwe, e
z powodu istnienia systemw zewntrznych cz przetwarzania bdzie si odbywaa na
warstwie zasobw. Preferowanym sposobem implementacji obiektw biznesowych s komponenty EJB.
Warstwa integracji
Ta warstwa odpowiada za komunikacj z zewntrznymi systemami i rdami danych, na
przykad bazami danych i aplikacjami zewntrznymi (legacy applications). Warstwa biznesowa wykorzystuje warstw integracji za kadym razem, gdy obiekt biznesowy potrzebuje
109
danych lub zasobw znajdujcych si w warstwie zasobw. Komponenty z tej warstwy uywaj JDBC, technologii konektorw J2EE (JCA) lub innego oprogramowania wsppracujcego z warstw zasobw.
Warstwa zasobw
Jest to warstwa zawierajca dane biznesowe i zewntrzne zasoby, takie jak komputery mainframe lub systemy zewntrzne (legacy systems), systemy B2B albo usugi w rodzaju autoryzacji kart kredytowych.
Wzorce J2EE
Stosujemy podejcie warstwowe, aby podzieli wzorce J2EE zgodnie z ich przeznaczeniem.
Wzorce warstwy prezentacji s zwizane z serwletami i technologi JSP. Wzorce warstwy
biznesowej zawieraj wzorce zwizane z technologi EJB. Wzorce warstwy integracji dotycz JMS i JDBC (patrz rysunek 5.2 w dalszej czci rozdziau).
Opis
Intercepting Filter
Front Controller
Context Object
Application Controller
View Helper
Composite View
Service to Worker
Dispatcher View
110
Opis
Business Delegate
Service Locator
Session Faade
Application Service
Business Object
Composite Entity
Transfer Object
Opis
Service Activator
Domain Store
Wprowadzenie do katalogu
Aby pomc w zrozumieniu i uyciu wzorcw J2EE z katalogu, proponujemy zapoznanie
si z tym podrozdziaem przed zagbieniem si w szczegy poszczeglnych wzorcw.
Wyjanimy terminologi stosowan we wzorcach, sposb stosowania diagramw UML,
stereotypw i szablonu wzorcw. W skrcie wyjanimy, w jaki sposb uywa wzorcw.
Przedstawimy te map uatwiajc poruszanie si po wzorcach z katalogu.
111
Terminologia
Osoby zatrudnione w firmach informatycznych, a w szczeglnoci programici tworzcy
systemy oparte na technologii Java, uywaj specyficznych terminw i akronimw. Cho
wielu czytelnikw zapewne spotkao si z tymi pojciami, niektre z nich s wykorzystywane w rnych kontekstach. Aby unikn nieporozumie i zachowa spjno, w tabeli 5.4
podajemy definicje wykorzystywanych terminw.
Tabela 5.4. Terminologia
Termin
Uywany
BMP
(Bean-managed
Persistence)
we wzorcach warstwy
biznesowej
CMP
(Container-managed
Persistence)
we wzorcach warstwy
biznesowej
dyspozytor
(Dispatcher)
we wzorcach
Dispatcher View
i Service to Worker
EJB
w wielu miejscach
w niniejszej ksice
fabryka (abstrakcyjna
lub metoda fabryki)
we wzorcach warstwy
biznesowej i we wzorcu
Data Access Object.
fasada
we wzorcu Session
Faade
GoF
w wielu miejscach
w niniejszej ksice
iterator
komponent sesyjny
(Session Bean)
we wzorcach warstwy
biznesowej
kontroler (Controller)
we wzorcach warstwy
prezentacji i warstwy
biznesowej
112
Uywany
model
we wzorcach warstwy
biznesowej i warstwy
prezentacji
obiekt dostpu
do danych (DAO)
we wzorcach warstwy
biznesowej i warstwy
integracji
obiekt niezaleny
we wzorcu Composite
Entity
obiekt transferowy
(Transfer Object)
we wzorcach warstwy
biznesowej
obiekt zaleny
we wzorcach Business
Delegate i Composite
Entity
pomocnik (Helper)
we wzorcach warstwy
prezentacji i we wzorcu
Business Delegate
proxy
w wielu miejscach
niniejszej ksiki
przedstawiciel
(Delegate)
we wzorcu Business
Delegate i w wielu
innych wzorcach
singleton
w wielu miejscach
w niniejszej ksice
skryptlet Javy
we wzorcach warstwy
prezentacji
szablon
we wzorcach warstwy
prezentacji
trway magazyn
(Persistent Store)
we wzorcach warstwy
biznesowej i warstwy
integracji
widok (View)
we wzorcach warstwy
prezentacji
zoenie (Composite)
we wzorcach
Composite View
i Composite Entity
113
Stereotypy uywamy stereotypw, aby wskaza rne typy obiektw i ich role
w diagramach klas i interakcji. Lista stereotypw i ich znacze znajduje si w tabeli 5.5.
Znaczenie
EJB
komponent
sesyjny
komponent Entity
widok
JSP
serwlet
singleton
wasny znacznik
(Custom Tag)
Stereotypy UML
W trakcie zapoznawania si z wzorcami i ich diagramami z pewnoci natkniemy si na stereotypy. Stereotypy s terminami stosowanymi przez projektantw i architektw. Wykorzystujemy te terminy, by precyzyjnie i prosto zaprezentowa diagramy. Cz z tych stereotypw odwouje si do przedstawionej wczeniej terminologii. Jako stereotypy uznajemy
take nazwy wzorcw i spenianych przez nie rl, co pomaga w ich wyjanieniu.
114
Szablon wzorcw
Wzorce J2EE s zdefiniowane zgodnie z szablonem wzorcw. Szablon wzorcw skada si
z podrozdziaw prezentujcych rne elementy danego wzorca. Warto zauway, e staralimy si nada wszystkim wzorcom opisowe nazwy. Cho trudno jest zawrze ca istot
wzorca w jego nazwie, wydaje nam si, e udao si speni to zadanie. Podobnie jak nazwy
w rzeczywistym wiecie, nazwa wzorca informuje czytelnika, jak z niego korzysta.
Stosujemy szablon wzorcw skadajcy si z nastpujcych czci:
n
Powizane wzorce zawiera list innych wzorcw z katalogu J2EE lub z innych
rde, na przykad wzorce projektowe GoF. Poza nazw wzorca podajemy krtki
opis jego zwizku z omawianym wzorcem.
115
Poszczeglne wzorce posiadaj wasny kontekst, problem i rozwizanie konkretnych zagadnie. Warto si jednak najpierw ogarn i zrozumie peny obraz wzorcw w celu lepszego
ich zrozumienia i wykorzystania.
Pamitajmy o zdaniu Christophera Alexandra z rozdziau 1., w ktrym twierdzi, i wzorzec
nie istnieje w izolacji i musi by wspierany przez inne wzorce, by nabra odpowiedniego
znaczenia. W zasadzie wszystkie wzorce z katalogu s powizane z innymi wzorcami. Zrozumienie tych zwizkw w trakcie projektowania rozwizania jest pomocne, gdy:
116
117
Wzorzec Business Delegate zmniejsza zalenoci midzy oddzielonymi warstwami i stanowi punkt dostpu do zdalnych usug warstwy biznesowej. Wzorzec ten moe rwnie
stosowa buforowanie danych w celu zwikszenia wydajnoci. Business Delegate istnieje
w relacji z wzorcem Session Faade ukrywajc szczegy zwizane z korzystaniem z fasady. Wzorzec Application Service wykorzystuje wzorzec Business Delegate w celu dostpu
do fasady.
Wzorzec Service Locator ukrywa szczegy implementacji mechanizmw wyszukiwania
komponentw oraz usug biznesowych. Wzorzec Business Delegate uywa go w celu
poczenia z odpowiedni Session Faade. Pozostali klienci, ktrzy musz si poczy
z Session Faade lub innymi usugami warstwy biznesowej, rwnie korzystaj z wzorca
Service Locator.
Wzorzec Session Faade udostpnia klientom usugi biznesowe, ukrywajc zoono implementacji tych usug. Wzorzec ten moe korzysta z obiektw Business Object oraz odwoywa si do rnych implementacji wzorca Application Service. Moe take wykorzystywa wzorzec Value List Handler.
Wzorzec Application Service zawiera wybrane mechanizmy udostpniajc je w jednolitej
formie usugom warstwy biznesowej. Wzorzec ten moe wchodzi w interakcj z innymi
usugami lub obiektami biznesowymi. Wzorzec moe wywoywa inne implementacje
Application Service, tworzc tym samym jedn z warstw usug aplikacji.
Wzorzec Business Object tworzy model domenowy aplikacji przy wykorzystaniu modelu
obiektowego. Wzorzec ten oddziela dane i logik biznesow, tworzc osobn warstw aplikacji. Wzorzec zazwyczaj reprezentuje obiekty trwae, ktre mog by utrwalane i odtwarzane przy uyciu wzorca Domain Store.
Wzorzec Composite Entity implementuje obiekty Business Object, stosujc lokalne komponenty Entity i zwyke obiekty Javy (POJO). Wzorzec ten korzysta z wzorca Data Access
Object gdy stosuje si trwao zarzdzan przez komponenty (BMP).
Wzorzec Transfer Object pozwala na atw wymian danych pomidzy warstwami. Pozwala
zredukowa obcienie sieci i zminimalizowa liczb wywoa midzy warstwami.
Wzorzec Transfer Object Assembler tworzy zoone obiekty Transfer Object, korzystajc
z wielu rde danych. rda te mog by komponentami EJB, obiektami DAO lub zwykymi obiektami Javy. Wzorzec jest najbardziej uyteczny, gdy klient musi pobra dane
waciwe dla modelu aplikacji lub jego czci.
Wzorzec Value List Handler uywa wzorca iteratora [GoF] w celu wykonania i przetworzenia wynikw zapyta do baz danych. Wzorzec buforuje wyniki zapyta i w razie potrzeby przesya klientowi podzbir wynikw. Stosujc ten wzorzec, unikamy narzutu zwizanego z wyszukiwaniem duej liczby komponentw Entity. Wzorzec uywa obiektw DAO
w celu wykonania zapyta i pobrania wynikw z trwaego magazynu danych.
Wzorzec Data Access Object pozwala na oddzielenie warstwy biznesowej i zasobw. Ukrywa ca logik dostpu do danych zwizan z tworzeniem, pobieraniem, usuwaniem i aktualizacj danych z trwaego magazynu. Wzorzec do wysyania i odbierania danych uywa
obiektw Transfer Object.
118
Mapa wzorcw
W tym podrozdziale przedstawimy list typowych wymaga co do aplikacji napotykanych
w trakcie tworzenia rozwiza wykorzystujcych platform J2EE. W skrcie podajemy
wymagania lub motywacje, zamieszczajc obok jeden lub kilka wzorcw zwizanych z tym
zagadnieniem. Cho nie jest to lista wyczerpujca wszystkie moliwoci, pozwala atwo
okreli, jaki wzorzec zastosowa w celu rozwizania konkretnego problemu.
Tabela 5.6 zawiera zagadnienia zwizane na og z wzorcami warstwy prezentacji wraz z zaznaczeniem, ktrego wzorca naley uy.
119
Oto rozwizanie...
120
Oto rozwizanie...
Tabela 5.7 zawiera zagadnienia zwizane na og z wzorcami warstwy biznesowej wraz z zaznaczeniem, ktrego wzorca naley uy.
Tabela 5.7. Wzorce warstwy biznesowej
Jeli szukamy sposobu na...
Oto rozwizanie...
121
Oto rozwizanie...
122
Oto rozwizanie...
Tabela 5.8 zawiera zagadnienia zwizane na og z wzorcami warstwy integracji wraz z zaznaczeniem, ktrego wzorca naley uy w konkretnej sytuacji.
Tabela 5.8. Wzorce warstwy integracji
Jeli szukamy sposobu na...
Oto rozwizanie...
123
Podsumowanie
Poznalimy podstawowe koncepcje dotyczce wzorcw J2EE, opisalimy sposb ich kategoryzacji z uwzgldnieniem podziau na warstwy oraz przedstawilimy map pomagajc
ustali, ktre wzorce stosowa w jakich sytuacjach. W kolejnych rozdziaach opisujemy
poszczeglne wzorce.
Nastpne rozdziay prezentuj wzorce warstwy prezentacji, biznesowej i integracji. W celu
odnalezienia potrzebnego wzorca wystarczy zajrze do tych rozdziaw.