Você está na página 1de 26

IDZ DO

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

Podstawowymi zagadnieniami opisywanymi w ksice s wzorce, najlepsze techniki,


strategie projektowe i sprawdzone rozwizania wykorzystujce kluczowe technologie
J2EE, czyli strony JSP, serwlety, komponenty EJB i interfejs JMS. Katalog wzorcw
J2EE zawiera 21 wzorcw i o wiele wicej strategii, przy wykorzystaniu ktrych
powstaj najlepsze rozwizania programistyczne.
J2EE. Wzorce projektowe. Wydanie drugie zawiera opis nastpujcych zagadnie:
21 wzorcw projektowych J2EE znane i w peni sprawdzone oraz nowe wzorce
zapewniajce najlepsze rozwizania dla aplikacji biznesowych
strategie projektowe dla warstwy prezentacji, biznesowej i integracji
opis zastosowania technologii JSP, EJB, JSM, usug sieciowych i serwletw
przykady niezalecanych rozwiza stosujcych technologi J2EE
sposoby refaktoryzacji poprawiajce istniejce projekty
diagramy UML ilustrujce przedstawiane zagadnienia
du liczb przykadw zastosowania wzorcw, strategii i refaktoryzacji
Deepak Alur jest architektem rozwiza biznesowych Javy w Sun Java Center
z 14-letnim dowiadczeniem. Zajmuje si gwnie architektur, projektowaniem
i implementacj duych rozwiza biznesowych z zastosowaniem technologii
Java i J2EE.
John Crupi jest wybitnym inynierem i szefem architektw Javy w Sun Java Center.
Posiada 17-letnie dowiadczenie w obliczeniach rozproszonych i zajmuje si przede
wszystkim tworzeniem skalowalnych architektur J2EE wielokrotnego uytku.

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

Rozdzia 2. Projektowanie warstwy prezentacji i ze praktyki ............................................................ 33


Zagadnienia projektowe warstwy prezentacji.................................................................... 33
Zarzdzanie sesj.................................................................................................... 33
Kontrola dostpu klienta .......................................................................................... 36
Walidacja ................................................................................................................ 40
Waciwoci klas pomocniczych integralno i spjno ......................................... 42
Ze praktyki zwizane z warstw prezentacji .................................................................... 44
Kod sterujcy w wielu widokach ................................................................................ 45
Udostpnianie struktur danych warstwy prezentacji warstwie biznesowej...................... 45
Udostpnianie struktur danych warstwy prezentacji obiektom domeny.......................... 46
Duplikacja wysyanych formularzy .............................................................................. 46
Udostpnianie poufnych zasobw w sposb bezporedni ............................................ 47
Zaoenie, e <jsp:setProperty> zresetuje waciwoci komponentu JavaBean .............. 47

Spis treci
Tworzenie rozbudowanych kontrolerw....................................................................... 48
Uycie skryptletw w widoku ..................................................................................... 48

Rozdzia 3. Projektowanie warstwy biznesowej i ze praktyki ............................................................ 53


Zagadnienia projektowe warstwy biznesowej ................................................................... 53
Korzystanie z komponentw sesyjnych ...................................................................... 53
Korzystanie z komponentw Entity ............................................................................ 56
Buforowanie referencji i uchwytw do zdalnych komponentw enterprise bean.............. 58
Ze praktyki zwizane z warstw biznesow i warstw integracji ........................................ 59
Mapowanie modelu obiektowego bezporednio na model komponentw Entity ............. 59
Mapowanie modelu relacyjnego bezporednio na model komponentw Entity ............... 60
Mapowanie kadego przypadku uycia na jeden komponent sesyjny............................. 60
Udostpnianie wszystkich atrybutw komponentw
poprzez metody ustawiania i pobierania .................................................................. 61
Osadzanie wyszukiwania usug u klienta .................................................................... 61
Stosowanie komponentw Entity jako obiektw tylko do odczytu.................................. 62
Korzystanie z komponentw Entity jako drobnych obiektw ......................................... 63
Zapisywanie caego grafu powizanych komponentw Entity ........................................ 64
Ujawnianie wyjtkw zwizanych z EJB klientom spoza warstwy EJB ............................. 64
Stosowanie metod Finder komponentw Entity
w celu zwrcenia wikszego zbioru wynikw ............................................................ 65
Klient przechowuje dane z komponentw biznesowych................................................ 65
Korzystanie z komponentw EJB w dugich transakcjach ............................................. 66
Bezstanowy komponent sesyjny odtwarza stan sesji dla kadego wywoania ................. 66

Rozdzia 4. Refaktoryzacja J2EE .............................................................................................................. 69


Refaktoryzacja warstwy prezentacji ................................................................................. 69
Wprowadzenie kontrolera ......................................................................................... 69
Wprowadzenie tokenu synchronizujcego................................................................... 71
Podzia logiki na niezalene fragmenty ....................................................................... 75
Ukrycie szczegw warstwy prezentacji przed warstw biznesow ............................... 80
Usunicie konwersji z widoku.................................................................................... 84
Ukrywanie zasobw przed klientem ........................................................................... 87
Refaktoryzacja warstwy biznesowej i warstwy integracji .................................................... 90
Ukrycie komponentw Entity za komponentami sesyjnymi ........................................... 90
Wprowadzenie obiektw Business Delegate............................................................... 91
czenie komponentw sesyjnych ............................................................................. 92
Redukcja komunikacji midzy komponentami Entity .................................................... 94
Przeniesienie logiki biznesowej do warstwy komponentw sesyjnych ............................ 95
Oglne udoskonalanie projektu ...................................................................................... 96
Wydzielenie kodu dostpu do danych ........................................................................ 96
Refaktoryzacja architektury z wykorzystaniem warstw.................................................. 98
Stosowanie puli pocze ....................................................................................... 100

Cz II Katalog wzorcw J2EE

103

Czym jest wzorzec? ..................................................................................................... 106


Identyfikacja wzorca ............................................................................................... 106
Wzorce a strategie ................................................................................................. 107
Podejcie warstwowe .................................................................................................. 107
Wzorce J2EE............................................................................................................... 109
Wzorce warstwy prezentacji .................................................................................... 109

Spis treci

Wzorce warstwy biznesowej .................................................................................... 109


Wzorce warstwy integracji ....................................................................................... 110
Wprowadzenie do katalogu .......................................................................................... 110
Terminologia ......................................................................................................... 111
Stosowanie jzyka UML.......................................................................................... 113
Szablon wzorcw ................................................................................................... 114
Zwizki midzy wzorcami J2EE ..................................................................................... 114
Zwizki z innymi znanymi wzorcami............................................................................... 118
Mapa wzorcw ............................................................................................................ 118
Podsumowanie ........................................................................................................... 123

Rozdzia 6. Wzorce warstwy prezentacji ..............................................................................................125


Intercepting Filter ........................................................................................................ 125
Problem ................................................................................................................ 125
Siy....................................................................................................................... 126
Rozwizanie .......................................................................................................... 126
Konsekwencje ....................................................................................................... 141
Powizane wzorce.................................................................................................. 143
Front Controller........................................................................................................... 143
Problem ................................................................................................................ 143
Siy....................................................................................................................... 144
Rozwizanie .......................................................................................................... 144
Konsekwencje ....................................................................................................... 154
Powizane wzorce.................................................................................................. 155
Context Object ............................................................................................................ 155
Problem ................................................................................................................ 155
Siy....................................................................................................................... 156
Rozwizanie .......................................................................................................... 156
Konsekwencje ....................................................................................................... 173
Powizane wzorce.................................................................................................. 173
Application Controller .................................................................................................. 174
Problem ................................................................................................................ 174
Siy....................................................................................................................... 174
Rozwizanie .......................................................................................................... 174
Konsekwencje ....................................................................................................... 200
Powizane wzorce.................................................................................................. 201
View Helper ................................................................................................................ 201
Problem ................................................................................................................ 201
Siy....................................................................................................................... 202
Rozwizanie .......................................................................................................... 202
Konsekwencje ....................................................................................................... 217
Powizane wzorce.................................................................................................. 220
Composite View .......................................................................................................... 220
Problem ................................................................................................................ 220
Siy....................................................................................................................... 220
Rozwizanie .......................................................................................................... 221
Konsekwencje ....................................................................................................... 228
Przykadowy kod .................................................................................................... 229
Powizane wzorce.................................................................................................. 231
Service to Worker........................................................................................................ 231
Problem ................................................................................................................ 231
Siy....................................................................................................................... 232

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

Rozdzia 7. Wzorce warstwy biznesowej .............................................................................................253


Business Delegate...................................................................................................... 253
Problem ................................................................................................................ 253
Siy....................................................................................................................... 254
Rozwizanie .......................................................................................................... 254
Konsekwencje ....................................................................................................... 258
Przykadowy kod .................................................................................................... 260
Powizane wzorce.................................................................................................. 263
Service Locator........................................................................................................... 263
Problem ................................................................................................................ 263
Siy....................................................................................................................... 264
Rozwizanie .......................................................................................................... 264
Konsekwencje ....................................................................................................... 272
Przykadowy kod .................................................................................................... 274
Powizane wzorce.................................................................................................. 283
Session Faade .......................................................................................................... 284
Problem ................................................................................................................ 284
Siy....................................................................................................................... 284
Rozwizanie .......................................................................................................... 285
Konsekwencje ....................................................................................................... 288
Przykadowy kod .................................................................................................... 289
Powizane wzorce.................................................................................................. 295
Application Service...................................................................................................... 296
Problem ................................................................................................................ 296
Siy....................................................................................................................... 297
Rozwizanie .......................................................................................................... 297
Konsekwencje ....................................................................................................... 304
Przykadowy kod .................................................................................................... 305
Powizane wzorce.................................................................................................. 310
Business Object ......................................................................................................... 310
Problem ................................................................................................................ 310
Siy....................................................................................................................... 311
Rozwizanie .......................................................................................................... 312
Konsekwencje ....................................................................................................... 321
Przykadowy kod .................................................................................................... 322
Powizane wzorce.................................................................................................. 324
Composite Entity......................................................................................................... 324
Problem ................................................................................................................ 324
Siy....................................................................................................................... 326

Spis treci

Rozwizanie .......................................................................................................... 326


Konsekwencje ....................................................................................................... 334
Przykadowy kod .................................................................................................... 335
Powizane wzorce.................................................................................................. 343
Transfer Object ........................................................................................................... 344
Problem ................................................................................................................ 344
Siy....................................................................................................................... 344
Rozwizanie .......................................................................................................... 345
Konsekwencje ....................................................................................................... 352
Przykadowy kod .................................................................................................... 353
Powizane wzorce.................................................................................................. 358
Transfer Object Assembler........................................................................................... 359
Problem ................................................................................................................ 359
Siy....................................................................................................................... 359
Rozwizanie .......................................................................................................... 359
Konsekwencje ....................................................................................................... 363
Przykadowy kod .................................................................................................... 363
Powizane wzorce.................................................................................................. 367
Value List Handler ...................................................................................................... 367
Problem ................................................................................................................ 367
Siy....................................................................................................................... 368
Rozwizanie .......................................................................................................... 368
Konsekwencje ....................................................................................................... 373
Przykadowy kod .................................................................................................... 374
Powizane wzorce.................................................................................................. 379

Rozdzia 8. Wzorce warstwy integracji.................................................................................................381


Data Access Object..................................................................................................... 381
Problem ................................................................................................................ 381
Siy....................................................................................................................... 382
Rozwizanie .......................................................................................................... 382
Konsekwencje ....................................................................................................... 405
Powizane wzorce.................................................................................................. 407
Service Activator ......................................................................................................... 408
Problem ................................................................................................................ 408
Siy....................................................................................................................... 408
Rozwizanie .......................................................................................................... 408
Konsekwencje ....................................................................................................... 423
Powizane wzorce.................................................................................................. 423
Domain Store ............................................................................................................. 424
Problem ................................................................................................................ 424
Siy....................................................................................................................... 424
Rozwizanie .......................................................................................................... 425
Konsekwencje ....................................................................................................... 456
Powizane wzorce.................................................................................................. 456
Web Service Broker..................................................................................................... 457
Problem ................................................................................................................ 457
Siy....................................................................................................................... 458
Rozwizanie .......................................................................................................... 458
Konsekwencje ....................................................................................................... 475
Powizane wzorce.................................................................................................. 476

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

Dodatek B Bibliografia ..............................................................................................................................513


Dodatek C Licencja....................................................................................................................................517
Skorowidz ................................................................................................................................................519

Omwienie wzorcw J2EE


W tym rozdziale:
n

Czym jest wzorzec?

Podejcie warstwowe.

Wzorce J2EE.

Wprowadzenie do katalogu.

Zwizki midzy wzorcami J2EE.

Zwizki z innymi znanymi wzorcami.

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

Cz II n Katalog wzorcw J2EE


Opisane wzorce stosuj te najlepsze praktyki. Przedstawiono je w taki sposb, by w prosty
sposb mc wykorzysta je w dowolnej aplikacji uwzgldniajc konkretne wymagania.
Wzorce w usystematyzowany sposb omawiaj sprawdzone techniki. Dziki nim atwiej
jest skorzysta ze zweryfikowanych rozwiza. Innymi sowy, dziki wykorzystaniu wzorcw tworzenie systemw opartych na J2EE staje si prostsze i szybsze.

Czym jest wzorzec?


W rozdziale 1. przedstawilimy kilka definicji wzorca sformuowanych przez rnych ekspertw. Opisalimy take inne zagadnienia zwizane z wzorcami, na przykad zalety ich stosowania. Teraz jeszcze raz zajmiemy si tym tematem, ale pod ktem katalogu wzorcw J2EE.
W rozdziale 1. pojawia si nastpujca definicja wzorca: czsto stosowane rozwizanie typowych problemw w pewnym kontekcie.
Terminy kontekst, problem i rozwizanie wymagaj pewnego wyjanienia. Najpierw zajmijmy si kontekstem. Kontekst to rodowisko, otoczenie, sytuacja lub pewne warunki,
w ktrych wystpuje problem. Czym jest problem? Problem to nierozstrzygnite pytanie,
czyli co, co naley zbada i rozwiza. Zazwyczaj problem jest ograniczony kontekstem,
w ktrym wystpuje. Rozwizanie to odpowied na problem w danym kontekcie pozwalajca go usun.
Czy jednak posiadanie rozwizania problemu w pewnym kontekcie oznacza, e mamy ju
wzorzec? Niekoniecznie. Wanym elementem jest te powtarzalno stosowanego rozwizania. Wzorzec jest uyteczny tylko wtedy, gdy moe by stosowany wielokrotnie. Czy to
wszystko? Niekoniecznie. Cho sama idea wzorca jest prosta, jego rzeczywista definicja nie
jest ju zadaniem atwym.
Aby dowiedzie si wicej o wzorcach, ich historii i dziedzinach zastosowania polecamy inne
ksiki lub zasoby internetowe. W naszym katalogu wzorzec jest opisany zgodnie z jego
gwn charakterystyk: problemem i rozwizaniem, ale wspominamy te o kilku innych
aspektach, jak siy i konsekwencje. Poszczeglne elementy szablonu wzorcw omawia podrozdzia Szablon wzorcw.

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.

Rozdzia 5. n Omwienie wzorcw J2EE

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

Wzorce istniej na wyszym poziomie abstrakcji ni strategie.

Strategie stanowi najbardziej zalecane lub najczstsze implementacje wzorcw.

Strategie umoliwiaj rozszerzenie wzorca. Programici odkrywaj nowe sposoby


implementacji wzorca, tworzc nowe strategie dla dobrze znanych wzorcw.

Strategie uatwiaj komunikacj, tworzc nazwy dla bardziej szczegowych


aspektw rozwizania.

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

Cz II n Katalog wzorcw J2EE

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

Rozdzia 5. n Omwienie wzorcw J2EE

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).

Wzorce warstwy prezentacji


Tabela 5.1 zawiera wzorce warstwy prezentacji wraz z krtkim omwieniem kadego z nich.
Tabela 5.1. Wzorce warstwy prezentacji
Nazwa wzorca

Opis

Intercepting Filter

Zajmuje si przetworzeniem dania klienta po jego potrzymaniu i przy


wysaniu odpowiedzi.

Front Controller

Zapewnia scentralizowany kontroler zarzdzajcy obsug da.

Context Object

Hermetyzuje stan aplikacji w sposb niezaleny od protokou, w celu atwego


wykorzystania go w rnych warstwach aplikacji.

Application Controller

Centralizuje zarzdzanie widokiem i akcjami aplikacji.

View Helper

Zawiera logik niezwizan z formatowaniem prezentacji w komponentach


pomocniczych.

Composite View

Tworzy zoony widok z wielu komponentw skadowych.

Service to Worker

czy komponent 


z wzorcami Front Controller i View Helper.

Dispatcher View

czy komponent 


z wzorcami Front Controller i View Helper,
wstrzymujc wiele zada do czasu przetworzenia widoku.

Wzorce warstwy biznesowej


Tabela 5.2 wymienia wzorce warstwy biznesowej wraz z krtkim omwieniem kadego z nich.

110

Cz II n Katalog wzorcw J2EE

Tabela 5.2. Wzorce warstwy biznesowej


Nazwa wzorca

Opis

Business Delegate

Hermetyzuje dostp do usug biznesowych.

Service Locator

Hermetyzuje kod wyszukiwania usugi i komponentw.

Session Faade

Hermetyzuje komponenty warstwy biznesowej i udostpnia klientom


dobrze zdefiniowany zestaw usug biznesowych.

Application Service

Centralizuje i czy podstawowe mechanizmy aplikacji w celu zapewnienia


jednolitej warstwy usug.

Business Object

Oddziela logik i dane biznesowe, tworzc podstaw modelu obiektowego


aplikacji.

Composite Entity

Implementuje trwae obiekty biznesowe, stosujc lokalne komponenty


Entity i zwyke obiekty Javy (POJOs).

Transfer Object

Przenosi dane midzy warstwami.

Transfer Object Assembler

Tworzy obiekty Transfer Object, korzystajc z wielu rde danych.

Value List Handler

Obsuguje wyszukiwanie, buforuje wyniki w pamici podrcznej


i umoliwia przegldanie i wybieranie elementw z listy wartoci.

Wzorce warstwy integracji


Tabela 5.3 wymienia wzorce warstwy integracji wraz z krtkim omwieniem kadego z nich.
Tabela 5.3. Wzorce warstwy integracji
Nazwa wzorca

Opis

Data Acces Object

Hermetyzuje dostp do rde danych ukrywajc szczegy implementacji.

Service Activator

Odbiera komunikaty i w sposb asynchroniczny wywouje usugi


biznesowe.

Domain Store

Udostpnia mechanizmy utrwalania i odtwarzania obiektw biznesowych.

Web Service Broker

Udostpnia usugi, uywajc XML i protokow sieciowych.

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.

Rozdzia 5. n Omwienie wzorcw J2EE

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

Opis lub definicja

Uywany

BMP
(Bean-managed
Persistence)

Strategia dotyczca komponentw Entity, w ktrych


programista implementuje logik odpowiedzialn
za trwao komponentw Entity.

we wzorcach warstwy
biznesowej

CMP
(Container-managed
Persistence)

Strategia dotyczca komponentw Entity, w ktrych


zarzdzanie trwaoci komponentw Entity jest
zadaniem kontenera.

we wzorcach warstwy
biznesowej

dyspozytor
(Dispatcher)

Do zada kontrolera naley midzy innymi


przekazywanie da klientw do odpowiednich
widokw. Serwlety korzystaj w tym celu ze
standardowej klasy 
Mechanizm
ten mona umieci w osobnym komponencie,
zwanym dyspozytorem.

we wzorcach
Dispatcher View
i Service to Worker

EJB

Komponent Enterprise JavaBeans; moe to by


instancja komponentu sesyjnego lub Entity. Gdy
stosujemy ten skrt, oznacza to, i jest to komponent
sesyjny lub Entity.

w wielu miejscach
w niniejszej ksice

fabryka (abstrakcyjna
lub metoda fabryki)

Wzorzec opisany w ksice GoF dotyczcy


tworzenia obiektw lub rodzin obiektw.

we wzorcach warstwy
biznesowej i we wzorcu
Data Access Object.

fasada

Wzorzec dotyczcy ukrywania zoonoci, opisany


w ksice GoF.

we wzorcu Session
Faade

GoF

Skrt od okrelenia Gang of Four (Banda Czworga),


odnoszcego si do autorw popularnej ksiki
o wzorcach projektowych (Design Patterns:
Elements of Reusable Object-Oriented Software,
autorzy: Erich Gamma, Richard Helm, Ralph
Johnson i John Vlissides [GoF]).

w wielu miejscach
w niniejszej ksice

iterator

Wzorzec zapewniajcy dostp do poszczeglnych


elementw kolekcji, opisany w ksice GoF.

we wzorcu Value List


Handler

komponent sesyjny
(Session Bean)

Odnosi si do komponentu sesyjnego stanowego lub


bezstanowego. Moe si take odnosi w oglnoci
do interfejsu bazowego (home) i zdalnego (remote)
oraz waciwej implementacji komponentu.

we wzorcach warstwy
biznesowej

kontroler (Controller)

Wspdziaa z klientem, steruje i zarzdza obsug


da.

we wzorcach warstwy
prezentacji i warstwy
biznesowej

112

Cz II n Katalog wzorcw J2EE

Tabela 5.4. Terminologia (cig dalszy)


Termin

Opis lub definicja

Uywany

model

Fizyczna albo logiczna reprezentacja systemu lub


podsystemu.

we wzorcach warstwy
biznesowej i warstwy
prezentacji

obiekt dostpu
do danych (DAO)

Obiekt ukrywajcy szczegy implementacji dostpu


do rde danych i systemw zewntrznych.

we wzorcach warstwy
biznesowej i warstwy
integracji

obiekt niezaleny

Obiekt, ktry moe istnie niezalenie od innych


i zarzdza cyklem ycia swych obiektw zalenych.

we wzorcu Composite
Entity

obiekt transferowy
(Transfer Object)

Serializowalny obiekt Javy (POJO) uywany


do przesyania danych z jednego obiektu (warstwy)
do innego. Nie zawiera adnych metod biznesowych.

we wzorcach warstwy
biznesowej

obiekt zaleny

Obiekt, ktry nie moe istnie samodzielnie. Jego


cyklem ycia zarzdza inny obiekt.

