Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00721 010501 11034233 na godz. na dobę w sumie
J2EE. Wzorce projektowe. Wydanie 2 - książka
J2EE. Wzorce projektowe. Wydanie 2 - książka
Autor: , , Liczba stron: 536
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-344-7 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> j2ee - programowanie
Porównaj ceny (książka, ebook, audiobook).

Podstawowymi zagadnieniami opisywanymi w książce są wzorce, najlepsze techniki, strategie projektowe i sprawdzone rozwiązania wykorzystujące kluczowe technologie J2EE, czyli strony JSP, serwlety, komponenty EJB i interfejs JMS. Katalog wzorców J2EE zawiera 21 wzorców i o wiele więcej strategii, przy wykorzystaniu których powstają najlepsze rozwiązania programistyczne.

'J2EE. Wzorce projektowe. Wydanie drugie' zawiera opis następujących zagadnień:

O autorach:
Deepak Alur jest architektem rozwiązań biznesowych Javy w Sun Java Center z 14-letnim doświadczeniem. [więcej...\

John Crupi jest wybitnym inżynierem i szefem architektów Javy w Sun Java Center. [więcej...\

Dan Malks zajmuje się technologiami obiektowymi oraz ich zastosowaniem w projektach biznesowych i usługach sieciowych. [więcej...\

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl J2EE. Wzorce projektowe. Wydanie 2 Autor: Deepak Alur, John Crupi, Dan Malks T³umaczenie: Rafa³ Joñca ISBN: 83-7361-344-7 Tytu³ orygina³u: Core J2EE Patterns. Best Practices and Design Strategies, 2nd Edition Format: B5, stron: 518 Podstawowymi zagadnieniami opisywanymi w ksi¹¿ce s¹ wzorce, najlepsze techniki, strategie projektowe i sprawdzone rozwi¹zania wykorzystuj¹ce kluczowe technologie J2EE, czyli strony JSP, serwlety, komponenty EJB i interfejs JMS. Katalog wzorców J2EE zawiera 21 wzorców i o wiele wiêcej strategii, przy wykorzystaniu których powstaj¹ najlepsze rozwi¹zania programistyczne. „J2EE. Wzorce projektowe. Wydanie drugie” zawiera opis nastêpuj¹cych zagadnieñ: • 21 wzorców projektowych J2EE — znane i w pe³ni sprawdzone oraz nowe wzorce zapewniaj¹ce najlepsze rozwi¹zania dla aplikacji biznesowych • strategie projektowe dla warstwy prezentacji, biznesowej i integracji • opis zastosowania technologii JSP, EJB, JSM, us³ug sieciowych i serwletów • przyk³ady niezalecanych rozwi¹zañ stosuj¹cych technologiê J2EE • sposoby refaktoryzacji poprawiaj¹ce istniej¹ce projekty • diagramy UML ilustruj¹ce przedstawiane zagadnienia • du¿¹ liczbê przyk³adów zastosowania wzorców, strategii i refaktoryzacji Deepak Alur jest architektem rozwi¹zañ biznesowych Javy w Sun Java Center z 14-letnim doġwiadczeniem. Zajmuje siê g³ównie architektur¹, projektowaniem i implementacj¹ du¿ych rozwi¹zañ biznesowych z zastosowaniem technologii Java i J2EE. John Crupi jest wybitnym in¿ynierem i szefem architektów Javy w Sun Java Center. Posiada 17-letnie doġwiadczenie w obliczeniach rozproszonych i zajmuje siê przede wszystkim tworzeniem skalowalnych architektur J2EE wielokrotnego u¿ytku. Dan Malks jest g³ównym in¿ynierem w Sun Java Center. Posiada 16-letnie doġwiadczenie i zajmuje siê technologiami obiektowymi oraz ich zastosowaniem w projektach biznesowych i us³ugach sieciowych. Pisze artyku³y do czasopism bran¿owych, jest tak¿e wspó³autorem ksi¹¿ek o Javie, wzorcach i technologii J2EE. Spis treści Przedmowa I ................................................... ................................................... ..........................................11 Przedmowa II ................................................... ................................................... ........................................13 Wstęp................................................... ................................................... .....................................................15 Część I Wzorce i J2EE 21 Rozdział 1. Wprowadzenie................................................... ................................................... ................... 23 Czym jest J2EE? ...................................................J...................................................J..... 24 Czym są wzorce? ...................................................J...................................................J.... 24 Odniesienie historyczne ...................................................J........................................ 24 Definiowanie wzorca ...................................................J............................................. 25 Kategoryzacja wzorców...................................................J.......................................... 26 Katalog wzorców J2EE ...................................................J................................................ 27 Ciągła ewolucja ...................................................J...................................................J. 27 Jak korzystać z katalogu wzorców? ...................................................J......................... 28 Zalety stosowania wzorców...................................................J.................................... 29 Wzorce, szkielety i ponowne użycie elementów ...................................................J............. 31 Podsumowanie ...................................................J...................................................J....... 31 Rozdział 2. Projektowanie warstwy prezentacji i złe praktyki ................................................... ......... 33 Zagadnienia projektowe warstwy prezentacji...................................................J................. 33 Zarządzanie sesją...................................................J................................................. 33 Kontrola dostępu klienta ...................................................J....................................... 36 Walidacja ...................................................J...................................................J.......... 40 Właściwości klas pomocniczych — integralność i spójność ......................................... 42 Złe praktyki związane z warstwą prezentacji ...................................................J................. 44 Kod sterujący w wielu widokach ...................................................J............................. 45 Udostępnianie struktur danych warstwy prezentacji warstwie biznesowej ...................... 45 Udostępnianie struktur danych warstwy prezentacji obiektom domeny.......................... 46 Duplikacja wysyłanych formularzy ...................................................J........................... 46 Udostępnianie poufnych zasobów w sposób bezpośredni ............................................ 47 Założenie, że jsp:setProperty zresetuje właściwości komponentu JavaBean .............. 47 6 Spis treści Tworzenie rozbudowanych kontrolerów...................................................J.................... 48 Użycie skryptletów w widoku ...................................................J.................................. 48 Rozdział 3. Projektowanie warstwy biznesowej i złe praktyki ................................................... ......... 53 Zagadnienia projektowe warstwy biznesowej ...................................................J................ 53 Korzystanie z komponentów sesyjnych ...................................................J................... 53 Korzystanie z komponentów Entity ...................................................J......................... 56 Buforowanie referencji i uchwytów do zdalnych komponentów enterprise bean.............. 58 Złe praktyki związane z warstwą biznesową i warstwą integracji ........................................ 59 Mapowanie modelu obiektowego bezpośrednio na model komponentów Entity ............. 59 Mapowanie modelu relacyjnego bezpośrednio na model komponentów Entity ............... 60 Mapowanie każdego przypadku użycia na jeden komponent sesyjny............................. 60 Udostępnianie wszystkich atrybutów komponentów poprzez metody ustawiania i pobierania ...................................................J............... 61 Osadzanie wyszukiwania usług u klienta ...................................................J................. 61 Stosowanie komponentów Entity jako obiektów tylko do odczytu.................................. 62 Korzystanie z komponentów Entity jako drobnych obiektów ......................................... 63 Zapisywanie całego grafu powiązanych komponentów Entity ........................................ 64 Ujawnianie wyjątków związanych z EJB klientom spoza warstwy EJB ............................. 64 Stosowanie metod Finder komponentów Entity w celu zwrócenia większego zbioru wyników ...................................................J......... 65 Klient przechowuje dane z komponentów biznesowych................................................ 65 Korzystanie z komponentów EJB w długich transakcjach ............................................. 66 Bezstanowy komponent sesyjny odtwarza stan sesji dla każdego wywołania ................. 66 Rozdział 4. Refaktoryzacja J2EE ................................................... ........................................................... 69 Refaktoryzacja warstwy prezentacji ...................................................J.............................. 69 Wprowadzenie kontrolera ...................................................J...................................... 69 Wprowadzenie tokenu synchronizującego...................................................J................ 71 Podział logiki na niezależne fragmenty ...................................................J.................... 75 Ukrycie szczegółów warstwy prezentacji przed warstwą biznesową ............................... 80 Usunięcie konwersji z widoku...................................................J................................. 84 Ukrywanie zasobów przed klientem ...................................................J........................ 87 Refaktoryzacja warstwy biznesowej i warstwy integracji ...................................................J. 90 Ukrycie komponentów Entity za komponentami sesyjnymi ........................................... 90 Wprowadzenie obiektów Business Delegate...................................................J............ 91 Łączenie komponentów sesyjnych ...................................................J.......................... 92 Redukcja komunikacji między komponentami Entity ...................................................J. 94 Przeniesienie logiki biznesowej do warstwy komponentów sesyjnych ............................ 95 Ogólne udoskonalanie projektu ...................................................J................................... 96 Wydzielenie kodu dostępu do danych ...................................................J..................... 96 Refaktoryzacja architektury z wykorzystaniem warstw.................................................. 98 Stosowanie puli połączeń ...................................................J.................................... 100 Część II Katalog wzorców J2EE 103 Czym jest wzorzec? ...................................................J.................................................. 106 Identyfikacja wzorca ...................................................J............................................ 106 Wzorce a strategie ...................................................J.............................................. 107 Podejście warstwowe ...................................................J............................................... 107 Wzorce J2EE...................................................J...................................................J......... 109 Wzorce warstwy prezentacji ...................................................J................................. 109 Spis treści 7 Wzorce warstwy biznesowej ...................................................J................................. 109 Wzorce warstwy integracji ...................................................J.................................... 110 Wprowadzenie do katalogu ...................................................J....................................... 110 Terminologia ...................................................J...................................................J... 111 Stosowanie języka UML...................................................J....................................... 113 Szablon wzorców ...................................................J................................................ 114 Związki między wzorcami J2EE ...................................................J.................................. 114 Związki z innymi znanymi wzorcami...................................................J............................ 118 Mapa wzorców ...................................................J...................................................J...... 118 Podsumowanie ...................................................J...................................................J..... 123 Rozdział 6. Wzorce warstwy prezentacji ................................................... ...........................................125 Intercepting Filter ...................................................J...................................................J.. 125 Problem ...................................................J...................................................J.......... 125 Siły...................................................J...................................................J................. 126 Rozwiązanie ...................................................J...................................................J.... 126 Konsekwencje ...................................................J...................................................J. 141 Powiązane wzorce...................................................J............................................... 143 Front Controller...................................................J...................................................J..... 143 Problem ...................................................J...................................................J.......... 143 Siły...................................................J...................................................J................. 144 Rozwiązanie ...................................................J...................................................J.... 144 Konsekwencje ...................................................J...................................................J. 154 Powiązane wzorce...................................................J............................................... 155 Context Object ...................................................J...................................................J...... 155 Problem ...................................................J...................................................J.......... 155 Siły...................................................J...................................................J................. 156 Rozwiązanie ...................................................J...................................................J.... 156 Konsekwencje ...................................................J...................................................J. 173 Powiązane wzorce...................................................J............................................... 173 Application Controller ...................................................J............................................... 174 Problem ...................................................J...................................................J.......... 174 Siły...................................................J...................................................J................. 174 Rozwiązanie ...................................................J...................................................J.... 174 Konsekwencje ...................................................J...................................................J. 200 Powiązane wzorce...................................................J............................................... 201 View Helper ...................................................J...................................................J.......... 201 Problem ...................................................J...................................................J.......... 201 Siły...................................................J...................................................J................. 202 Rozwiązanie ...................................................J...................................................J.... 202 Konsekwencje ...................................................J...................................................J. 217 Powiązane wzorce...................................................J............................................... 220 Composite View ...................................................J...................................................J.... 220 Problem ...................................................J...................................................J.......... 220 Siły...................................................J...................................................J................. 220 Rozwiązanie ...................................................J...................................................J.... 221 Konsekwencje ...................................................J...................................................J. 228 Przykładowy kod ...................................................J................................................. 229 Powiązane wzorce...................................................J............................................... 231 Service to Worker..................................................J...................................................J... 231 Problem ...................................................J...................................................J.......... 231 Siły...................................................J...................................................J................. 232 8 Spis treści Rozwiązanie ...................................................J...................................................J.... 232 Konsekwencje ...................................................J...................................................J. 236 Przykładowy kod ...................................................J................................................. 236 Powiązane wzorce...................................................J............................................... 241 Dispatcher View...................................................J...................................................J.... 241 Problem ...................................................J...................................................J.......... 241 Siły...................................................J...................................................J................. 241 Rozwiązanie ...................................................J...................................................J.... 242 Konsekwencje ...................................................J...................................................J. 246 Przykładowy kod ...................................................J................................................. 247 Powiązane wzorce...................................................J............................................... 251 Rozdział 7. Wzorce warstwy biznesowej ................................................... ..........................................253 Business Delegate...................................................J...................................................J 253 Problem ...................................................J...................................................J.......... 253 Siły...................................................J...................................................J................. 254 Rozwiązanie ...................................................J...................................................J.... 254 Konsekwencje ...................................................J...................................................J. 258 Przykładowy kod ...................................................J................................................. 260 Powiązane wzorce...................................................J............................................... 263 Service Locator...................................................J...................................................J..... 263 Problem ...................................................J...................................................J.......... 263 Siły...................................................J...................................................J................. 264 Rozwiązanie ...................................................J...................................................J.... 264 Konsekwencje ...................................................J...................................................J. 272 Przykładowy kod ...................................................J................................................. 274 Powiązane wzorce...................................................J............................................... 283 Session Façade ...................................................J...................................................J.... 284 Problem ...................................................J...................................................J.......... 284 Siły...................................................J...................................................J................. 284 Rozwiązanie ...................................................J...................................................J.... 285 Konsekwencje ...................................................J...................................................J. 288 Przykładowy kod ...................................................J................................................. 289 Powiązane wzorce...................................................J............................................... 295 Application Service...................................................J...................................................J 296 Problem ...................................................J...................................................J.......... 296 Siły...................................................J...................................................J................. 297 Rozwiązanie ...................................................J...................................................J.... 297 Konsekwencje ...................................................J...................................................J. 304 Przykładowy kod ...................................................J................................................. 305 Powiązane wzorce...................................................J............................................... 310 Business Object ...................................................J...................................................J... 310 Problem ...................................................J...................................................J.......... 310 Siły...................................................J...................................................J................. 311 Rozwiązanie ...................................................J...................................................J.... 312 Konsekwencje ...................................................J...................................................J. 321 Przykładowy kod ...................................................J................................................. 322 Powiązane wzorce...................................................J............................................... 324 Composite Entity...........................................J...................................................J........... 324 Problem ...................................................J...................................................J.......... 324 Siły...................................................J...................................................J................. 326 Spis treści 9 Rozwiązanie ...................................................J...................................................J.... 326 Konsekwencje ...................................................J...................................................J. 334 Przykładowy kod ...................................................J................................................. 335 Powiązane wzorce...................................................J............................................... 343 Transfer Object ...................................................J...................................................J..... 344 Problem ...................................................J...................................................J.......... 344 Siły...................................................J...................................................J................. 344 Rozwiązanie ...................................................J...................................................J.... 345 Konsekwencje ...................................................J...................................................J. 352 Przykładowy kod ...................................................J................................................. 353 Powiązane wzorce...................................................J............................................... 358 Transfer Object Assembler...................................................J........................................ 359 Problem ...................................................J...................................................J.......... 359 Siły...................................................J...................................................J................. 359 Rozwiązanie ...................................................J...................................................J.... 359 Konsekwencje ...................................................J...................................................J. 363 Przykładowy kod ...................................................J................................................. 363 Powiązane wzorce...................................................J............................................... 367 Value List Handler ...................................................J...................................................J 367 Problem ...................................................J...................................................J.......... 367 Siły...................................................J...................................................J................. 368 Rozwiązanie ...................................................J...................................................J.... 368 Konsekwencje ...................................................J...................................................J. 373 Przykładowy kod ...................................................J................................................. 374 Powiązane wzorce...................................................J............................................... 379 Rozdział 8. Wzorce warstwy integracji................................................... ..............................................381 Data Access Object...................................................J.................................................. 381 Problem ...................................................J...................................................J.......... 381 Siły...................................................J...................................................J................. 382 Rozwiązanie ...................................................J...................................................J.... 382 Konsekwencje ...................................................J...................................................J. 405 Powiązane wzorce...................................................J............................................... 407 Service Activator ...................................................J...................................................J... 408 Problem ...................................................J...................................................J.......... 408 Siły...................................................J...................................................J................. 408 Rozwiązanie ...................................................J...................................................J.... 408 Konsekwencje ...................................................J...................................................J. 423 Powiązane wzorce...................................................J............................................... 423 Domain Store ...................................................J...................................................J....... 424 Problem ...................................................J...................................................J.......... 424 Siły...................................................J...................................................J................. 424 Rozwiązanie ...................................................J...................................................J.... 425 Konsekwencje ...................................................J...................................................J. 456 Powiązane wzorce...................................................J............................................... 456 Web Service Broker...................................................J.................................................. 457 Problem ...................................................J...................................................J.......... 457 Siły...................................................J...................................................J................. 458 Rozwiązanie ...................................................J...................................................J.... 458 Konsekwencje ...................................................J...................................................J. 475 Powiązane wzorce...................................................J............................................... 476 10 Spis treści Dodatki 477 Dodatek A Epilog................................................... ................................................... .................................479 Mikroarchitektura Web Worker ...................................................J.................................. 479 Czym są systemy organizacji pracy? ...................................................J..................... 479 Mikroarchitektura Web Worker ...................................................J............................. 482 Problem ...................................................J...................................................J.......... 482 Siły...................................................J...................................................J................. 484 Rozwiązanie ...................................................J...................................................J.... 485 Konsekwencje ...................................................J...................................................J. 511 Dodatek B Bibliografia ................................................... ................................................... ........................513 Dodatek C Licencja................................................... ................................................... ..............................517 Skorowidz ................................................... ................................................... ..........................................519 Omówienie wzorców J2EE W tym rozdziale: n n n n n n n n Czym jest wzorzec? Podejście warstwowe. Wzorce J2EE. Wprowadzenie do katalogu. Związki między wzorcami J2EE. Związki z innymi znanymi wzorcami. Mapa wzorców. Podsumowanie. Wzorce J2EE to zbiór rozwiązań dotyczących typowych problemów związanych z platfor- mą J2EE. Są efektem wiedzy i doświadczeniu architektów z Sun Java Center, którzy brali udział w tworzeniu wielu udanych projektów J2EE. Sun Java Center jest organizacją kon- sultingową skupiającą się na tworzeniu rozwiązań opartych na technologii Java. Zajmuje się rozwiązaniami dla platformy J2EE od początku jej istnienia koncentrując się przede wszyst- kim na takich aspektach ogólnie pojętego QoS (Quality of Service) jak skalowalność, dostęp- ność, wydajność, bezpieczeństwo, pewność i elastyczność. Wzorce opisują typowe problemy napotykane podczas tworzenia aplikacji J2EE i wskazują możliwe rozwiązania. Rozwiązania te powstały dzięki doświadczeniu zdobytemu w trakcie prac nad wieloma różnymi projektami i wymianie informacji między programistami. Wzor- ce zawierają istotę tych rozwiązań, a poza tym zostały już zoptymalizowane przez ich użyt- kowników. Można powiedzieć inaczej: wzorce wydobywają najważniejsze aspekty problemu i oferują rozwiązania dobrze przemyślane i ujednolicoine. W niniejszej książce zajmujemy się wzorcami pod kątem J2EE, a w szczególności kompo- nentami EJB, stronami JSP i serwletami. W trakcie pracy z klientami J2EE implementują- cymi różne komponenty poznaliśmy typowe problemy i znaleźliśmy dla nich optymalne roz- wiązania. Opracowaliśmy też najlepsze praktyki wykorzystywane do tworzenia komponen- tów J2EE. 106 Część II n Katalog wzorców J2EE Opisane wzorce stosują te najlepsze praktyki. Przedstawiono je w taki sposób, by w prosty sposób móc wykorzystać je w dowolnej aplikacji uwzględniając konkretne wymagania. Wzorce w usystematyzowany sposób omawiają sprawdzone techniki. Dzięki nim łatwiej jest skorzystać ze zweryfikowanych rozwiązań. Innymi słowy, dzięki wykorzystaniu wzor- ców tworzenie systemów opartych na J2EE staje się prositsze i szybsze. Czym jest wzorzec? W rozdziale 1. przedstawiliśmy kilka definicji wzorca sformułowanych przez różnych eksper- tów. Opisaliśmy także inne zagadnienia związane z wzorcami, na przykład zalety ich stoso- wania. Teraz jeszcze raz zajmiemy się tym tematem, ale pod kątem katalogu wzorców J2EE. W rozdziale 1. pojawiła się następująca definicja wzorca: często stosowane rozwiązanie ty- powych problemów w pewnym kontekście. Terminy kontekst, problem i rozwiązanie wymagają pewnego wyjaśnienia. Najpierw zaj- mijmy się kontekstem. Kontekst to środowisko, otoczenie, sytuacja lub pewne warunki, w których występuje problem. Czym jest problem? Problem to nierozstrzygnięte pytanie, czyli coś, co należy zbadać i rozwiązać. Zazwyczaj problem jest ograniczony kontekstem, w którym występuje. Rozwiązanie to odpowiedź na problem w danym kontekście pozwa- lająca go usunąć. Czy jednak posiadanie rozwiązania problemu w pewnym kontekście oznacza, że mamy już wzorzec? Niekoniecznie. Ważnym elementem jest też powtarzalność stosowanego rozwią- zania. Wzorzec jest użyteczny tylko wtedy, gdy może być stosowany wielokrotnie. Czy to wszystko? Niekoniecznie. Choć sama idea wzorca jest prosta, jego rzeczywista definicja nie jest już zadaniem łatwym. Aby dowiedzieć się więcej o wzorcach, ich historii i dziedzinach zastosowania polecamy inne książki lub zasoby internetowe. W naszym katalogu wzorzec jest opisany zgodnie z jego główną charakterystyką: problemem i rozwiązaniem, ale wspominamy też o kilku innych aspektach, jak siły i konsekwencje. Poszczególne elementy szablonu wzorców omawia pod- rozdział „Szablon wzorców”. Identyfikacja wzorca W Sun Java Center zajmowaliśmy się wieloma projektami J2EE i wkrótce zauważyliśmy, iż niektóre problemy pojawiają się w prawie wszystkich projektach. Co ważniejsze, rozwiązania tych problemów także były podobne. Choć strategie implementacyjne się różniły, ogólny zarys rozwiązania był taki sam. Opiszemy teraz pokrótcie, jak odkrywaliśmy wzorców. Gdy zauważamy, że problem i jego rozwiązanie pojawiają się kilkakrotnie, staramy się zi- dentyfikować i udokumentować jego charakterystykę, stosując szablon wzorców. Najpierw rozważamy tę początkową dokumentację jako kandydata na wzorzec. Nie dodajemy kan- dydatów do katalogu wzorców aż do momentu ich wielokrotnego wystąpienia w wielu pro- jektach. Sprawdzamy także, czy wzorzec ten nie został już zastosowany we wcześniejszych projektach. Rozdział 5. n Omówienie wzorców J2EE 107 Jako proces walidacji wzorca stosujemy zasadę trzech (Rule of Three); pod taką nazwą znana jest w społeczności programistów. Zasada ta określa kandydata na wzorzec może pojawić się w katalogu. Zgodnie z nią kandydat staje się pełnoprawnym wzorcem, gdy został zidentyfi- kowany w co najmniej trzech różnych systemach. Oczywiście zasada ta jest elastyczna, ale pomaga w identyfikacji wzorców. Często podobne rozwiązania mogą dotyczyć jednego wzorca. W trakcie prac nad wzorcem należy zastanowić się nad tym, w jaki sposób najlepiej z jego pomocą przekazać rozwią- zanie. Czasem wystarczy nadanie odpowiedniej nazwy, by wszyscy programiści od razu wiedzieli, o co chodzi. W takiej sytuacji warto spróbować udokumentować dwa podobne rozwiązania jako dwa różne wzorce. Z drugiej strony lepsze może się okazać przekazanie rozwiązania jako kombinacji wzorca i strategii. Wzorce a strategie Gdy rozpoczęliśmy dokumentowanie wzorców J2EE, staraliśmy się używać dość wysokiego poziomu abstrakcji. Jednocześnie każdy wzorzec zawierał różne strategie dotyczące szcze- gółów implementacji. Dzięki strategiom wzorzec dokumentował rozwiązanie na różnym poziomie abstrakcji. Niektóre z tych strategii mogłyby stanowić osobne wzorce, ale sądzili- śmy, że aktualna struktura szablonu najlepiej obrazuje relacje pomiędzy strategiami a wzor- cami, w których się zawierają. Choć cały czas toczyły się debaty dotyczące zamiany tych strategii na wzorce, ciągle opie- raliśmy się takim rozwiązaniom, gdyż uważaliśmy istniejącą dokumentację za przejrzystą. Oto kilka spostrzeżeń dotyczących relacji pomiędzy wzoricami a strategiami: n Wzorce istnieją na wyższym poziomie abstrakcji niż striategie. n Strategie stanowią najbardziej zalecane lub najczęstsze implementacje wzorców. n Strategie umożliwiają rozszerzenie wzorca. Programiścii odkrywają nowe sposoby implementacji wzorca, tworząc nowe strategie dla dobrize znanych wzorców. n Strategie ułatwiają komunikację, tworząc nazwy dla bardziiej szczegółowych aspektów rozwiązania. Podejście warstwowe Ponieważ katalog opisuje wzorce pomagające budować aplikacje działające na platformie J2EE, a platforma ta jest systemem wielowarstwowym, przyglądamy się systemowi pod ką- tem warstw. Warstwy stanowią logiczny podział zadań w systemie. Poszczególne warstwy mają zdefiniowane właściwe zakresy odpowiedzialności. Warstwy są od siebie logicznie oddzielone. Każda z warstw jest luźno związana z warstwami sąsiednimi. Cały system można przedstawić jako stos warstw (patrz rysunek 5.1). 108 Część II n Katalog wzorców J2EE Rysunek 5.1. Podejście warstwowe Warstwa klienta Warstwa ta reprezentuje wszystkie urządzenia albo systemy klienckie mające dostęp do sys- temu lub aplikacji. Klientem może być przeglądarka internetowa, aplikacja Javy lub inna, aplet Javy, telefon komórkowy z WAP, aplikacja sieciowa albo inne urządzenie, dla którego jeszcze nie ma nazwy. Może to być nawet proces wsadowyi. Warstwa prezentacji Warstwa ta zawiera całą logikę prezentacyjną wymaganą do obsługi klientów używających systemu. Warstwa ta odbiera żądania klienta, zapewnia system logowania, zarządza sesją, steruje dostępem do usług biznesowych, tworzy i dostarcza odpowiedzi do klienta. W tej war- stwie znajdują się serwlety i strony JSP. Pamiętajmy, że choć nie są one elementami inter- fejsu użytkownika, to takowe elementy tworzą. Warstwa biznesowa Warstwa biznesowa udostępnia usługi biznesowe wymagane przez klientów aplikacji. Warstwa ta zawiera dane i logikę biznesową. Zazwyczaj wewnątrz tej warstwy wykonywa- na jest największa liczba zadań związanych z przetwarzaniem biznesowym. Możliwe, że z powodu istnienia systemów zewnętrznych część przetwarzania będzie się odbywała na warstwie zasobów. Preferowanym sposobem implementacji obiektów biznesowych są kom- ponenty EJB. Warstwa integracji Ta warstwa odpowiada za komunikację z zewnętrznymi systemami i źródłami danych, na przykład bazami danych i aplikacjami zewnętrznymi (legacy applications). Warstwa bizne- sowa wykorzystuje warstwę integracji za każdym razem, gdy obiekt biznesowy potrzebuje Rozdział 5. n Omówienie wzorców J2EE 109 danych lub zasobów znajdujących się w warstwie zasobów. Komponenty z tej warstwy uży- wają JDBC, technologii konektorów J2EE (JCA) lub innego oprogramowania współpracu- jącego z warstwą zasobów. Warstwa zasobów Jest to warstwa zawierająca dane biznesowe i zewnętrzne zasoby, takie jak komputery ma- inframe lub systemy zewnętrzne (legacy systems), systemy B2B albo usługi w rodzaju au- toryzacji kart kredytowych. Wzorce J2EE Stosujemy podejście warstwowe, aby podzielić wzorce J2EE zgodnie z ich przeznaczeniem. Wzorce warstwy prezentacji są związane z serwletami i technologią JSP. Wzorce warstwy biznesowej zawierają wzorce związane z technologią EJB. Wzorce warstwy integracji do- tyczą JMS i JDBC (patrz rysunek 5.2 w dalszej części rozdiziału). Wzorce warstwy prezentacji Tabela 5.1 zawiera wzorce warstwy prezentacji wraz z kirótkim omówieniem każdego z nich. Tabela 5.1. Wzorce warstwy prezentacji Nazwa wzorca Opis Intercepting Filter Zajmuje się przetworzeniem żądania klienta po jego ępotrzymaniu i przy wysłaniu odpowiedzi. Front Controller Zapewnia scentralizowany kontroler zarządzający obsęługą żądań. Context Object Hermetyzuje stan aplikacji w sposób niezależny od pęrotokołu, w celu łatwego wykorzystania go w różnych warstwach aplikacji. Application Controller Centralizuje zarządzanie widokiem i akcjami aplikacęji. View Helper Zawiera logikę niezwiązaną z formatowaniem prezentaęcji w komponentach pomocniczych. Composite View Tworzy złożony widok z wielu komponentów składowych.ę Service to Worker Łączy komponent KURCVEJGT z wzorcami Front Controller i View Helper. Dispatcher View Łączy komponent KURCVEJGT z wzorcami Front Controller i View Helper, wstrzymując wiele zadań do czasu przetworzenia widoęku. Wzorce warstwy biznesowej Tabela 5.2 wymienia wzorce warstwy biznesowej wraz z krótkim omówieniem każdego z nich. 110 Część II n Katalog wzorców J2EE Tabela 5.2. Wzorce warstwy biznesowej Nazwa wzorca Opis Business Delegate Hermetyzuje dostęp do usług biznesowych. Service Locator Hermetyzuje kod wyszukiwania usługi i komponentów. Session Façade Application Service Business Object Composite Entity Hermetyzuje komponenty warstwy biznesowej i udostępęnia klientom dobrze zdefiniowany zestaw usług biznesowych. Centralizuje i łączy podstawowe mechanizmy aplikacjię w celu zapewnienia jednolitej warstwy usług. Oddziela logikę i dane biznesowe, tworząc podstawę męodelu obiektowego aplikacji. Implementuje trwałe obiekty biznesowe, stosując lokaęlne komponenty Entity i zwykłe obiekty Javy (POJOs). Transfer Object Przenosi dane między warstwami. Transfer Object Assembler Tworzy obiekty Transfer Object, korzystając z wielu źródeł danych. Value List Handler Obsługuje wyszukiwanie, buforuje wyniki w pamięci podęręcznej i umożliwia przeglądanie i wybieranie elementów z lęisty wartości. Wzorce warstwy integracji Tabela 5.3 wymienia wzorce warstwy integracji wraz z kirótkim omówieniem każdego z nich. Tabela 5.3. Wzorce warstwy integracji Nazwa wzorca Opis Data Acces Object Hermetyzuje dostęp do źródeł danych ukrywając szczegęóły implementacji. Service Activator Odbiera komunikaty i w sposób asynchroniczny wywołujęe usługi biznesowe. Domain Store Udostępnia mechanizmy utrwalania i odtwarzania obiekętów biznesowych. Web Service Broker Udostępnia usługi, używając XML i protokołów sieciowycęh. Wprowadzenie do katalogu Aby pomóc w zrozumieniu i użyciu wzorców J2EE z katalogu, proponujemy zapoznanie się z tym podrozdziałem przed zagłębieniem się w szczegóły poszczególnych wzorców. Wyjaśnimy terminologię stosowaną we wzorcach, sposób stosowania diagramów UML, stereotypów i szablonu wzorców. W skrócie wyjaśnimy, w jaki sposób używać wzorców. Przedstawimy też mapę ułatwiającą poruszanie się po wzoircach z katalogu. Rozdział 5. n Omówienie wzorców J2EE 111 Terminologia Osoby zatrudnione w firmach informatycznych, a w szczególności programiści tworzący systemy oparte na technologii Java, używają specyficznych terminów i akronimów. Choć wielu czytelników zapewne spotkało się z tymi pojęciami, niektóre z nich są wykorzysty- wane w różnych kontekstach. Aby uniknąć nieporozumień i zachować spójność, w tabeli 5.4 podajemy definicje wykorzystywanych terminów. Tabela 5.4. Terminologia Termin Opis lub definicja Używany BMP (Bean-managed Persistence) Strategia dotycząca komponentów Entity, w których programista implementuje logikę odpowiedzialną za trwałość komponentów Entity. we wzorcach warstwy biznesowej CMP (Container-managed Persistence) Strategia dotycząca komponentów Entity, w których zarządzanie trwałością komponentów Entity jest zadaniem kontenera. we wzorcach warstwy biznesowej dyspozytor (Dispatcher) EJB Do zadań kontrolera należy między innymi przekazywanie żądań klientów do odpowiednich widoków. Serwlety korzystają w tym celu ze standardowej klasy 4GSWGUV KURCVEJGT Mechanizm ten można umieścić w osobnym komponencie, zwanym dyspozytorem. Komponent Enterprise JavaBeans; może to być instancja komponentu sesyjnego lub Entity. Gdy stosujemy ten skrót, oznacza to, iż jest to komponenęt sesyjny lub Entity. fabryka (abstrakcyjna lub metoda fabryki) Wzorzec opisany w książce GoF dotyczący tworzenia obiektów lub rodzin obiektów. we wzorcach Dispatcher View i Service to Worker w wielu miejscach w niniejszej książce we wzorcach warstwy biznesowej i we wzorcu Data Access Object. fasada GoF Wzorzec dotyczący ukrywania złożoności, opisany w książce GoF. we wzorcu Session Façade Skrót od określenia Gang of Four (Banda Czworga), odnoszącego się do autorów popularnej książki 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 książce iterator Wzorzec zapewniający dostęp do poszczególnych elementów kolekcji, opisany w książce GoF. we wzorcu Value List Handler komponent sesyjny (Session Bean) Odnosi się do komponentu sesyjnego stanowego lub bezstanowego. Może się także odnosić w ogólności do interfejsu bazowego (home) i zdalnego (remote) oraz właściwej implementacji komponentu. we wzorcach warstwy biznesowej kontroler (Controller) Współdziała z klientem, steruje i zarządza obsługą żądań. we wzorcach warstwy prezentacji i warstwy biznesowej 112 Część II n Katalog wzorców J2EE Tabela 5.4. Terminologia (ciąg dalszy) Termin model Opis lub definicja Fizyczna albo logiczna reprezentacja systemu lub podsystemu. obiekt dostępu do danych (DAO) Obiekt ukrywający szczegóły implementacji dostępu do źródeł danych i systemów zewnętrznych. Używany we wzorcach warstwy biznesowej i warstwy prezentacji we wzorcach warstwy biznesowej i warstwy integracji obiekt niezależny Obiekt, który może istnieć niezależnie od innych i zarządza cyklem życia swych obiektów zależnych. we wzorcu Composite Entity obiekt transferowy (Transfer Object) Serializowalny obiekt Javy (POJO) używany do przesyłania danych z jednego obiektu (warstwy) do innego. Nie zawiera żadnych metod biznesowych. we wzorcach warstwy biznesowej obiekt zależny Obiekt, który nie może istnieć samodzielnie. Jego cyklem życia zarządza inny obiekt. pomocnik (Helper) Wykorzystywany przez kontroler i/lub widok. Na przykład kontroler lub widok może skorzystać z obiektu pomocnika w celu: pobrania zawartości, walidacji, zapisu modelu lub dostosowania go w celuę wyświetlenia. we wzorcach Business Delegate i Composite Entity we wzorcach warstwy prezentacji i we wzorcu Business Delegate proxy przedstawiciel (Delegate) singleton skryptlet Javy szablon Wzorzec w którym jeden obiekt ukrywa inny i steruje dostępem do niego, opisany w książce GoF. w wielu miejscach niniejszej książki Obiekt zastępujący inny — stanowi dla niego warstwę pośredniczącą. Przedstawiciel posiada cechy pośrednika oraz fasady. we wzorcu Business Delegate i w wielu innych wzorcach Wzorzec zapewniający tylko jedną instancję obiektu, opisany w książce GoF. w wielu miejscach w niniejszej książce Logika aplikacji osadzona bezpośrednio na stronie JSP. we wzorcach warstwy prezentacji Szablon tekstowy odnosi się do stałego tekstu w widoku JSP. Poza tym szablon może dotyczyć konkretnego układu komponentów tworzących widok. we wzorcach warstwy prezentacji we wzorcach warstwy biznesowej i warstwy integracji we wzorcach warstwy prezentacji trwały magazyn (Persistent Store) Reprezentuje trwały system przechowywania danych, np. RDBMS, ODBMS, systemy plików itp. widok (View) Widok odpowiada za graficzną i tekstową część wyświetlanego interfejsu. Współpracuje z pomocnikami, aby uzyskać dane potrzebne do utworzenia zawartości. Wykorzystuje także obiekty pomocników w celu wykonania dodatkowych zadań. złożenie (Composite) Obiekt złożony zawierający inne obiekty. Związany z wzorcem Composite z książki GoF (patrz dalsza część tabeli). we wzorcach Composite View i Composite Entity Rozdział 5. n Omówienie wzorców J2EE 113 Stosowanie języka UML W katalogu wzorców intensywnie korzystamy z diagramów UML, a w szczególności z na- stępujących typów diagramów: n n n Diagramy klas — używamy diagramów klas do przedstawienia struktury rozwiązania i struktury strategii implementacji. Stanowią statycizny obraz rozwiązania. Diagramy przebiegu (inaczej sekwencji lub interakcji) — te diagramy służą ido przedstawiania wzajemnych oddziaływań elementów rozwiąizania lub strategii. Stanowią dynamiczny obraz rozwiązania. Stereotypy — używamy stereotypów, aby wskazać różne typy obiektów i iich role w diagramach klas i interakcji. Lista stereotypów i iich znaczeń znajduje się w tabeli 5.5. Tabela 5.5. Stereotypy UML Stereotyp Znaczenie EJB Reprezentuje komponent Enterprise JavaBean; związany jest z obiektem biznesowym. Rolę tą pełni zazwyczaj komponent sesyjny lub Entityę. komponent sesyjny Reprezentuje komponent sesyjny jako całość bez określaęnia jego interfejsów ani implementacji. komponent Entity Reprezentuje komponent Entity jako całość bez określanęia jego interfejsów, implementacji ani klucza głównego. widok JSP serwlet Widok reprezentuje i wyświetla informacje przekazywane klientowi. Strona JSP; widok jest zazwyczaj zaimplementowany jako strona JSP. Serwlet Javy; kontroler jest zazwyczaj zaimplementowany jako serwlet. singleton Klasa posiadająca tylko jedną instancję zgodnie z wzorcem Singleton. własny znacznik (Custom Tag) Własne znaczniki JSP (podobnie jak komponenty JavaBean) węykorzystuje się do implementacji obiektów pomocniczych. Obiekt pomocnicęzy jest odpowiedzialny za takie zadania, jak zbieranie informacji wymaganych pręzez widok, lub za dostosowanie modelu danych do wyświetlenia. Pomocnik może po prostęu przekazać dane widokowi w postaci oryginalnej lub dokonać ich formatowania doę postaci odpowiedniej do wyświetlenia jako strona WWW. Wszystkie wzorce z katalogu zawierają diagram klas przedstawiający strukturę rozwiązania i diagram sekwencji prezentujący interakcje występujiące we wzorcu. Poza tym wzorce zawie- rające strategie stosują osobne diagramy dla poszczególnych strategii. Książki zawierające więcej informacji o języku UML wymieniiono w bibliografii. Stereotypy UML W trakcie zapoznawania się z wzorcami i ich diagramami z pewnością natkniemy się na ste- reotypy. Stereotypy są terminami stosowanymi przez projektantów i architektów. Wykorzy- stujemy te terminy, by precyzyjnie i prosto zaprezentować diagramy. Część z tych stereo- typów odwołuje się do przedstawionej wcześniej terminologii. Jako stereotypy uznajemy także nazwy wzorców i spełnianych przez nie ról, co pomiaga w ich wyjaśnieniu. 114 Część II n Katalog wzorców J2EE Szablon wzorców Wzorce J2EE są zdefiniowane zgodnie z szablonem wzorców. Szablon wzorców składa się z podrozdziałów prezentujących różne elementy danego wzorca. Warto zauważyć, że sta- raliśmy się nadać wszystkim wzorcom opisowe nazwy. Choć trudno jest zawrzeć całą istotę wzorca w jego nazwie, wydaje nam się, że udało się spełnić to zadanie. Podobnie jak nazwy w rzeczywistym świecie, nazwa wzorca informuje czyteilnika, jak z niego korzystać. Stosujemy szablon wzorców składający się z następujących iczęści: n Problem — opisuje zagadnienie projektowe, które musi rozstrziygnąć projektant. n Siły — wymienia powody lub motywy wpływające na problem i ijego rozwiązanie. Lista sił zawiera powody, dla których warto zastosować idany wzorzec. n Rozwiązanie — pokrótce omawia ideę rozwiązania i bardziej szczegółoiwo jego konkretne elementy. Ta część składa się z dwóch podrozdziiałów: n Struktura — za pomocą diagramów UML przedstawiana jest podstawowia struktura rozwiązania. Diagramy sekwencji przedstawiiają dynamiczne elementy rozwiązania. Pojawia się szczegółowy opis eleimentów oraz występujących zależności. n Strategie — opisuje różne sposoby implementacji wzorca. Podrozdiział „Wzorce a strategie” wyjaśnia potrzebę stosowania straitegii. Jeżeli strategię można pokazać na przykładzie kodu, przedstawiony zostaje odpowiedni fragment. Jeżeli fragment kodu jest długi, umieszczamyi go w sekcji Przykładowy kod. n Konsekwencje — omawia wady i zalety danego wzorca. Ogólnie ta częśić skupia się na wynikach zastosowania wzorca lub strategii i konsiekwencjach jego stosowania dla aplikacji. n Przykładowy kod — ta część zawiera przykładowe implementacje i listinigi dla wzorca lub strategii. Część jest opcjonalna, jeżeli caiły kod został wcześniej opisany podczas omawiania strategii. n Powiązane wzorce — zawiera listę innych wzorców z katalogu J2EE lub z iinnych źródeł, na przykład wzorce projektowe GoF. Poza nazwą wzoirca podajemy krótki opis jego związku z omawianym wzorcem. Związki między wzorcami J2EE Na pewnym etapie odkrywania wzorców projektanci i architekci zauważyli brak dobrego zrozumienia zasad łączenia wzorców w celu uzyskania większych rozwiązań. Rozwiązuje- my ten problem, podając graficzną reprezentację wzorców i związków między nimi. Dia- gram nosi nazwę diagramu związków wzorców J2EE i jest przedstawiony na rysunku 5.2. W epilogu przedstawiamy przykład użycia połączonych wzorców w celu realizacji przy- kładowych scenariuszy. Rozdział 5. n Omówienie wzorców J2EE 115 Rysunek 5.2. Związki wzorców J2EE Poszczególne wzorce posiadają własny kontekst, problem i rozwiązanie konkretnych zagad- nień. Warto się jednak najpierw ogarnąć i zrozumieć pełny obraz wzorców w celu lepszego ich zrozumienia i wykorzystania. Pamiętajmy o zdaniu Christophera Alexandra z rozdziału 1., w którym 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ą powiązane z innymi wzorcami. Zro- zumienie tych związków w trakcie projektowania rozwiąziania jest pomocne, gdyż: 116 Część II n Katalog wzorców J2EE n Umożliwia zastanowienie się, jakie inne problemy mogą siię pojawić, jeśli do rozwiązania problemu zastosujemy przedstawiony wzorziec. Jest to efekt domina: jakie problemy spowoduje modyfikacja architektury w cielu wprowadzenia wzorca? Warto zidentyfikować takie problemy przed rozpoczęcieim pisania kodu. n Umożliwia zapoznanie się ze związkami między wzorcami iw celu poznania alternatywnych rozwiązań. Po identyfikacji problemów spirawdzamy związki między wzorcami i zastanawiamy się nad rozwiązaniami ialternatywnymi. Być może nowe problemy można rozwiązać, wybierając inny wzorziec lub też stosując wybrany wzorzec w połączeniu z innym. Rysunek 5.2 przedstawia związki między wzorcami. Wzorzec Intercepting Filter przechwytuje nadchodzące żądania klientów, wysyła odpo- wiedzi i zajmuje się filtrowaniem. Filtry można dodawać i usuwać w dowolnym momen- cie (filtry deklarowane są w deskryptorze wdrożenia), stosując różne ich kombinacje. Po zakończeniu przetwarzania wstępnego lub końcowego ostatni filtr z grupy przekazuje ste- rowanie do właściwego obiektu docelowego. W przypadku żądań jest to najczęściej kon- troler, ale może to być także widok. Front Controller zawiera logikę przetwarzania występującą wewnątrz warstwy prezentacji, która w innym przypadku zostałaby błędnie umieszczona w widoku. Kontroler obsługuje żądania i zarządza pobieraniem zawartości, bezpieczeństwem, widokiem, nawigacją, wyko- rzystując obiekt dyspozytora w celu wybrania odpowiediniego widoku. Wzorzec Application Controller centralizuje sterowanie, pobieranie i wywoływanie widoku oraz wykonywanie poleceń. Podczas gdy wzorzec Front Controller działa jak centralny punkt dostępowy dla nadchodzących żądań, Application Controller jest odpowiedzialny za identyfikację i wywoływanie poleceń aplikacji oraz wyibór odpowiedniego widoku. Wzorzec Context Object hermetyzuje stan aplikacji w sposób niezależny od protokołu, aby mógł być bez przeszkód wymieniany między różnymi elementami aplikacji. Ułatwia to te- stowanie, gdyż zmniejsza się liczbę zależności od konkrietnego kontenera. Wzorzec View Helper służy oddzieleniu kodu związanego z formatowaniem od reszty logi- ki biznesowej. Sugeruje stosowanie komponentów pomocniczych do wykonywania zadań związanych z pobieraniem zawartości, jej walidacją oraz dostosowaniem do potrzeb wy- świetlania. Komponent widoku zawiera wtedy tylko elementy związane z tworzeniem pre- zentacji. Komponenty pomocnicze zazwyczaj komunikują się z usługami biznesowymi przez obiekty Business Deletate lub Application Service, natomiast sam widok może skła- dać się z wielu mniejszych komponentów tworzących ogólnyi szablon. Wzorzec Composite View dotyczy tworzenia widoku z wielu elementów jednostkowych. Mniejsze widoki (statyczne lub dynamiczne) łączy się w celu uzyskania jednego szablonu. Innymi przykładami połączonych wzorców są wzorce Service to Worker i Dispatcher View. Oba wzorce posiadają podobną strukturę, w skład której wchodzi kontroler współpracujący z dyspozytorem, widokami oraz obiektami pomocniczymi. Oba wzorce pełnią podobne role, ale różnią się wewnętrznym podziałem zadań. W odróżnieniu od wzorca Service to Worker, wzorzec Dispatcher View wstrzymuje przetwarzanie biznesowe aż do zakończenia przetwarzania widoku. Rozdział 5. n Omówienie wzorców J2EE 117 Wzorzec Business Delegate zmniejsza zależności między oddzielonymi warstwami i sta- nowi punkt dostępu do zdalnych usług warstwy biznesowej. Wzorzec ten może również stosować buforowanie danych w celu zwiększenia wydajności. Business Delegate istnieje w relacji z wzorcem Session Façade ukrywając szczegóły związane z korzystaniem z fasa- dy. Wzorzec Application Service wykorzystuje wzorzec Business Delegate w celu dostępu do fasady. Wzorzec Service Locator ukrywa szczegóły implementacji mechanizmów wyszukiwania komponentów oraz usług biznesowych. Wzorzec Business Delegate używa go w celu połączenia z odpowiednią Session Façade. Pozostali klienci, którzy muszą się połączyć z Session Façade lub innymi usługami warstwy biznesowej, również korzystają z wzorca Service Locator. Wzorzec Session Façade udostępnia klientom usługi biznesowe, ukrywając złożoność im- plementacji tych usług. Wzorzec ten może korzystać z obiektów Business Object oraz od- woływać się do różnych implementacji wzorca Application Service. Może także wykorzy- stywać wzorzec Value List Handler. Wzorzec Application Service zawiera wybrane mechanizmy udostępniając je w jednolitej formie usługom warstwy biznesowej. Wzorzec ten może wchodzić w interakcję z innymi usługami lub obiektami biznesowymi. Wzorzec może wywoływać inne implementacje Application Service, tworząc tym samym jedną z warstw usług aplikacji. Wzorzec Business Object tworzy model domenowy aplikacji przy wykorzystaniu modelu obiektowego. Wzorzec ten oddziela dane i logikę biznesową, tworząc osobną warstwę apli- kacji. Wzorzec zazwyczaj reprezentuje obiekty trwałe, które mogą być utrwalane i odtwa- rzane przy użyciu wzorca Domain Store. Wzorzec Composite Entity implementuje obiekty Business Object, stosując lokalne kompo- nenty Entity i zwykłe obiekty Javy (POJO). Wzorzec ten korzysta z wzorca Data Access Object gdy stosuje się trwałość zarządzaną przez komponenty i(BMP). Wzorzec Transfer Object pozwala na łatwą wymianę danych pomiędzy warstwami. Pozwala zredukować obciążenie sieci i zminimalizować liczbę wywoiłań między warstwami. Wzorzec Transfer Object Assembler tworzy złożone obiekty Transfer Object, korzystając z wielu źródeł danych. Źródła te mogą być komponentami EJB, obiektami DAO lub zwy- kłymi obiektami Javy. Wzorzec jest najbardziej użyteczny, gdy klient musi pobrać dane właściwe dla modelu aplikacji lub jego części. Wzorzec Value List Handler używa wzorca iteratora [GoF] w celu wykonania i przetwo- rzenia wyników zapytań do baz danych. Wzorzec buforuje wyniki zapytań i w razie potrze- by przesyła klientowi podzbiór wyników. Stosując ten wzorzec, unikamy narzutu związa- nego z wyszukiwaniem dużej liczby komponentów Entity. Wzorzec używa obiektów DAO w celu wykonania zapytań i pobrania wyników z trwałegoi magazynu danych. Wzorzec Data Access Object pozwala na oddzielenie warstwy biznesowej i zasobów. Ukry- wa całą logikę dostępu do danych związaną z tworzeniem, pobieraniem, usuwaniem i aktu- alizacją danych z trwałego magazynu. Wzorzec do wysyłania i odbierania danych używa obiektów Transfer Object. 118 Część II n Katalog wzorców J2EE Wzorzec Service Activator pozwala na asynchroniczne przetwarzanie z wykorzystaniem JMS. Wzorzec może korzystać z wzorców: Application Service, Session Façade i Business Object. Można zastosować kilka obiektów Service Activator, aby zapewnić współbieżne przetwarzanie asynchroniczne dla zadań długoterminowyich. Wzorzec Domain Store stanowi mechanizm zapewniania trwałości dla modelu obiektowego. Stosuje i łączy kilka innych wzorców, między innymi Data Access Object. Wzorzec Web Service Broker udostępnia jedną lub kilka usług aplikacji zewnętrznym klientom jako web services, stosując język XML i standardowe protokoły. Wzorzec współ- pracuje z wzorcami Application Service i Session Façade. Wykorzystuje jeden lub kilka wzorców Service Activator do przeprowadzenia asynchronicznego przetwarzania iżądania. Związki z innymi znanymi wzorcami Istnieje znaczna ilość dokumentacji związanej z wzorcami projektowymi. Wzorce w po- szczególnych książkach opisywane są na różnym poziomie abstrakcji. Istnieją wzorce ar- chitektury, projektowe, analizy i programowania. Najbardziej znaną książką dotyczącą wzorców jest Design Patterns: Elements of Reusable Object-Oriented Software [GoF]. Za- warte w niej wzorce stanowią rozwiązania dotyczące projektowania obiektowego. Odnosi- my się także do wzorców z książki Patterns of Enterprise Application Architecture [PEAA] autorstwa Martina Fowlera. Nasz katalog wzorców zawiera wzorce opisujące strukturę aplikacji i elementy projektu. Wspólnym mianownikiem jest opis wzorców pod kątem platformy J2EE. W pewnych przypadkach wzorce z katalogu ba
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

J2EE. Wzorce projektowe. Wydanie 2
Autor:
, ,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: