SlideShare a Scribd company logo
1 of 26
Download to read offline
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   J2EE. Wzorce
                                         projektowe. Wydanie 2
           KATALOG KSI¥¯EK
                                         Autor: Deepak Alur, John Crupi, Dan Malks
                      KATALOG ONLINE     T³umaczenie: Rafa³ Joñca
                                         ISBN: 83-7361-344-7
       ZAMÓW DRUKOWANY KATALOG           Tytu³ orygina³u: Core J2EE Patterns.
                                         Best Practices and Design Strategies, 2nd Edition
                                         Format: B5, stron: 518
              TWÓJ KOSZYK
                    DODAJ DO KOSZYKA     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
         CENNIK I INFORMACJE             J2EE zawiera 21 wzorców i o wiele wiêcej strategii, przy wykorzystaniu których
                                         powstaj¹ najlepsze rozwi¹zania programistyczne.
                   ZAMÓW INFORMACJE      „J2EE. Wzorce projektowe. Wydanie drugie” zawiera opis nastêpuj¹cych zagadnieñ:
                     O NOWO CIACH           • 21 wzorców projektowych J2EE — znane i w pe³ni sprawdzone oraz nowe wzorce
                                              zapewniaj¹ce najlepsze rozwi¹zania dla aplikacji biznesowych
                       ZAMÓW CENNIK         • 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
                 CZYTELNIA                  • sposoby refaktoryzacji poprawiaj¹ce istniej¹ce projekty
                                            • diagramy UML ilustruj¹ce przedstawiane zagadnienia
          FRAGMENTY KSI¥¯EK ONLINE          • 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
Wydawnictwo Helion                       w projektach biznesowych i us³ugach sieciowych. Pisze artyku³y do czasopism
ul. Chopina 6                            bran¿owych, jest tak¿e wspó³autorem ksi¹¿ek o Javie, wzorcach i technologii J2EE.
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
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? ........................................................................................................... 24
       Czym są wzorce? .......................................................................................................... 24
          Odniesienie historyczne ........................................................................................... 24
          Definiowanie wzorca ................................................................................................ 25
          Kategoryzacja wzorców............................................................................................. 26
       Katalog wzorców J2EE ................................................................................................... 27
          Ciągła ewolucja ....................................................................................................... 27
          Jak korzystać z katalogu wzorców? ............................................................................ 28
          Zalety stosowania wzorców....................................................................................... 29
       Wzorce, szkielety i ponowne użycie elementów ................................................................ 31
       Podsumowanie ............................................................................................................. 31

  Rozdział 2. Projektowanie warstwy prezentacji i złe praktyki ............................................................ 33
       Zagadnienia projektowe warstwy prezentacji.................................................................... 33
           Zarządzanie sesją.................................................................................................... 33
           Kontrola dostępu klienta .......................................................................................... 36
           Walidacja ................................................................................................................ 40
           Właściwości klas pomocniczych — integralność i spójność ......................................... 42
       Złe praktyki związane z warstwą prezentacji .................................................................... 44
           Kod sterujący w wielu widokach ................................................................................ 45
           Udostępnianie struktur danych warstwy prezentacji warstwie biznesowej...................... 45
           Udostępnianie struktur danych warstwy prezentacji obiektom domeny.......................... 46
           Duplikacja wysyłanych formularzy .............................................................................. 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....................................................................... 48
              Użycie skryptletów w widoku ..................................................................................... 48

    Rozdział 3. Projektowanie warstwy biznesowej i złe praktyki ............................................................ 53
         Zagadnienia projektowe warstwy biznesowej ................................................................... 53
             Korzystanie z komponentów sesyjnych ...................................................................... 53
             Korzystanie z komponentów Entity ............................................................................ 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 .................................................................. 61
             Osadzanie wyszukiwania usług u klienta .................................................................... 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 ............................................................ 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 ................................................................................. 69
            Wprowadzenie kontrolera ......................................................................................... 69
            Wprowadzenie tokenu synchronizującego................................................................... 71
            Podział logiki na niezależne fragmenty ....................................................................... 75
            Ukrycie szczegółów warstwy prezentacji przed warstwą biznesową ............................... 80
            Usunięcie konwersji z widoku.................................................................................... 84
            Ukrywanie zasobów przed klientem ........................................................................... 87
         Refaktoryzacja warstwy biznesowej i warstwy integracji .................................................... 90
            Ukrycie komponentów Entity za komponentami sesyjnymi ........................................... 90
            Wprowadzenie obiektów Business Delegate............................................................... 91
            Łączenie komponentów sesyjnych ............................................................................. 92
            Redukcja komunikacji między komponentami Entity .................................................... 94
            Przeniesienie logiki biznesowej do warstwy komponentów sesyjnych ............................ 95
         Ogólne udoskonalanie projektu ...................................................................................... 96
            Wydzielenie kodu dostępu do danych ........................................................................ 96
            Refaktoryzacja architektury z wykorzystaniem warstw.................................................. 98
            Stosowanie puli połączeń ....................................................................................... 100


Część II Katalog wzorców J2EE                                                                                                                 103
         Czym jest wzorzec? ..................................................................................................... 106
            Identyfikacja wzorca ............................................................................................... 106
            Wzorce a strategie ................................................................................................. 107
         Podejście warstwowe .................................................................................................. 107
         Wzorce J2EE............................................................................................................... 109
            Wzorce warstwy prezentacji .................................................................................... 109
Spis treści            7

        Wzorce warstwy biznesowej .................................................................................... 109
        Wzorce warstwy integracji ....................................................................................... 110
     Wprowadzenie do katalogu .......................................................................................... 110
        Terminologia ......................................................................................................... 111
        Stosowanie języka UML.......................................................................................... 113
        Szablon wzorców ................................................................................................... 114
     Związki między wzorcami J2EE ..................................................................................... 114
     Związki z innymi znanymi wzorcami............................................................................... 118
     Mapa wzorców ............................................................................................................ 118
     Podsumowanie ........................................................................................................... 123

Rozdział 6. Wzorce warstwy prezentacji ..............................................................................................125
     Intercepting Filter ........................................................................................................ 125
         Problem ................................................................................................................ 125
         Siły....................................................................................................................... 126
         Rozwiązanie .......................................................................................................... 126
         Konsekwencje ....................................................................................................... 141
         Powiązane wzorce.................................................................................................. 143
     Front Controller........................................................................................................... 143
         Problem ................................................................................................................ 143
         Siły....................................................................................................................... 144
         Rozwiązanie .......................................................................................................... 144
         Konsekwencje ....................................................................................................... 154
         Powiązane wzorce.................................................................................................. 155
     Context Object ............................................................................................................ 155
         Problem ................................................................................................................ 155
         Siły....................................................................................................................... 156
         Rozwiązanie .......................................................................................................... 156
         Konsekwencje ....................................................................................................... 173
         Powiązane wzorce.................................................................................................. 173
     Application Controller .................................................................................................. 174
         Problem ................................................................................................................ 174
         Siły....................................................................................................................... 174
         Rozwiązanie .......................................................................................................... 174
         Konsekwencje ....................................................................................................... 200
         Powiązane wzorce.................................................................................................. 201
     View Helper ................................................................................................................ 201
         Problem ................................................................................................................ 201
         Siły....................................................................................................................... 202
         Rozwiązanie .......................................................................................................... 202
         Konsekwencje ....................................................................................................... 217
         Powiązane wzorce.................................................................................................. 220
     Composite View .......................................................................................................... 220
         Problem ................................................................................................................ 220
         Siły....................................................................................................................... 220
         Rozwiązanie .......................................................................................................... 221
         Konsekwencje ....................................................................................................... 228
         Przykładowy kod .................................................................................................... 229
         Powiązane wzorce.................................................................................................. 231
     Service to Worker........................................................................................................ 231
         Problem ................................................................................................................ 231
         Siły....................................................................................................................... 232
8       Spis treści

           Rozwiązanie .......................................................................................................... 232
           Konsekwencje ....................................................................................................... 236
           Przykładowy kod .................................................................................................... 236
           Powiązane wzorce.................................................................................................. 241
        Dispatcher View.......................................................................................................... 241
           Problem ................................................................................................................ 241
           Siły....................................................................................................................... 241
           Rozwiązanie .......................................................................................................... 242
           Konsekwencje ....................................................................................................... 246
           Przykładowy kod .................................................................................................... 247
           Powiązane wzorce.................................................................................................. 251

    Rozdział 7. Wzorce warstwy biznesowej .............................................................................................253
        Business Delegate...................................................................................................... 253
           Problem ................................................................................................................ 253
           Siły....................................................................................................................... 254
           Rozwiązanie .......................................................................................................... 254
           Konsekwencje ....................................................................................................... 258
           Przykładowy kod .................................................................................................... 260
           Powiązane wzorce.................................................................................................. 263
        Service Locator........................................................................................................... 263
           Problem ................................................................................................................ 263
           Siły....................................................................................................................... 264
           Rozwiązanie .......................................................................................................... 264
           Konsekwencje ....................................................................................................... 272
           Przykładowy kod .................................................................................................... 274
           Powiązane wzorce.................................................................................................. 283
        Session Façade .......................................................................................................... 284
           Problem ................................................................................................................ 284
           Siły....................................................................................................................... 284
           Rozwiązanie .......................................................................................................... 285
           Konsekwencje ....................................................................................................... 288
           Przykładowy kod .................................................................................................... 289
           Powiązane wzorce.................................................................................................. 295
        Application Service...................................................................................................... 296
           Problem ................................................................................................................ 296
           Siły....................................................................................................................... 297
           Rozwiązanie .......................................................................................................... 297
           Konsekwencje ....................................................................................................... 304
           Przykładowy kod .................................................................................................... 305
           Powiązane wzorce.................................................................................................. 310
        Business Object ......................................................................................................... 310
           Problem ................................................................................................................ 310
           Siły....................................................................................................................... 311
           Rozwiązanie .......................................................................................................... 312
           Konsekwencje ....................................................................................................... 321
           Przykładowy kod .................................................................................................... 322
           Powiązane wzorce.................................................................................................. 324
        Composite Entity......................................................................................................... 324
           Problem ................................................................................................................ 324
           Siły....................................................................................................................... 326
Spis treści             9

        Rozwiązanie .......................................................................................................... 326
        Konsekwencje ....................................................................................................... 334
        Przykładowy kod .................................................................................................... 335
        Powiązane wzorce.................................................................................................. 343
     Transfer Object ........................................................................................................... 344
        Problem ................................................................................................................ 344
        Siły....................................................................................................................... 344
        Rozwiązanie .......................................................................................................... 345
        Konsekwencje ....................................................................................................... 352
        Przykładowy kod .................................................................................................... 353
        Powiązane wzorce.................................................................................................. 358
     Transfer Object Assembler........................................................................................... 359
        Problem ................................................................................................................ 359
        Siły....................................................................................................................... 359
        Rozwiązanie .......................................................................................................... 359
        Konsekwencje ....................................................................................................... 363
        Przykładowy kod .................................................................................................... 363
        Powiązane wzorce.................................................................................................. 367
     Value List Handler ...................................................................................................... 367
        Problem ................................................................................................................ 367
        Siły....................................................................................................................... 368
        Rozwiązanie .......................................................................................................... 368
        Konsekwencje ....................................................................................................... 373
        Przykładowy kod .................................................................................................... 374
        Powiązane wzorce.................................................................................................. 379