we wzorcach Business
Delegate i Composite
Entity

pomocnik (Helper)

Wykorzystywany przez kontroler i/lub widok.


Na przykad kontroler lub widok moe skorzysta
z obiektu pomocnika w celu: pobrania zawartoci,
walidacji, zapisu modelu lub dostosowania go w celu
wywietlenia.

we wzorcach warstwy
prezentacji i we wzorcu
Business Delegate

proxy

Wzorzec w ktrym jeden obiekt ukrywa inny i steruje


dostpem do niego, opisany w ksice GoF.

w wielu miejscach
niniejszej ksiki

przedstawiciel
(Delegate)

Obiekt zastpujcy inny stanowi dla niego


warstw poredniczc. Przedstawiciel posiada cechy
porednika oraz fasady.

we wzorcu Business
Delegate i w wielu
innych wzorcach

singleton

Wzorzec zapewniajcy tylko jedn instancj obiektu,


opisany w ksice GoF.

w wielu miejscach
w niniejszej ksice

skryptlet Javy

Logika aplikacji osadzona bezporednio na stronie


JSP.

we wzorcach warstwy
prezentacji

szablon

Szablon tekstowy odnosi si do staego tekstu


w widoku JSP. Poza tym szablon moe dotyczy
konkretnego ukadu komponentw tworzcych
widok.

we wzorcach warstwy
prezentacji

trway magazyn
(Persistent Store)

Reprezentuje trway system przechowywania danych,


np. RDBMS, ODBMS, systemy plikw itp.

we wzorcach warstwy
biznesowej i warstwy
integracji

widok (View)

Widok odpowiada za graficzn i tekstow


cz wywietlanego interfejsu. Wsppracuje
z pomocnikami, aby uzyska dane potrzebne do
utworzenia zawartoci. Wykorzystuje take obiekty
pomocnikw w celu wykonania dodatkowych zada.

we wzorcach warstwy
prezentacji

zoenie (Composite)

Obiekt zoony zawierajcy inne obiekty. Zwizany


z wzorcem Composite z ksiki GoF (patrz dalsza
cz tabeli).

we wzorcach
Composite View
i Composite Entity

Rozdzia 5. n Omwienie wzorcw J2EE

113

Stosowanie jzyka UML


W katalogu wzorcw intensywnie korzystamy z diagramw UML, a w szczeglnoci z nastpujcych typw diagramw:
n

Diagramy klas uywamy diagramw klas do przedstawienia struktury rozwizania


i struktury strategii implementacji. Stanowi statyczny obraz rozwizania.

Diagramy przebiegu (inaczej sekwencji lub interakcji) te diagramy su do


przedstawiania wzajemnych oddziaywa elementw rozwizania lub strategii.
Stanowi dynamiczny obraz rozwizania.

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.

Tabela 5.5. Stereotypy UML


Stereotyp

Znaczenie

EJB

Reprezentuje komponent Enterprise JavaBean; zwizany jest z obiektem biznesowym.


Rol t peni zazwyczaj komponent sesyjny lub Entity.

komponent
sesyjny

Reprezentuje komponent sesyjny jako cao bez okrelania jego interfejsw


ani implementacji.

komponent Entity

Reprezentuje komponent Entity jako cao bez okrelania jego interfejsw,


implementacji ani klucza gwnego.

widok

Widok reprezentuje i wywietla informacje przekazywane klientowi.

JSP

Strona JSP; widok jest zazwyczaj zaimplementowany jako strona JSP.

serwlet

Serwlet Javy; kontroler jest zazwyczaj zaimplementowany jako serwlet.

singleton

Klasa posiadajca tylko jedn instancj zgodnie z wzorcem Singleton.

wasny znacznik
(Custom Tag)

Wasne znaczniki JSP (podobnie jak komponenty JavaBean) wykorzystuje si do


implementacji obiektw pomocniczych. Obiekt pomocniczy jest odpowiedzialny za
takie zadania, jak zbieranie informacji wymaganych przez widok, lub za dostosowanie
modelu danych do wywietlenia. Pomocnik moe po prostu przekaza dane widokowi
w postaci oryginalnej lub dokona ich formatowania do postaci odpowiedniej do
wywietlenia jako strona WWW.

Wszystkie wzorce z katalogu zawieraj diagram klas przedstawiajcy struktur rozwizania


i diagram sekwencji prezentujcy interakcje wystpujce we wzorcu. Poza tym wzorce zawierajce strategie stosuj osobne diagramy dla poszczeglnych strategii.
Ksiki zawierajce wicej informacji o jzyku UML wymieniono w bibliografii.

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

Cz II n Katalog wzorcw J2EE

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

Problem opisuje zagadnienie projektowe, ktre musi rozstrzygn projektant.

Siy wymienia powody lub motywy wpywajce na problem i jego rozwizanie.


Lista si zawiera powody, dla ktrych warto zastosowa dany wzorzec.

Rozwizanie pokrtce omawia ide rozwizania i bardziej szczegowo jego


konkretne elementy. Ta cz skada si z dwch podrozdziaw:
n

Struktura za pomoc diagramw UML przedstawiana jest podstawowa


struktura rozwizania. Diagramy sekwencji przedstawiaj dynamiczne
elementy rozwizania. Pojawia si szczegowy opis elementw oraz
wystpujcych zalenoci.

Strategie opisuje rne sposoby implementacji wzorca. Podrozdzia


Wzorce a strategie wyjania potrzeb stosowania strategii. Jeeli strategi
mona pokaza na przykadzie kodu, przedstawiony zostaje odpowiedni
fragment. Jeeli fragment kodu jest dugi, umieszczamy go w sekcji
Przykadowy kod.

Konsekwencje omawia wady i zalety danego wzorca. Oglnie ta cz skupia si