Rozdział 8. Wzorce warstwy integracji.................................................................................................381
     Data Access Object..................................................................................................... 381
        Problem ................................................................................................................ 381
        Siły....................................................................................................................... 382
        Rozwiązanie .......................................................................................................... 382
        Konsekwencje ....................................................................................................... 405
        Powiązane wzorce.................................................................................................. 407
     Service Activator ......................................................................................................... 408
        Problem ................................................................................................................ 408
        Siły....................................................................................................................... 408
        Rozwiązanie .......................................................................................................... 408
        Konsekwencje ....................................................................................................... 423
        Powiązane wzorce.................................................................................................. 423
     Domain Store ............................................................................................................. 424
        Problem ................................................................................................................ 424
        Siły....................................................................................................................... 424
        Rozwiązanie .......................................................................................................... 425
        Konsekwencje ....................................................................................................... 456
        Powiązane wzorce.................................................................................................. 456
     Web Service Broker..................................................................................................... 457
        Problem ................................................................................................................ 457
        Siły....................................................................................................................... 458
        Rozwiązanie .......................................................................................................... 458
        Konsekwencje ....................................................................................................... 475
        Powiązane wzorce.................................................................................................. 476
10        Spis treści


Dodatki                                                                                                                                                   477
     Dodatek A Epilog.......................................................................................................................................479
          Mikroarchitektura Web Worker ..................................................................................... 479
             Czym są systemy organizacji pracy? ........................................................................ 479
             Mikroarchitektura Web Worker ................................................................................ 482
             Problem ................................................................................................................ 482
             Siły....................................................................................................................... 484
             Rozwiązanie .......................................................................................................... 485
             Konsekwencje ....................................................................................................... 511

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

     Dodatek C Licencja....................................................................................................................................517

     Skorowidz ................................................................................................................................................519
Omówienie wzorców J2EE
W tym rozdziale:
  n   Czym jest wzorzec?
  n   Podejście warstwowe.
  n   Wzorce J2EE.
  n   Wprowadzenie do katalogu.
  n   Związki między wzorcami J2EE.
  n   Związki z innymi znanymi wzorcami.
  n   Mapa wzorców.
  n   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 ujednolicone.

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ę prostsze 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ótce, 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 wzorcami a strategiami:
      n   Wzorce istnieją na wy szym poziomie abstrakcji ni strategie.
      n   Strategie stanowią najbardziej zalecane lub najczęstsze implementacje wzorców.
      n   Strategie umo liwiają rozszerzenie wzorca. Programiści odkrywają nowe sposoby
          implementacji wzorca, tworząc nowe strategie dla dobrze znanych wzorców.
      n   Strategie ułatwiają komunikację, tworząc nazwy dla bardziej 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 wsadowy.

       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 rozdziału).


Wzorce warstwy prezentacji
       Tabela 5.1 zawiera wzorce warstwy prezentacji wraz z kró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 protokołu, w celu łatwego
                            wykorzystania go w ró nych warstwach aplikacji.
  Application Controller    Centralizuje zarządzanie widokiem i akcjami aplikacji.
  View Helper               Zawiera logikę niezwiązaną z formatowaniem prezentacji 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 widoku.



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                Hermetyzuje komponenty warstwy biznesowej i udostępnia klientom
                                dobrze zdefiniowany zestaw usług biznesowych.
  Application Service           Centralizuje i łączy podstawowe mechanizmy aplikacji w celu zapewnienia
                                jednolitej warstwy usług.
  Business Object               Oddziela logikę i dane biznesowe, tworząc podstawę modelu obiektowego
                                aplikacji.
  Composite Entity              Implementuje trwałe obiekty biznesowe, stosując lokalne 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 podręcznej
                                i umo liwia przeglądanie i wybieranie elementów z listy wartości.



Wzorce warstwy integracji
       Tabela 5.3 wymienia wzorce warstwy integracji wraz z kró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łuje usługi
                                biznesowe.
  Domain Store                  Udostępnia mechanizmy utrwalania i odtwarzania obiektów biznesowych.
  Web Service Broker            Udostępnia usługi, u ywając XML i protokołów sieciowych.




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 wzorcach 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                      Strategia dotycząca komponentów Entity, w których      we wzorcach warstwy
  (Bean-managed            programista implementuje logikę odpowiedzialną         biznesowej
  Persistence)             za trwałość komponentów Entity.
  CMP                      Strategia dotycząca komponentów Entity, w których      we wzorcach warstwy
  (Container-managed       zarządzanie trwałością komponentów Entity jest         biznesowej
  Persistence)             zadaniem kontenera.
  dyspozytor               Do zadań kontrolera nale y między innymi               we wzorcach
  (Dispatcher)             przekazywanie ądań klientów do odpowiednich            Dispatcher View
                           widoków. Serwlety korzystają w tym celu ze             i Service to Worker
                           standardowej klasy 4GSWGUV&KURCVEJGT Mechanizm
                           ten mo na umieścić w osobnym komponencie,
                           zwanym dyspozytorem.
  EJB                      Komponent Enterprise JavaBeans; mo e to być            w wielu miejscach
                           instancja komponentu sesyjnego lub Entity. Gdy         w niniejszej ksią ce
                           stosujemy ten skrót, oznacza to, i jest to komponent
                           sesyjny lub Entity.
  fabryka (abstrakcyjna    Wzorzec opisany w ksią ce GoF dotyczący                we wzorcach warstwy
  lub metoda fabryki)      tworzenia obiektów lub rodzin obiektów.                biznesowej i we wzorcu
                                                                                  Data Access Object.
  fasada                   Wzorzec dotyczący ukrywania zło oności, opisany        we wzorcu Session
                           w ksią ce GoF.                                         Façade
  GoF                      Skrót od określenia Gang of Four (Banda Czworga),      w wielu miejscach
                           odnoszącego się do autorów popularnej ksią ki          w niniejszej ksią ce
                           o wzorcach projektowych (Design Patterns:
                           Elements of Reusable Object-Oriented Software,
                           autorzy: Erich Gamma, Richard Helm, Ralph
                           Johnson i John Vlissides [GoF]).
  iterator                 Wzorzec zapewniający dostęp do poszczególnych          we wzorcu Value List
                           elementów kolekcji, opisany w ksią ce GoF.             Handler
  komponent sesyjny        Odnosi się do komponentu sesyjnego stanowego lub       we wzorcach warstwy
  (Session Bean)           bezstanowego. Mo e się tak e odnosić w ogólności       biznesowej
                           do interfejsu bazowego (home) i zdalnego (remote)
                           oraz właściwej implementacji komponentu.
  kontroler (Controller)   Współdziała z klientem, steruje i zarządza obsługą     we wzorcach warstwy
                           ądań.                                                  prezentacji i warstwy
                                                                                  biznesowej
112    Część II n Katalog wzorców J2EE

Tabela 5.4. Terminologia (ciąg dalszy)

  Termin                  Opis lub definicja                                    U ywany
  model                   Fizyczna albo logiczna reprezentacja systemu lub      we wzorcach warstwy
                          podsystemu.                                           biznesowej i warstwy
                                                                                prezentacji
  obiekt dostępu          Obiekt ukrywający szczegóły implementacji dostępu     we wzorcach warstwy
  do danych (DAO)         do źródeł danych i systemów zewnętrznych.             biznesowej i warstwy
                                                                                integracji
  obiekt niezale ny       Obiekt, który mo e istnieć niezale nie od innych      we wzorcu Composite
                          i zarządza cyklem ycia swych obiektów zale nych.      Entity
  obiekt transferowy      Serializowalny obiekt Javy (POJO) u ywany             we wzorcach warstwy
  (Transfer Object)       do przesyłania danych z jednego obiektu (warstwy)     biznesowej
                          do innego. Nie zawiera adnych metod biznesowych.
  obiekt zale ny          Obiekt, który nie mo e istnieć samodzielnie. Jego     we wzorcach Business
                          cyklem ycia zarządza inny obiekt.                     Delegate i Composite
                                                                                Entity
  pomocnik (Helper)       Wykorzystywany przez kontroler i/lub widok.           we wzorcach warstwy
                          Na przykład kontroler lub widok mo e skorzystać       prezentacji i we wzorcu
                          z obiektu pomocnika w celu: pobrania zawartości,      Business Delegate
                          walidacji, zapisu modelu lub dostosowania go w celu
                          wyświetlenia.
  proxy                   Wzorzec w którym jeden obiekt ukrywa inny i steruje   w wielu miejscach
                          dostępem do niego, opisany w ksią ce GoF.             niniejszej ksią ki
  przedstawiciel          Obiekt zastępujący inny — stanowi dla niego           we wzorcu Business
  (Delegate)              warstwę pośredniczącą. Przedstawiciel posiada cechy   Delegate i w wielu
                          pośrednika oraz fasady.                               innych wzorcach
  singleton               Wzorzec zapewniający tylko jedną instancję obiektu,   w wielu miejscach
                          opisany w ksią ce GoF.                                w niniejszej ksią ce
  skryptlet Javy          Logika aplikacji osadzona bezpośrednio na stronie     we wzorcach warstwy
                          JSP.                                                  prezentacji
  szablon                 Szablon tekstowy odnosi się do stałego tekstu         we wzorcach warstwy
                          w widoku JSP. Poza tym szablon mo e dotyczyć          prezentacji
                          konkretnego układu komponentów tworzących
                          widok.
  trwały magazyn          Reprezentuje trwały system przechowywania danych,     we wzorcach warstwy
  (Persistent Store)      np. RDBMS, ODBMS, systemy plików itp.                 biznesowej i warstwy
                                                                                integracji
  widok (View)            Widok odpowiada za graficzną i tekstową               we wzorcach warstwy
                          część wyświetlanego interfejsu. Współpracuje          prezentacji
                          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     we wzorcach
                          z wzorcem Composite z ksią ki GoF (patrz dalsza       Composite View
                          część tabeli).                                        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   Diagramy klas — u ywamy diagramów klas do przedstawienia struktury rozwiązania
               i struktury strategii implementacji. Stanowią statyczny obraz rozwiązania.
           n   Diagramy przebiegu (inaczej sekwencji lub interakcji) — te diagramy słu ą do
               przedstawiania wzajemnych oddziaływań elementów rozwiązania lub strategii.
               Stanowią dynamiczny obraz rozwiązania.
           n   Stereotypy — u ywamy stereotypów, aby wskazać ró ne typy obiektów i ich role
               w diagramach klas i interakcji. Lista stereotypów i ich 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              Reprezentuje komponent sesyjny jako całość bez określania jego interfejsów
 sesyjny                ani implementacji.
 komponent Entity       Reprezentuje komponent Entity jako całość bez określania jego interfejsów,
                        implementacji ani klucza głównego.
 widok                  Widok reprezentuje i wyświetla informacje przekazywane klientowi.
 JSP                    Strona JSP; widok jest zazwyczaj zaimplementowany jako strona JSP.
 serwlet                Serwlet Javy; kontroler jest zazwyczaj zaimplementowany jako serwlet.
 singleton              Klasa posiadająca tylko jedną instancję zgodnie z wzorcem Singleton.
 własny znacznik        Własne znaczniki JSP (podobnie jak komponenty JavaBean) wykorzystuje się do
 (Custom Tag)           implementacji obiektów pomocniczych. Obiekt pomocniczy jest odpowiedzialny za
                        takie zadania, jak zbieranie informacji wymaganych przez widok, lub za dostosowanie
                        modelu danych do wyświetlenia. Pomocnik mo e po prostu 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ępują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 wymieniono 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 pomaga 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 czytelnika, jak z niego korzystać.

      Stosujemy szablon wzorców składający się z następujących części:
        n   Problem — opisuje zagadnienie projektowe, które musi rozstrzygnąć projektant.
        n   Siły — wymienia powody lub motywy wpływające na problem i jego rozwiązanie.
            Lista sił zawiera powody, dla których warto zastosować dany wzorzec.
        n   Rozwiązanie — pokrótce omawia ideę rozwiązania i bardziej szczegółowo jego
            konkretne elementy. Ta część składa się z dwóch podrozdziałów:
              n   Struktura — za pomocą diagramów UML przedstawiana jest podstawowa
                  struktura rozwiązania. Diagramy sekwencji przedstawiają dynamiczne
                  elementy rozwiązania. Pojawia się szczegółowy opis elementów oraz
                  występujących zale ności.
              n   Strategie — opisuje ró ne sposoby implementacji wzorca. Podrozdział
                  „Wzorce a strategie” wyjaśnia potrzebę stosowania strategii. Je eli strategię
                  mo na pokazać na przykładzie kodu, przedstawiony zostaje odpowiedni
                  fragment. Je eli fragment kodu jest długi, umieszczamy go w sekcji
                  Przykładowy kod.
        n   Konsekwencje — omawia wady i zalety danego wzorca. Ogólnie ta część skupia się
            na wynikach zastosowania wzorca lub strategii i konsekwencjach jego stosowania
            dla aplikacji.
        n   Przykładowy kod — ta część zawiera przykładowe implementacje i listingi dla
            wzorca lub strategii. Część jest opcjonalna, je eli cały kod został wcześniej opisany
            podczas omawiania strategii.
        n   Powiązane wzorce — zawiera listę innych wzorców z katalogu J2EE lub z innych
            źródeł, na przykład wzorce projektowe GoF. Poza nazwą wzorca 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ązania jest pomocne, gdy :