na wynikach zastosowania wzorca lub strategii i konsekwencjach jego stosowania
dla aplikacji.

Przykadowy kod ta cz zawiera przykadowe implementacje i listingi dla


wzorca lub strategii. Cz jest opcjonalna, jeeli cay kod zosta wczeniej opisany
podczas omawiania strategii.

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.

Zwizki midzy wzorcami J2EE


Na pewnym etapie odkrywania wzorcw projektanci i architekci zauwayli brak dobrego
zrozumienia zasad czenia wzorcw w celu uzyskania wikszych rozwiza. Rozwizujemy ten problem, podajc graficzn reprezentacj wzorcw i zwizkw midzy nimi. Diagram nosi nazw diagramu zwizkw wzorcw J2EE i jest przedstawiony na rysunku 5.2.
W epilogu przedstawiamy przykad uycia poczonych wzorcw w celu realizacji przykadowych scenariuszy.

Rozdzia 5. n Omwienie wzorcw J2EE

115

Rysunek 5.2. Zwizki wzorcw J2EE

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

Cz II n Katalog wzorcw J2EE


n

Umoliwia zastanowienie si, jakie inne problemy mog si pojawi, jeli do


rozwizania problemu zastosujemy przedstawiony wzorzec. Jest to efekt domina:
jakie problemy spowoduje modyfikacja architektury w celu wprowadzenia wzorca?
Warto zidentyfikowa takie problemy przed rozpoczciem pisania kodu.

Umoliwia zapoznanie si ze zwizkami midzy wzorcami w celu poznania


alternatywnych rozwiza. Po identyfikacji problemw sprawdzamy zwizki
midzy wzorcami i zastanawiamy si nad rozwizaniami alternatywnymi. By
moe nowe problemy mona rozwiza, wybierajc inny wzorzec lub te stosujc
wybrany wzorzec w poczeniu z innym.

Rysunek 5.2 przedstawia zwizki midzy wzorcami.


Wzorzec Intercepting Filter przechwytuje nadchodzce dania klientw, wysya odpowiedzi i zajmuje si filtrowaniem. Filtry mona dodawa i usuwa w dowolnym momencie (filtry deklarowane s w deskryptorze wdroenia), stosujc rne ich kombinacje. Po
zakoczeniu przetwarzania wstpnego lub kocowego ostatni filtr z grupy przekazuje sterowanie do waciwego obiektu docelowego. W przypadku da jest to najczciej kontroler, ale moe to by take widok.
Front Controller zawiera logik przetwarzania wystpujc wewntrz warstwy prezentacji,
ktra w innym przypadku zostaaby bdnie umieszczona w widoku. Kontroler obsuguje
dania i zarzdza pobieraniem zawartoci, bezpieczestwem, widokiem, nawigacj, wykorzystujc obiekt dyspozytora w celu wybrania odpowiedniego widoku.
Wzorzec Application Controller centralizuje sterowanie, pobieranie i wywoywanie widoku
oraz wykonywanie polece. Podczas gdy wzorzec Front Controller dziaa jak centralny
punkt dostpowy dla nadchodzcych da, Application Controller jest odpowiedzialny za
identyfikacj i wywoywanie polece aplikacji oraz wybr odpowiedniego widoku.
Wzorzec Context Object hermetyzuje stan aplikacji w sposb niezaleny od protokou, aby
mg by bez przeszkd wymieniany midzy rnymi elementami aplikacji. Uatwia to testowanie, gdy zmniejsza si liczb zalenoci od konkretnego kontenera.
Wzorzec View Helper suy oddzieleniu kodu zwizanego z formatowaniem od reszty logiki biznesowej. Sugeruje stosowanie komponentw pomocniczych do wykonywania zada
zwizanych z pobieraniem zawartoci, jej walidacj oraz dostosowaniem do potrzeb wywietlania. Komponent widoku zawiera wtedy tylko elementy zwizane z tworzeniem prezentacji. Komponenty pomocnicze zazwyczaj komunikuj si z usugami biznesowymi
przez obiekty Business Deletate lub Application Service, natomiast sam widok moe skada si z wielu mniejszych komponentw tworzcych oglny szablon.
Wzorzec Composite View dotyczy tworzenia widoku z wielu elementw jednostkowych.
Mniejsze widoki (statyczne lub dynamiczne) czy si w celu uzyskania jednego szablonu.
Innymi przykadami poczonych wzorcw s wzorce Service to Worker i Dispatcher View.
Oba wzorce posiadaj podobn struktur, w skad ktrej wchodzi kontroler wsppracujcy
z dyspozytorem, widokami oraz obiektami pomocniczymi. Oba wzorce peni podobne
role, ale rni si wewntrznym podziaem zada. W odrnieniu od wzorca Service to
Worker, wzorzec Dispatcher View wstrzymuje przetwarzanie biznesowe a do zakoczenia
przetwarzania widoku.

Rozdzia 5. n Omwienie wzorcw J2EE

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

Cz II n Katalog wzorcw J2EE


Wzorzec Service Activator pozwala na asynchroniczne przetwarzanie z wykorzystaniem
JMS. Wzorzec moe korzysta z wzorcw: Application Service, Session Faade i Business
Object. Mona zastosowa kilka obiektw Service Activator, aby zapewni wspbiene
przetwarzanie asynchroniczne dla zada dugoterminowych.
Wzorzec Domain Store stanowi mechanizm zapewniania trwaoci dla modelu obiektowego.
Stosuje i czy kilka innych wzorcw, midzy innymi Data Access Object.
Wzorzec Web Service Broker udostpnia jedn lub kilka usug aplikacji zewntrznym
klientom jako web services, stosujc jzyk XML i standardowe protokoy. Wzorzec wsppracuje z wzorcami Application Service i Session Faade. Wykorzystuje jeden lub kilka
wzorcw Service Activator do przeprowadzenia asynchronicznego przetwarzania dania.