116   Część II n Katalog wzorców J2EE

        n   Umo liwia zastanowienie się, jakie inne problemy mogą się pojawić, jeśli do
            rozwiązania problemu zastosujemy przedstawiony wzorzec. Jest to efekt domina:
            jakie problemy spowoduje modyfikacja architektury w celu wprowadzenia wzorca?
            Warto zidentyfikować takie problemy przed rozpoczęciem pisania kodu.
        n   Umo liwia zapoznanie się ze związkami między wzorcami w celu poznania
            alternatywnych rozwiązań. Po identyfikacji problemów sprawdzamy związki
            między wzorcami i zastanawiamy się nad rozwiązaniami alternatywnymi. Być
            mo e nowe problemy mo na rozwiązać, wybierając inny wzorzec 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 odpowiedniego 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 wybó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 konkretnego 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ólny 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 (BMP).

Wzorzec Transfer Object pozwala na łatwą wymianę danych pomiędzy warstwami. Pozwala
zredukować obcią enie sieci i zminimalizować liczbę wywoł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łego 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ługoterminowych.

      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 ą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 bazują na wzorcach istniejących w literaturze lub są z nimi
      związane. W takiej sytuacji nazwa powszechnie przyjętego wzorca stanowi część nazwy
      wzorca J2EE lub te nazwę tę podajemy w podrozdziałach „Powiązane wzorce”. Na przykład
      pewne wzorce bazują na wzorcach z ksią ki GoF, ale są omawiane w kontekście platformy
      J2EE. W takich przypadkach nazwa wzorca J2EE zawiera tak e nazwę wzorca z ksią ki
      GoF, a odpowiednie odwołanie znajduje się w podrozdziale „Powiązane wzorce”.



Mapa wzorców
      W tym podrozdziale przedstawimy listę typowych wymagań co do aplikacji napotykanych
      w trakcie tworzenia rozwiązań wykorzystujących platformę J2EE. W skrócie podajemy
      wymagania lub motywacje, zamieszczając obok jeden lub kilka wzorców związanych z tym
      zagadnieniem. Choć nie jest to lista wyczerpująca wszystkie mo liwości, pozwala łatwo
      określić, jaki wzorzec zastosować w celu rozwiązania konkretnego problemu.

      Tabela 5.6 zawiera zagadnienia związane na ogół z wzorcami warstwy prezentacji wraz z za-
      znaczeniem, którego wzorca nale y u yć.
Rozdział 5. n Omówienie wzorców J2EE          119

Tabela 5.6. Wzorce warstwy prezentacji

  Jeśli szukamy sposobu na ...                     Oto rozwiązanie...
  wstępne lub końcowe przetwarzanie ądań           wzorzec Intercepting Filter
  dodanie logowania, testowania lub innego         wzorzec Front Controller
  zachowania wykonywanego dla wszystkich           wzorzec Intercepting Filter
   ądań
  centralizację sterowania obsługą ądań            wzorzec Front Controller
                                                   wzorzec Intercepting Filter
                                                   wzorzec Application Controller
  utworzenie ogólnego interfejsu poleceń           wzorzec Front Controller
  lub obiektu kontekstu w celu zmniejszenia        wzorzec Application Controller
  zale ności między komponentami sterującymi
  i pomocniczymi                                   wzorzec Context Object

  implementację kontrolera jako serwletu           wzorzec Front Controller
  lub strony JSP
  tworzenie widoku z wielu podwidoków              wzorzec Composite View
  implementację widoku jako serwletu               wzorzec View Helper
  lub strony JSP
  podział modelu i widoku                          wzorzec View Helper
  ukrycie logiki przetwarzania danych, związanej   wzorzec View Helper
  z warstwą prezentacji
  implementację komponentów pomocniczych           wzorzec View Helper
  jako JavaBeans lub znaczniki własne
  łączenie kilku wzorców warstwy prezentacji       wzorzec Intercepting Filter
                                                   wzorzec Dispatcher View
  miejsce implementacji logiki związanej           wzorzec Service to Worker
  z nawigacją i zarządzania widokiem, czyli        wzorzec Dispatcher View
  z wyborem właściwego widoku i pobieraniem go
  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 dostępem klienta do pewnych           zagadnienie projektowe — podrozdział „Kontrola
  widoków lub podwidoków                           dostępu klienta” w rozdziale 2
                                                   refaktoryzacja — podrozdział „Ukrywanie zasobów
                                                   przed klientem” w rozdziale 4
  sterowanie otrzymywaniem ądań klientów           zagadnienie projektowe — podrozdział „Duplikacja
                                                   formularzy” w rozdziale 2
                                                   zagadnienie projektowe — podrozdział „Wprowadzenie
                                                   tokenu synchronizującego” w rozdziale 4
120    Część II n Katalog wzorców J2EE