Zwizki z innymi znanymi wzorcami


Istnieje znaczna ilo dokumentacji zwizanej z wzorcami projektowymi. Wzorce w poszczeglnych ksikach opisywane s na rnym poziomie abstrakcji. Istniej wzorce architektury, projektowe, analizy i programowania. Najbardziej znan ksik dotyczc
wzorcw jest Design Patterns: Elements of Reusable Object-Oriented Software [GoF]. Zawarte w niej wzorce stanowi rozwizania dotyczce projektowania obiektowego. Odnosimy si take do wzorcw z ksiki Patterns of Enterprise Application Architecture [PEAA]
autorstwa Martina Fowlera.
Nasz katalog wzorcw zawiera wzorce opisujce struktur aplikacji i elementy projektu.
Wsplnym mianownikiem jest opis wzorcw pod ktem platformy J2EE. W pewnych
przypadkach wzorce z katalogu bazuj na wzorcach istniejcych w literaturze lub s z nimi
zwizane. W takiej sytuacji nazwa powszechnie przyjtego wzorca stanowi cz nazwy
wzorca J2EE lub te nazw t podajemy w podrozdziaach Powizane wzorce. Na przykad
pewne wzorce bazuj na wzorcach z ksiki GoF, ale s omawiane w kontekcie platformy
J2EE. W takich przypadkach nazwa wzorca J2EE zawiera take nazw wzorca z ksiki
GoF, a odpowiednie odwoanie znajduje si w podrozdziale Powizane wzorce.

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.

Rozdzia 5. n Omwienie wzorcw J2EE

119

Tabela 5.6. Wzorce warstwy prezentacji


Jeli szukamy sposobu na ...

Oto rozwizanie...

wstpne lub kocowe przetwarzanie da

wzorzec Intercepting Filter

dodanie logowania, testowania lub innego


zachowania wykonywanego dla wszystkich
da

wzorzec Front Controller


wzorzec Intercepting Filter

centralizacj sterowania obsug da

wzorzec Front Controller


wzorzec Intercepting Filter
wzorzec Application Controller

utworzenie oglnego interfejsu polece


lub obiektu kontekstu w celu zmniejszenia
zalenoci midzy komponentami sterujcymi
i pomocniczymi

wzorzec Front Controller


wzorzec Application Controller
wzorzec Context Object

implementacj kontrolera jako serwletu


lub strony JSP

wzorzec Front Controller

tworzenie widoku z wielu podwidokw

wzorzec Composite View

implementacj widoku jako serwletu


lub strony JSP

wzorzec View Helper

podzia modelu i widoku

wzorzec View Helper

ukrycie logiki przetwarzania danych, zwizanej


z warstw prezentacji

wzorzec View Helper

implementacj komponentw pomocniczych


jako JavaBeans lub znaczniki wasne

wzorzec View Helper

czenie kilku wzorcw warstwy prezentacji

wzorzec Intercepting Filter


wzorzec Dispatcher View

miejsce implementacji logiki zwizanej


z nawigacj i zarzdzania widokiem, czyli
z wyborem waciwego widoku i pobieraniem go

wzorzec Service to Worker


wzorzec Dispatcher View

miejsce przechowywania stanu sesji

zagadnienie projektowe podrozdzia Stan sesji


u klienta w rozdziale 2
zagadnienie projektowe podrozdzia Stan sesji
w warstwie prezentacji w rozdziale 2
zagadnienie projektowe podrozdzia Stan sesji
w warstwie biznesowej w rozdziale 3

sterowanie dostpem klienta do pewnych


widokw lub podwidokw

zagadnienie projektowe podrozdzia Kontrola


dostpu klienta w rozdziale 2
refaktoryzacja podrozdzia Ukrywanie zasobw
przed klientem w rozdziale 4

sterowanie otrzymywaniem da klientw

zagadnienie projektowe podrozdzia Duplikacja


formularzy w rozdziale 2
zagadnienie projektowe podrozdzia Wprowadzenie
tokenu synchronizujcego w rozdziale 4

120

Cz II n Katalog wzorcw J2EE

Tabela 5.6. Wzorce warstwy prezentacji (cig dalszy)


Jeli szukamy sposobu na ...

Oto rozwizanie...

wykrywanie powielonych formularzy

zagadnienie projektowe podrozdzia Duplikacja


formularzy w rozdziale 2
refaktoryzacja podrozdzia Wprowadzenie tokenu
synchronizujcego w rozdziale 4

wykorzystanie automatycznego wypeniania


waciwoci dziki 
 

zagadnienie projektowe podrozdzia Waciwoci


klas pomocniczych integralno i spjno
w rozdziale 2

redukcj powiza midzy warstw prezentacji


i biznesow

refaktoryzacja podrozdzia Ukrycie szczegw


warstwy prezentacji przed warstw biznesow
w rozdziale 4
refaktoryzacja podrozdzia Wprowadzenie
obiektw Business Delegate w rozdziale 4

rozdzielenie kodu dostpu do danych

refaktoryzacja podrozdzia Wydzielenie kodu


dostpu do danych w rozdziale 4

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...

minimalizacj zwizkw midzy warstw


prezentacji i biznesow

wzorzec Business Delegate

buforowanie usug biznesowych

wzorzec Business Delegate

ukrycie szczegw implementacji dostpu,


wyszukiwania i tworzenia usug biznesowych

wzorzec Business Delegate


wzorzec Service Locator

izolacj zalenoci od technologii i konkretnego


producenta zwizanych z wyszukiwaniem usug

wzorzec Service Locator

zapewnienie jednolitej metody wyszukiwania