Tabela 5.6. Wzorce warstwy prezentacji (ciąg dalszy)

  Jeśli szukamy sposobu na ...                       Oto rozwiązanie...
  wykrywanie powielonych formularzy                  zagadnienie projektowe — podrozdział „Duplikacja
                                                     formularzy” w rozdziale 2
                                                     refaktoryzacja — podrozdział „Wprowadzenie tokenu
                                                     synchronizującego” w rozdziale 4
  wykorzystanie automatycznego wypełniania           zagadnienie projektowe — podrozdział „Właściwości
  właściwości dzięki LURUGV2TQRGTV[                klas pomocniczych — integralność i spójność”
                                                     w rozdziale 2
  redukcję powiązań między warstwą prezentacji       refaktoryzacja — podrozdział „Ukrycie szczegółów
  i biznesową                                        warstwy prezentacji przed warstwą biznesową”
                                                     w rozdziale 4
                                                     refaktoryzacja — podrozdział „Wprowadzenie
                                                     obiektów Business Delegate” w rozdziale 4
  rozdzielenie kodu dostępu do danych                refaktoryzacja — podrozdział „Wydzielenie kodu
                                                     dostępu do danych” w rozdziale 4

       Tabela 5.7 zawiera zagadnienia związane na ogół z wzorcami warstwy biznesowej wraz z za-
       znaczeniem, którego wzorca nale y u yć.

Tabela 5.7. Wzorce warstwy biznesowej

  Jeśli szukamy sposobu na...                        Oto rozwiązanie...
  minimalizację związków między warstwą              wzorzec Business Delegate
  prezentacji i biznesową
  buforowanie usług biznesowych                      wzorzec Business Delegate
  ukrycie szczegółów implementacji dostępu,          wzorzec Business Delegate
  wyszukiwania i tworzenia usług biznesowych         wzorzec Service Locator
  izolację zale ności od technologii i konkretnego   wzorzec Service Locator
  producenta związanych z wyszukiwaniem usług
  zapewnienie jednolitej metody wyszukiwania         wzorzec Service Locator
  i tworzenia usług biznesowych
  ukrycie zło oności i zale ności związanych         wzorzec Service Locator
  z wyszukiwaniem komponentów EJB oraz JMS
  przekazywanie danych między obiektami              wzorzec Transfer Object
  biznesowymi a klientami w ramach wielu
  warstw
  zapewnienie prostszego, jednolitego interfejsu     wzorzec Business Delegate
  dla zdalnych klientów                              wzorzec Session Façade
                                                     wzorzec Application Service
  redukcję ilości zdalnych wywołań metod             wzorzec Session Façade
  poprzez utworzenie ogólnych metod dostępu
  do usług warstwy biznesowej
Rozdział 5. n Omówienie wzorców J2EE      121

Tabela 5.7. Wzorce warstwy biznesowej (ciąg dalszy)

  Jeśli szukamy sposobu na...                       Oto rozwiązanie...
  zarządzanie związkami między komponentami         wzorzec Session Façade
  EJB i ukrycie zło oności interakcji między nimi
  ochronę komponentów warstwy biznesowej            wzorzec Session Façade
  przed bezpośrednim dostępem klienta               wzorzec Application Service
  utworzenie jednolitego sposobu dostępu            wzorzec Session Façade
  do komponentów warstwy biznesowej                 wzorzec Application Service
  implementację zło onego modelu domenowego         wzorzec Business Object
  w oparciu o model obiektowy
  identyfikację nierozdrobnionych obiektów          wzorzec Business Object
  i obiektów zale nych w celu utworzenia            wzorzec Composite Entity
  obiektów biznesowych i poprawnego
  wykorzystania komponentów Entity
  projektowanie nierozdrobnionych komponentów       wzorzec Composite Entity
  Entity
  redukcję lub eliminację zale ności między         wzorzec Composite Entity
  klientami komponentów Entity a schematem
  bazy danych
  redukcję lub eliminację wzajemnych związków       wzorzec Composite Entity
  między komponentami Entity
  redukcję liczby komponentów Entity i poprawę      wzorzec Composite Entity
  sposobu zarządzania nimi
  pobranie modelu danych aplikacji z ró nych        wzorzec Transfer Object Assembler
  komponentów warstwy biznesowej
  tworzenie „w locie” modelu danych aplikacji       wzorzec Transfer Object Assembler
  ukrycie zło oności konstrukcji modelu danych      wzorzec Transfer Object Assembler
  przed klientem
  utworzenie mechanizmów zarządzania                wzorzec Value List Handler
  zapytaniami i ich obsługą wewnątrz warstwy
  biznesowej
  minimalizację narzutu powodowanego przez          wzorzec Value List Handler
  metody wyszukiwania komponentów EJB
  buforowanie wyników zapytań na serwerze           wzorzec Value List Handler
  wraz z mo liwością ich wielokrotnego
  przeglądania
  wybór pomiędzy komponentami sesyjnymi             zagadnienie projektowe — podrozdział „Komponent
  stanowymi i bezstanowymi                          sesyjny — stanowy a bezstanowy” w rozdziale 3
  ochronę komponentów Entity przed                  refaktoryzacja — podrozdział „Ukrycie komponentów
  bezpośrednim dostępem klienta                     Entity za komponentami sesyjnymi” w rozdziale 4
  hermetyzację dostępu do usług biznesowych         refaktoryzacja — podrozdział „Wprowadzenie
  w celu ukrycia szczegółów implementacyjnych       obiektów Business Delegate” w rozdziale 4
  związanych z warstwą biznesową
122    Część II n Katalog wzorców J2EE

Tabela 5.7. Wzorce warstwy biznesowej (ciąg dalszy)

  Jeśli szukamy sposobu na...                      Oto rozwiązanie...
  umieszczenie logiki biznesowej                   zagadnienie projektowe — podrozdział „Logika
  w komponentach Entity                            biznesowa w komponentach Entity” w rozdziale 3
                                                   refaktoryzacja — podrozdział „Przeniesienie logiki
                                                   biznesowej do warstwy komponentów sesyjnych”
                                                   w rozdziale 4
  utworzenie z komponentów sesyjnych               refaktoryzacja — podrozdział „Łączenie
  reprezentujących ogólne usługi biznesowe         komponentów sesyjnych” w rozdziale 4
                                                   refaktoryzacja — podrozdział „Ukrycie komponentów
                                                   Entity za komponentami sesyjnymi” w rozdziale 4
  minimalizację lub wyeliminowanie narzutu sieci   refaktoryzacja — podrozdział „Redukcja komunikacji
  i obcią enia kontenera podczas komunikacji       między komponentami Entity” w rozdziale 4
  pomiędzy komponentami Entity
  wydzielenie kodu związanego z dostępem           refaktoryzacja — podrozdział „Wydzielenie kodu
  do danych                                        dostępu do danych” w rozdziale 4

       Tabela 5.8 zawiera zagadnienia związane na ogół z wzorcami warstwy integracji wraz z za-
       znaczeniem, którego wzorca nale y u yć w konkretnej sytuacji.

Tabela 5.8. Wzorce warstwy integracji

  Jeśli szukamy sposobu na...                      Oto rozwiązanie...
  redukcję zale ności między warstwą biznesową     wzorzec Data Access Object
  a warstwą zasobów
  centralizację dostępu do warstwy zasobów         wzorzec Data Access Object
  minimalizację zło oności dostępu do zasobów      wzorzec Data Access Object
  z poziomu komponentów warstwy biznesowej
  zapewnienie asynchronicznego przetwarzania       wzorzec Service Activator
  dla aplikacji biznesowych
  wysłanie asynchronicznego ądania do usługi       wzorzec Service Activator
  biznesowej
  asynchroniczne przetwarzanie ądania jako         wzorzec Service Activator
  zbioru współbie nie wykonywanych zadań
  przezroczyste utrwalanie modelu obiektowego      wzorzec Domain Store
  implementację własnego mechanizmu trwałości      wzorzec Domain Store
  obiektów
  udostępnienie usług sieciowych (Web Services)    wzorzec Web Service Broker
  przy zastosowaniu XML oraz standardowych
  protokołów Web
  udostępnienie istniejących usług jako usług      wzorzec Web Service Broker
  sieciowych
Rozdział 5. n Omówienie wzorców J2EE     123



Podsumowanie
  Poznaliśmy podstawowe koncepcje dotyczące wzorców J2EE, opisaliśmy sposób ich kate-
  goryzacji z uwzględnieniem podziału na warstwy oraz przedstawiliśmy mapę pomagającą
  ustalić, które wzorce stosować w jakich sytuacjach. W kolejnych rozdziałach opisujemy
  poszczególne wzorce.

  Następne rozdziały prezentują wzorce warstwy prezentacji, biznesowej i integracji. W celu
  odnalezienia potrzebnego wzorca wystarczy zajrzeć do tych rozdziałów.

More Related Content

What's hot

100 sposobów na Visual Studio
100 sposobów na Visual Studio100 sposobów na Visual Studio
100 sposobów na Visual StudioWydawnictwo Helion
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówWydawnictwo Helion
 
Visual Basic .NET. Wzorce projektowe
Visual Basic .NET. Wzorce projektoweVisual Basic .NET. Wzorce projektowe
Visual Basic .NET. Wzorce projektoweWydawnictwo Helion
 
CorelDRAW 11. Vademecum profesjonalisty. Tom 1
CorelDRAW 11. Vademecum profesjonalisty. Tom 1CorelDRAW 11. Vademecum profesjonalisty. Tom 1
CorelDRAW 11. Vademecum profesjonalisty. Tom 1Wydawnictwo Helion
 
C++Builder Borland Developer Studio 2006. Kompendium programisty
C++Builder Borland Developer Studio 2006. Kompendium programistyC++Builder Borland Developer Studio 2006. Kompendium programisty
C++Builder Borland Developer Studio 2006. Kompendium programistyWydawnictwo Helion
 
Visual Basic 2005. Programowanie
Visual Basic 2005. ProgramowanieVisual Basic 2005. Programowanie
Visual Basic 2005. ProgramowanieWydawnictwo Helion
 
J2EE. Podstawy programowania aplikacji korporacyjnych
J2EE. Podstawy programowania aplikacji korporacyjnychJ2EE. Podstawy programowania aplikacji korporacyjnych
J2EE. Podstawy programowania aplikacji korporacyjnychWydawnictwo Helion
 
Projektowanie zorientowane obiektowo. Wzorce projektowe. Wydanie II
Projektowanie zorientowane obiektowo. Wzorce projektowe. Wydanie IIProjektowanie zorientowane obiektowo. Wzorce projektowe. Wydanie II
Projektowanie zorientowane obiektowo. Wzorce projektowe. Wydanie IIWydawnictwo Helion
 
JBuilder. Vademecum profesjonalisty
JBuilder. Vademecum profesjonalistyJBuilder. Vademecum profesjonalisty
JBuilder. Vademecum profesjonalistyWydawnictwo Helion
 
Język C++. Koncepcje i techniki programowania
Język C++. Koncepcje i techniki programowaniaJęzyk C++. Koncepcje i techniki programowania
Język C++. Koncepcje i techniki programowaniaWydawnictwo Helion
 
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektami
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektamiMS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektami
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektamiWydawnictwo Helion
 
Core Java Servlets i JavaServer Pages. Tom II. Wydanie II
Core Java Servlets i JavaServer Pages. Tom II. Wydanie IICore Java Servlets i JavaServer Pages. Tom II. Wydanie II
Core Java Servlets i JavaServer Pages. Tom II. Wydanie IIWydawnictwo Helion
 
CorelDRAW 11. Vademecum profesjonalisty. Tom 2
CorelDRAW 11. Vademecum profesjonalisty. Tom 2CorelDRAW 11. Vademecum profesjonalisty. Tom 2
CorelDRAW 11. Vademecum profesjonalisty. Tom 2Wydawnictwo Helion
 
CATIA V5. Przykłady efektywnego zastosowania systemu w projektowaniu mechanic...
CATIA V5. Przykłady efektywnego zastosowania systemu w projektowaniu mechanic...CATIA V5. Przykłady efektywnego zastosowania systemu w projektowaniu mechanic...
CATIA V5. Przykłady efektywnego zastosowania systemu w projektowaniu mechanic...Wydawnictwo Helion
 
Microsoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programistyMicrosoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programistyWydawnictwo Helion
 
Wzorce projektowe. Analiza kodu sposobem na ich poznanie
Wzorce projektowe. Analiza kodu sposobem na ich poznanieWzorce projektowe. Analiza kodu sposobem na ich poznanie
Wzorce projektowe. Analiza kodu sposobem na ich poznanieWydawnictwo Helion
 

What's hot (20)

100 sposobów na Visual Studio
100 sposobów na Visual Studio100 sposobów na Visual Studio
100 sposobów na Visual Studio
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistów
 
Visual Basic .NET. Wzorce projektowe
Visual Basic .NET. Wzorce projektoweVisual Basic .NET. Wzorce projektowe
Visual Basic .NET. Wzorce projektowe
 
CorelDRAW 11. Vademecum profesjonalisty. Tom 1
CorelDRAW 11. Vademecum profesjonalisty. Tom 1CorelDRAW 11. Vademecum profesjonalisty. Tom 1
CorelDRAW 11. Vademecum profesjonalisty. Tom 1
 
C++Builder Borland Developer Studio 2006. Kompendium programisty
C++Builder Borland Developer Studio 2006. Kompendium programistyC++Builder Borland Developer Studio 2006. Kompendium programisty
C++Builder Borland Developer Studio 2006. Kompendium programisty
 
Visual Basic 2005. Programowanie
Visual Basic 2005. ProgramowanieVisual Basic 2005. Programowanie
Visual Basic 2005. Programowanie
 
J2EE. Podstawy programowania aplikacji korporacyjnych
J2EE. Podstawy programowania aplikacji korporacyjnychJ2EE. Podstawy programowania aplikacji korporacyjnych
J2EE. Podstawy programowania aplikacji korporacyjnych
 
Projektowanie zorientowane obiektowo. Wzorce projektowe. Wydanie II
Projektowanie zorientowane obiektowo. Wzorce projektowe. Wydanie IIProjektowanie zorientowane obiektowo. Wzorce projektowe. Wydanie II
Projektowanie zorientowane obiektowo. Wzorce projektowe. Wydanie II
 
Po prostu PowerPoint 2007 PL
Po prostu PowerPoint 2007 PLPo prostu PowerPoint 2007 PL
Po prostu PowerPoint 2007 PL
 
JBuilder. Vademecum profesjonalisty
JBuilder. Vademecum profesjonalistyJBuilder. Vademecum profesjonalisty
JBuilder. Vademecum profesjonalisty
 
Język C++. Koncepcje i techniki programowania
Język C++. Koncepcje i techniki programowaniaJęzyk C++. Koncepcje i techniki programowania
Język C++. Koncepcje i techniki programowania
 
ABC Delphi 2006
ABC Delphi 2006ABC Delphi 2006
ABC Delphi 2006
 
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektami
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektamiMS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektami
MS Project 2007 i MS Project Server 2007. Efektywne zarządzanie projektami
 
C#. Wzorce projektowe
C#. Wzorce projektoweC#. Wzorce projektowe
C#. Wzorce projektowe
 
Core Java Servlets i JavaServer Pages. Tom II. Wydanie II
Core Java Servlets i JavaServer Pages. Tom II. Wydanie IICore Java Servlets i JavaServer Pages. Tom II. Wydanie II
Core Java Servlets i JavaServer Pages. Tom II. Wydanie II
 
CorelDRAW 11. Vademecum profesjonalisty. Tom 2
CorelDRAW 11. Vademecum profesjonalisty. Tom 2CorelDRAW 11. Vademecum profesjonalisty. Tom 2
CorelDRAW 11. Vademecum profesjonalisty. Tom 2
 
Delphi 2005
Delphi 2005Delphi 2005
Delphi 2005
 
CATIA V5. Przykłady efektywnego zastosowania systemu w projektowaniu mechanic...
CATIA V5. Przykłady efektywnego zastosowania systemu w projektowaniu mechanic...CATIA V5. Przykłady efektywnego zastosowania systemu w projektowaniu mechanic...
CATIA V5. Przykłady efektywnego zastosowania systemu w projektowaniu mechanic...
 
Microsoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programistyMicrosoft SQL Server 2005. Podręcznik programisty
Microsoft SQL Server 2005. Podręcznik programisty
 
Wzorce projektowe. Analiza kodu sposobem na ich poznanie
Wzorce projektowe. Analiza kodu sposobem na ich poznanieWzorce projektowe. Analiza kodu sposobem na ich poznanie
Wzorce projektowe. Analiza kodu sposobem na ich poznanie
 

Viewers also liked

Drabina rozwoju po zmianach
Drabina rozwoju po zmianachDrabina rozwoju po zmianach
Drabina rozwoju po zmianachwiosenka
 
Grant Thornton - Raport Catalyst - podsumowanie rozwoju
Grant Thornton - Raport Catalyst - podsumowanie rozwojuGrant Thornton - Raport Catalyst - podsumowanie rozwoju
Grant Thornton - Raport Catalyst - podsumowanie rozwojuGrant Thornton
 
Rozwój wspólnot europejskich
Rozwój wspólnot europejskichRozwój wspólnot europejskich
Rozwój wspólnot europejskichDawidRosol
 
Poziom zaangażowania w zespołach
Poziom zaangażowania w zespołachPoziom zaangażowania w zespołach
Poziom zaangażowania w zespołachRyszard Krakowiak
 
22. Badanie modułów wewnętrznych mikrokontrolera
22. Badanie modułów wewnętrznych mikrokontrolera22. Badanie modułów wewnętrznych mikrokontrolera
22. Badanie modułów wewnętrznych mikrokontroleraLukas Pobocha
 
Organizowanie stanowiska pracy
Organizowanie stanowiska pracyOrganizowanie stanowiska pracy
Organizowanie stanowiska pracySebastian Bończyk
 
Zasady pozyskiwania dofinansowania z funduszy europejskich
Zasady pozyskiwania dofinansowania z funduszy europejskichZasady pozyskiwania dofinansowania z funduszy europejskich
Zasady pozyskiwania dofinansowania z funduszy europejskichOdzyskenergii
 
Základy marketingu na internetu
Základy marketingu na internetuZáklady marketingu na internetu
Základy marketingu na internetuBESTETO
 
Ogolnopolski Raport O Kredytach Mieszkaniowych I Cenach Transakcyjnych Nieruc...
Ogolnopolski Raport O Kredytach Mieszkaniowych I Cenach Transakcyjnych Nieruc...Ogolnopolski Raport O Kredytach Mieszkaniowych I Cenach Transakcyjnych Nieruc...
Ogolnopolski Raport O Kredytach Mieszkaniowych I Cenach Transakcyjnych Nieruc...Wojciech Boczoń
 
Wynagrodzenie brutto a netto
Wynagrodzenie brutto a nettoWynagrodzenie brutto a netto
Wynagrodzenie brutto a nettoUCMS Group Poland
 
Nm.2012.003,dorenda zaborowicz
Nm.2012.003,dorenda zaborowiczNm.2012.003,dorenda zaborowicz
Nm.2012.003,dorenda zaborowiczMarcin Janowski
 
iFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumentyiFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumentyMichal Zylinski
 
Presco wyniki 2012
Presco wyniki 2012Presco wyniki 2012
Presco wyniki 2012Kamil Gemra
 
1.Charyzmaty w pierwszym milenium Kościoła
1.Charyzmaty w pierwszym milenium Kościoła1.Charyzmaty w pierwszym milenium Kościoła
1.Charyzmaty w pierwszym milenium Kościołaparakletos
 
D03 Poddzialanie 8.1.2
D03 Poddzialanie 8.1.2D03 Poddzialanie 8.1.2
D03 Poddzialanie 8.1.2UM Łódzkie
 
Budowa narodowej architektury korporacyjnej w Polsce - zarys problematyki
Budowa narodowej architektury korporacyjnej w Polsce - zarys problematykiBudowa narodowej architektury korporacyjnej w Polsce - zarys problematyki
Budowa narodowej architektury korporacyjnej w Polsce - zarys problematykiAndrzej Sobczak
 

Viewers also liked (20)

Drabina rozwoju po zmianach
Drabina rozwoju po zmianachDrabina rozwoju po zmianach
Drabina rozwoju po zmianach
 
Grant Thornton - Raport Catalyst - podsumowanie rozwoju
Grant Thornton - Raport Catalyst - podsumowanie rozwojuGrant Thornton - Raport Catalyst - podsumowanie rozwoju
Grant Thornton - Raport Catalyst - podsumowanie rozwoju
 
Rozwój wspólnot europejskich
Rozwój wspólnot europejskichRozwój wspólnot europejskich
Rozwój wspólnot europejskich
 
Poziom zaangażowania w zespołach
Poziom zaangażowania w zespołachPoziom zaangażowania w zespołach
Poziom zaangażowania w zespołach
 
22. Badanie modułów wewnętrznych mikrokontrolera
22. Badanie modułów wewnętrznych mikrokontrolera22. Badanie modułów wewnętrznych mikrokontrolera
22. Badanie modułów wewnętrznych mikrokontrolera
 
Organizowanie stanowiska pracy
Organizowanie stanowiska pracyOrganizowanie stanowiska pracy
Organizowanie stanowiska pracy
 
Emauel Swedenborg
Emauel SwedenborgEmauel Swedenborg
Emauel Swedenborg
 
Zasady pozyskiwania dofinansowania z funduszy europejskich
Zasady pozyskiwania dofinansowania z funduszy europejskichZasady pozyskiwania dofinansowania z funduszy europejskich
Zasady pozyskiwania dofinansowania z funduszy europejskich
 
Základy marketingu na internetu
Základy marketingu na internetuZáklady marketingu na internetu
Základy marketingu na internetu
 
Ogolnopolski Raport O Kredytach Mieszkaniowych I Cenach Transakcyjnych Nieruc...
Ogolnopolski Raport O Kredytach Mieszkaniowych I Cenach Transakcyjnych Nieruc...Ogolnopolski Raport O Kredytach Mieszkaniowych I Cenach Transakcyjnych Nieruc...
Ogolnopolski Raport O Kredytach Mieszkaniowych I Cenach Transakcyjnych Nieruc...
 
Czas na e-biznes
Czas na e-biznesCzas na e-biznes
Czas na e-biznes
 
Śniadanie Daje Moc
Śniadanie Daje MocŚniadanie Daje Moc
Śniadanie Daje Moc
 
Wynagrodzenie brutto a netto
Wynagrodzenie brutto a nettoWynagrodzenie brutto a netto
Wynagrodzenie brutto a netto
 
Rekrutacja
RekrutacjaRekrutacja
Rekrutacja
 
Nm.2012.003,dorenda zaborowicz
Nm.2012.003,dorenda zaborowiczNm.2012.003,dorenda zaborowicz
Nm.2012.003,dorenda zaborowicz
 
iFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumentyiFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumenty
 
Presco wyniki 2012
Presco wyniki 2012Presco wyniki 2012
Presco wyniki 2012
 
1.Charyzmaty w pierwszym milenium Kościoła
1.Charyzmaty w pierwszym milenium Kościoła1.Charyzmaty w pierwszym milenium Kościoła
1.Charyzmaty w pierwszym milenium Kościoła
 
D03 Poddzialanie 8.1.2
D03 Poddzialanie 8.1.2D03 Poddzialanie 8.1.2
D03 Poddzialanie 8.1.2
 
Budowa narodowej architektury korporacyjnej w Polsce - zarys problematyki
Budowa narodowej architektury korporacyjnej w Polsce - zarys problematykiBudowa narodowej architektury korporacyjnej w Polsce - zarys problematyki
Budowa narodowej architektury korporacyjnej w Polsce - zarys problematyki
 

Similar to J2EE. Wzorce projektowe. Wydanie 2

Spring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w JavieSpring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w JavieWydawnictwo Helion
 
Praktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie IIPraktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie IIWydawnictwo Helion
 
MS Project 2002. Zarządzanie projektami
MS Project 2002. Zarządzanie projektamiMS Project 2002. Zarządzanie projektami
MS Project 2002. Zarządzanie projektamiWydawnictwo Helion
 
Programowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdegoProgramowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdegoWydawnictwo Helion
 
Visual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaVisual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaWydawnictwo Helion
 
Java. Współbieżność dla praktyków
Java. Współbieżność dla praktykówJava. Współbieżność dla praktyków
Java. Współbieżność dla praktykówWydawnictwo Helion
 
Java. Obsługa wyjątków, usuwanie błędów i testowanie kodu
Java. Obsługa wyjątków, usuwanie błędów i testowanie koduJava. Obsługa wyjątków, usuwanie błędów i testowanie kodu
Java. Obsługa wyjątków, usuwanie błędów i testowanie koduWydawnictwo Helion
 
MS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowanaMS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowanaWydawnictwo Helion
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaWydawnictwo Helion
 
Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania o...
Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania o...Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania o...
Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania o...Wydawnictwo Helion
 
Excel. Programowanie dla profesjonalistów
Excel. Programowanie dla profesjonalistówExcel. Programowanie dla profesjonalistów
Excel. Programowanie dla profesjonalistówWydawnictwo Helion
 
C++. Styl i technika zaawansowanego programowania
C++. Styl i technika zaawansowanego programowaniaC++. Styl i technika zaawansowanego programowania
C++. Styl i technika zaawansowanego programowaniaWydawnictwo Helion
 
C++. Inżynieria programowania
C++. Inżynieria programowaniaC++. Inżynieria programowania
C++. Inżynieria programowaniaWydawnictwo Helion
 
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówC++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówWydawnictwo Helion
 

Similar to J2EE. Wzorce projektowe. Wydanie 2 (19)

Praktyczny kurs Java
Praktyczny kurs JavaPraktyczny kurs Java
Praktyczny kurs Java
 
Spring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w JavieSpring Framework. Profesjonalne tworzenie oprogramowania w Javie
Spring Framework. Profesjonalne tworzenie oprogramowania w Javie
 
Spring. Zapiski programisty
Spring. Zapiski programistySpring. Zapiski programisty
Spring. Zapiski programisty
 
Praktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie IIPraktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie II
 
MS Project 2002. Zarządzanie projektami
MS Project 2002. Zarządzanie projektamiMS Project 2002. Zarządzanie projektami
MS Project 2002. Zarządzanie projektami
 
Programowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdegoProgramowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdego
 
Visual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaVisual Basic .NET. Encyklopedia
Visual Basic .NET. Encyklopedia
 
Java. Współbieżność dla praktyków
Java. Współbieżność dla praktykówJava. Współbieżność dla praktyków
Java. Współbieżność dla praktyków
 
Java. Kompendium programisty
Java. Kompendium programistyJava. Kompendium programisty
Java. Kompendium programisty
 
C# i ASP.NET. Szybki start
C# i ASP.NET. Szybki startC# i ASP.NET. Szybki start
C# i ASP.NET. Szybki start
 
Java. Obsługa wyjątków, usuwanie błędów i testowanie kodu
Java. Obsługa wyjątków, usuwanie błędów i testowanie koduJava. Obsługa wyjątków, usuwanie błędów i testowanie kodu
Java. Obsługa wyjątków, usuwanie błędów i testowanie kodu
 
MS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowanaMS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowana
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
 
Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania o...
Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania o...Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania o...
Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania o...
 
Excel. Programowanie dla profesjonalistów
Excel. Programowanie dla profesjonalistówExcel. Programowanie dla profesjonalistów
Excel. Programowanie dla profesjonalistów
 
C++. Styl i technika zaawansowanego programowania
C++. Styl i technika zaawansowanego programowaniaC++. Styl i technika zaawansowanego programowania
C++. Styl i technika zaawansowanego programowania
 
C++. Inżynieria programowania
C++. Inżynieria programowaniaC++. Inżynieria programowania
C++. Inżynieria programowania
 
JavaScript. Projekty
JavaScript. ProjektyJavaScript. Projekty
JavaScript. Projekty
 
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówC++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
 

More from Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 

More from Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 

J2EE. Wzorce projektowe. Wydanie 2

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI J2EE. Wzorce projektowe. Wydanie 2 KATALOG KSI¥¯EK Autor: Deepak Alur, John Crupi, Dan Malks KATALOG ONLINE T³umaczenie: Rafa³ Joñca ISBN: 83-7361-344-7 ZAMÓW DRUKOWANY KATALOG Tytu³ orygina³u: Core J2EE Patterns. Best Practices and Design Strategies, 2nd Edition Format: B5, stron: 518 TWÓJ KOSZYK DODAJ DO KOSZYKA 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 CENNIK I INFORMACJE J2EE zawiera 21 wzorców i o wiele wiêcej strategii, przy wykorzystaniu których powstaj¹ najlepsze rozwi¹zania programistyczne. ZAMÓW INFORMACJE „J2EE. Wzorce projektowe. Wydanie drugie” zawiera opis nastêpuj¹cych zagadnieñ: O NOWO CIACH • 21 wzorców projektowych J2EE — znane i w pe³ni sprawdzone oraz nowe wzorce zapewniaj¹ce najlepsze rozwi¹zania dla aplikacji biznesowych ZAMÓW CENNIK • 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 CZYTELNIA • sposoby refaktoryzacji poprawiaj¹ce istniej¹ce projekty • diagramy UML ilustruj¹ce przedstawiane zagadnienia FRAGMENTY KSI¥¯EK ONLINE • 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 Wydawnictwo Helion w projektach biznesowych i us³ugach sieciowych. Pisze artyku³y do czasopism ul. Chopina 6 bran¿owych, jest tak¿e wspó³autorem ksi¹¿ek o Javie, wzorcach i technologii J2EE. 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. 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? ........................................................................................................... 24 Czym są wzorce? .......................................................................................................... 24 Odniesienie historyczne ........................................................................................... 24 Definiowanie wzorca ................................................................................................ 25 Kategoryzacja wzorców............................................................................................. 26 Katalog wzorców J2EE ................................................................................................... 27 Ciągła ewolucja ....................................................................................................... 27 Jak korzystać z katalogu wzorców? ............................................................................ 28 Zalety stosowania wzorców....................................................................................... 29 Wzorce, szkielety i ponowne użycie elementów ................................................................ 31 Podsumowanie ............................................................................................................. 31 Rozdział 2. Projektowanie warstwy prezentacji i złe praktyki ............................................................ 33 Zagadnienia projektowe warstwy prezentacji.................................................................... 33 Zarządzanie sesją.................................................................................................... 33 Kontrola dostępu klienta .......................................................................................... 36 Walidacja ................................................................................................................ 40 Właściwości klas pomocniczych — integralność i spójność ......................................... 42 Złe praktyki związane z warstwą prezentacji .................................................................... 44 Kod sterujący w wielu widokach ................................................................................ 45 Udostępnianie struktur danych warstwy prezentacji warstwie biznesowej...................... 45 Udostępnianie struktur danych warstwy prezentacji obiektom domeny.......................... 46 Duplikacja wysyłanych formularzy .............................................................................. 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
  • 3. 6 Spis treści Tworzenie rozbudowanych kontrolerów....................................................................... 48 Użycie skryptletów w widoku ..................................................................................... 48 Rozdział 3. Projektowanie warstwy biznesowej i złe praktyki ............................................................ 53 Zagadnienia projektowe warstwy biznesowej ................................................................... 53 Korzystanie z komponentów sesyjnych ...................................................................... 53 Korzystanie z komponentów Entity ............................................................................ 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 .................................................................. 61 Osadzanie wyszukiwania usług u klienta .................................................................... 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 ............................................................ 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 ................................................................................. 69 Wprowadzenie kontrolera ......................................................................................... 69 Wprowadzenie tokenu synchronizującego................................................................... 71 Podział logiki na niezależne fragmenty ....................................................................... 75 Ukrycie szczegółów warstwy prezentacji przed warstwą biznesową ............................... 80 Usunięcie konwersji z widoku.................................................................................... 84 Ukrywanie zasobów przed klientem ........................................................................... 87 Refaktoryzacja warstwy biznesowej i warstwy integracji .................................................... 90 Ukrycie komponentów Entity za komponentami sesyjnymi ........................................... 90 Wprowadzenie obiektów Business Delegate............................................................... 91 Łączenie komponentów sesyjnych ............................................................................. 92 Redukcja komunikacji między komponentami Entity .................................................... 94 Przeniesienie logiki biznesowej do warstwy komponentów sesyjnych ............................ 95 Ogólne udoskonalanie projektu ...................................................................................... 96 Wydzielenie kodu dostępu do danych ........................................................................ 96 Refaktoryzacja architektury z wykorzystaniem warstw.................................................. 98 Stosowanie puli połączeń ....................................................................................... 100 Część II Katalog wzorców J2EE 103 Czym jest wzorzec? ..................................................................................................... 106 Identyfikacja wzorca ............................................................................................... 106 Wzorce a strategie ................................................................................................. 107 Podejście warstwowe .................................................................................................. 107 Wzorce J2EE............................................................................................................... 109 Wzorce warstwy prezentacji .................................................................................... 109
  • 4. Spis treści 7 Wzorce warstwy biznesowej .................................................................................... 109 Wzorce warstwy integracji ....................................................................................... 110 Wprowadzenie do katalogu .......................................................................................... 110 Terminologia ......................................................................................................... 111 Stosowanie języka UML.......................................................................................... 113 Szablon wzorców ................................................................................................... 114 Związki między wzorcami J2EE ..................................................................................... 114 Związki z innymi znanymi wzorcami............................................................................... 118 Mapa wzorców ............................................................................................................ 118 Podsumowanie ........................................................................................................... 123 Rozdział 6. Wzorce warstwy prezentacji ..............................................................................................125 Intercepting Filter ........................................................................................................ 125 Problem ................................................................................................................ 125 Siły....................................................................................................................... 126 Rozwiązanie .......................................................................................................... 126 Konsekwencje ....................................................................................................... 141 Powiązane wzorce.................................................................................................. 143 Front Controller........................................................................................................... 143 Problem ................................................................................................................ 143 Siły....................................................................................................................... 144 Rozwiązanie .......................................................................................................... 144 Konsekwencje ....................................................................................................... 154 Powiązane wzorce.................................................................................................. 155 Context Object ............................................................................................................ 155 Problem ................................................................................................................ 155 Siły....................................................................................................................... 156 Rozwiązanie .......................................................................................................... 156 Konsekwencje ....................................................................................................... 173 Powiązane wzorce.................................................................................................. 173 Application Controller .................................................................................................. 174 Problem ................................................................................................................ 174 Siły....................................................................................................................... 174 Rozwiązanie .......................................................................................................... 174 Konsekwencje ....................................................................................................... 200 Powiązane wzorce.................................................................................................. 201 View Helper ................................................................................................................ 201 Problem ................................................................................................................ 201 Siły....................................................................................................................... 202 Rozwiązanie .......................................................................................................... 202 Konsekwencje ....................................................................................................... 217 Powiązane wzorce.................................................................................................. 220 Composite View .......................................................................................................... 220 Problem ................................................................................................................ 220 Siły....................................................................................................................... 220 Rozwiązanie .......................................................................................................... 221 Konsekwencje ....................................................................................................... 228 Przykładowy kod .................................................................................................... 229 Powiązane wzorce.................................................................................................. 231 Service to Worker........................................................................................................ 231 Problem ................................................................................................................ 231 Siły....................................................................................................................... 232
  • 5. 8 Spis treści Rozwiązanie .......................................................................................................... 232 Konsekwencje ....................................................................................................... 236 Przykładowy kod .................................................................................................... 236 Powiązane wzorce.................................................................................................. 241 Dispatcher View.......................................................................................................... 241 Problem ................................................................................................................ 241 Siły....................................................................................................................... 241 Rozwiązanie .......................................................................................................... 242 Konsekwencje ....................................................................................................... 246 Przykładowy kod .................................................................................................... 247 Powiązane wzorce.................................................................................................. 251 Rozdział 7. Wzorce warstwy biznesowej .............................................................................................253 Business Delegate...................................................................................................... 253 Problem ................................................................................................................ 253 Siły....................................................................................................................... 254 Rozwiązanie .......................................................................................................... 254 Konsekwencje ....................................................................................................... 258 Przykładowy kod .................................................................................................... 260 Powiązane wzorce.................................................................................................. 263 Service Locator........................................................................................................... 263 Problem ................................................................................................................ 263 Siły....................................................................................................................... 264 Rozwiązanie .......................................................................................................... 264 Konsekwencje ....................................................................................................... 272 Przykładowy kod .................................................................................................... 274 Powiązane wzorce.................................................................................................. 283 Session Façade .......................................................................................................... 284 Problem ................................................................................................................ 284 Siły....................................................................................................................... 284 Rozwiązanie .......................................................................................................... 285 Konsekwencje ....................................................................................................... 288 Przykładowy kod .................................................................................................... 289 Powiązane wzorce.................................................................................................. 295 Application Service...................................................................................................... 296 Problem ................................................................................................................ 296 Siły....................................................................................................................... 297 Rozwiązanie .......................................................................................................... 297 Konsekwencje ....................................................................................................... 304 Przykładowy kod .................................................................................................... 305 Powiązane wzorce.................................................................................................. 310 Business Object ......................................................................................................... 310 Problem ................................................................................................................ 310 Siły....................................................................................................................... 311 Rozwiązanie .......................................................................................................... 312 Konsekwencje ....................................................................................................... 321 Przykładowy kod .................................................................................................... 322 Powiązane wzorce.................................................................................................. 324 Composite Entity......................................................................................................... 324 Problem ................................................................................................................ 324 Siły....................................................................................................................... 326
  • 6. Spis treści 9 Rozwiązanie .......................................................................................................... 326 Konsekwencje ....................................................................................................... 334 Przykładowy kod .................................................................................................... 335 Powiązane wzorce.................................................................................................. 343 Transfer Object ........................................................................................................... 344 Problem ................................................................................................................ 344 Siły....................................................................................................................... 344 Rozwiązanie .......................................................................................................... 345 Konsekwencje ....................................................................................................... 352 Przykładowy kod .................................................................................................... 353 Powiązane wzorce.................................................................................................. 358 Transfer Object Assembler........................................................................................... 359 Problem ................................................................................................................ 359 Siły....................................................................................................................... 359 Rozwiązanie .......................................................................................................... 359 Konsekwencje ....................................................................................................... 363 Przykładowy kod .................................................................................................... 363 Powiązane wzorce.................................................................................................. 367 Value List Handler ...................................................................................................... 367 Problem ................................................................................................................ 367 Siły....................................................................................................................... 368 Rozwiązanie .......................................................................................................... 368 Konsekwencje ....................................................................................................... 373 Przykładowy kod .................................................................................................... 374 Powiązane wzorce.................................................................................................. 379 Rozdział 8. Wzorce warstwy integracji.................................................................................................381 Data Access Object..................................................................................................... 381 Problem ................................................................................................................ 381 Siły....................................................................................................................... 382 Rozwiązanie .......................................................................................................... 382 Konsekwencje ....................................................................................................... 405 Powiązane wzorce.................................................................................................. 407 Service Activator ......................................................................................................... 408 Problem ................................................................................................................ 408 Siły....................................................................................................................... 408 Rozwiązanie .......................................................................................................... 408 Konsekwencje ....................................................................................................... 423 Powiązane wzorce.................................................................................................. 423 Domain Store ............................................................................................................. 424 Problem ................................................................................................................ 424 Siły....................................................................................................................... 424 Rozwiązanie .......................................................................................................... 425 Konsekwencje ....................................................................................................... 456 Powiązane wzorce.................................................................................................. 456 Web Service Broker..................................................................................................... 457 Problem ................................................................................................................ 457 Siły....................................................................................................................... 458 Rozwiązanie .......................................................................................................... 458 Konsekwencje ....................................................................................................... 475 Powiązane wzorce.................................................................................................. 476
  • 7. 10 Spis treści Dodatki 477 Dodatek A Epilog.......................................................................................................................................479 Mikroarchitektura Web Worker ..................................................................................... 479 Czym są systemy organizacji pracy? ........................................................................ 479 Mikroarchitektura Web Worker ................................................................................ 482 Problem ................................................................................................................ 482 Siły....................................................................................................................... 484 Rozwiązanie .......................................................................................................... 485 Konsekwencje ....................................................................................................... 511 Dodatek B Bibliografia ..............................................................................................................................513 Dodatek C Licencja....................................................................................................................................517 Skorowidz ................................................................................................................................................519
  • 8. Omówienie wzorców J2EE W tym rozdziale: n Czym jest wzorzec? n Podejście warstwowe. n Wzorce J2EE. n Wprowadzenie do katalogu. n Związki między wzorcami J2EE. n Związki z innymi znanymi wzorcami. n Mapa wzorców. n 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 ujednolicone. 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.
  • 9. 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ę prostsze 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ótce, 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.
  • 10. 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 wzorcami a strategiami: n Wzorce istnieją na wy szym poziomie abstrakcji ni strategie. n Strategie stanowią najbardziej zalecane lub najczęstsze implementacje wzorców. n Strategie umo liwiają rozszerzenie wzorca. Programiści odkrywają nowe sposoby implementacji wzorca, tworząc nowe strategie dla dobrze znanych wzorców. n Strategie ułatwiają komunikację, tworząc nazwy dla bardziej 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).
  • 11. 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 wsadowy. 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
  • 12. 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 rozdziału). Wzorce warstwy prezentacji Tabela 5.1 zawiera wzorce warstwy prezentacji wraz z kró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 protokołu, w celu łatwego wykorzystania go w ró nych warstwach aplikacji. Application Controller Centralizuje zarządzanie widokiem i akcjami aplikacji. View Helper Zawiera logikę niezwiązaną z formatowaniem prezentacji 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 widoku. Wzorce warstwy biznesowej Tabela 5.2 wymienia wzorce warstwy biznesowej wraz z krótkim omówieniem ka dego z nich.
  • 13. 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 Hermetyzuje komponenty warstwy biznesowej i udostępnia klientom dobrze zdefiniowany zestaw usług biznesowych. Application Service Centralizuje i łączy podstawowe mechanizmy aplikacji w celu zapewnienia jednolitej warstwy usług. Business Object Oddziela logikę i dane biznesowe, tworząc podstawę modelu obiektowego aplikacji. Composite Entity Implementuje trwałe obiekty biznesowe, stosując lokalne 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 podręcznej i umo liwia przeglądanie i wybieranie elementów z listy wartości. Wzorce warstwy integracji Tabela 5.3 wymienia wzorce warstwy integracji wraz z kró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łuje usługi biznesowe. Domain Store Udostępnia mechanizmy utrwalania i odtwarzania obiektów biznesowych. Web Service Broker Udostępnia usługi, u ywając XML i protokołów sieciowych. 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 wzorcach z katalogu.
  • 14. 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 Strategia dotycząca komponentów Entity, w których we wzorcach warstwy (Bean-managed programista implementuje logikę odpowiedzialną biznesowej Persistence) za trwałość komponentów Entity. CMP Strategia dotycząca komponentów Entity, w których we wzorcach warstwy (Container-managed zarządzanie trwałością komponentów Entity jest biznesowej Persistence) zadaniem kontenera. dyspozytor Do zadań kontrolera nale y między innymi we wzorcach (Dispatcher) przekazywanie ądań klientów do odpowiednich Dispatcher View widoków. Serwlety korzystają w tym celu ze i Service to Worker standardowej klasy 4GSWGUV&KURCVEJGT Mechanizm ten mo na umieścić w osobnym komponencie, zwanym dyspozytorem. EJB Komponent Enterprise JavaBeans; mo e to być w wielu miejscach instancja komponentu sesyjnego lub Entity. Gdy w niniejszej ksią ce stosujemy ten skrót, oznacza to, i jest to komponent sesyjny lub Entity. fabryka (abstrakcyjna Wzorzec opisany w ksią ce GoF dotyczący we wzorcach warstwy lub metoda fabryki) tworzenia obiektów lub rodzin obiektów. biznesowej i we wzorcu Data Access Object. fasada Wzorzec dotyczący ukrywania zło oności, opisany we wzorcu Session w ksią ce GoF. Façade GoF Skrót od określenia Gang of Four (Banda Czworga), w wielu miejscach odnoszącego się do autorów popularnej ksią ki w niniejszej ksią ce o wzorcach projektowych (Design Patterns: Elements of Reusable Object-Oriented Software, autorzy: Erich Gamma, Richard Helm, Ralph Johnson i John Vlissides [GoF]). iterator Wzorzec zapewniający dostęp do poszczególnych we wzorcu Value List elementów kolekcji, opisany w ksią ce GoF. Handler komponent sesyjny Odnosi się do komponentu sesyjnego stanowego lub we wzorcach warstwy (Session Bean) bezstanowego. Mo e się tak e odnosić w ogólności biznesowej do interfejsu bazowego (home) i zdalnego (remote) oraz właściwej implementacji komponentu. kontroler (Controller) Współdziała z klientem, steruje i zarządza obsługą we wzorcach warstwy ądań. prezentacji i warstwy biznesowej
  • 15. 112 Część II n Katalog wzorców J2EE Tabela 5.4. Terminologia (ciąg dalszy) Termin Opis lub definicja U ywany model Fizyczna albo logiczna reprezentacja systemu lub we wzorcach warstwy podsystemu. biznesowej i warstwy prezentacji obiekt dostępu Obiekt ukrywający szczegóły implementacji dostępu we wzorcach warstwy do danych (DAO) do źródeł danych i systemów zewnętrznych. biznesowej i warstwy integracji obiekt niezale ny Obiekt, który mo e istnieć niezale nie od innych we wzorcu Composite i zarządza cyklem ycia swych obiektów zale nych. Entity obiekt transferowy Serializowalny obiekt Javy (POJO) u ywany we wzorcach warstwy (Transfer Object) do przesyłania danych z jednego obiektu (warstwy) biznesowej do innego. Nie zawiera adnych metod biznesowych. obiekt zale ny Obiekt, który nie mo e istnieć samodzielnie. Jego we wzorcach Business cyklem ycia zarządza inny obiekt. Delegate i Composite Entity pomocnik (Helper) Wykorzystywany przez kontroler i/lub widok. we wzorcach warstwy Na przykład kontroler lub widok mo e skorzystać prezentacji i we wzorcu z obiektu pomocnika w celu: pobrania zawartości, Business Delegate walidacji, zapisu modelu lub dostosowania go w celu wyświetlenia. proxy Wzorzec w którym jeden obiekt ukrywa inny i steruje w wielu miejscach dostępem do niego, opisany w ksią ce GoF. niniejszej ksią ki przedstawiciel Obiekt zastępujący inny — stanowi dla niego we wzorcu Business (Delegate) warstwę pośredniczącą. Przedstawiciel posiada cechy Delegate i w wielu pośrednika oraz fasady. innych wzorcach singleton Wzorzec zapewniający tylko jedną instancję obiektu, w wielu miejscach opisany w ksią ce GoF. w niniejszej ksią ce skryptlet Javy Logika aplikacji osadzona bezpośrednio na stronie we wzorcach warstwy JSP. prezentacji szablon Szablon tekstowy odnosi się do stałego tekstu we wzorcach warstwy w widoku JSP. Poza tym szablon mo e dotyczyć prezentacji konkretnego układu komponentów tworzących widok. trwały magazyn Reprezentuje trwały system przechowywania danych, we wzorcach warstwy (Persistent Store) np. RDBMS, ODBMS, systemy plików itp. biznesowej i warstwy integracji widok (View) Widok odpowiada za graficzną i tekstową we wzorcach warstwy część wyświetlanego interfejsu. Współpracuje prezentacji 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 we wzorcach z wzorcem Composite z ksią ki GoF (patrz dalsza Composite View część tabeli). i Composite Entity
  • 16. 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 Diagramy klas — u ywamy diagramów klas do przedstawienia struktury rozwiązania i struktury strategii implementacji. Stanowią statyczny obraz rozwiązania. n Diagramy przebiegu (inaczej sekwencji lub interakcji) — te diagramy słu ą do przedstawiania wzajemnych oddziaływań elementów rozwiązania lub strategii. Stanowią dynamiczny obraz rozwiązania. n Stereotypy — u ywamy stereotypów, aby wskazać ró ne typy obiektów i ich role w diagramach klas i interakcji. Lista stereotypów i ich 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 Reprezentuje komponent sesyjny jako całość bez określania jego interfejsów sesyjny ani implementacji. komponent Entity Reprezentuje komponent Entity jako całość bez określania jego interfejsów, implementacji ani klucza głównego. widok Widok reprezentuje i wyświetla informacje przekazywane klientowi. JSP Strona JSP; widok jest zazwyczaj zaimplementowany jako strona JSP. serwlet Serwlet Javy; kontroler jest zazwyczaj zaimplementowany jako serwlet. singleton Klasa posiadająca tylko jedną instancję zgodnie z wzorcem Singleton. własny znacznik Własne znaczniki JSP (podobnie jak komponenty JavaBean) wykorzystuje się do (Custom Tag) implementacji obiektów pomocniczych. Obiekt pomocniczy jest odpowiedzialny za takie zadania, jak zbieranie informacji wymaganych przez widok, lub za dostosowanie modelu danych do wyświetlenia. Pomocnik mo e po prostu 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ępują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 wymieniono 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 pomaga w ich wyjaśnieniu.
  • 17. 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 czytelnika, jak z niego korzystać. Stosujemy szablon wzorców składający się z następujących części: n Problem — opisuje zagadnienie projektowe, które musi rozstrzygnąć projektant. n Siły — wymienia powody lub motywy wpływające na problem i jego rozwiązanie. Lista sił zawiera powody, dla których warto zastosować dany wzorzec. n Rozwiązanie — pokrótce omawia ideę rozwiązania i bardziej szczegółowo jego konkretne elementy. Ta część składa się z dwóch podrozdziałów: n Struktura — za pomocą diagramów UML przedstawiana jest podstawowa struktura rozwiązania. Diagramy sekwencji przedstawiają dynamiczne elementy rozwiązania. Pojawia się szczegółowy opis elementów oraz występujących zale ności. n Strategie — opisuje ró ne sposoby implementacji wzorca. Podrozdział „Wzorce a strategie” wyjaśnia potrzebę stosowania strategii. Je eli strategię mo na pokazać na przykładzie kodu, przedstawiony zostaje odpowiedni fragment. Je eli fragment kodu jest długi, umieszczamy go w sekcji Przykładowy kod. n Konsekwencje — omawia wady i zalety danego wzorca. Ogólnie ta część skupia się na wynikach zastosowania wzorca lub strategii i konsekwencjach jego stosowania dla aplikacji. n Przykładowy kod — ta część zawiera przykładowe implementacje i listingi dla wzorca lub strategii. Część jest opcjonalna, je eli cały kod został wcześniej opisany podczas omawiania strategii. n Powiązane wzorce — zawiera listę innych wzorców z katalogu J2EE lub z innych źródeł, na przykład wzorce projektowe GoF. Poza nazwą wzorca 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.
  • 18. 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ązania jest pomocne, gdy :
  • 19. 116 Część II n Katalog wzorców J2EE n Umo liwia zastanowienie się, jakie inne problemy mogą się pojawić, jeśli do rozwiązania problemu zastosujemy przedstawiony wzorzec. Jest to efekt domina: jakie problemy spowoduje modyfikacja architektury w celu wprowadzenia wzorca? Warto zidentyfikować takie problemy przed rozpoczęciem pisania kodu. n Umo liwia zapoznanie się ze związkami między wzorcami w celu poznania alternatywnych rozwiązań. Po identyfikacji problemów sprawdzamy związki między wzorcami i zastanawiamy się nad rozwiązaniami alternatywnymi. Być mo e nowe problemy mo na rozwiązać, wybierając inny wzorzec 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 odpowiedniego 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 wybó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 konkretnego 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ólny 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.
  • 20. 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 (BMP). Wzorzec Transfer Object pozwala na łatwą wymianę danych pomiędzy warstwami. Pozwala zredukować obcią enie sieci i zminimalizować liczbę wywoł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łego 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.
  • 21. 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ługoterminowych. 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 ą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 bazują na wzorcach istniejących w literaturze lub są z nimi związane. W takiej sytuacji nazwa powszechnie przyjętego wzorca stanowi część nazwy wzorca J2EE lub te nazwę tę podajemy w podrozdziałach „Powiązane wzorce”. Na przykład pewne wzorce bazują na wzorcach z ksią ki GoF, ale są omawiane w kontekście platformy J2EE. W takich przypadkach nazwa wzorca J2EE zawiera tak e nazwę wzorca z ksią ki GoF, a odpowiednie odwołanie znajduje się w podrozdziale „Powiązane wzorce”. Mapa wzorców W tym podrozdziale przedstawimy listę typowych wymagań co do aplikacji napotykanych w trakcie tworzenia rozwiązań wykorzystujących platformę J2EE. W skrócie podajemy wymagania lub motywacje, zamieszczając obok jeden lub kilka wzorców związanych z tym zagadnieniem. Choć nie jest to lista wyczerpująca wszystkie mo liwości, pozwala łatwo określić, jaki wzorzec zastosować w celu rozwiązania konkretnego problemu. Tabela 5.6 zawiera zagadnienia związane na ogół z wzorcami warstwy prezentacji wraz z za- znaczeniem, którego wzorca nale y u yć.
  • 22. Rozdział 5. n Omówienie wzorców J2EE 119 Tabela 5.6. Wzorce warstwy prezentacji Jeśli szukamy sposobu na ... Oto rozwiązanie... wstępne lub końcowe przetwarzanie ądań wzorzec Intercepting Filter dodanie logowania, testowania lub innego wzorzec Front Controller zachowania wykonywanego dla wszystkich wzorzec Intercepting Filter ądań centralizację sterowania obsługą ądań wzorzec Front Controller wzorzec Intercepting Filter wzorzec Application Controller utworzenie ogólnego interfejsu poleceń wzorzec Front Controller lub obiektu kontekstu w celu zmniejszenia wzorzec Application Controller zale ności między komponentami sterującymi i pomocniczymi wzorzec Context Object implementację kontrolera jako serwletu wzorzec Front Controller lub strony JSP tworzenie widoku z wielu podwidoków wzorzec Composite View implementację widoku jako serwletu wzorzec View Helper lub strony JSP podział modelu i widoku wzorzec View Helper ukrycie logiki przetwarzania danych, związanej wzorzec View Helper z warstwą prezentacji implementację komponentów pomocniczych wzorzec View Helper jako JavaBeans lub znaczniki własne łączenie kilku wzorców warstwy prezentacji wzorzec Intercepting Filter wzorzec Dispatcher View miejsce implementacji logiki związanej wzorzec Service to Worker z nawigacją i zarządzania widokiem, czyli wzorzec Dispatcher View z wyborem właściwego widoku i pobieraniem go 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 dostępem klienta do pewnych zagadnienie projektowe — podrozdział „Kontrola widoków lub podwidoków dostępu klienta” w rozdziale 2 refaktoryzacja — podrozdział „Ukrywanie zasobów przed klientem” w rozdziale 4 sterowanie otrzymywaniem ądań klientów zagadnienie projektowe — podrozdział „Duplikacja formularzy” w rozdziale 2 zagadnienie projektowe — podrozdział „Wprowadzenie tokenu synchronizującego” w rozdziale 4
  • 23. 120 Część II n Katalog wzorców J2EE Tabela 5.6. Wzorce warstwy prezentacji (ciąg dalszy) Jeśli szukamy sposobu na ... Oto rozwiązanie... wykrywanie powielonych formularzy zagadnienie projektowe — podrozdział „Duplikacja formularzy” w rozdziale 2 refaktoryzacja — podrozdział „Wprowadzenie tokenu synchronizującego” w rozdziale 4 wykorzystanie automatycznego wypełniania zagadnienie projektowe — podrozdział „Właściwości właściwości dzięki LURUGV2TQRGTV[ klas pomocniczych — integralność i spójność” w rozdziale 2 redukcję powiązań między warstwą prezentacji refaktoryzacja — podrozdział „Ukrycie szczegółów i biznesową warstwy prezentacji przed warstwą biznesową” w rozdziale 4 refaktoryzacja — podrozdział „Wprowadzenie obiektów Business Delegate” w rozdziale 4 rozdzielenie kodu dostępu do danych refaktoryzacja — podrozdział „Wydzielenie kodu dostępu do danych” w rozdziale 4 Tabela 5.7 zawiera zagadnienia związane na ogół z wzorcami warstwy biznesowej wraz z za- znaczeniem, którego wzorca nale y u yć. Tabela 5.7. Wzorce warstwy biznesowej Jeśli szukamy sposobu na... Oto rozwiązanie... minimalizację związków między warstwą wzorzec Business Delegate prezentacji i biznesową buforowanie usług biznesowych wzorzec Business Delegate ukrycie szczegółów implementacji dostępu, wzorzec Business Delegate wyszukiwania i tworzenia usług biznesowych wzorzec Service Locator izolację zale ności od technologii i konkretnego wzorzec Service Locator producenta związanych z wyszukiwaniem usług zapewnienie jednolitej metody wyszukiwania wzorzec Service Locator i tworzenia usług biznesowych ukrycie zło oności i zale ności związanych wzorzec Service Locator z wyszukiwaniem komponentów EJB oraz JMS przekazywanie danych między obiektami wzorzec Transfer Object biznesowymi a klientami w ramach wielu warstw zapewnienie prostszego, jednolitego interfejsu wzorzec Business Delegate dla zdalnych klientów wzorzec Session Façade wzorzec Application Service redukcję ilości zdalnych wywołań metod wzorzec Session Façade poprzez utworzenie ogólnych metod dostępu do usług warstwy biznesowej
  • 24. Rozdział 5. n Omówienie wzorców J2EE 121 Tabela 5.7. Wzorce warstwy biznesowej (ciąg dalszy) Jeśli szukamy sposobu na... Oto rozwiązanie... zarządzanie związkami między komponentami wzorzec Session Façade EJB i ukrycie zło oności interakcji między nimi ochronę komponentów warstwy biznesowej wzorzec Session Façade przed bezpośrednim dostępem klienta wzorzec Application Service utworzenie jednolitego sposobu dostępu wzorzec Session Façade do komponentów warstwy biznesowej wzorzec Application Service implementację zło onego modelu domenowego wzorzec Business Object w oparciu o model obiektowy identyfikację nierozdrobnionych obiektów wzorzec Business Object i obiektów zale nych w celu utworzenia wzorzec Composite Entity obiektów biznesowych i poprawnego wykorzystania komponentów Entity projektowanie nierozdrobnionych komponentów wzorzec Composite Entity Entity redukcję lub eliminację zale ności między wzorzec Composite Entity klientami komponentów Entity a schematem bazy danych redukcję lub eliminację wzajemnych związków wzorzec Composite Entity między komponentami Entity redukcję liczby komponentów Entity i poprawę wzorzec Composite Entity sposobu zarządzania nimi pobranie modelu danych aplikacji z ró nych wzorzec Transfer Object Assembler komponentów warstwy biznesowej tworzenie „w locie” modelu danych aplikacji wzorzec Transfer Object Assembler ukrycie zło oności konstrukcji modelu danych wzorzec Transfer Object Assembler przed klientem utworzenie mechanizmów zarządzania wzorzec Value List Handler zapytaniami i ich obsługą wewnątrz warstwy biznesowej minimalizację narzutu powodowanego przez wzorzec Value List Handler metody wyszukiwania komponentów EJB buforowanie wyników zapytań na serwerze wzorzec Value List Handler wraz z mo liwością ich wielokrotnego przeglądania wybór pomiędzy komponentami sesyjnymi zagadnienie projektowe — podrozdział „Komponent stanowymi i bezstanowymi sesyjny — stanowy a bezstanowy” w rozdziale 3 ochronę komponentów Entity przed refaktoryzacja — podrozdział „Ukrycie komponentów bezpośrednim dostępem klienta Entity za komponentami sesyjnymi” w rozdziale 4 hermetyzację dostępu do usług biznesowych refaktoryzacja — podrozdział „Wprowadzenie w celu ukrycia szczegółów implementacyjnych obiektów Business Delegate” w rozdziale 4 związanych z warstwą biznesową
  • 25. 122 Część II n Katalog wzorców J2EE Tabela 5.7. Wzorce warstwy biznesowej (ciąg dalszy) Jeśli szukamy sposobu na... Oto rozwiązanie... umieszczenie logiki biznesowej zagadnienie projektowe — podrozdział „Logika w komponentach Entity biznesowa w komponentach Entity” w rozdziale 3 refaktoryzacja — podrozdział „Przeniesienie logiki biznesowej do warstwy komponentów sesyjnych” w rozdziale 4 utworzenie z komponentów sesyjnych refaktoryzacja — podrozdział „Łączenie reprezentujących ogólne usługi biznesowe komponentów sesyjnych” w rozdziale 4 refaktoryzacja — podrozdział „Ukrycie komponentów Entity za komponentami sesyjnymi” w rozdziale 4 minimalizację lub wyeliminowanie narzutu sieci refaktoryzacja — podrozdział „Redukcja komunikacji i obcią enia kontenera podczas komunikacji między komponentami Entity” w rozdziale 4 pomiędzy komponentami Entity wydzielenie kodu związanego z dostępem refaktoryzacja — podrozdział „Wydzielenie kodu do danych dostępu do danych” w rozdziale 4 Tabela 5.8 zawiera zagadnienia związane na ogół z wzorcami warstwy integracji wraz z za- znaczeniem, którego wzorca nale y u yć w konkretnej sytuacji. Tabela 5.8. Wzorce warstwy integracji Jeśli szukamy sposobu na... Oto rozwiązanie... redukcję zale ności między warstwą biznesową wzorzec Data Access Object a warstwą zasobów centralizację dostępu do warstwy zasobów wzorzec Data Access Object minimalizację zło oności dostępu do zasobów wzorzec Data Access Object z poziomu komponentów warstwy biznesowej zapewnienie asynchronicznego przetwarzania wzorzec Service Activator dla aplikacji biznesowych wysłanie asynchronicznego ądania do usługi wzorzec Service Activator biznesowej asynchroniczne przetwarzanie ądania jako wzorzec Service Activator zbioru współbie nie wykonywanych zadań przezroczyste utrwalanie modelu obiektowego wzorzec Domain Store implementację własnego mechanizmu trwałości wzorzec Domain Store obiektów udostępnienie usług sieciowych (Web Services) wzorzec Web Service Broker przy zastosowaniu XML oraz standardowych protokołów Web udostępnienie istniejących usług jako usług wzorzec Web Service Broker sieciowych
  • 26. Rozdział 5. n Omówienie wzorców J2EE 123 Podsumowanie Poznaliśmy podstawowe koncepcje dotyczące wzorców J2EE, opisaliśmy sposób ich kate- goryzacji z uwzględnieniem podziału na warstwy oraz przedstawiliśmy mapę pomagającą ustalić, które wzorce stosować w jakich sytuacjach. W kolejnych rozdziałach opisujemy poszczególne wzorce. Następne rozdziały prezentują wzorce warstwy prezentacji, biznesowej i integracji. W celu odnalezienia potrzebnego wzorca wystarczy zajrzeć do tych rozdziałów.