i tworzenia usug biznesowych

wzorzec Service Locator

ukrycie zoonoci i zalenoci zwizanych


z wyszukiwaniem komponentw EJB oraz JMS

wzorzec Service Locator

przekazywanie danych midzy obiektami


biznesowymi a klientami w ramach wielu
warstw

wzorzec Transfer Object

zapewnienie prostszego, jednolitego interfejsu


dla zdalnych klientw

wzorzec Business Delegate


wzorzec Session Faade
wzorzec Application Service

redukcj iloci zdalnych wywoa metod


poprzez utworzenie oglnych metod dostpu
do usug warstwy biznesowej

wzorzec Session Faade

Rozdzia 5. n Omwienie wzorcw J2EE

121

Tabela 5.7. Wzorce warstwy biznesowej (cig dalszy)


Jeli szukamy sposobu na...

Oto rozwizanie...

zarzdzanie zwizkami midzy komponentami


EJB i ukrycie zoonoci interakcji midzy nimi

wzorzec Session Faade

ochron komponentw warstwy biznesowej


przed bezporednim dostpem klienta

wzorzec Session Faade


wzorzec Application Service

utworzenie jednolitego sposobu dostpu


do komponentw warstwy biznesowej

wzorzec Session Faade


wzorzec Application Service

implementacj zoonego modelu domenowego


w oparciu o model obiektowy

wzorzec Business Object

identyfikacj nierozdrobnionych obiektw


i obiektw zalenych w celu utworzenia
obiektw biznesowych i poprawnego
wykorzystania komponentw Entity

wzorzec Business Object


wzorzec Composite Entity

projektowanie nierozdrobnionych komponentw


Entity

wzorzec Composite Entity

redukcj lub eliminacj zalenoci midzy


klientami komponentw Entity a schematem
bazy danych

wzorzec Composite Entity

redukcj lub eliminacj wzajemnych zwizkw


midzy komponentami Entity

wzorzec Composite Entity

redukcj liczby komponentw Entity i popraw


sposobu zarzdzania nimi

wzorzec Composite Entity

pobranie modelu danych aplikacji z rnych


komponentw warstwy biznesowej

wzorzec Transfer Object Assembler

tworzenie w locie modelu danych aplikacji

wzorzec Transfer Object Assembler

ukrycie zoonoci konstrukcji modelu danych


przed klientem

wzorzec Transfer Object Assembler

utworzenie mechanizmw zarzdzania


zapytaniami i ich obsug wewntrz warstwy
biznesowej

wzorzec Value List Handler

minimalizacj narzutu powodowanego przez


metody wyszukiwania komponentw EJB

wzorzec Value List Handler

buforowanie wynikw zapyta na serwerze


wraz z moliwoci ich wielokrotnego
przegldania

wzorzec Value List Handler

wybr pomidzy komponentami sesyjnymi


stanowymi i bezstanowymi

zagadnienie projektowe podrozdzia Komponent


sesyjny stanowy a bezstanowy w rozdziale 3

ochron komponentw Entity przed


bezporednim dostpem klienta

refaktoryzacja podrozdzia Ukrycie komponentw


Entity za komponentami sesyjnymi w rozdziale 4

hermetyzacj dostpu do usug biznesowych


w celu ukrycia szczegw implementacyjnych
zwizanych z warstw biznesow

refaktoryzacja podrozdzia Wprowadzenie


obiektw Business Delegate w rozdziale 4

122

Cz II n Katalog wzorcw J2EE

Tabela 5.7. Wzorce warstwy biznesowej (cig dalszy)


Jeli szukamy sposobu na...

Oto rozwizanie...

umieszczenie logiki biznesowej


w komponentach Entity

zagadnienie projektowe podrozdzia Logika


biznesowa w komponentach Entity w rozdziale 3
refaktoryzacja podrozdzia Przeniesienie logiki
biznesowej do warstwy komponentw sesyjnych
w rozdziale 4

utworzenie z komponentw sesyjnych


reprezentujcych oglne usugi biznesowe

refaktoryzacja podrozdzia czenie


komponentw sesyjnych w rozdziale 4
refaktoryzacja podrozdzia Ukrycie komponentw
Entity za komponentami sesyjnymi w rozdziale 4

minimalizacj lub wyeliminowanie narzutu sieci


i obcienia kontenera podczas komunikacji
pomidzy komponentami Entity

refaktoryzacja podrozdzia Redukcja komunikacji


midzy komponentami Entity w rozdziale 4

wydzielenie kodu zwizanego z dostpem


do danych

refaktoryzacja podrozdzia Wydzielenie kodu


dostpu do danych w rozdziale 4

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...

redukcj zalenoci midzy warstw biznesow


a warstw zasobw

wzorzec Data Access Object

centralizacj dostpu do warstwy zasobw

wzorzec Data Access Object

minimalizacj zoonoci dostpu do zasobw


z poziomu komponentw warstwy biznesowej

wzorzec Data Access Object

zapewnienie asynchronicznego przetwarzania


dla aplikacji biznesowych

wzorzec Service Activator

wysanie asynchronicznego dania do usugi


biznesowej

wzorzec Service Activator

asynchroniczne przetwarzanie dania jako


zbioru wspbienie wykonywanych zada

wzorzec Service Activator

przezroczyste utrwalanie modelu obiektowego

wzorzec Domain Store

implementacj wasnego mechanizmu trwaoci


obiektw

wzorzec Domain Store

udostpnienie usug sieciowych (Web Services)


przy zastosowaniu XML oraz standardowych
protokow Web

wzorzec Web Service Broker

udostpnienie istniejcych usug jako usug


sieciowych

wzorzec Web Service Broker

Rozdzia 5. n Omwienie wzorcw J2EE

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.

Você também pode gostar