SlideShare a Scribd company logo
Eclipse Web Tools Platform.
                           Tworzenie aplikacji WWW
                           w jêzyku Java
                           Autor: Naci Dai, Lawrence Mandel, Arthur Ryman
                           T³umaczenie: Przemys³aw Szeremiota
                           ISBN: 978-83-246-1391-5
                           Tytu³ orygina³u: COM+ Developer's Guide
                           Format: 168x237, stron: 744



                                               Zwiêksz swoj¹ wydajnoœæ dziêki platformie WTP!
                               • Jak wykorzystaæ œrodowisko Eclipse do tworzenia aplikacji internetowych?
                               • W jaki sposób zorganizowaæ projekt aplikacji?
                               • Jak przeprowadziæ w aplikacjach testy jednostkowe?
                           Eclipse to zintegrowane œrodowisko programistyczne. Projekt zosta³ zapocz¹tkowany
                           przez firmê IBM, natomiast aktualnie jest rozwijany przez Fundacjê Eclipse. Dziêki
                           licznym dodatkom, pluginom i podprojektom zyska³ on ogromn¹ popularnoœæ i jest w tej
                           chwili jednym z narzêdzi najczêœciej wybieranych do tworzenia aplikacji w jêzyku Java
                           — i nie tylko. Natomiast projekt WTP (skrót od ang. Web Tools Platform) dziêki swoim
                           rozszerzeniom u³atwia tworzenie aplikacji WWW.
                           „Eclipse Web Tools Platform. Tworzenie aplikacji WWW w jêzyku Java” jest d³ugo
                           oczekiwan¹ na polskim rynku ksi¹¿k¹, poœwiêcon¹ tej w³aœnie platformie. Autorzy
                           przedstawiaj¹ tu inspiruj¹c¹ historiê tego rozwi¹zania, strukturê projektu oraz sposób
                           konfiguracji Web Tools Platform. Kolejne rozdzia³y przybli¿¹ Ci zagadnienia zwi¹zane
                           z warstw¹ prezentacji, logiki biznesowej i trwa³oœci. Dowiesz siê, w jaki sposób
                           wykorzystaæ narzêdzia dostarczane przez WTP do przyspieszenia prac w ka¿dej z tych
                           warstw. W zakresie podejmowanych zagadnieñ znajduj¹ siê równie¿ tematy zwi¹zane
                           z testami integracyjnymi i wydajnoœciowymi.
                               • Konfiguracja Web Tools Platform
                               • Architektura aplikacji WWW
                               • Podzia³ projektu na warstwy
                               • Sposób wykorzystania narzêdzia Maven
                               • Wykorzystanie us³ug WWW
                               • Testowanie aplikacji WWW
Wydawnictwo Helion             • Rozszerzanie WTP
ul. Koœciuszki 1c
                                  Poznaj jedn¹ z najlepszych platform do tworzenia aplikacji WWW i nie tylko!
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis tre ci
                 Przedmowa ................................................................................................................ 13
                 WstÚp ........................................................................................................................ 15
                 PodziÚkowania ........................................................................................................... 19
                 O autorach ................................................................................................................. 21


CzÚ Ê I          Zaczynamy ............................................................................................... 23

Rozdziaï 1. Wprowadzenie ........................................................................................................... 25
                 Eclipse a tworzenie aplikacji WWW w Javie ................................................................. 25
                 Zawarto Ê ksiÈ ki ............................................................................................................ 26
                 Organizacja materiaïu w ksiÈ ce .................................................................................... 27
                 Kod ródïowy przykïadów ............................................................................................. 30
                 League Planet .................................................................................................................. 30
                 Podsumowanie ............................................................................................................... 32

Rozdziaï 2. Wprowadzenie do Eclipse Web Tools Platform ........................................................... 33
                 Narodziny WTP ............................................................................................................. 33
                 Ekonomika WTP ............................................................................................................ 35
                     Redukcja nakïadów programistycznych .................................................................. 36
                     Generowanie przychodu .......................................................................................... 38
                 Struktura WTP ............................................................................................................... 42
                     Przedmiot WTP ....................................................................................................... 43
                     Projekty skïadowe WTP .......................................................................................... 44
                     Architektura WTP .................................................................................................... 46
                     Podprojekt WST ....................................................................................................... 48
                     Podprojekt JST ......................................................................................................... 53
6         Spis tre ci


                 Uczestnictwo w WTP .................................................................................................... 55
                    U ytkowanie ............................................................................................................ 56
                    Monitorowanie grup dyskusyjnych ........................................................................ 56
                    Zgïoszenie problemu ............................................................................................... 56
                    Proponowanie ulepszeñ ........................................................................................... 57
                    Naprawienie bïÚdu ................................................................................................... 57
                    Opublikowanie artykuïu bÈd poradnika ............................................................... 58
                    Formalne doïÈczenie do zespoïu ............................................................................. 58
                    PowiÚkszanie spoïeczno ci ...................................................................................... 58
                 Podsumowanie ............................................................................................................... 59

Rozdziaï 3. Elementarz ................................................................................................................. 61
                 Wprowadzenie ................................................................................................................ 61
                 Podej cie 1. Aplikacje WWW J2EE ................................................................................ 64
                    Dodawanie rodowiska wykonawczego serwera .................................................... 66
                    Tworzenie dynamicznego projektu WWW ............................................................ 72
                    Tworzenie i edycja strony JSP ................................................................................. 76
                    Uruchomienie JSP na serwerze .............................................................................. 76
                    Podsumowanie podej cia 1. ..................................................................................... 80
                 Podej cie 2. Serwlety i skryptlety .................................................................................. 80
                    Dodanie do JSP skryptletu w jÚzyku Java ............................................................... 80
                    Debugowanie JSP ..................................................................................................... 81
                    Tworzenie serwletu ................................................................................................. 85
                    Debugowanie serwletu ............................................................................................ 89
                    Podsumowanie podej cia 2. ..................................................................................... 90
                 Podej cie 3. Odwoïania do bazy danych ....................................................................... 91
                    NawiÈzanie poïÈczenia z bazÈ danych ..................................................................... 93
                    Wykonywanie zapytañ SQL ..................................................................................... 96
                    Realizowanie odwoïañ do bazy danych do aplikacji WWW ................................... 99
                    Podsumowanie podej cia 3. ................................................................................... 103
                 Podej cie 4. Usïugi WWW ........................................................................................... 104
                    Instalowanie usïugi Web Service ........................................................................... 104
                    Korzystanie z testowej aplikacji klienckiej ............................................................ 107
                    Monitorowanie komunikatów SOAP ................................................................... 108
                    Podsumowanie podej cia 4. ................................................................................... 109
                 Podsumowanie ............................................................................................................. 109

Rozdziaï 4. Przygotowanie przestrzeni roboczej .......................................................................... 111
                 Instalowanie i aktualizowanie WTP ............................................................................ 111
                     Instalowane komponenty WTP ............................................................................. 112
                     Rodzaje kompilacji WTP ....................................................................................... 113
                     Instalacja za pomocÈ mened era aktualizacji ........................................................ 115
                     Instalowanie z archiwów ZIP ................................................................................ 118
                     Instalowanie materiaïów zewnÚtrznych ................................................................ 120
                     JDK ......................................................................................................................... 123
                     Weryfikowanie instalacji ........................................................................................ 124
                     Aktualizowanie WTP ............................................................................................. 125
Spis tre ci           7



                 Konfigurowanie WTP .................................................................................................. 126
                    Preferencje kategorii Connectivity ........................................................................ 127
                    Preferencje kategorii Internet ................................................................................ 127
                    Preferencje kategorii Server ................................................................................... 128
                    Preferencje kategorii Validation ............................................................................ 128
                    Preferencje kategorii Web and XML ..................................................................... 128
                    Preferencje kategorii Web Services ....................................................................... 129
                    Preferencje kategorii XDoclet ............................................................................... 130
                    Wspólne ustawienia ................................................................................................ 130
                 Podsumowanie ............................................................................................................. 131


CzÚ Ê II         Tworzenie aplikacji WWW w Javie ......................................................... 133

Rozdziaï 5. Architektura i projektowanie aplikacji WWW ............................................................ 135
                 Krajobraz WWW ........................................................................................................... 135
                 Aplikacje WWW ............................................................................................................ 137
                    Aplikacje WWW w Javie ......................................................................................... 138
                    Projekt aplikacji WWW z podziaïem na warstwy ................................................. 142
                    Wzorzec MVC w aplikacji WWW ......................................................................... 145
                    Szkielety aplikacyjne dla Javy ................................................................................. 149
                 Architektura usïugowa SOA ........................................................................................ 152
                    UdostÚpnianie usïug. Warstwa usïugowa ............................................................. 152
                 Studium przypadku — League Planet ........................................................................ 154
                 Podsumowanie ............................................................................................................. 156

Rozdziaï 6. Organizacja projektu ................................................................................................ 157
                 Typy projektów WWW i aplikacji J2EE ...................................................................... 158
                    Projekty WWW ....................................................................................................... 159
                    Moduïy J2EE .......................................................................................................... 160
                    Tworzenie aplikacji ................................................................................................ 160
                    Tworzenie aplikacji EJB ......................................................................................... 167
                    Tworzenie aplikacji EAR ....................................................................................... 173
                 Zaawansowane projekty WWW ................................................................................... 178
                    Modelowanie perspektywy projektowej ............................................................... 181
                 Przykïadowe projekty ................................................................................................... 184
                    Prosta aplikacja korporacyjna ................................................................................. 184
                    Podziaï moduïu WWW na wiele projektów ......................................................... 190
                    Tworzenie aplikacji WWW a Maven ..................................................................... 199
                 Podsumowanie ............................................................................................................. 214

Rozdziaï 7. Warstwa prezentacji ................................................................................................ 217
                 Wprowadzenie .............................................................................................................. 217
                 Projektowanie interakcji .............................................................................................. 218
                 Projektowanie grafiki ................................................................................................... 220
                 Struktura warstwy prezentacji ..................................................................................... 222
8        Spis tre ci


                Podej cie 1. Projekty statycznych stron WWW, HTML i edytory
                kodu ródïowego .......................................................................................................... 225
                   Projekty statycznych aplikacji WWW .................................................................... 225
                   HTML .................................................................................................................... 228
                   Edytory kodu ródïowego ..................................................................................... 236
                   Szablony .................................................................................................................. 239
                   Wstawki ................................................................................................................... 243
                   Podsumowanie podej cia 1. ................................................................................... 248
                Podej cie 2. CSS ........................................................................................................... 248
                   Podsumowanie podej cia 2. ................................................................................... 253
                Podej cie 3. JavaScript .................................................................................................. 253
                   Maskowanie adresu e-mail .................................................................................... 253
                   Walidacja danych wprowadzanych do formularza ............................................... 255
                   Podsumowanie podej cia 3. ................................................................................... 266
                Podej cie 4. XML i XSLT ............................................................................................ 267
                   XML ........................................................................................................................ 267
                   XSLT ....................................................................................................................... 271
                   Podsumowanie podej cia 4. ................................................................................... 276
                Podej cie 5. DTD ......................................................................................................... 276
                   Podsumowanie podej cia 5. ................................................................................... 281
                Podej cie 6. Serwery, projekty dynamicznych aplikacji WWW i serwlety ................ 281
                   Serwery ................................................................................................................... 281
                   Projekty dynamicznych aplikacji WWW ............................................................... 288
                   Serwlety .................................................................................................................. 290
                   Podsumowanie podej cia 6. ................................................................................... 300
                Podej cie 7. JSP ............................................................................................................ 300
                   Podsumowanie podej cia 7. ................................................................................... 310
                Podej cie 8. Monitorowanie sesji HTTP ................................................................... 310
                   Sesje HTTP ............................................................................................................ 310
                   Monitor TCP/IP .................................................................................................... 311
                   PodglÈdanie sesji HTTP w monitorze TCP/IP ................................................... 312
                   Modyfikowanie i ponowne przesyïanie komunikatu ........................................... 317
                   Podsumowanie podej cia 8. ................................................................................... 317
                Podsumowanie ............................................................................................................. 317

Rozdziaï 8. Warstwa logiki biznesowej ...................................................................................... 319
                Typowy ukïad warstwy biznesowej ............................................................................ 322
                Podej cie 1. Model dziedzinowy ................................................................................. 323
                   Projekty pomocnicze J2EE .................................................................................... 323
                   Model obiektowy ................................................................................................... 325
                   Warstwa usïugowa .................................................................................................. 332
                   Warstwa dostÚpu do danych .................................................................................. 336
                   Testy ........................................................................................................................ 342
                   Podsumowanie podej cia 1. ................................................................................... 346
Spis tre ci           9



                 Podej cie 2. Tworzenie sesyjnych komponentów EJB .............................................. 347
                    Dodawanie serwera JBoss ...................................................................................... 351
                    XDoclet ................................................................................................................... 354
                    Projekty EJB ........................................................................................................... 357
                    Tworzenie komponentów sesyjnych .................................................................... 360
                    Konstruowanie klienta WWW ............................................................................... 371
                    Uruchamianie aplikacji .......................................................................................... 374
                    WTP i komponenty EJB 3.0 .................................................................................. 377
                    Podsumowanie podej cia 2. ................................................................................... 379
                 Podej cie 3. Komponenty komunikatowe .................................................................. 380
                    Krótkie wprowadzenie do MDB ........................................................................... 380
                    Tworzenie komponentu komunikatowego .......................................................... 380
                    Tworzenie kolejki komunikatów w JBoss ............................................................ 384
                    Tworzenie klienta kolejki JMS .............................................................................. 385
                    Podsumowanie podej cia 3. ................................................................................... 388
                 Podsumowanie ............................................................................................................. 389

Rozdziaï 9. Warstwa trwaïo ci ................................................................................................... 391
                 Projekty warstwy trwaïo ci .......................................................................................... 392
                    Odwzorowanie obiektów w bazie danych za pomocÈ interfejsu JDBC ............. 394
                    Odwzorowanie obiektów w bazie danych za po rednictwem
                    komponentów encyjnych ...................................................................................... 395
                    Odwzorowanie obiektów w bazie danych za po rednictwem
                    gotowych szkieletów odwzorowania obiektowo-relacyjnego .............................. 396
                 PrzeglÈd Êwiczeñ .......................................................................................................... 397
                 Podej cie 1. Tworzenie bazy danych ........................................................................... 398
                    Podsumowanie podej cia 1. ................................................................................... 407
                 Podej cie 2. Warstwa danych ....................................................................................... 408
                    Podsumowanie podej cia 2. ................................................................................... 414
                 Podej cie 3. Komponenty encyjne .............................................................................. 414
                    Przygotowania w JBoss, Derby i XDoclet ............................................................ 415
                    Tworzenie komponentu CMP .............................................................................. 419
                    Definiowanie metody ejbCreate i metod wyszukujÈcych ................................... 423
                    Dodawanie DAO z wykorzystaniem CMP .......................................................... 430
                    Testowanie implementacji CMP .......................................................................... 433
                    Programowanie JPA w WTP ................................................................................. 437
                    Podsumowanie podej cia 3. ................................................................................... 441
                 Podsumowanie ............................................................................................................. 441

Rozdziaï 10. Usïugi WWW ........................................................................................................... 443
                 WSDL ........................................................................................................................... 444
                 SOAP ............................................................................................................................ 445
                 REST ............................................................................................................................. 446
                 Usïugi WWW à la REST .............................................................................................. 448
                 PrzeglÈd Êwiczeñ .......................................................................................................... 449
10        Spis tre ci


                  Podej cie 1. Budowanie usïugi WWW „od góry” ....................................................... 450
                     XSD ......................................................................................................................... 450
                     WSDL ..................................................................................................................... 456
                     Wdra anie usïug WWW ......................................................................................... 462
                     Implementowanie usïugi WWW ........................................................................... 469
                     Testowanie usïugi w eksploratorze usïug WWW ................................................. 474
                     Podsumowanie podej cia 1. ................................................................................... 475
                  Podej cie 2. Budowanie usïugi WWW „od doïu” ....................................................... 477
                     Implementacja klasy usïugi .................................................................................... 478
                     Wdra anie usïugi .................................................................................................... 483
                     Podsumowanie podej cia 2. ................................................................................... 487
                  Podej cie 3. Generowanie proxy dla klientów usïugi WWW .................................... 487
                     Generowanie proxy klienckiego i testowej strony JSP ......................................... 488
                     Korzystanie z testowej klienckiej strony JSP ........................................................ 491
                     Podsumowanie podej cia 3. ................................................................................... 493
                  Podej cie 4. Kontrola interoperacyjno ci usïug WWW .............................................. 494
                     Kontrola komunikatów pod kÈtem zgodno ci z WS-I ......................................... 495
                     Podsumowanie podej cia 4. ................................................................................... 498
                  Podej cie 5. Wykorzystywanie usïug WWW w aplikacjach WWW ........................... 501
                     Generowanie klienta usïugi Query ....................................................................... 501
                     Tworzenie serwletów ............................................................................................. 502
                     Importowanie kodu interfejsu u ytkownika ........................................................ 504
                     Testowanie interfejsu u ytkownika ...................................................................... 515
                     Podsumowanie podej cia 5. ................................................................................... 519
                  Podej cie 6. Wyszukiwanie i publikowanie usïug WWW .......................................... 519
                     UDDI ..................................................................................................................... 520
                     WSIL ....................................................................................................................... 520
                     Podsumowanie podej cia 6. ................................................................................... 525
                  Podsumowanie ............................................................................................................. 525

Rozdziaï 11. Testy ........................................................................................................................ 527
                  Testy zautomatyzowane ............................................................................................... 529
                  PrzeglÈd zadañ z bie Ècego rozdziaïu .......................................................................... 530
                  Podej cie 1. Testy jednostkowe à la JUnit .................................................................. 530
                     Tworzenie projektu dla testów .............................................................................. 532
                     Przypadek testowy JUnit ....................................................................................... 532
                     Zestaw testów JUnit .............................................................................................. 537
                     Podsumowanie podej cia 1. ................................................................................... 538
                  Podej cie 2. Testy integracyjne à la Cactus ................................................................. 539
                     Podsumowanie podej cia 2. ................................................................................... 545
                  Podej cie 3. Testy systemowe à la HttpUnit .............................................................. 546
                     Podsumowanie podej cia 3. ................................................................................... 551
                  Podej cie 4. Testy wydajno ciowe à la TPTP ............................................................. 551
                     Tworzenie projektu testu wydajno ci ................................................................... 554
                     Test rejestrowania HTTP ...................................................................................... 554
                     Generowanie zestawienia wynikowego ................................................................ 556
                     Podsumowanie podej cia 4. ................................................................................... 558
Spis tre ci          11



                Podej cie 5. Profilowanie aplikacji z TPTP ................................................................ 558
                   Podsumowanie podej cia 5. ................................................................................... 563
                Podsumowanie ............................................................................................................. 563


CzÚ Ê III       Rozszerzanie WTP .................................................................................. 565
Rozdziaï 12. Dodawanie nowych serwerów ................................................................................. 567
                Ogólnie o dodawaniu uniwersalnego adaptera serwera ............................................. 570
                ¥rodowisko wykonawcze GlassFish ............................................................................ 571
                Wtyczki adapterów serwerów ...................................................................................... 572
                Dodawanie obsïugi do nowego rodowiska wykonawczego ..................................... 575
                Dodawanie nowego typu serwera ............................................................................... 577
                Dodawanie handlera rodowiska wykonawczego ....................................................... 578
                Aspekty i komponenty rodowiska wykonawczego ................................................... 579
                Rozszerzanie interfejsu narzÚdzi serwerowych .......................................................... 581
                Definicja serwera .......................................................................................................... 583
                Moduïy publikacji ........................................................................................................ 587
                Test adaptera serwera ................................................................................................... 590
                Podsumowanie ............................................................................................................. 598

Rozdziaï 13. Obsïuga nowych typów plików ................................................................................ 601
                Tworzenie rozszerzenia DocBook .............................................................................. 603
                Walidator DocBook ...................................................................................................... 603
                   Infrastruktura walidacji w WTP ............................................................................ 605
                   Implementacja walidatora dla DocBook ............................................................... 605
                Tworzenie wïasnego typu markera ............................................................................. 618
                Deklarowanie typu zawarto ci DocBook .................................................................... 619
                Podsumowanie ............................................................................................................. 624

Rozdziaï 14. Rozszerzenia dla WSDL ............................................................................................ 625
                Tworzenie wtyczki rozszerzenia WSDL ..................................................................... 629
                Rozszerzanie edytora WSDL ....................................................................................... 630
                   Dostosowywanie wyglÈdu elementów rozszerzajÈcych WSDL
                   w panelu edycji wizualnej ...................................................................................... 632
                   Dodawanie elementów rozszerzajÈcych do edytora ............................................. 635
                   Dodawanie wïasnych akcji do widoku edycji wizualnej edytora WSDL ............ 644
                Rozszerzanie walidacji WSDL ..................................................................................... 651
                   Dodatki do walidacji WSDL 1.1 ............................................................................ 652
                   Wïasne reguïy walidacji .......................................................................................... 656
                Podsumowanie ............................................................................................................. 660

Rozdziaï 15. Dostosowywanie mechanizmu rozwiÈzywania URI dla zasobów .............................. 661
                Tworzenie wtyczki rozszerzenia infrastruktury rozwiÈzywania zasobów ................ 664
                Dodawanie zasobów do katalogu XML ...................................................................... 665
                  Katalog XML .......................................................................................................... 667
                  Dodawanie pojedynczego zasobu do katalogu XML ........................................... 667
                  Dodawanie do katalogu XML zestawu zasobów .................................................. 670
12      Spis tre ci


               Wïasna strategia rozwiÈzywania zasobów ................................................................... 673
                  Infrastruktura rozwiÈzywania URI dla zasobów .................................................. 675
                  Tworzenie folderu mechanizmu rozwiÈzywania URI ........................................ 678
               Podsumowanie ............................................................................................................. 681


CzÚ Ê IV       Produkty i dodatki .................................................................................. 683

Rozdziaï 16. Inne narzÚdzia WWW bazujÈce na Eclipse ................................................................ 685
               WWW w Javie ............................................................................................................... 686
                  BEA Workshop ....................................................................................................... 686
                  CodeGear JBuilder ................................................................................................. 686
                  Exadel Studio .......................................................................................................... 686
                  IBM Rational Application Developer ................................................................... 687
                  JBoss Tools (JBoss IDE) ........................................................................................ 688
                  MyEclipse ............................................................................................................... 688
                  ObjectWeb Lomboz ............................................................................................... 688
                  SAP NetWeaver Developer Studio ....................................................................... 689
                  W4T Eclipse ........................................................................................................... 689
               WWW w Perlu .............................................................................................................. 689
                  EPIC ........................................................................................................................ 690
               WWW w PHP ............................................................................................................... 690
                  Eclipse PHP Development Tools ......................................................................... 691
                  PHPEclipse ............................................................................................................. 691
               WWW w Pythonie ........................................................................................................ 691
                  PyDev ...................................................................................................................... 691
               WWW w Ruby .............................................................................................................. 692
                  RadRails .................................................................................................................. 692
               Podsumowanie ............................................................................................................. 692

               Sïowniczek ............................................................................................................... 693

               Bibliografia .............................................................................................................. 701

               Skorowidz ................................................................................................................ 709
Rozdziaï 5. • Architektura i projektowanie aplikacji WWW             135




                    ROZDZIA’ 5.
   Architektura i projektowanie
          aplikacji WWW
                    Pomyïki sÈ wrotami do odkryÊ.
                                                                  — James Joyce

  W tym rozdziale zajmiemy siÚ opisem dwóch rodzajów systemów WWW — infrastruktury
  aplikacji i infrastruktury usïugi. Wielu z nas tworzy aplikacje z interfejsem WWW. Owe in-
  terfejsy odwoïujÈ siÚ do warstw biznesowych aplikacji i utrwalajÈ pobrane dane w bazach
  danych. Dla takich rodzajów systemów architekturÚ warstwowÈ udostÚpnia infrastruktura
  aplikacji. Z kolei w przypadku infrastruktury usïugi mamy do czynienia ze wspóïpracÈ po-
  szczególnych usïug za po rednictwem WWW — bez udziaïu u ytkowników. W tym przypad-
  ku mowa o architekturze zorientowanej na usïugi — SOA (od Service Oriented Architecture).
       Oba systemy majÈ cechy wspólne; w obu chodzi o zmontowanie rozlegïego i popraw-
  nego pod wzglÚdem struktury systemu WWW, opartego na prawidïach zasad obiektowo ci.
  Przypomnimy wiÚc wiadomo ci z wykïadów o projektowaniu obiektowym i zobaczymy,
  jak mo na je zastosowaÊ do WWW.



Krajobraz WWW
  SieÊ WWW ewoluuje od sieci stanowiÈcej no nik informacji dla odbiorców-u ytkowników,
  w kierunku rodka komunikacji i wspóïpracy pomiÚdzy lud mi, ale i pomiÚdzy aplikacjami
  (zob. rysunek 5.1).
      SieÊ WWW dziaïa w oparciu o standardowe i otwarte protokoïy. Jest niejednorodna,
  rozproszona i szeroko dostÚpna. SieÊ WWW jest wiÚc niemal idealnÈ platformÈ do wymiany
  informacji i koordynacji dziaïañ. Budowanie aplikacji WWW i integrowanie tych aplikacji nie
136    CzÚ Ê II • Tworzenie aplikacji WWW w Javie




RYSUNEK 5.1. Aplikacje i usïugi WWW
Rozdziaï 5. • Architektura i projektowanie aplikacji WWW             137



       sÈ ju oddzielnymi zadaniami. Podstawowym zaïo eniem SOA jest to, e systemy WWW
       powinny byÊ montowane z usïug eksponujÈcych otoczeniu ci le zdefiniowane interfejsy,
       które pozwalajÈ na komunikacjÚ zarówno z u ytkownikami, jak i aplikacjami.
            W wiecie ukierunkowanym na usïugi mamy mnóstwo aplikacji sieciowych: aplikacje
       pïatnicze uruchamiane na komputerach typu mainframe, drukarki fotograficzne drukujÈce
       zdjÚcia z aparatu cyfrowego czy wsady wie ych wiadomo ci z praktycznie dowolnej dzie-
       dziny. Wszystkie te aplikacje sÈ przykïadami systemów wiadczÈcych pewne usïugi. Ka dy
       z takich „systemów-usïugodawców” eksponuje swoje zasoby za po rednictwem publicznego
       interfejsu definiujÈcego jego usïugÚ. Nowe aplikacje u ywajÈ takich usïug i montujÈ z nich
       nowe aplikacje, które same mogÈ byÊ udostÚpniane równie jako osobne usïugi. W tym pro-
       stym modelu usïugodawcy i usïugobiorcy mo na ujÈÊ tworzenie aplikacji WWW nastÚpnej
       generacji, z prawie nieograniczonymi mo liwo ciami.



Aplikacje WWW
       Prosta aplikacja WWW skïada siÚ z trzech logicznych warstw: warstwy prezentacji, warstwy
       logiki biznesowej i warstwy danych (zob. rysunek 5.2). To jedynie podstawowy podziaï ogól-
       ny, ale w faktycznej aplikacji mo na wyró niaÊ logicznie dodatkowe warstwy, reprezentujÈce
       i wyodrÚbniajÈce poszczególne charakterystyczne elementy architektury aplikacji. Architek-
       tura fizyczna aplikacji jest tu nieistotna: wszystkie trzy warstwy mogÈ równie dobrze dziaïaÊ
       na pojedynczym serwerze aplikacyjnym i jednym komputerze albo na trzech i wiÚcej osob-
       nych serwerach aplikacyjnych. W J2EE architekturÈ fizycznÈ mo na zarzÈdzaÊ niezale nie
       od warstw logicznych aplikacji.




RYSUNEK 5.2. Aplikacje i usïugi WWW
138   CzÚ Ê II • Tworzenie aplikacji WWW w Javie


            Najwy sza warstwa to warstwa prezentacji. Jest to warstwa interfejsu u ytkownika, mon-
      towana zazwyczaj na bazie jÚzyka HTML. Modele RIA (Rich Internet Application) i AJAX
      wprowadzajÈ zresztÈ do warstwy prezentacji nowsze technologie implementacji strony klienc-
      kiej, na przykïad Flash czy JavaScript. Je li interfejs u ytkownika nie wymaga do uruchomienia
      niczego poza przeglÈdarkÈ WWW, okre lamy go mianem „cienkiego klienta” — ang. thin client.


  Adobe Flash
  Flash jest co prawda najpowszechniejszy wïa nie w bogatym interfejsie u ytkownika, ale czÚsto
  wykorzystuje siÚ go równie w aplikacjach wielowarstwowych. Flash ma wïasny obiektowy jÚzyk
  programowania — ActionScript 2.0 — i komponenty umo liwiajÈce odwoïywanie siÚ do usïug
  WWW i baz danych. WiÚcej informacji o tej stronie platformy Flash mo na znale Ê pod adre-
  sem http://www.adobe.com/platform.

           Warstwa rodkowa to warstwa, w której realizuje siÚ tak zwanÈ logikÚ biznesowÈ apli-
      kacji. W tej warstwie bÚdÈ dziaïaÊ na przykïad obiekty realizujÈce dodanie dru yny do ligi.
      Wydzielona warstwa logiki biznesowej nie jest zresztÈ zwiÈzana wyïÈcznie z aplikacjÈ WWW
      — porzÈdne wyodrÚbnienie warstwy umo liwia wykorzystanie jej równie w innych systemach.
           Dolna warstwa to warstwa, gdzie realizowane jest zadanie przechowywania danych w spo-
      sób trwaïy. Najbardziej typowym ródïem trwaïo ci jest baza danych, ale równie dobrze mogÈ
      to byÊ pliki w systemie plików.
           W dalszej czÚ ci rozdziaïu zajmiemy siÚ kwestiami dotyczÈcymi poszczególnych wyró -
      nionych tu warstw. W sieci WWW mo na znale Ê mnóstwo przykïadów takich aplikacji;
      wszystkie udostÚpniajÈ jakie usïugi warstwy biznesowej u ytkownikom koñcowym. Aplika-
      cje te mogÈ byÊ ze sobÈ skojarzone (na przykïad odno nikami hipertekstowymi), ale nie sÈ
      faktycznie zintegrowane — stanowiÈ raczej lu no powiÈzane „ekosystemy”, w których czyn-
      nikiem wiÈ Ècym jest wïa nie u ytkownik koñcowy. Tymczasem w systemie zorientowanym
      na usïugi aplikacje sÈ zintegrowane za po rednictwem tych e usïug; miejsce u ytkowników
      w tych systemach zajmujÈ inne, zewnÚtrzne aplikacje WWW, a warstwa prezentacji jest za-
      stÚpowana warstwÈ usïugi.


      Aplikacje WWW w Javie
      Aplikacje WWW w jÚzyku Java wykorzystujÈ technologie opisane w specyfikacji J2EE i po-
      wszechne standardy ogólne, jak HTML, XMLO czy Web Service.
           Koncepcja warstwowego podziaïu aplikacji i systemów klient-serwer jest w informatyce
      obecna znacznie dïu ej ni technologie WWW i jÚzyk Java. Chyba najcenniejszym wkïadem
      ze strony J2EE w tej dziedzinie byïo udostÚpnienie praktycznej i ustandaryzowanej specyfi-
      kacji. DziÚki temu powstaïo wiele komercyjnych i niekomercyjnych serwerów aplikacyjnych
      obsïugujÈcych tak ustanowiony standard.
           J2EE oferuje standardy dla modeli wykonawczych i programistycznych, wykorzystywa-
      nych w aplikacjach WWW. SÈ tu komponenty dla sesji klienckich, prezentacji, logiki bizneso-
      wej i logiki sterowania aplikacjÈ, a tak e dla operacji biznesowych. SÈ tu te zdefiniowane
      usïugi dotyczÈce rozproszenia, transakcyjno ci i zarzÈdzania danymi, umo liwiajÈce urucha-
      mianie tych komponentów w rodowiskach korporacyjnych.
Rozdziaï 5. • Architektura i projektowanie aplikacji WWW             139



            Aplikacje WWW w technologii J2EE sÈ przeno ne pomiÚdzy zgodnymi ze specyfikacjÈ
       serwerami aplikacyjnymi. Przeno no Ê ta bazuje na dostÚpno ci kompletnego standardu re-
       gulujÈcego przebieg interakcji klientów z systemem, implementacjÚ poszczególnych kompo-
       nentów i sposób wykorzystania przez te komponenty interfejsów usïug w celu integrowania
       ich z innymi systemami korporacyjnymi. Model J2EE dzieli warstwÚ prezentacji na warstwy
       prezentacji strony klienta i strony serwera. Do modelowania i implementowania logiki bizne-
       sowej sïu È tu komponenty EJB. Warstwa danych jest realizowana równie za pomocÈ kompo-
       nentów EJB, a tak e za po rednictwem usïug dajÈcych dostÚp do korporacyjnych systemów
       informatycznych.
            J2EE definiuje osobne kontenery dla komponentów WWW i komponentów bizneso-
       wych (EJB) — zob. rysunek 5.3. Kontenery udostÚpniajÈ standardowe dla nich usïugi, obsïu-
       gujÈc rozproszenie, sesyjno Ê i transakcyjno Ê. Klienty mogÈ byÊ aplikacjami typu thin client
       (jak przeglÈdarka WWW) albo peïnoprawnymi i samodzielnymi aplikacjami. Wymagane do ko-
       munikacji protokoïy WWW sÈ obsïugiwane przez rodowiska wykonawcze po stronie serwera.




RYSUNEK 5.3. Kontenery J2EE

            Kontener WWW obsïuguje komponenty takie jak strony JSP i serwlety. Komponenty
       te sÈ wykorzystywane powszechnie do realizacji warstwy prezentacji.
            Kontener komponentów EJB udostÚpnia rodowisko wykonawcze dla komponentów
       biznesowych i dostÚp do korporacyjnych systemów informatycznych.
            ¥rodowisko wykonawcze skïada siÚ z licznych ustandaryzowanych usïug, w tym usïug
       ïÈczno ci z bazami danych (JDBC), interfejsu transakcyjnego Java Transaction API i usïug
       transakcyjno ci (JTA/JST), architektury J2CA (Java 2 Connector), usïug uwierzytelniania
140   CzÚ Ê II • Tworzenie aplikacji WWW w Javie


      i autoryzacji (JAAS), usïug interfejsu systemów nazw i katalogów (JNDI) i mnóstwa innych
      interfejsów realizujÈcych komunikacjÚ wewnÚtrznÈ i zewnÚtrznÈ, zapewniajÈcych rozszerzal-
      no Ê systemów J2EE.


      Projektowanie aplikacji WWW w jÚzyku Java
      Czasami jeste my tak zaaferowani nowymi technologiami i systemami, e zapominamy na-
      uki z przeszïo ci. Stosowanie zasad in ynierii oprogramowania, zwïaszcza za zasad obiekto-
      wo ci, jest dla nas w tych nowych technologiach wyzwaniem (Knight 2002). Owe nowe tech-
      nologie bywajÈ tak samo gro ne, jak efektywne; mogÈ zachÚcaÊ do stosowania niekoniecznie
      najlepszych praktyk programistycznych. Na przykïad programowanie stron JSP kusi mo -
      liwo ciÈ bezpo redniego odwoïywania siÚ do baz danych, ïatwo tu te zapomnieÊ o zdatno ci
      kodu do ponownego wykorzystania. Komponenty EJB jako skïadowe biznesowych kom-
      ponentów aplikacji sÈ krytykowane za nadmiernÈ zïo ono Ê. XML promuje wspóïdzielenie
      i wielokrotne wykorzystanie, ale bywa nadu ywany.
           Aplikacje WWW pisane w Javie skïadajÈ siÚ od strony warstwy prezentacji ze stron JSP
      i serwletów. Zarówno JSP, jak i serwlety mo na wykorzystaÊ przy tworzeniu architektur
      z wyodrÚbnionymi warstwami. W ten sposób buduje siÚ dwa najpopularniejsze typy aplika-
      cji WWW w Javie, które bÚdziemy oznaczaÊ jako model 1. i model 2. Otó wedle modelu 1.
        Èdania klientów sÈ przesyïane wprost do stron JSP, podczas gdy w modelu 2. sÈ one kiero-
      wane do serwletu kontrolujÈcego, który dopiero przekierowuje je do odpowiednich stron JSP.
      Obszerne opisy obu modeli mo na znale Ê w podrozdziale 4.4, Web-Tier Application Framework
      Design, w ksiÈ ce Designing Enterprise Applications with the J2EE™ Platform (Singh 2002). Model 1.
      jest wykorzystywany w bardzo prostych aplikacjach WWW. Z kolei model 2. stanowi adap-
      tacjÚ wzorca projektowego MVC (Model View Controller) dla potrzeb aplikacji WWW. Wzor-
      cem projektowym MVC zajmiemy siÚ nieco pó niej (w podrozdziale „Wzorzec MVC
      w aplikacji WWW”).
           Wedle modelu 1. najwa niejszym celem jest przeniesienie mo liwie du ej ilo ci kodu
      obsïugujÈcego prezentacjÚ z klas Java do stron JSP. Elementy JSP sÈ popularne, poniewa
      pozwalajÈ na zarzÈdzanie tre ciÈ (HTML, CSS, JavaScript czy XML) i na równoczesne stoso-
      wanie kodu w jÚzyku Java. W JSP mo na wygodnie przetwarzaÊ Èdania HTTP i generowaÊ
      odpowiedzi w postaci gotowych dokumentów HTML. Strony JSP dajÈ siÚ te ïatwo zro-
      zumieÊ projektantom i twórcom WWW (którzy niekoniecznie sÈ wykwalifikowanymi pro-
      gramistami Java). W architekturze narzucanej przez model 1. caïa aplikacja jest w zasadzie
      realizowana na bazie JSP. Niektórzy podnoszÈ, e mimo wszystko dochodzi do separacji tre ci
      i prezentacji, poniewa wszystkie odwoïania do danych sÈ realizowane za pomocÈ kompo-
      nentów jÚzyka Java. Architektura modelu 1. sprawdza siÚ na szybko w niewielkich aplikacjach,
      ale dla wszystkich aplikacji obejmujÈcych wiÚcej ni kilka stron kodu trzeba jÈ uznaÊ za
      zwyczajnie zïÈ. JSP nie jest dobrym miejscem do realizowania logiki biznesowej i logiki ste-
      rowania aplikacjÈ. Model 1. w miarÚ wzrostu rozmiaru aplikacji szybko degeneruje projekt,
      wymuszajÈc zwielokrotnianie kodu i zwiÚkszajÈc zïo ono Ê. Wszystkie podstawowe warstwy
      logiczne typowej aplikacji sÈ tu sprasowane do postaci pojedynczego komponentu.
           Z punktu widzenia wyodrÚbniania ró nych abstrakcji do ró nych warstw i z punktu wi-
      dzenia zasad obiektowo ci model 1. programowania z u yciem JSP jest najgorszy w tym,
        e w pojedynczym skrypcie grupuje siÚ zadania nale Èce do oddzielnych warstw. Wedle
      modelu 1. JSP musi:
Rozdziaï 5. • Architektura i projektowanie aplikacji WWW                 141



   1. PrzyjmowaÊ dane wej ciowe.
   2. ObsïugiwaÊ logikÚ aplikacji (logikÚ biznesowÈ i logikÚ przepïywu sterowania).
   3. GenerowaÊ dane wyj ciowe (obsïugiwaÊ logikÚ prezentacji).
     Skoro wszystkie trzy warstwy zostaïy zwiÈzane w pojedynczym komponencie, nie mo na
  adnej z nich modyfikowaÊ ani testowaÊ z osobna. Do tego obsïuga wszystkich tych zadañ
(opiszemy je osobno) równie jest problematyczna. To samo dotyczyïoby wykorzystania
samych serwletów (bo serwlet mo na uznaÊ za skrypt z dodatkowymi osadzonymi elemen-
tami XML czy HTML); do tego mieszanie kodu z tekstem utrudnia zarzÈdzanie kodem
i diagnostykÚ kodu.


Przyjmowanie danych wej ciowych
W ramach przyjmowania danych wej ciowych skrypt otrzymuje do dyspozycji obiekt
HttpServletRequest, bÚdÈcy reprezentacjÈ strumienia wej ciowego HTTP, minimalnie tylko
przetworzonÈ. W HTTP wyró niono trzy mechanizmy do przekazywania parametrów (me-
toda kodowania parametrów w URL, metoda parametrów zapytañ i formularze) i we wszyst-
kich dane sÈ przekazywane jako zwyczajne ciÈgi znaków. Ka dy ze skryptów skïadajÈcych
siÚ na aplikacjÚ musi wiÚc „na wïasnÈ rÚkÚ” okre laÊ sposób przekazywania parametrów,
konwersjÚ parametrów na warto ci odpowiednich typów i weryfikacjÚ (walidacjÚ) tych war-
to ci. Brak wspólnego, wyodrÚbnionego kodu obsïugi danych wej ciowych wymusza powiela-
nie tego samego bÈd podobnego kodu w wielu osobnych skryptach.


Obsïuga logiki aplikacji
KolejnÈ kwestiÈ problematycznÈ, dotyczÈcÈ zarówno obsïugi wej cia, jak i logiki aplikacji, jest
brak hermetyzacji informacji przy odwoïaniach do danych Èdania i danych sesji. Skrypt musi
pobraÊ dane z Èdania wej ciowego po nazwie. Protokóï HTTP jest protokoïem bezstanowym,
wiÚc dane wykorzystywane na wielu osobnych stronach JSP w ka dym skrypcie wymagajÈ-
cym tych danych muszÈ albo byÊ zapisane w sesji skojarzonej z danym u ytkownikiem, albo
wielokrotnie odczytywane z zewnÚtrznego ródïa danych.
    Na przykïad, je li skrypt przekazuje dane logowania u ytkownika jako dane formularza,
kod zapisujÈcy te dane w sesji mógïby wyglÈdaÊ tak:

Listing 5.1. Zapisywanie sesji z parametrami Èdania HTTP
password = request.getParameter("passwordField");
decrypted = this.decode("password");
request.getSession().setAttribute("password", decrypted);

    Zarówno zapis danych w atrybutach sesji, jak i zapis w zewnÚtrznym ródle danych to
efektywny zapis danych w zasiÚgu globalnym, a aplikacja odwoïuje siÚ do takich danych jak
do sïownika, to znaczy poprzez ciÈgi z nazwami traktowanymi jako klucze warto ci. Tak
skïadowanych danych nie dotyczÈ zwyczajne mechanizmy kontrolowania czasu ycia zmien-
nych i w ka dym skrypcie czy te na ka dej stronie korzystajÈcej z danych trzeba „ujawniÊ”
142   CzÚ Ê II • Tworzenie aplikacji WWW w Javie


      stosowane nazewnictwo atrybutów-zmiennych. Nie mo na wtedy w prosty sposób wyszu-
      kaÊ wszystkich odwoïañ do zmiennych za po rednictwem zwyczajnych mechanizmów pro-
      gramistycznych, co z kolei utrudnia modyfikowanie odwoïañ do danych. A je li JSP nie
      hermetyzuje stosowanej konwencji nazewniczej, wiedza i niej i o niskopoziomowych prze-
      cie szczegóïach implementacji protokoïu HTTP musi byÊ implementowana w caïo ci apli-
      kacji, co skutecznie niweczy jej zdatno Ê do adaptacji do nowych zastosowañ. Co wiÚcej,
      mamy tu te potencjalne ródïo bïÚdów, które mogÈ powstaÊ nie tylko wskutek zwyczajnej
      literówki w nazwie zmiennej, ale tak e w wyniku zastosowania takiej samej nazwy w ró -
      nych skryptach do ró nych celów. W miarÚ zwiÚkszania siÚ liczby stron JSP budowanej w ten
      sposób aplikacji, problemy te mogÈ okazaÊ siÚ przytïaczajÈce.
           Kiedy do realizacji logiki aplikacji wykorzystuje siÚ strony JSP, wprowadza siÚ do nich
      potencjalnie znaczÈce ilo ci kodu. Tymczasem techniki zarzÈdzania kodem w przypadku kodu
      osadzonego w JSP muszÈ z konieczno ci byÊ ograniczone. Mieszanina kodu i tekstu na stro-
      nach JSP utrudnia te diagnostykÚ kodu. Co prawda w WTP znalazïy siÚ zarówno mechani-
      zmy asysty przy wprowadzaniu kodu w JSP, jak i mechanizmy interaktywnego debugowa-
      nia kodu, w przypadku prekompilowanych stron JSP trzeba bÚdzie debugowaÊ zïo ony kod
      generowany przez serwer, co jest trudne. Z tych wzglÚdów nale aïoby minimalizowaÊ ilo Ê
      kodu w stronach JSP i unikaÊ programowania tam logiki aplikacji.

      Obsïuga logiki biznesowej
      W JSP caïy kod ma strukturÚ monolitycznÈ. Co prawda mo na w nim wydelegowaÊ zadania
      biznesowe do obiektów biznesowych, ale wciÈ mamy do czynienia z mieszaniem logiki apli-
      kacji i logiki biznesowej. Tymczasem nie da siÚ skutecznie przetestowaÊ niezale nie od siebie
      poszczególnych fragmentów JSP, tak jak to jest mo liwe w przypadku odrÚbnych klas jÚzyka
      Java (i testów jednostkowych). Do tego realizacja logiki biznesowej w JSP prowadzi do dalsze-
      go przeïadowania strony kodem, co utrudnia zarzÈdzanie tym kodem i konserwacjÚ projektu.

      Generowanie danych wyj ciowych
      Przy generowaniu danych wyj ciowych w prostym skrypcie miesza siÚ tre Ê HTML bÈd
      XML z danymi dynamicznymi. Powoduje to wiÈzanie wyglÈdu strony wynikowej z pozo-
      staïymi warstwami aplikacji. Zmiana wyglÈdu strony WWW czy choÊby przystosowanie
      aplikacji do potrzeb i ograniczeñ ró nych urzÈdzeñ docelowych sÈ wtedy mocno utrudnione.
      A ta ostatnia trudno Ê nabiera znaczenia, poniewa sieÊ WWW nieustannie rozprzestrzenia siÚ
      na urzÈdzenia przeno ne, w tym choÊby telefony komórkowe. JSP pomaga w uporaniu siÚ
      z tym problemem, pozwalajÈc projektantom WWW tworzyÊ wyglÈd stron, podczas gdy pro-
      grami ci Java realizujÈ logikÚ prezentacji w adnotacjach. Taki ukïad uwa a siÚ powszechnie
      za najbardziej odpowiednie zastosowanie stron JSP.


      Projekt aplikacji WWW z podziaïem na warstwy
      W architekturze z wyodrÚbnionymi warstwami powstaje system skïadajÈcy siÚ z kilku wy-
      ra nie oddzielonych czÚ ci (warstw), z mo liwie ograniczonymi zale no ciami i interakcjami
      pomiÚdzy tymi czÚ ciami. Taki system cechuje siÚ dobrym podziaïem problematyki aplika-
      cji, co oznacza, e ró ne aspekty dziaïania aplikacji mo na opracowywaÊ niezale nie od siebie,
Rozdziaï 5. • Architektura i projektowanie aplikacji WWW                  143



z minimalnym wpïywem (a docelowo z brakiem takiego wpïywu) na pozostaïe czÚ ci. Od-
dzielajÈc od siebie poszczególne fragmenty systemu czynimy oprogramowanie wysoce ad-
aptowalnym, ïatwo dostosowujÈcym siÚ do zmieniajÈcych siÚ w przyszïo ci wymagañ. Warstwy
obejmujÈ logikÚ pobierania danych i ich wyprowadzania (warstwa prezentacji), logikÚ aplika-
cji, logikÚ biznesowÈ i zagadnienia trwaïo ci danych. Wszystkie te warstwy mo na wypro-
wadziÊ z opisywanego wcze niej trzywarstwowego modelu wzorcowego; warstwa wej cia
to skïadowa warstwy prezentacji. Warstwa logiki aplikacji jest czÚsto podzielona na logikÚ
przepïywu sterowania w warstwie prezentacji i logikÚ biznesowÈ oraz przepïywy danych
i procesów w warstwie logiki biznesowej. Logika utrwalania danych mo e stanowiÊ osobnÈ
warstwÚ danych; elementy tej logiki mogÈ znajdowaÊ siÚ w warstwie logiki biznesowej.


Warstwa danych wej ciowych
Warstwa danych wej ciowych albo te warstwa wej cia obejmuje kod zajmujÈcy siÚ prze-
twarzaniem i weryfikacjÈ poprawno ci skïadniowej danych wej ciowych, a wiÚc strumieni
SOAP, HTTP, SMPT i tak dalej; odpowiada te za wyïuskiwanie warto ci parametrów
z Èdañ. Wedle wzorca MVC odpowiada ona kontrolerowi wej cia.
    Do zmontowania tej warstwy wykorzystujemy komponenty i interfejsy serwletów do
obsïugi protokoïu HTTP. Sposobami u ycia tych interfejsów i komponentów zajmiemy siÚ
w dalszej czÚ ci rozdziaïu.


Logika aplikacji
Kod logiki aplikacji odpowiada za ogólny przepïyw sterowania w aplikacji WWW. CzÚsto ta
warstwa okre lana jest mianem warstwy sklejajÈcej (ang. glue layer), oddzielajÈcej warstwÚ logiki
biznesowej od logiki danych wej ciowych i wyj ciowych i zarzÈdzajÈcej stykiem tych warstw.
Wymaga to zaszycia tutaj pewnej wiedzy o obu tych warstwach. W tej warstwie bÚdzie na
przykïad dochodziÊ do konwersji pomiÚdzy wej ciem i wyj ciem warstwy prezentacji w po-
staci ciÈgów znaków a komunikatami bÈd warto ciami obiektów biznesowych. W aplikacji
WWW ta warstwa mo e równie zarzÈdzaÊ interakcjÈ u ytkownika z wieloma stronami aplika-
cji jako sekwencjÈ kroków (przej ciami pomiÚdzy stronami WWW). W MVC odpowiada to
roli kontrolera aplikacji.
      Standard J2EE nie definiuje bezpo rednio komponentów do realizacji logiki aplikacji.
Warstwa ta jest zazwyczaj implementowana w obrÚbie kontenera WWW J2EE i wykorzy-
stuje podobne komponenty i interfejsy, jak te wykorzystywane w warstwie danych wej-
 ciowych. Sytuacja ta poprawia siÚ wyra nie wraz z dodaniem do Java EE 5 specyfikacji JSF
(JavaServer Faces).


Logika biznesowa
Kod logiki biznesowej, implementujÈcy tak zwane obiekty biznesowe, zajmuje siÚ wyïÈcz-
nie wewnÚtrznymi i wïa ciwymi zadaniami aplikacji, czyli jej procesami biznesowymi. Kod
ten powinien byÊ kompletnie niezale ny od warstw zewnÚtrznych (prezentacji). W zïo onej
aplikacji logika biznesowa bÚdzie najpewniej najbardziej rozbudowanym komponentem, ci le
144   CzÚ Ê II • Tworzenie aplikacji WWW w Javie


      zwiÈzanym z kodem odwoïujÈcym siÚ do systemów zewnÚtrznych, w tym baz danych, korpo-
      racyjnych systemów informacyjnych (EIS) takich jak ERP (Enterprise Resource Planning) czy
      CRM (Client Relationship Management) i innych powiÈzanych usïug. We wzorcu MVC logice
      biznesowej odpowiada „model”.
           Obiekty realizujÈce logikÚ biznesowÈ nie powinny byÊ zale ne od obiektów pozosta-
      ïych warstw. W takim ukïadzie mo na ïatwo implementowaÊ rdzenne zadania biznesowe
      aplikacji i umo liwiÊ realizacjÚ tych zadañ nie tylko w obrÚbie aplikacji J2EE, ale równie
      w innych systemach. Nasza rekomendacja dotyczÈca projektowania warstwy biznesowej jest
      prosta: warstwa ta powinna byÊ mo liwie uproszczona, implementowana w miarÚ mo liwo ci
      za pomocÈ zwyczajnych obiektów Javy i caïkowicie niezale na od pozostaïych warstw archi-
      tektury aplikacji. Odwoïywanie siÚ tu do komponentu takiego jak JSP albo którego z in-
      terfejsów J2EE typowego dla specyfiki WWW (np. interfejsu Èdania HTTP) jest tu niepo-
       Èdane. Tak samo niepo Èdane byïoby korzystanie tu bezpo rednio z interfejsów utrwalania
      danych wykorzystywanych w warstwie trwaïo ci. Bo co stanie siÚ z obiektami logiki bizne-
      sowej po pó niejszej zmianie technologii utrwalania danych? Prawidïowe ograniczenie takich
      zale no ci eliminuje przyszïe problemy i umo liwia niezale ne wprowadzanie zmian w in-
      nych warstwach.

      Trwaïo Ê
      Logika biznesowa implementowana w postaci obiektów jÚzyka Java potrzebuje jakiego na-
      rzÚdzia do trwaïego skïadowania danych biznesowych. W wiÚkszo ci aplikacji w tej roli wy-
      stÚpujÈ relacyjne bazy danych. Mo na te wykorzystywaÊ technologie alternatywne, jak bazy
      danych XML czy bazy obiektowe. Zadaniem warstwy trwaïo ci jest udostÚpnienie tej funk-
      cjonalno ci w aplikacji. Logika biznesowa nie powinna byÊ zale na od warstwy trwaïo ci, wiÚc
      w modelu biznesowym nie nale y odwoïywaÊ siÚ wprost do interfejsów skïadowiska danych.
          Utrwalanie obiektów realizuje siÚ na ró ne sposoby, od obiektów DAO (Data Access
      Object), zale nych zazwyczaj od interfejsów dostÚpu do baz danych i jÚzyków zapytañ takich
      jak SQL. Takie podej cie jest odpowiednie w przypadku niewielkiego zestawu prostych
      obiektów, z zaletÈ zwiÚkszonej elastyczno ci. W innych podej ciach uwzglÚdnia siÚ interfejs
      trwaïo ci Java Persistence API (JPA), wyrafinowane szkielety ORM (Object-Relational Mapping),
      jak Hibernate czy TOPLink, oraz podej cia anga ujÈce obiektowe bazy danych. Utrwalanie
      obiektów byïo przedmiotem intensywnych prac i szczegóïowe omawianie tego zagadnienia
      wykracza poza zakres tematyczny niniejszej ksiÈ ki.

      Prezentacja wyników
      Ta warstwa grupuje kod i zasoby niestanowiÈce kodu (pliki HTML, XML czy obrazki), lecz
      wykorzystywane do prezentowania wyników dziaïania aplikacji u ytkownikowi. Zazwyczaj
      skïada siÚ z niewielkiej ilo ci kodu, a ten e kod dotyczy wyïÈcznie formatowania i prezen-
      towania danych. Na przykïad strona JSP warstwy prezentacji wyników mo e zawieraÊ frag-
      menty kodu w jÚzyku Java, wypisujÈcego saldo konta na dynamicznie generowanej stronie
      WWW. We wzorcu MVC odpowiada to koncepcji widoku.
          Standard J2EE udostÚpnia komponenty JSP i serwlety przewidziane do implemento-
      wania warstwy prezentacji. Komponenty te sÈ obsïugiwane poprzez bogaty zestaw interfejsów
      do przetwarzania HTML i XML, tworzenia obrazków, zarzÈdzania adresami URL i ogólnie
      do obsïugi wszystkich zadañ zwiÈzanych z budowÈ interfejsu u ytkownika poprzez WWW.
Rozdziaï 5. • Architektura i projektowanie aplikacji WWW                145




Wzorzec MVC w aplikacji WWW
Wzorzec MVC (Model-Controller-View) stanowi elegancki koncepcyjny model podziaïu zadañ
w serwerowej stronie aplikacji WWW. AplikacjÚ implementuje siÚ jako poïÈczenie serwletów,
stron JSP, usïug i wïa ciwego kodu w jÚzyku Java. Prezentowane i polecane tutaj podej cie
to jedno z mo liwych podej Ê do podziaïu odpowiedzialno ci i wyeliminowania sïabo ci
tkwiÈcych w wykorzystywanych technologiach. Koncepcja MVC wywodzi siÚ z systemu
Smalltalk-80 i promuje warstwowe podej cie przy projektowaniu i tworzeniu graficznych
interfejsów u ytkownika. Oto podstawowe koncepcje uczestniczÈce w MVC:
   „ model obsïugujÈcy logikÚ aplikacji i logikÚ biznesowÈ,
   „ widok obsïugujÈcy logikÚ prezentacji,
   „ kontroler przyjmujÈcy i rozprowadzajÈcy wej cie (z klawiatury i myszy).
     Wzorzec MVC powstaï jako sposób oddzielenia kodu modelowego (czyli kodu niezwiÈ-
zanego z interfejsem u ytkownika) od kodu prezentacyjnego i sterujÈcego. Kod modelowy
nie powinien zawieraÊ adnej wiedzy o interfejsie, a jedynie rozgïaszaÊ powiadomienia o wszel-
kich zmianach stanu do komponentów zale nych, którymi w klasycznym ujÚciu sÈ widoki.
     Taki schemat zapewnia dobrÈ separacjÚ pomiÚdzy trzema wymienionymi warstwami,
za to boryka siÚ z dwoma wadami. Po pierwsze, postrzeganie modelu jest uproszczone i nie
uwzglÚdnia rozró nienia pomiÚdzy logikÈ aplikacji (na przykïad przepïywem sterowania po-
miÚdzy skïadowymi stronami WWW aplikacji) i logikÈ biznesowÈ (czyli np. przetwarzaniem
pïatno ci). Po drugie, w wiÚkszo ci systemów okienkowych i bibliotek funkcje kontrolera
i widoku sÈ ïÈczone w pojedynczym elemencie interfejsu, co redukuje u yteczno Ê koncep-
cyjnego podziaïu na kontroler i widok.
     Pierwotne rozumienie architektury MVC ulegaïo wiÚc ewolucji. Obecnie pojÚcie kontro-
lera odnosi siÚ do obiektu obsïugujÈcego logikÚ aplikacji, a pojÚcie modelu zarezerwowano dla
obiektów biznesowych. BÚdziemy wiÚc tak okre laÊ obiekty biznesowe, a pojÚcia kontroler
wej cia i kontroler aplikacji odnosiÊ do dwóch podstawowych typów kontrolerów aplikacji.
     W popularnych ramach projektowych Javy, jak Struts, JSF czy Spring, koncepcje MVC
sÈ wcielane w ycie jako poïÈczenie kodu w jÚzyku Java, stron JSP, serwletów i zwyczajnych
obiektów Javy realizujÈcych zadania ró nych komponentów. Owe ramy projektowe koncen-
trujÈ siÚ na oddzieleniu widoku od kontrolera, ale niekoniecznie sugerujÈ sposoby oddzielenia
kontrolerów, czyli logiki aplikacji, od logiki biznesowej. W kontek cie WWW dwojakie stoso-
wanie pojÚcia kontrolera (jako kontrolera wej cia i kontrolera aplikacji) jest jak najbardziej
poprawne. W przypadku aplikacji HTTP wej cie i prezentacja sÈ od siebie caïkiem roz-
dzielone, po Èdany jest wiÚc kontroler wej cia oddzielony od widoku. A w przypadku apli-
kacji o jakiejkolwiek realnej zïo ono ci trzeba jeszcze uwzglÚdniÊ byt kontrolera aplikacji
jako oddzielajÈcego szczegóïy przepïywu sterowania w aplikacji od szczegóïów implemen-
tacji logiki biznesowej.
     W nastÚpnych podrozdziaïach bÚdziemy omawiaÊ podstawowÈ strukturÚ obiektów w ra-
mach projektowych MVC dla WWW (zob. rysunek 5.4). Architektura ta jest implemento-
wana przez liczne wymienione wcze niej szkielety aplikacyjne.
146    CzÚ Ê II • Tworzenie aplikacji WWW w Javie




RYSUNEK 5.4. MVC dla aplikacji WWW


       Kontroler wej cia
       Centralnym elementem jest kontroler wej cia. W systemie dziaïa jeden taki kontroler dla
       wszystkich stron WWW. Kontroler wej cia odbiera i analizuje dane wej ciowe, wykrywa me-
       chanizm przekazywania danych, wyïuskuje z Èdania niezbÚdne informacje, we wspóïpracy
       z kontrolerem aplikacji identyfikuje nastÚpnÈ operacjÚ — okre lanÈ mianem akcji — i wy-
       woïuje owÈ akcjÚ w odpowiednim kontek cie (zmontowanym z zestawu danych wej cio-
       wych). Uruchomienie kontrolera wej cia jako pojedynczego komponentu pozwala na wy-
       izolowanie w projekcie caïo ci wiedzy zwiÈzanej z obsïugÈ protokoïu HTTP i konwencji
       nazewniczych obowiÈzujÈcych na poziomie Èdañ HTTP. W ten sposób eliminuje siÚ po-
       wielanie kodu i zmniejsza ïÈczny rozmiar kodu. DziÚki temu mo na te ïatwiej modyfiko-
       waÊ ka dÈ z funkcji przetwarzajÈcych dane wej ciowe, poniewa modyfikacje sÈ ograniczone
       do pojedynczego komponentu i nie wpïywajÈ na pozostaïe komponenty aplikacji. Kontroler
       wej cia jest typowo realizowany za po rednictwem serwletu; czÚsto wyró nia siÚ osobny
       serwlet, obsïugujÈcy Èdania dostÚpu do aplikacji za po rednictwem protokoïu HTTP z po-
       ziomu zwyczajnej przeglÈdarki WWW, i drugi, obsïugujÈcy dostÚp do aplikacji z poziomu
       urzÈdzeñ operujÈcych protokoïem i przeglÈdarkÈ WAP.


       Kontroler aplikacji
       Kontroler aplikacji jest najczÚ ciej zwyczajnym obiektem jÚzyka Java. Jego zadaniem jest
       koordynowanie dziaïañ zwiÈzanych z przepïywem sterowania w aplikacji, obsïuga bïÚdów,
       utrzymywanie informacji zwiÈzanych ze stanem aplikacji (w tym referencji do obiektów biz-
       nesowych) i wybieranie odpowiedniego widoku do wy wietlenia. Kontroler aplikacji musi
Rozdziaï 5. • Architektura i projektowanie aplikacji WWW                 147



„rozumieÊ” Èdania i ich udziaï w przepïywie sterowania w aplikacji oraz przekazywaÊ te È-
dania w celu uzyskania odpowiedzi. ¿Èdania WWW sÈ kodowane w strumieniach tekstowego
protokoïu HTTP, a warto ci parametrów majÈ w nich postaÊ par klucz-warto Ê (oba ele-
menty pary to ciÈgi znaków). Kontroler aplikacji musi dysponowaÊ mechanizmem odwzo-
rowania takich par na obiekty aplikacji, które zarzÈdzajÈ przepïywem danych. W wiÚkszo ci
szkieletów aplikacyjnych te odwzorowania sÈ reprezentowane za pomocÈ rozbudowanych
plików konfiguracyjnych w formacie XML, jak w przypadku pliku struts-config.xml wykorzy-
stywanego w Struts. Na przykïad kontroler aplikacji rozpoznaje ciÈgi URI takie jak poni szy:
/leagueplanet/addPlayer.do
     Bazuje siÚ tu na konwencji nazewniczej, co ma opisywane wcze niej wady, ale ponie-
wa jest to jedyny komponent wykorzystywany w taki sposób, skutki tych sïabo ci sÈ mi-
nimalizowane. W lepszym projekcie pojedynczy kontroler aplikacji jest zazwyczaj odpowie-
dzialny za wiele stron WWW i wiele operacji. W najprostszej aplikacji pojedynczy kontroler
aplikacji mo e obsïugiwaÊ wszystkie strony. W aplikacji rozbudowanej wyznacza siÚ zazwy-
czaj kilka kontrolerów aplikacji, ka dy do innego obszaru jej dziaïalno ci. Poprzez wykorzysty-
wanie pojedynczego obiektu jako wspólnego, centralnego punktu odniesienia dla hermetyza-
cji informacji kontroler aplikacji rozwiÈzuje zagadnienia ukrywania informacji i konwencji
nazewniczych. Zamiast przechowywaÊ izolowane skrawki informacji w atrybutach sesji, skïa-
duje siÚ je w obiektach biznesowych. Do ledzenia dziaïania kontrolera aplikacji i obiektów
biznesowych mo na wykorzystaÊ klasyczne mechanizmy jÚzyka programowania, co bardzo
uïatwia konserwacjÚ i modyfikowanie kodu. Do tego caïo Ê podlega statycznej kontroli typów,
co jest niejako dodatkowÈ metodÈ walidacji danych.
     Kontrolery aplikacji konstruuje siÚ rozmaicie. W szkielecie Struts reprezentuje siÚ je jako
akcje, podczas gdy w JSF okre la siÚ je mianem managed backing beans. W Struts przewiduje
siÚ obecno Ê wielu akcji. Je li na przykïad dana aplikacja ma dwa przypadki u ycia — two-
rzenie dru yn i dodawanie graczy do dru yn — mo emy zrealizowaÊ te przypadki w aplika-
cji za pomocÈ dwóch odpowiednich akcji. W aplikacji Struts klasy implementujÈce takie akcje
mogïyby wyglÈdaÊ tak, jak na listingu 5.2.

Listing 5.2. Przykïadowy kod klasy akcji (Struts)
public class CreateTeamAction
{
  public void execute(...){}
}

public class AddPlayerAction
{
  public void execute(...){}
}

     Akcje dotyczÈce dru yny i graczy sÈ w oczywisty sposób powiÈzane. ChoÊby przez to,
 e graczy dodaje siÚ do dru yn. Ale w Struts nie przewidziano mechanizmu do grupowania
akcji. Nie mo na wiÚc zgrupowaÊ wielu akcji bÚdÈcych czÚ ciÈ tego samego przepïywu, jak
na przykïad przy procesie rejestracji konta online.
148   CzÚ Ê II • Tworzenie aplikacji WWW w Javie


           Te braki szkieletu aplikacyjnego Struts sÈ wypeïniane przez inne mechanizmy, bazujÈce
      na Struts, jak w projekcie Eclipse Pollinate, w którym kontroler aplikacji to obiekt Javy
      zwany przepïywem w obrÚbie strony (ang. page flow). Jest to klasa ujmujÈca grupÚ akcji jako jej
      metody i definiujÈca strukturÚ opisujÈcÈ przepïyw pomiÚdzy poszczególnymi metodami.
      W Pollinate powy sze przypadki u ycia zrealizowaliby my za pomocÈ pojedynczej klasy
      przepïywu dla strony (klasy akcji i ich zachowanie z przykïadowego listingu 5.2 zostaïyby
      zaimplementowane jako metody klasy przepïywu).
           Mo liwo Ê grupowania akcji i kojarzenia ich z obiektem reprezentujÈcym przepïyw
      sterowania w obrÚbie strony ilustruje kod z listingu 5.3. Posiadanie wspólnego kontrolera
      aplikacji dla caïej grupy akcji zwiÚksza elastyczno Ê wyra ania logiki aplikacji. Do tego mo na
      zarzÈdzaÊ stanem przepïywu w obrÚbie pojedynczego obiektu, a nie za po rednictwem Èdañ
      HTTP i interfejsów obsïugi sesji.

      Listing 5.3. Przykïadowy kod klasy przepïywu page flow
      public class LeacuePlanetPageFlow extends PageFlowController
      {
        public Forward createTeam(){..}
        public Forward addPlayer(){..}
      }

          Dwie najpopularniejsze obecnie realizacje modelu MVC w programowaniu aplikacji
      WWW, czyli Struts i JSF, sÈ w istocie bardzo podobnymi koncepcjami. Niektórzy uwa ajÈ,
       e bli szy zaïo eniom MVC jest JSF, a to ze wzglÚdu na dostÚpno Ê komponentów stano-
      wych w warstwie widoku i obsïugÚ modelu zdarzeniowego do obsïugi interakcji (np. zda-
      rzeñ klikniÚcia przycisku). JSF okre la te rozbudowanÈ bibliotekÚ standardowych znaczników,
      które wydatnie zmniejszajÈ ilo Ê kodu Java w stronach JSP (zob. listing 5.4).

      Listing 5.4. Znaczniki JSF w JSP
      <h:panelGroup>
        <h:commandButton id="submitCreateTeam"
          action="#{JsfLeaguePlanetBean.createTeam}" value="Create Team" />
        <h:commandButton id="submitAddPlayer"
          action="#{JsfLeaguePlanetBean.addPlayer}" value="Add Player" />
      </h:panelGroup>

          Trzeba jednak zawsze pamiÚtaÊ, e wszystkie te szkielety aplikacyjne bazujÈ na bezsta-
      nowym protokole HTTP. W JSF wystÚpuje koncepcja kontrolera aplikacji w postaci kom-
      ponentów managed backing beans (listing 5.5). Te komponenty mogÈ ujmowaÊ grupy powiÈza-
      nych akcji, czego brakuje w Struts. Wreszcie koncepcja przepïywu w obrÚbie strony nie jest
      implementowana ani w JSF, ani w Struts. Informacja o takim przepïywie jest niejawnie za-
      szyta w kontrolerach i plikach konfiguracyjnych XML.
Rozdziaï 5. • Architektura i projektowanie aplikacji WWW              149



Listing 5.5. Komponent backing bean w JSF
public class JsfLeaguePlanetBean
{
  public String createTeam(...){}
  public String addPlayer(...){}
}

     Kontroler wej cia dla ka dego Èdania wywoïa jednÈ z wielu mo liwych akcji. Jednym
z jego zadañ jest okre lenie wïa ciwego kontekstu akcji przeznaczonej do wywoïania. Wy-
bór akcji zale ny jest zarówno od danych wprowadzonych na wej cie, jak i od bie Ècego
stanu aplikacji; decyzja nale y wiÚc do kontrolera aplikacji. Wynik tego procesu decyzyjne-
go jest reprezentowany poprzez obiekt ApplicationController (ApplicationController to
implementacja wzorca projektowego Command, opisywanego w Gamma 1995).
     Obiekty biznesowe sÈ zwyczajnymi obiektami Javy, zawierajÈcymi wyïÈcznie logikÚ biz-
nesowÈ, bez jakichkolwiek informacji o warstwach sÈsiadujÈcych. Jedynym komponentem
wyznaczonym do manipulowania obiektami biznesowymi jest za wïa nie kontroler aplikacji
(zob. rysunek 5.4). DziÚki temu znacznie ïatwiej jest zarówno zaimplementowaÊ, jak i prze-
testowaÊ logikÚ biznesowÈ, bo mo e siÚ to odbywaÊ w caïkowitej izolacji od caïej kïopotli-
wej infrastruktury WWW. Je li aplikacja jest prawidïowo zaprojektowana, obiekty biznesowe
stanowiÈ wyizolowanÈ warstwÚ, zdatnÈ do wykorzystania zarówno w aplikacji WWW, jak
i w aplikacjach zakïadajÈcych dostÚp z poziomu innych rodzajów klientów, a nawet w kla-
sycznych aplikacjach stanowiskowych.


Widok
W aplikacji J2EE widoki sÈ najczÚ ciej stronami JSP, które odwoïujÈ siÚ do kontrolera apli-
kacji i obiektów biznesowych. Widoki powinny zawieraÊ mo liwie maïo kodu, a wiÚc dele-
gowaÊ wiÚkszo Ê swoich zadañ do kontrolera aplikacji albo obiektów biznesowych. Na samej
stronie powinien pozostaÊ jedynie kod bezpo rednio zwiÈzany z prezentacjÈ bie Ècej strony.
Specyfikacja JSP udostÚpnia te biblioteki znaczników (ang. taglibs) do definiowania wïasnych
znaczników, ujmujÈcych bardziej rozbudowane zachowania widoku — w przypadku skom-
plikowanych widoków zaleca siÚ przenoszenie kodu wïa nie do samodzielnie definiowanych
znaczników. Na rysunku 5.4 byïo widaÊ dwa ró ne mechanizmy widoku. Kontroler wyj cia
JSP wykorzystuje implementacjÚ JSP odpowiedniÈ dla przeglÈdarki WWW albo WAP. Kon-
troler wyj cia WS reaguje na te same Èdania, a w odpowiedzi generuje komunikaty XML
zdatne do u ytku w innych aplikacjach.


Szkielety aplikacyjne dla Javy
Programi ci aplikacji WWW mogÈ przebieraÊ pomiÚdzy rozmaitymi otwartymi i wolnymi
(od „wolno Ê”) szkieletami aplikacyjnymi dla Javy — przyjrzymy siÚ niektórym z nich (zob.
rysunek 5.5). Szkielety te wydatnie upraszczajÈ tworzenie aplikacji WWW w Javie. Udo-
stÚpniajÈ elementy znacznie polepszajÈce mo liwo Ê testowania kodu, uïatwiajÈ zarzÈdzanie
nim i samo programowanie. IzolujÈ i implementujÈ podstawowÈ infrastrukturÚ aplikacji
i dobrze integrujÈ siÚ z serwerami aplikacyjnymi.
150     CzÚ Ê II • Tworzenie aplikacji WWW w Javie




RYSUNEK 5.5. Szkielety aplikacyjne dla Javy


   OSGi
   OSGi Alliance (dawniej Open Services Gateway Initiative) to ciaïo definiujÈce standard udo-
   stÚpniania platform usïugowych na bazie Javy. Specyfikacja ta obejmuje szkielet aplikacyjny do
   modelowania cyklu ycia aplikacji oraz rejestr usïug.
   IstniejÈce implementacje OSGi, jak Eclipse Equinox, Felix czy Knoplerfish, udostÚpniajÈ kom-
   pletne i dynamiczne modele komponentowe, których brakowaïo w standardowych rodowi-
   skach wykonawczych dla Javy. DziÚki nim mo na instalowaÊ, uruchamiaÊ, zatrzymywaÊ, aktu-
   alizowaÊ i odinstalowywaÊ aplikacje bÈd komponenty nawet zdalnie.
   OSGi zyskuje uznanie jako uogólniona platforma dla usïug, poniewa dobrze siÚ skaluje, od
   urzÈdzeñ wbudowanych po systemy korporacyjne. Przykïadem systemu bazujÈcego na OSGi
   jest Eclipse (i co za tym idzie — WTP). Na bazie platform OSGi swoje serwery aplikacyjne na-
   stÚpnej generacji konstruujÈ takie firmy jak IBM i BEA. Co ciekawe, OSGi mo emy te wykorzy-
   staÊ sami do budowania prostych komponentów biznesowych i usïug, które w czasie wykonania
   sÈ skïadane do postaci usïugi biznesowej. W OSGi mo na na przykïad uruchamiaÊ aplikacje
   bazujÈce na Spring 2.0.


        Apache Beehive
        Projekt Beehive ma na celu udostÚpnienie szkieletu aplikacyjnego dla prostych komponentów
        sterowanych metadanymi, redukujÈcych ilo Ê kodu niezbÚdnego w aplikacjach J2EE. Roz-
        wiÈzania z Beehive dotyczÈ wszystkich trzech warstw modelowej aplikacji WWW. Szkielet
        wykorzystuje adnotacje, zwïaszcza metadane wedïug JSR 175 (JSR 175). Odwoïuje siÚ te
Rozdziaï 5. • Architektura i projektowanie aplikacji WWW                151



do innych projektów Apache, jak Struts i Axis. Oferuje NetUI do prezentacji, szkielet Controls
do prostych komponentów i WSM (Web Service Metadata — implementacja JSR 181) oraz
bazujÈcy na adnotacjach model do konstruowania usïug WS w Javie (JSR 181).


Apache Struts
Struts to szkielet aplikacyjny udostÚpniajÈcy warstwÚ kontrolnÈ bazujÈcÈ na standardowych
technologiach WWW w Javie — wykorzystuje siÚ tu JSP, serwlety oraz inne projekty Apache.
Jest to swoista implementacja wzorca projektowego MVC.


JavaServer Faces
JSF to standard JSR 127 wywodzÈcy siÚ z JCP (Java Community Process) (JSR 127), definiu-
jÈcy zestaw znaczników JSP oraz klas Java upraszczajÈcych konstruowanie interfejsu u yt-
kownika dla aplikacji WWW. Powszechnie uwa a siÚ, e JSF ma szansÚ zestandaryzowaÊ na-
rzÚdzia i komponenty. JSF to szkielet dla warstwy prezentacji, z koncepcjami zapo yczonymi
z MVC. JSF to oficjalny element specyfikacji J2EE 5.


Spring
Spring to szkielet aplikacyjny obejmujÈcy komplet trzech warstw typowej aplikacji WWW
w Javie. Szkielet dla wszystkich swoich komponentów implementuje wzorce projektowe
Inversion of Control oraz Dependency Injection. UdostÚpnia te prosty kontener do im-
plementowania logiki biznesowej za pomocÈ zwyczajnych obiektów Javy (POJO) i dziÚki temu
mo e wyeliminowaÊ potrzebÚ stosowania komponentów EJB. Do tego Spring udostÚpnia
mechanizmy do zarzÈdzania danymi aplikacji.


Pico Container
Pico Container jest prostym szkieletem aplikacyjnym, równie bazujÈcym na wzorcach
Inversion of Control i Dependency Injection. Podobnie jak Spring, powstaï jako odpowied
na nadmiernÈ zïo ono Ê tworzenia aplikacji J2EE, a szczególnie na trudno ci zwiÈzane z pro-
gramowaniem komponentów EJB.


Hibernate
Hibernate to szkielet relacyjnego odwzorowania obiektów — ORM (Object Relational Mapping).
Pozwala programistom implementowaÊ relacyjne utrwalanie obiektów oraz odpytywaÊ usïugi
o obiekty Javy bez konieczno ci modyfikowania ich kodu.
    Specyfikacja komponentów encyjnych EJB3, a zwïaszcza specyfikacja interfejsu trwaïo ci
JPA (Java Persistent API), która z niej wyewoluowaïa, w obliczu zïo ono ci dostÚpnych rozwiÈ-
zañ standardowych zwiÚksza jeszcze atrakcyjno Ê Hibernate i podobnych szkieletów ORM.
152   CzÚ Ê II • Tworzenie aplikacji WWW w Javie


Architektura usïugowa SOA
      SOA (Service Oriented Architecture) dotyczy wydzielania czÚ ci wïa ciwej dziaïalno ci aplikacji
      do postaci istotnych jednostek, zwanych usïugami, oraz montowania aplikacji poprzez inte-
      growanie tych e usïug. Ukierunkowanie na usïugi oznacza ujmowanie poszczególnych ele-
      mentów logiki biznesowej. Usïuga to wcielenie fundamentalnej zasady programowania obiek-
      towego, czyli oddzielenia implementacji od interfejsu. W poïÈczeniu ze standardowymi
      jÚzykami opisu (jak XML), powszechnymi protokoïami transportowymi (HTTP) oraz mo -
      liwo ciÈ wyszukiwania i kojarzenia usïugodawcy w czasie wykonania SOA okazuje siÚ wietnÈ
      technologiÈ integrowania rozmaitych systemów. SOA i usïugi WWW Web Service opierajÈ
      siÚ na licznych standardach, w tym XML, XML Schema, WSDL (Web Service Description
      Language), UDDI (Universal Description, Discovery and Integration), SOAP, JAX-RPC i wielu
      specyfikacjach WS-*. Szczegóïowe omówienie SOA dalece wykracza poza tematykÚ niniejszej
      ksiÈ ki, zajmiemy siÚ jednak tym, jak mo na w WTP montowaÊ aplikacje WWW ukierun-
      kowane usïugowo, gïównie na bazie technologii Web Service.


      UdostÚpnianie usïug. Warstwa usïugowa
      Zadaniem warstwy usïugowej w aplikacji jest eksponowanie poszczególnych funkcji aplikacji
      i funkcji biznesowych jako wyodrÚbnionych usïug. O przydatno ci czy ciekawo ci aplikacji
       wiadczÈ przecie wyïÈcznie wykorzystujÈcy jÈ klienci (je li w lesie przewróci siÚ drzewo,
      a nikogo nie ma w pobli u, to czy sïychaÊ trzask?).
           Z usïug, w przeciwieñstwie do aplikacji, mo na korzystaÊ rozmaicie:
         „ za po rednictwem rozbudowanych aplikacji klienckich RCA (Rich Client Application),
             które konsumujÈ usïugi wielu usïugodawców;
         „ w systemach osadzonych (telefony komórkowe);
         „ w portalach i aplikacjach WWW, od zdalnych portali i aplikacji WWW po warstwy
             sterujÈce systemu pionowego, w których warstwa usïugowa wykorzystywana jest
             do odwoïañ do modelu biznesowego, w rozbudowanej implementacji MVC
             z warstwÈ usïugowÈ w postaci opisanej dalej;
         „ w projektach integracyjnych, za po rednictwem jÚzyka BPEL (Business Process
             Execution language) automatyzujÈcego procesy biznesowe;
         „ w systemach udostÚpniajÈcych usïugi bÚdÈce wynikiem zmontowania usïug
             dostÚpnych skÈdinÈd w nowym modelu biznesowym.
          Uzupeïnienie omówionej poprzednio architektury o warstwÚ usïugowÈ (jak na rysun-
      ku 5.6) pozwala na tworzenie aplikacji, która nie tylko jest u yteczna dla u ytkowników koñ-
      cowych, ale te mo e wspóïdziaïaÊ z innymi systemami informatycznymi. Dodatkowa warstwa
      skïada siÚ z elementów takich jak usïugi Web Service, rejestry usïug (UDDI), kontrakty
      (WSDL) i elementy po redniczÈce (proxy), które wiÈ È te usïugi z naszymi aplikacjami.
      Warstwa usïugowa eksponuje ci le zdefiniowane interfejsy do identycznego jak poprzed-
      nio modelu biznesowego. Interfejs usïugi jest okre lany przez kontrakt opisywany w jÚzyku
Rozdziaï 5. • Architektura i projektowanie aplikacji WWW                153




RYSUNEK 5.6. Model rozszerzony o warstwÚ usïugowÈ
       WSDL. W danym modelu biznesowym mo na korzystaÊ z procesów i logiki bazujÈcej na
       usïugach systemów zewnÚtrznych. Konsumentom usïug nie sÈ ujawniane szczegóïy we-
       wnÚtrznego modelu biznesowego. Wszystkie szczegóïy techniczne niezbÚdne do konsumo-
       wania usïug sÈ opisywane przez kontrakt wyra ony w WSDL.


   Gdzie pasuje SOA?
   Warto byïoby siÚ zastanowiÊ, jak ma siÚ SOA do tradycyjnego podziaïu warstwowego aplikacji.
   NasuwajÈ siÚ od razu takie pytania: Czy SOA to czÚ Ê warstwy prezentacji? Czy SOA zastÚpuje
   warstwÚ prezentacji warstwÈ usïugowÈ? A co z logikÈ biznesowÈ, gdzie ona teraz przynale y?
   Otó usïuga nie ma widoku; skoro tak, nie ma potrzeby wydzielania warstwy prezentacji. ZastÚ-
   puje jÈ zazwyczaj warstwa usïugowa. Mo na wiÚc powiedzieÊ, e warstwa usïugowa odgrywa
   rolÚ warstwy prezentacji; usïuga jest prezentacjÈ, widokiem perspektywy biznesowej w formie
   dostÚpnej do zautomatyzowanego u ycia przez inne aplikacje.
   Trudniejsze jest pytanie o to, czy usïugi wchodzÈ w skïad modelu aplikacji i jej logiki bizneso-
   wej. Najpro ciej byïoby odpowiedzieÊ „nie”, ale to nie wyczerpuje zagadnienia. Logika bizne-
   sowa nie jest zawsze i wyïÈcznie modelowana w formie, którÈ da siÚ natychmiast i bezpo rednio
   udostÚpniÊ jako usïugi. Dobry model obiektowy cechuje siÚ wysokÈ ziarnisto ciÈ i skïada z wielu
   niewielkich, ale prostych do ogarniÚcia obiektów z ïatwymi do opanowania i wykorzystywania
   metodami. Obiekty te ujmujÈ istotne koncepcje biznesowe i dane, ale nie sÈ specjalnie przy-
   datne do tworzenia usïug. Usïugi sÈ zazwyczaj projektowane na bazie przypadków u ycia; re-
   prezentujÈ zachowanie biznesowe jako ciÈg zdarzeñ, jak np. „pïatno Ê za rezerwacjÚ”. Drob-
   noziarniste obiekty modelu pojedynczo nie ujmujÈ takich transferów. Usïugi stanowiÈ wiÚc
   mieszankÚ logiki biznesowej i logiki aplikacji. W naszej przykïadowej aplikacji League Planet
   warstwa usïugowa dysponowaïaby obiektem obsïugujÈcym tworzenie nowej ligi. WarstwÚ logiki
   biznesowej omówimy w rozdziale 8.
154   CzÚ Ê II • Tworzenie aplikacji WWW w Javie


      Konsumowanie usïug — zestawianie
      Aplikacje konsumujÈ usïugi przez zestawianie i ïÈczenie tre ci bÈd usïug udostÚpnianych
      przez usïugodawców. Mo na wiÚc zrealizowaÊ nowy proces biznesowy na bazie integracji
      usïug wiadczonych przez ró nych usïugodawców i uzupeïniÊ caïo Ê o nowÈ logikÚ bizneso-
      wÈ, nowe reguïy i mo liwo ci. UdostÚpnione tre ci podlegajÈ rekompozycji i odwzorowa-
      niu do modelu biznesowego aplikacji klienckiej i sÈ w niej prezentowane w nowy i unikatowy
      sposób, niekoniecznie dostÚpny od któregokolwiek z usïugodawców usïug skïadowych
      z osobna. To podstawowe zaïo enie SOA.
          Modelowanie procesu biznesowego i montowanie usïug mo e konsumowaÊ usïugi
      w sposób standaryzowany, za po rednictwem mechanizmów usïug WWW. Warstwa usïu-
      gowa realizuje abstrakcjÚ wielu ró nych systemów biznesowych, a usïugi tej warstwy mo na
      wykorzystywaÊ do montowania nowych procesów biznesowych. W WTP nie mamy do dys-
      pozycji narzÚdzi do zestawiania usïug w taki sposób, ale producenci tacy jak IBM, Oracle
      czy BEA rozszerzyli WTP o mo liwo Ê projektowania i wykonywania takich procesów „skïa-
      danych”. Sïu y tam do tego jÚzyk BPEL (Business Process Execution Language), standard OASIS
      bÚdÈcy odpowiednikiem jÚzyka XML dla dziedziny zestawiania i kompozycji usïug w procesy.



Studium przypadku — League Planet
      W tym podrozdziale spróbujemy opracowaÊ architekturÚ dla naszej fikcyjnej strony WWW
      League Planet (zob. podrozdziaï „Przedstawiamy League Planet” w rozdziale 1.). Z punktu
      widzenia architektury League Planet jest systemem wieloaspektowym, z ró nymi profilami
      dla ró nych u ytkowników.
           Po pierwsze, mamy w ród nich ludzi, którzy umieszczajÈ tre ci w systemie. SÈ to osoby
      zainteresowane sportem i wykorzystujÈce League Planet do prowadzenia wïasnych amator-
      skich lig sportowych. OdwiedzajÈ stronÚ WWW i tworzÈ nowe ligi, w ramach których mogÈ
      rejestrowaÊ dru yny, graczy, terminarze rozgrywek, miejsca rozgrywek, wyniki, statystyki
      i wiele rozmaitych innych informacji. League Planet ma dla nich udostÚpniaÊ wysoce dyna-
      miczny interfejs WWW, który pozwoli im wchodziÊ w bezpo rednie interakcje z systemem.
           Korzystanie z systemu polega na przechodzeniu pomiÚdzy stronami WWW i wykony-
      waniu czynno ci takich, jak przeglÈdanie prezentowanych informacji, wypeïnianie formu-
      larzy i zamawianie dóbr oferowanych przez partnerów biznesowych League Planet. Do ob-
      sïugi takich u ytkowników League Planet musi mieÊ warstwÚ prezentacji. Warstwa prezentacji
      bÚdzie zrealizowana na bazie stron JSP. Aby ograniczyÊ ilo Ê kodu opisujÈcego interfejs, wy-
      korzystamy bibliotekÚ znaczników dla Javy. Warstwa prezentacji bÚdzie ograniczona do ko-
      du wy wietlajÈcego informacje i przyjmujÈcego dane od u ytkownika. Przepïyw sterowania
      w aplikacji bÚdzie nale eÊ do zadañ warstwy sterujÈcej.
           Warstwa kontroli jest odpowiedzialna za takie zadania, jak weryfikacja poprawno ci wpro-
      wadzanych danych, przepïyw sterowania na stronie i pomiÚdzy nimi oraz wspóïpraca z warstwÈ
      modelu biznesowego w celu realizacji zadañ biznesowych i udostÚpniania tre ci dla warstwy
      widoku (prezentacji).
Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java
Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java

More Related Content

What's hot

Contribute 2. Szybki start
Contribute 2. Szybki startContribute 2. Szybki start
Contribute 2. Szybki start
Wydawnictwo Helion
 
Pajączek 5 NxG. Oficjalny podręcznik
Pajączek 5 NxG. Oficjalny podręcznikPajączek 5 NxG. Oficjalny podręcznik
Pajączek 5 NxG. Oficjalny podręcznik
Wydawnictwo Helion
 
JavaScript dla każdego
JavaScript dla każdegoJavaScript dla każdego
JavaScript dla każdego
Wydawnictwo Helion
 
Joomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemuJoomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemu
Wydawnictwo Helion
 
C# i ASP.NET. Szybki start
C# i ASP.NET. Szybki startC# i ASP.NET. Szybki start
C# i ASP.NET. Szybki start
Wydawnictwo Helion
 
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceFlash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Wydawnictwo Helion
 
Adobe Flash CS3 Professional. Oficjalny podręcznik
Adobe Flash CS3 Professional. Oficjalny podręcznikAdobe Flash CS3 Professional. Oficjalny podręcznik
Adobe Flash CS3 Professional. Oficjalny podręcznik
Wydawnictwo Helion
 
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowychTworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
Wydawnictwo Helion
 
Dreamweaver MX. Ćwiczenia
Dreamweaver MX. ĆwiczeniaDreamweaver MX. Ćwiczenia
Dreamweaver MX. Ćwiczenia
Wydawnictwo Helion
 
Marketing internetowy w praktyce
Marketing internetowy w praktyceMarketing internetowy w praktyce
Marketing internetowy w praktyce
DarmoweEbooki
 
Photoshop CS2/CS2 PL. Prosto do celu
Photoshop CS2/CS2 PL. Prosto do celuPhotoshop CS2/CS2 PL. Prosto do celu
Photoshop CS2/CS2 PL. Prosto do celu
Wydawnictwo Helion
 
Macromedia Flash 8 ActionScript. Oficjalny podręcznik
Macromedia Flash 8 ActionScript. Oficjalny podręcznikMacromedia Flash 8 ActionScript. Oficjalny podręcznik
Macromedia Flash 8 ActionScript. Oficjalny podręcznik
Wydawnictwo Helion
 
IrfanView
IrfanViewIrfanView
Kurs tworzenia stron internetowych
Kurs tworzenia stron internetowychKurs tworzenia stron internetowych
Kurs tworzenia stron internetowych
Wydawnictwo Helion
 
Java. Tworzenie aplikacji sieciowych za pomocą Springa, Hibernate i Eclipse
Java. Tworzenie aplikacji sieciowych za pomocą Springa, Hibernate i EclipseJava. Tworzenie aplikacji sieciowych za pomocą Springa, Hibernate i Eclipse
Java. Tworzenie aplikacji sieciowych za pomocą Springa, Hibernate i Eclipse
Wydawnictwo Helion
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
Wydawnictwo Helion
 
Projektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy siecioweProjektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy sieciowe
Wydawnictwo Helion
 
eXtreme programming
eXtreme programmingeXtreme programming
eXtreme programming
Wydawnictwo Helion
 

What's hot (18)

Contribute 2. Szybki start
Contribute 2. Szybki startContribute 2. Szybki start
Contribute 2. Szybki start
 
Pajączek 5 NxG. Oficjalny podręcznik
Pajączek 5 NxG. Oficjalny podręcznikPajączek 5 NxG. Oficjalny podręcznik
Pajączek 5 NxG. Oficjalny podręcznik
 
JavaScript dla każdego
JavaScript dla każdegoJavaScript dla każdego
JavaScript dla każdego
 
Joomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemuJoomla! Podręcznik administratora systemu
Joomla! Podręcznik administratora systemu
 
C# i ASP.NET. Szybki start
C# i ASP.NET. Szybki startC# i ASP.NET. Szybki start
C# i ASP.NET. Szybki start
 
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceFlash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
 
Adobe Flash CS3 Professional. Oficjalny podręcznik
Adobe Flash CS3 Professional. Oficjalny podręcznikAdobe Flash CS3 Professional. Oficjalny podręcznik
Adobe Flash CS3 Professional. Oficjalny podręcznik
 
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowychTworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
 
Dreamweaver MX. Ćwiczenia
Dreamweaver MX. ĆwiczeniaDreamweaver MX. Ćwiczenia
Dreamweaver MX. Ćwiczenia
 
Marketing internetowy w praktyce
Marketing internetowy w praktyceMarketing internetowy w praktyce
Marketing internetowy w praktyce
 
Photoshop CS2/CS2 PL. Prosto do celu
Photoshop CS2/CS2 PL. Prosto do celuPhotoshop CS2/CS2 PL. Prosto do celu
Photoshop CS2/CS2 PL. Prosto do celu
 
Macromedia Flash 8 ActionScript. Oficjalny podręcznik
Macromedia Flash 8 ActionScript. Oficjalny podręcznikMacromedia Flash 8 ActionScript. Oficjalny podręcznik
Macromedia Flash 8 ActionScript. Oficjalny podręcznik
 
IrfanView
IrfanViewIrfanView
IrfanView
 
Kurs tworzenia stron internetowych
Kurs tworzenia stron internetowychKurs tworzenia stron internetowych
Kurs tworzenia stron internetowych
 
Java. Tworzenie aplikacji sieciowych za pomocą Springa, Hibernate i Eclipse
Java. Tworzenie aplikacji sieciowych za pomocą Springa, Hibernate i EclipseJava. Tworzenie aplikacji sieciowych za pomocą Springa, Hibernate i Eclipse
Java. Tworzenie aplikacji sieciowych za pomocą Springa, Hibernate i Eclipse
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Projektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy siecioweProjektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy sieciowe
 
eXtreme programming
eXtreme programmingeXtreme programming
eXtreme programming
 

Similar to Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java

Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
Wydawnictwo Helion
 
C++. Wykorzystaj potęgę aplikacji graficznych
C++. Wykorzystaj potęgę aplikacji graficznychC++. Wykorzystaj potęgę aplikacji graficznych
C++. Wykorzystaj potęgę aplikacji graficznych
Wydawnictwo Helion
 
ASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHP
Wydawnictwo 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 Windows
Wydawnictwo Helion
 
Visual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstawVisual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstaw
Wydawnictwo Helion
 
Po prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIPo prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VI
Wydawnictwo Helion
 
Aplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. PrzykładyAplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. Przykłady
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 programisty
Wydawnictwo Helion
 
Microsoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaMicrosoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga eksperta
Wydawnictwo Helion
 
C++Builder i Turbo C++. Podstawy
C++Builder i Turbo C++. PodstawyC++Builder i Turbo C++. Podstawy
C++Builder i Turbo C++. Podstawy
Wydawnictwo 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 II
Wydawnictwo Helion
 
Visual Basic 2008. Warsztat programisty
Visual Basic 2008. Warsztat programistyVisual Basic 2008. Warsztat programisty
Visual Basic 2008. Warsztat programisty
Wydawnictwo Helion
 
Po prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxGPo prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxG
Wydawnictwo Helion
 
Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++
Wydawnictwo Helion
 
Wstęp do programowania w języku C#
Wstęp do programowania w języku C#Wstęp do programowania w języku C#
Wstęp do programowania w języku C#
Wydawnictwo Helion
 
C++BuilderX. Ćwiczenia
C++BuilderX. ĆwiczeniaC++BuilderX. Ćwiczenia
C++BuilderX. Ćwiczenia
Wydawnictwo 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 limitowana
Wydawnictwo Helion
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowane
Wydawnictwo Helion
 
.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie
Wydawnictwo Helion
 
JavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IVJavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IV
Wydawnictwo Helion
 

Similar to Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java (20)

Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
C++. Wykorzystaj potęgę aplikacji graficznych
C++. Wykorzystaj potęgę aplikacji graficznychC++. Wykorzystaj potęgę aplikacji graficznych
C++. Wykorzystaj potęgę aplikacji graficznych
 
ASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHP
 
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
 
Visual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstawVisual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstaw
 
Po prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIPo prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VI
 
Aplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. PrzykładyAplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. Przykłady
 
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
 
Microsoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaMicrosoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga eksperta
 
C++Builder i Turbo C++. Podstawy
C++Builder i Turbo C++. PodstawyC++Builder i Turbo C++. Podstawy
C++Builder i Turbo C++. Podstawy
 
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
 
Visual Basic 2008. Warsztat programisty
Visual Basic 2008. Warsztat programistyVisual Basic 2008. Warsztat programisty
Visual Basic 2008. Warsztat programisty
 
Po prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxGPo prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxG
 
Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++Visual Studio 2005. Programowanie z Windows API w języku C++
Visual Studio 2005. Programowanie z Windows API w języku C++
 
Wstęp do programowania w języku C#
Wstęp do programowania w języku C#Wstęp do programowania w języku C#
Wstęp do programowania w języku C#
 
C++BuilderX. Ćwiczenia
C++BuilderX. ĆwiczeniaC++BuilderX. Ćwiczenia
C++BuilderX. Ćwiczenia
 
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
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowane
 
.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie.NET Framework 2.0. Zaawansowane programowanie
.NET Framework 2.0. Zaawansowane programowanie
 
JavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IVJavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IV
 

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. Projekty
Wydawnictwo 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ętnik
Wydawnictwo Helion
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
Wydawnictwo 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 praktyczne
Wydawnictwo 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 biznesie
Wydawnictwo 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 II
Wydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
Wydawnictwo Helion
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
Wydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
Wydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
Wydawnictwo 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 moderacja
Wydawnictwo Helion
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
Wydawnictwo Helion
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
Wydawnictwo Helion
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
Wydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
Wydawnictwo Helion
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++
Wydawnictwo Helion
 
Rewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejRewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowej
Wydawnictwo 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
 
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
 
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
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++
 
Rewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejRewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowej
 

Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java

  • 1. Eclipse Web Tools Platform. Tworzenie aplikacji WWW w jêzyku Java Autor: Naci Dai, Lawrence Mandel, Arthur Ryman T³umaczenie: Przemys³aw Szeremiota ISBN: 978-83-246-1391-5 Tytu³ orygina³u: COM+ Developer's Guide Format: 168x237, stron: 744 Zwiêksz swoj¹ wydajnoœæ dziêki platformie WTP! • Jak wykorzystaæ œrodowisko Eclipse do tworzenia aplikacji internetowych? • W jaki sposób zorganizowaæ projekt aplikacji? • Jak przeprowadziæ w aplikacjach testy jednostkowe? Eclipse to zintegrowane œrodowisko programistyczne. Projekt zosta³ zapocz¹tkowany przez firmê IBM, natomiast aktualnie jest rozwijany przez Fundacjê Eclipse. Dziêki licznym dodatkom, pluginom i podprojektom zyska³ on ogromn¹ popularnoœæ i jest w tej chwili jednym z narzêdzi najczêœciej wybieranych do tworzenia aplikacji w jêzyku Java — i nie tylko. Natomiast projekt WTP (skrót od ang. Web Tools Platform) dziêki swoim rozszerzeniom u³atwia tworzenie aplikacji WWW. „Eclipse Web Tools Platform. Tworzenie aplikacji WWW w jêzyku Java” jest d³ugo oczekiwan¹ na polskim rynku ksi¹¿k¹, poœwiêcon¹ tej w³aœnie platformie. Autorzy przedstawiaj¹ tu inspiruj¹c¹ historiê tego rozwi¹zania, strukturê projektu oraz sposób konfiguracji Web Tools Platform. Kolejne rozdzia³y przybli¿¹ Ci zagadnienia zwi¹zane z warstw¹ prezentacji, logiki biznesowej i trwa³oœci. Dowiesz siê, w jaki sposób wykorzystaæ narzêdzia dostarczane przez WTP do przyspieszenia prac w ka¿dej z tych warstw. W zakresie podejmowanych zagadnieñ znajduj¹ siê równie¿ tematy zwi¹zane z testami integracyjnymi i wydajnoœciowymi. • Konfiguracja Web Tools Platform • Architektura aplikacji WWW • Podzia³ projektu na warstwy • Sposób wykorzystania narzêdzia Maven • Wykorzystanie us³ug WWW • Testowanie aplikacji WWW Wydawnictwo Helion • Rozszerzanie WTP ul. Koœciuszki 1c Poznaj jedn¹ z najlepszych platform do tworzenia aplikacji WWW i nie tylko! 44-100 Gliwice tel. 032 230 98 63 e-mail: helion@helion.pl
  • 2. Spis tre ci Przedmowa ................................................................................................................ 13 WstÚp ........................................................................................................................ 15 PodziÚkowania ........................................................................................................... 19 O autorach ................................................................................................................. 21 CzÚ Ê I Zaczynamy ............................................................................................... 23 Rozdziaï 1. Wprowadzenie ........................................................................................................... 25 Eclipse a tworzenie aplikacji WWW w Javie ................................................................. 25 Zawarto Ê ksiÈ ki ............................................................................................................ 26 Organizacja materiaïu w ksiÈ ce .................................................................................... 27 Kod ródïowy przykïadów ............................................................................................. 30 League Planet .................................................................................................................. 30 Podsumowanie ............................................................................................................... 32 Rozdziaï 2. Wprowadzenie do Eclipse Web Tools Platform ........................................................... 33 Narodziny WTP ............................................................................................................. 33 Ekonomika WTP ............................................................................................................ 35 Redukcja nakïadów programistycznych .................................................................. 36 Generowanie przychodu .......................................................................................... 38 Struktura WTP ............................................................................................................... 42 Przedmiot WTP ....................................................................................................... 43 Projekty skïadowe WTP .......................................................................................... 44 Architektura WTP .................................................................................................... 46 Podprojekt WST ....................................................................................................... 48 Podprojekt JST ......................................................................................................... 53
  • 3. 6 Spis tre ci Uczestnictwo w WTP .................................................................................................... 55 U ytkowanie ............................................................................................................ 56 Monitorowanie grup dyskusyjnych ........................................................................ 56 Zgïoszenie problemu ............................................................................................... 56 Proponowanie ulepszeñ ........................................................................................... 57 Naprawienie bïÚdu ................................................................................................... 57 Opublikowanie artykuïu bÈd poradnika ............................................................... 58 Formalne doïÈczenie do zespoïu ............................................................................. 58 PowiÚkszanie spoïeczno ci ...................................................................................... 58 Podsumowanie ............................................................................................................... 59 Rozdziaï 3. Elementarz ................................................................................................................. 61 Wprowadzenie ................................................................................................................ 61 Podej cie 1. Aplikacje WWW J2EE ................................................................................ 64 Dodawanie rodowiska wykonawczego serwera .................................................... 66 Tworzenie dynamicznego projektu WWW ............................................................ 72 Tworzenie i edycja strony JSP ................................................................................. 76 Uruchomienie JSP na serwerze .............................................................................. 76 Podsumowanie podej cia 1. ..................................................................................... 80 Podej cie 2. Serwlety i skryptlety .................................................................................. 80 Dodanie do JSP skryptletu w jÚzyku Java ............................................................... 80 Debugowanie JSP ..................................................................................................... 81 Tworzenie serwletu ................................................................................................. 85 Debugowanie serwletu ............................................................................................ 89 Podsumowanie podej cia 2. ..................................................................................... 90 Podej cie 3. Odwoïania do bazy danych ....................................................................... 91 NawiÈzanie poïÈczenia z bazÈ danych ..................................................................... 93 Wykonywanie zapytañ SQL ..................................................................................... 96 Realizowanie odwoïañ do bazy danych do aplikacji WWW ................................... 99 Podsumowanie podej cia 3. ................................................................................... 103 Podej cie 4. Usïugi WWW ........................................................................................... 104 Instalowanie usïugi Web Service ........................................................................... 104 Korzystanie z testowej aplikacji klienckiej ............................................................ 107 Monitorowanie komunikatów SOAP ................................................................... 108 Podsumowanie podej cia 4. ................................................................................... 109 Podsumowanie ............................................................................................................. 109 Rozdziaï 4. Przygotowanie przestrzeni roboczej .......................................................................... 111 Instalowanie i aktualizowanie WTP ............................................................................ 111 Instalowane komponenty WTP ............................................................................. 112 Rodzaje kompilacji WTP ....................................................................................... 113 Instalacja za pomocÈ mened era aktualizacji ........................................................ 115 Instalowanie z archiwów ZIP ................................................................................ 118 Instalowanie materiaïów zewnÚtrznych ................................................................ 120 JDK ......................................................................................................................... 123 Weryfikowanie instalacji ........................................................................................ 124 Aktualizowanie WTP ............................................................................................. 125
  • 4. Spis tre ci 7 Konfigurowanie WTP .................................................................................................. 126 Preferencje kategorii Connectivity ........................................................................ 127 Preferencje kategorii Internet ................................................................................ 127 Preferencje kategorii Server ................................................................................... 128 Preferencje kategorii Validation ............................................................................ 128 Preferencje kategorii Web and XML ..................................................................... 128 Preferencje kategorii Web Services ....................................................................... 129 Preferencje kategorii XDoclet ............................................................................... 130 Wspólne ustawienia ................................................................................................ 130 Podsumowanie ............................................................................................................. 131 CzÚ Ê II Tworzenie aplikacji WWW w Javie ......................................................... 133 Rozdziaï 5. Architektura i projektowanie aplikacji WWW ............................................................ 135 Krajobraz WWW ........................................................................................................... 135 Aplikacje WWW ............................................................................................................ 137 Aplikacje WWW w Javie ......................................................................................... 138 Projekt aplikacji WWW z podziaïem na warstwy ................................................. 142 Wzorzec MVC w aplikacji WWW ......................................................................... 145 Szkielety aplikacyjne dla Javy ................................................................................. 149 Architektura usïugowa SOA ........................................................................................ 152 UdostÚpnianie usïug. Warstwa usïugowa ............................................................. 152 Studium przypadku — League Planet ........................................................................ 154 Podsumowanie ............................................................................................................. 156 Rozdziaï 6. Organizacja projektu ................................................................................................ 157 Typy projektów WWW i aplikacji J2EE ...................................................................... 158 Projekty WWW ....................................................................................................... 159 Moduïy J2EE .......................................................................................................... 160 Tworzenie aplikacji ................................................................................................ 160 Tworzenie aplikacji EJB ......................................................................................... 167 Tworzenie aplikacji EAR ....................................................................................... 173 Zaawansowane projekty WWW ................................................................................... 178 Modelowanie perspektywy projektowej ............................................................... 181 Przykïadowe projekty ................................................................................................... 184 Prosta aplikacja korporacyjna ................................................................................. 184 Podziaï moduïu WWW na wiele projektów ......................................................... 190 Tworzenie aplikacji WWW a Maven ..................................................................... 199 Podsumowanie ............................................................................................................. 214 Rozdziaï 7. Warstwa prezentacji ................................................................................................ 217 Wprowadzenie .............................................................................................................. 217 Projektowanie interakcji .............................................................................................. 218 Projektowanie grafiki ................................................................................................... 220 Struktura warstwy prezentacji ..................................................................................... 222
  • 5. 8 Spis tre ci Podej cie 1. Projekty statycznych stron WWW, HTML i edytory kodu ródïowego .......................................................................................................... 225 Projekty statycznych aplikacji WWW .................................................................... 225 HTML .................................................................................................................... 228 Edytory kodu ródïowego ..................................................................................... 236 Szablony .................................................................................................................. 239 Wstawki ................................................................................................................... 243 Podsumowanie podej cia 1. ................................................................................... 248 Podej cie 2. CSS ........................................................................................................... 248 Podsumowanie podej cia 2. ................................................................................... 253 Podej cie 3. JavaScript .................................................................................................. 253 Maskowanie adresu e-mail .................................................................................... 253 Walidacja danych wprowadzanych do formularza ............................................... 255 Podsumowanie podej cia 3. ................................................................................... 266 Podej cie 4. XML i XSLT ............................................................................................ 267 XML ........................................................................................................................ 267 XSLT ....................................................................................................................... 271 Podsumowanie podej cia 4. ................................................................................... 276 Podej cie 5. DTD ......................................................................................................... 276 Podsumowanie podej cia 5. ................................................................................... 281 Podej cie 6. Serwery, projekty dynamicznych aplikacji WWW i serwlety ................ 281 Serwery ................................................................................................................... 281 Projekty dynamicznych aplikacji WWW ............................................................... 288 Serwlety .................................................................................................................. 290 Podsumowanie podej cia 6. ................................................................................... 300 Podej cie 7. JSP ............................................................................................................ 300 Podsumowanie podej cia 7. ................................................................................... 310 Podej cie 8. Monitorowanie sesji HTTP ................................................................... 310 Sesje HTTP ............................................................................................................ 310 Monitor TCP/IP .................................................................................................... 311 PodglÈdanie sesji HTTP w monitorze TCP/IP ................................................... 312 Modyfikowanie i ponowne przesyïanie komunikatu ........................................... 317 Podsumowanie podej cia 8. ................................................................................... 317 Podsumowanie ............................................................................................................. 317 Rozdziaï 8. Warstwa logiki biznesowej ...................................................................................... 319 Typowy ukïad warstwy biznesowej ............................................................................ 322 Podej cie 1. Model dziedzinowy ................................................................................. 323 Projekty pomocnicze J2EE .................................................................................... 323 Model obiektowy ................................................................................................... 325 Warstwa usïugowa .................................................................................................. 332 Warstwa dostÚpu do danych .................................................................................. 336 Testy ........................................................................................................................ 342 Podsumowanie podej cia 1. ................................................................................... 346
  • 6. Spis tre ci 9 Podej cie 2. Tworzenie sesyjnych komponentów EJB .............................................. 347 Dodawanie serwera JBoss ...................................................................................... 351 XDoclet ................................................................................................................... 354 Projekty EJB ........................................................................................................... 357 Tworzenie komponentów sesyjnych .................................................................... 360 Konstruowanie klienta WWW ............................................................................... 371 Uruchamianie aplikacji .......................................................................................... 374 WTP i komponenty EJB 3.0 .................................................................................. 377 Podsumowanie podej cia 2. ................................................................................... 379 Podej cie 3. Komponenty komunikatowe .................................................................. 380 Krótkie wprowadzenie do MDB ........................................................................... 380 Tworzenie komponentu komunikatowego .......................................................... 380 Tworzenie kolejki komunikatów w JBoss ............................................................ 384 Tworzenie klienta kolejki JMS .............................................................................. 385 Podsumowanie podej cia 3. ................................................................................... 388 Podsumowanie ............................................................................................................. 389 Rozdziaï 9. Warstwa trwaïo ci ................................................................................................... 391 Projekty warstwy trwaïo ci .......................................................................................... 392 Odwzorowanie obiektów w bazie danych za pomocÈ interfejsu JDBC ............. 394 Odwzorowanie obiektów w bazie danych za po rednictwem komponentów encyjnych ...................................................................................... 395 Odwzorowanie obiektów w bazie danych za po rednictwem gotowych szkieletów odwzorowania obiektowo-relacyjnego .............................. 396 PrzeglÈd Êwiczeñ .......................................................................................................... 397 Podej cie 1. Tworzenie bazy danych ........................................................................... 398 Podsumowanie podej cia 1. ................................................................................... 407 Podej cie 2. Warstwa danych ....................................................................................... 408 Podsumowanie podej cia 2. ................................................................................... 414 Podej cie 3. Komponenty encyjne .............................................................................. 414 Przygotowania w JBoss, Derby i XDoclet ............................................................ 415 Tworzenie komponentu CMP .............................................................................. 419 Definiowanie metody ejbCreate i metod wyszukujÈcych ................................... 423 Dodawanie DAO z wykorzystaniem CMP .......................................................... 430 Testowanie implementacji CMP .......................................................................... 433 Programowanie JPA w WTP ................................................................................. 437 Podsumowanie podej cia 3. ................................................................................... 441 Podsumowanie ............................................................................................................. 441 Rozdziaï 10. Usïugi WWW ........................................................................................................... 443 WSDL ........................................................................................................................... 444 SOAP ............................................................................................................................ 445 REST ............................................................................................................................. 446 Usïugi WWW à la REST .............................................................................................. 448 PrzeglÈd Êwiczeñ .......................................................................................................... 449
  • 7. 10 Spis tre ci Podej cie 1. Budowanie usïugi WWW „od góry” ....................................................... 450 XSD ......................................................................................................................... 450 WSDL ..................................................................................................................... 456 Wdra anie usïug WWW ......................................................................................... 462 Implementowanie usïugi WWW ........................................................................... 469 Testowanie usïugi w eksploratorze usïug WWW ................................................. 474 Podsumowanie podej cia 1. ................................................................................... 475 Podej cie 2. Budowanie usïugi WWW „od doïu” ....................................................... 477 Implementacja klasy usïugi .................................................................................... 478 Wdra anie usïugi .................................................................................................... 483 Podsumowanie podej cia 2. ................................................................................... 487 Podej cie 3. Generowanie proxy dla klientów usïugi WWW .................................... 487 Generowanie proxy klienckiego i testowej strony JSP ......................................... 488 Korzystanie z testowej klienckiej strony JSP ........................................................ 491 Podsumowanie podej cia 3. ................................................................................... 493 Podej cie 4. Kontrola interoperacyjno ci usïug WWW .............................................. 494 Kontrola komunikatów pod kÈtem zgodno ci z WS-I ......................................... 495 Podsumowanie podej cia 4. ................................................................................... 498 Podej cie 5. Wykorzystywanie usïug WWW w aplikacjach WWW ........................... 501 Generowanie klienta usïugi Query ....................................................................... 501 Tworzenie serwletów ............................................................................................. 502 Importowanie kodu interfejsu u ytkownika ........................................................ 504 Testowanie interfejsu u ytkownika ...................................................................... 515 Podsumowanie podej cia 5. ................................................................................... 519 Podej cie 6. Wyszukiwanie i publikowanie usïug WWW .......................................... 519 UDDI ..................................................................................................................... 520 WSIL ....................................................................................................................... 520 Podsumowanie podej cia 6. ................................................................................... 525 Podsumowanie ............................................................................................................. 525 Rozdziaï 11. Testy ........................................................................................................................ 527 Testy zautomatyzowane ............................................................................................... 529 PrzeglÈd zadañ z bie Ècego rozdziaïu .......................................................................... 530 Podej cie 1. Testy jednostkowe à la JUnit .................................................................. 530 Tworzenie projektu dla testów .............................................................................. 532 Przypadek testowy JUnit ....................................................................................... 532 Zestaw testów JUnit .............................................................................................. 537 Podsumowanie podej cia 1. ................................................................................... 538 Podej cie 2. Testy integracyjne à la Cactus ................................................................. 539 Podsumowanie podej cia 2. ................................................................................... 545 Podej cie 3. Testy systemowe à la HttpUnit .............................................................. 546 Podsumowanie podej cia 3. ................................................................................... 551 Podej cie 4. Testy wydajno ciowe à la TPTP ............................................................. 551 Tworzenie projektu testu wydajno ci ................................................................... 554 Test rejestrowania HTTP ...................................................................................... 554 Generowanie zestawienia wynikowego ................................................................ 556 Podsumowanie podej cia 4. ................................................................................... 558
  • 8. Spis tre ci 11 Podej cie 5. Profilowanie aplikacji z TPTP ................................................................ 558 Podsumowanie podej cia 5. ................................................................................... 563 Podsumowanie ............................................................................................................. 563 CzÚ Ê III Rozszerzanie WTP .................................................................................. 565 Rozdziaï 12. Dodawanie nowych serwerów ................................................................................. 567 Ogólnie o dodawaniu uniwersalnego adaptera serwera ............................................. 570 ¥rodowisko wykonawcze GlassFish ............................................................................ 571 Wtyczki adapterów serwerów ...................................................................................... 572 Dodawanie obsïugi do nowego rodowiska wykonawczego ..................................... 575 Dodawanie nowego typu serwera ............................................................................... 577 Dodawanie handlera rodowiska wykonawczego ....................................................... 578 Aspekty i komponenty rodowiska wykonawczego ................................................... 579 Rozszerzanie interfejsu narzÚdzi serwerowych .......................................................... 581 Definicja serwera .......................................................................................................... 583 Moduïy publikacji ........................................................................................................ 587 Test adaptera serwera ................................................................................................... 590 Podsumowanie ............................................................................................................. 598 Rozdziaï 13. Obsïuga nowych typów plików ................................................................................ 601 Tworzenie rozszerzenia DocBook .............................................................................. 603 Walidator DocBook ...................................................................................................... 603 Infrastruktura walidacji w WTP ............................................................................ 605 Implementacja walidatora dla DocBook ............................................................... 605 Tworzenie wïasnego typu markera ............................................................................. 618 Deklarowanie typu zawarto ci DocBook .................................................................... 619 Podsumowanie ............................................................................................................. 624 Rozdziaï 14. Rozszerzenia dla WSDL ............................................................................................ 625 Tworzenie wtyczki rozszerzenia WSDL ..................................................................... 629 Rozszerzanie edytora WSDL ....................................................................................... 630 Dostosowywanie wyglÈdu elementów rozszerzajÈcych WSDL w panelu edycji wizualnej ...................................................................................... 632 Dodawanie elementów rozszerzajÈcych do edytora ............................................. 635 Dodawanie wïasnych akcji do widoku edycji wizualnej edytora WSDL ............ 644 Rozszerzanie walidacji WSDL ..................................................................................... 651 Dodatki do walidacji WSDL 1.1 ............................................................................ 652 Wïasne reguïy walidacji .......................................................................................... 656 Podsumowanie ............................................................................................................. 660 Rozdziaï 15. Dostosowywanie mechanizmu rozwiÈzywania URI dla zasobów .............................. 661 Tworzenie wtyczki rozszerzenia infrastruktury rozwiÈzywania zasobów ................ 664 Dodawanie zasobów do katalogu XML ...................................................................... 665 Katalog XML .......................................................................................................... 667 Dodawanie pojedynczego zasobu do katalogu XML ........................................... 667 Dodawanie do katalogu XML zestawu zasobów .................................................. 670
  • 9. 12 Spis tre ci Wïasna strategia rozwiÈzywania zasobów ................................................................... 673 Infrastruktura rozwiÈzywania URI dla zasobów .................................................. 675 Tworzenie folderu mechanizmu rozwiÈzywania URI ........................................ 678 Podsumowanie ............................................................................................................. 681 CzÚ Ê IV Produkty i dodatki .................................................................................. 683 Rozdziaï 16. Inne narzÚdzia WWW bazujÈce na Eclipse ................................................................ 685 WWW w Javie ............................................................................................................... 686 BEA Workshop ....................................................................................................... 686 CodeGear JBuilder ................................................................................................. 686 Exadel Studio .......................................................................................................... 686 IBM Rational Application Developer ................................................................... 687 JBoss Tools (JBoss IDE) ........................................................................................ 688 MyEclipse ............................................................................................................... 688 ObjectWeb Lomboz ............................................................................................... 688 SAP NetWeaver Developer Studio ....................................................................... 689 W4T Eclipse ........................................................................................................... 689 WWW w Perlu .............................................................................................................. 689 EPIC ........................................................................................................................ 690 WWW w PHP ............................................................................................................... 690 Eclipse PHP Development Tools ......................................................................... 691 PHPEclipse ............................................................................................................. 691 WWW w Pythonie ........................................................................................................ 691 PyDev ...................................................................................................................... 691 WWW w Ruby .............................................................................................................. 692 RadRails .................................................................................................................. 692 Podsumowanie ............................................................................................................. 692 Sïowniczek ............................................................................................................... 693 Bibliografia .............................................................................................................. 701 Skorowidz ................................................................................................................ 709
  • 10. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 135 ROZDZIA’ 5. Architektura i projektowanie aplikacji WWW Pomyïki sÈ wrotami do odkryÊ. — James Joyce W tym rozdziale zajmiemy siÚ opisem dwóch rodzajów systemów WWW — infrastruktury aplikacji i infrastruktury usïugi. Wielu z nas tworzy aplikacje z interfejsem WWW. Owe in- terfejsy odwoïujÈ siÚ do warstw biznesowych aplikacji i utrwalajÈ pobrane dane w bazach danych. Dla takich rodzajów systemów architekturÚ warstwowÈ udostÚpnia infrastruktura aplikacji. Z kolei w przypadku infrastruktury usïugi mamy do czynienia ze wspóïpracÈ po- szczególnych usïug za po rednictwem WWW — bez udziaïu u ytkowników. W tym przypad- ku mowa o architekturze zorientowanej na usïugi — SOA (od Service Oriented Architecture). Oba systemy majÈ cechy wspólne; w obu chodzi o zmontowanie rozlegïego i popraw- nego pod wzglÚdem struktury systemu WWW, opartego na prawidïach zasad obiektowo ci. Przypomnimy wiÚc wiadomo ci z wykïadów o projektowaniu obiektowym i zobaczymy, jak mo na je zastosowaÊ do WWW. Krajobraz WWW SieÊ WWW ewoluuje od sieci stanowiÈcej no nik informacji dla odbiorców-u ytkowników, w kierunku rodka komunikacji i wspóïpracy pomiÚdzy lud mi, ale i pomiÚdzy aplikacjami (zob. rysunek 5.1). SieÊ WWW dziaïa w oparciu o standardowe i otwarte protokoïy. Jest niejednorodna, rozproszona i szeroko dostÚpna. SieÊ WWW jest wiÚc niemal idealnÈ platformÈ do wymiany informacji i koordynacji dziaïañ. Budowanie aplikacji WWW i integrowanie tych aplikacji nie
  • 11. 136 CzÚ Ê II • Tworzenie aplikacji WWW w Javie RYSUNEK 5.1. Aplikacje i usïugi WWW
  • 12. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 137 sÈ ju oddzielnymi zadaniami. Podstawowym zaïo eniem SOA jest to, e systemy WWW powinny byÊ montowane z usïug eksponujÈcych otoczeniu ci le zdefiniowane interfejsy, które pozwalajÈ na komunikacjÚ zarówno z u ytkownikami, jak i aplikacjami. W wiecie ukierunkowanym na usïugi mamy mnóstwo aplikacji sieciowych: aplikacje pïatnicze uruchamiane na komputerach typu mainframe, drukarki fotograficzne drukujÈce zdjÚcia z aparatu cyfrowego czy wsady wie ych wiadomo ci z praktycznie dowolnej dzie- dziny. Wszystkie te aplikacje sÈ przykïadami systemów wiadczÈcych pewne usïugi. Ka dy z takich „systemów-usïugodawców” eksponuje swoje zasoby za po rednictwem publicznego interfejsu definiujÈcego jego usïugÚ. Nowe aplikacje u ywajÈ takich usïug i montujÈ z nich nowe aplikacje, które same mogÈ byÊ udostÚpniane równie jako osobne usïugi. W tym pro- stym modelu usïugodawcy i usïugobiorcy mo na ujÈÊ tworzenie aplikacji WWW nastÚpnej generacji, z prawie nieograniczonymi mo liwo ciami. Aplikacje WWW Prosta aplikacja WWW skïada siÚ z trzech logicznych warstw: warstwy prezentacji, warstwy logiki biznesowej i warstwy danych (zob. rysunek 5.2). To jedynie podstawowy podziaï ogól- ny, ale w faktycznej aplikacji mo na wyró niaÊ logicznie dodatkowe warstwy, reprezentujÈce i wyodrÚbniajÈce poszczególne charakterystyczne elementy architektury aplikacji. Architek- tura fizyczna aplikacji jest tu nieistotna: wszystkie trzy warstwy mogÈ równie dobrze dziaïaÊ na pojedynczym serwerze aplikacyjnym i jednym komputerze albo na trzech i wiÚcej osob- nych serwerach aplikacyjnych. W J2EE architekturÈ fizycznÈ mo na zarzÈdzaÊ niezale nie od warstw logicznych aplikacji. RYSUNEK 5.2. Aplikacje i usïugi WWW
  • 13. 138 CzÚ Ê II • Tworzenie aplikacji WWW w Javie Najwy sza warstwa to warstwa prezentacji. Jest to warstwa interfejsu u ytkownika, mon- towana zazwyczaj na bazie jÚzyka HTML. Modele RIA (Rich Internet Application) i AJAX wprowadzajÈ zresztÈ do warstwy prezentacji nowsze technologie implementacji strony klienc- kiej, na przykïad Flash czy JavaScript. Je li interfejs u ytkownika nie wymaga do uruchomienia niczego poza przeglÈdarkÈ WWW, okre lamy go mianem „cienkiego klienta” — ang. thin client. Adobe Flash Flash jest co prawda najpowszechniejszy wïa nie w bogatym interfejsie u ytkownika, ale czÚsto wykorzystuje siÚ go równie w aplikacjach wielowarstwowych. Flash ma wïasny obiektowy jÚzyk programowania — ActionScript 2.0 — i komponenty umo liwiajÈce odwoïywanie siÚ do usïug WWW i baz danych. WiÚcej informacji o tej stronie platformy Flash mo na znale Ê pod adre- sem http://www.adobe.com/platform. Warstwa rodkowa to warstwa, w której realizuje siÚ tak zwanÈ logikÚ biznesowÈ apli- kacji. W tej warstwie bÚdÈ dziaïaÊ na przykïad obiekty realizujÈce dodanie dru yny do ligi. Wydzielona warstwa logiki biznesowej nie jest zresztÈ zwiÈzana wyïÈcznie z aplikacjÈ WWW — porzÈdne wyodrÚbnienie warstwy umo liwia wykorzystanie jej równie w innych systemach. Dolna warstwa to warstwa, gdzie realizowane jest zadanie przechowywania danych w spo- sób trwaïy. Najbardziej typowym ródïem trwaïo ci jest baza danych, ale równie dobrze mogÈ to byÊ pliki w systemie plików. W dalszej czÚ ci rozdziaïu zajmiemy siÚ kwestiami dotyczÈcymi poszczególnych wyró - nionych tu warstw. W sieci WWW mo na znale Ê mnóstwo przykïadów takich aplikacji; wszystkie udostÚpniajÈ jakie usïugi warstwy biznesowej u ytkownikom koñcowym. Aplika- cje te mogÈ byÊ ze sobÈ skojarzone (na przykïad odno nikami hipertekstowymi), ale nie sÈ faktycznie zintegrowane — stanowiÈ raczej lu no powiÈzane „ekosystemy”, w których czyn- nikiem wiÈ Ècym jest wïa nie u ytkownik koñcowy. Tymczasem w systemie zorientowanym na usïugi aplikacje sÈ zintegrowane za po rednictwem tych e usïug; miejsce u ytkowników w tych systemach zajmujÈ inne, zewnÚtrzne aplikacje WWW, a warstwa prezentacji jest za- stÚpowana warstwÈ usïugi. Aplikacje WWW w Javie Aplikacje WWW w jÚzyku Java wykorzystujÈ technologie opisane w specyfikacji J2EE i po- wszechne standardy ogólne, jak HTML, XMLO czy Web Service. Koncepcja warstwowego podziaïu aplikacji i systemów klient-serwer jest w informatyce obecna znacznie dïu ej ni technologie WWW i jÚzyk Java. Chyba najcenniejszym wkïadem ze strony J2EE w tej dziedzinie byïo udostÚpnienie praktycznej i ustandaryzowanej specyfi- kacji. DziÚki temu powstaïo wiele komercyjnych i niekomercyjnych serwerów aplikacyjnych obsïugujÈcych tak ustanowiony standard. J2EE oferuje standardy dla modeli wykonawczych i programistycznych, wykorzystywa- nych w aplikacjach WWW. SÈ tu komponenty dla sesji klienckich, prezentacji, logiki bizneso- wej i logiki sterowania aplikacjÈ, a tak e dla operacji biznesowych. SÈ tu te zdefiniowane usïugi dotyczÈce rozproszenia, transakcyjno ci i zarzÈdzania danymi, umo liwiajÈce urucha- mianie tych komponentów w rodowiskach korporacyjnych.
  • 14. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 139 Aplikacje WWW w technologii J2EE sÈ przeno ne pomiÚdzy zgodnymi ze specyfikacjÈ serwerami aplikacyjnymi. Przeno no Ê ta bazuje na dostÚpno ci kompletnego standardu re- gulujÈcego przebieg interakcji klientów z systemem, implementacjÚ poszczególnych kompo- nentów i sposób wykorzystania przez te komponenty interfejsów usïug w celu integrowania ich z innymi systemami korporacyjnymi. Model J2EE dzieli warstwÚ prezentacji na warstwy prezentacji strony klienta i strony serwera. Do modelowania i implementowania logiki bizne- sowej sïu È tu komponenty EJB. Warstwa danych jest realizowana równie za pomocÈ kompo- nentów EJB, a tak e za po rednictwem usïug dajÈcych dostÚp do korporacyjnych systemów informatycznych. J2EE definiuje osobne kontenery dla komponentów WWW i komponentów bizneso- wych (EJB) — zob. rysunek 5.3. Kontenery udostÚpniajÈ standardowe dla nich usïugi, obsïu- gujÈc rozproszenie, sesyjno Ê i transakcyjno Ê. Klienty mogÈ byÊ aplikacjami typu thin client (jak przeglÈdarka WWW) albo peïnoprawnymi i samodzielnymi aplikacjami. Wymagane do ko- munikacji protokoïy WWW sÈ obsïugiwane przez rodowiska wykonawcze po stronie serwera. RYSUNEK 5.3. Kontenery J2EE Kontener WWW obsïuguje komponenty takie jak strony JSP i serwlety. Komponenty te sÈ wykorzystywane powszechnie do realizacji warstwy prezentacji. Kontener komponentów EJB udostÚpnia rodowisko wykonawcze dla komponentów biznesowych i dostÚp do korporacyjnych systemów informatycznych. ¥rodowisko wykonawcze skïada siÚ z licznych ustandaryzowanych usïug, w tym usïug ïÈczno ci z bazami danych (JDBC), interfejsu transakcyjnego Java Transaction API i usïug transakcyjno ci (JTA/JST), architektury J2CA (Java 2 Connector), usïug uwierzytelniania
  • 15. 140 CzÚ Ê II • Tworzenie aplikacji WWW w Javie i autoryzacji (JAAS), usïug interfejsu systemów nazw i katalogów (JNDI) i mnóstwa innych interfejsów realizujÈcych komunikacjÚ wewnÚtrznÈ i zewnÚtrznÈ, zapewniajÈcych rozszerzal- no Ê systemów J2EE. Projektowanie aplikacji WWW w jÚzyku Java Czasami jeste my tak zaaferowani nowymi technologiami i systemami, e zapominamy na- uki z przeszïo ci. Stosowanie zasad in ynierii oprogramowania, zwïaszcza za zasad obiekto- wo ci, jest dla nas w tych nowych technologiach wyzwaniem (Knight 2002). Owe nowe tech- nologie bywajÈ tak samo gro ne, jak efektywne; mogÈ zachÚcaÊ do stosowania niekoniecznie najlepszych praktyk programistycznych. Na przykïad programowanie stron JSP kusi mo - liwo ciÈ bezpo redniego odwoïywania siÚ do baz danych, ïatwo tu te zapomnieÊ o zdatno ci kodu do ponownego wykorzystania. Komponenty EJB jako skïadowe biznesowych kom- ponentów aplikacji sÈ krytykowane za nadmiernÈ zïo ono Ê. XML promuje wspóïdzielenie i wielokrotne wykorzystanie, ale bywa nadu ywany. Aplikacje WWW pisane w Javie skïadajÈ siÚ od strony warstwy prezentacji ze stron JSP i serwletów. Zarówno JSP, jak i serwlety mo na wykorzystaÊ przy tworzeniu architektur z wyodrÚbnionymi warstwami. W ten sposób buduje siÚ dwa najpopularniejsze typy aplika- cji WWW w Javie, które bÚdziemy oznaczaÊ jako model 1. i model 2. Otó wedle modelu 1. Èdania klientów sÈ przesyïane wprost do stron JSP, podczas gdy w modelu 2. sÈ one kiero- wane do serwletu kontrolujÈcego, który dopiero przekierowuje je do odpowiednich stron JSP. Obszerne opisy obu modeli mo na znale Ê w podrozdziale 4.4, Web-Tier Application Framework Design, w ksiÈ ce Designing Enterprise Applications with the J2EE™ Platform (Singh 2002). Model 1. jest wykorzystywany w bardzo prostych aplikacjach WWW. Z kolei model 2. stanowi adap- tacjÚ wzorca projektowego MVC (Model View Controller) dla potrzeb aplikacji WWW. Wzor- cem projektowym MVC zajmiemy siÚ nieco pó niej (w podrozdziale „Wzorzec MVC w aplikacji WWW”). Wedle modelu 1. najwa niejszym celem jest przeniesienie mo liwie du ej ilo ci kodu obsïugujÈcego prezentacjÚ z klas Java do stron JSP. Elementy JSP sÈ popularne, poniewa pozwalajÈ na zarzÈdzanie tre ciÈ (HTML, CSS, JavaScript czy XML) i na równoczesne stoso- wanie kodu w jÚzyku Java. W JSP mo na wygodnie przetwarzaÊ Èdania HTTP i generowaÊ odpowiedzi w postaci gotowych dokumentów HTML. Strony JSP dajÈ siÚ te ïatwo zro- zumieÊ projektantom i twórcom WWW (którzy niekoniecznie sÈ wykwalifikowanymi pro- gramistami Java). W architekturze narzucanej przez model 1. caïa aplikacja jest w zasadzie realizowana na bazie JSP. Niektórzy podnoszÈ, e mimo wszystko dochodzi do separacji tre ci i prezentacji, poniewa wszystkie odwoïania do danych sÈ realizowane za pomocÈ kompo- nentów jÚzyka Java. Architektura modelu 1. sprawdza siÚ na szybko w niewielkich aplikacjach, ale dla wszystkich aplikacji obejmujÈcych wiÚcej ni kilka stron kodu trzeba jÈ uznaÊ za zwyczajnie zïÈ. JSP nie jest dobrym miejscem do realizowania logiki biznesowej i logiki ste- rowania aplikacjÈ. Model 1. w miarÚ wzrostu rozmiaru aplikacji szybko degeneruje projekt, wymuszajÈc zwielokrotnianie kodu i zwiÚkszajÈc zïo ono Ê. Wszystkie podstawowe warstwy logiczne typowej aplikacji sÈ tu sprasowane do postaci pojedynczego komponentu. Z punktu widzenia wyodrÚbniania ró nych abstrakcji do ró nych warstw i z punktu wi- dzenia zasad obiektowo ci model 1. programowania z u yciem JSP jest najgorszy w tym, e w pojedynczym skrypcie grupuje siÚ zadania nale Èce do oddzielnych warstw. Wedle modelu 1. JSP musi:
  • 16. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 141 1. PrzyjmowaÊ dane wej ciowe. 2. ObsïugiwaÊ logikÚ aplikacji (logikÚ biznesowÈ i logikÚ przepïywu sterowania). 3. GenerowaÊ dane wyj ciowe (obsïugiwaÊ logikÚ prezentacji). Skoro wszystkie trzy warstwy zostaïy zwiÈzane w pojedynczym komponencie, nie mo na adnej z nich modyfikowaÊ ani testowaÊ z osobna. Do tego obsïuga wszystkich tych zadañ (opiszemy je osobno) równie jest problematyczna. To samo dotyczyïoby wykorzystania samych serwletów (bo serwlet mo na uznaÊ za skrypt z dodatkowymi osadzonymi elemen- tami XML czy HTML); do tego mieszanie kodu z tekstem utrudnia zarzÈdzanie kodem i diagnostykÚ kodu. Przyjmowanie danych wej ciowych W ramach przyjmowania danych wej ciowych skrypt otrzymuje do dyspozycji obiekt HttpServletRequest, bÚdÈcy reprezentacjÈ strumienia wej ciowego HTTP, minimalnie tylko przetworzonÈ. W HTTP wyró niono trzy mechanizmy do przekazywania parametrów (me- toda kodowania parametrów w URL, metoda parametrów zapytañ i formularze) i we wszyst- kich dane sÈ przekazywane jako zwyczajne ciÈgi znaków. Ka dy ze skryptów skïadajÈcych siÚ na aplikacjÚ musi wiÚc „na wïasnÈ rÚkÚ” okre laÊ sposób przekazywania parametrów, konwersjÚ parametrów na warto ci odpowiednich typów i weryfikacjÚ (walidacjÚ) tych war- to ci. Brak wspólnego, wyodrÚbnionego kodu obsïugi danych wej ciowych wymusza powiela- nie tego samego bÈd podobnego kodu w wielu osobnych skryptach. Obsïuga logiki aplikacji KolejnÈ kwestiÈ problematycznÈ, dotyczÈcÈ zarówno obsïugi wej cia, jak i logiki aplikacji, jest brak hermetyzacji informacji przy odwoïaniach do danych Èdania i danych sesji. Skrypt musi pobraÊ dane z Èdania wej ciowego po nazwie. Protokóï HTTP jest protokoïem bezstanowym, wiÚc dane wykorzystywane na wielu osobnych stronach JSP w ka dym skrypcie wymagajÈ- cym tych danych muszÈ albo byÊ zapisane w sesji skojarzonej z danym u ytkownikiem, albo wielokrotnie odczytywane z zewnÚtrznego ródïa danych. Na przykïad, je li skrypt przekazuje dane logowania u ytkownika jako dane formularza, kod zapisujÈcy te dane w sesji mógïby wyglÈdaÊ tak: Listing 5.1. Zapisywanie sesji z parametrami Èdania HTTP password = request.getParameter("passwordField"); decrypted = this.decode("password"); request.getSession().setAttribute("password", decrypted); Zarówno zapis danych w atrybutach sesji, jak i zapis w zewnÚtrznym ródle danych to efektywny zapis danych w zasiÚgu globalnym, a aplikacja odwoïuje siÚ do takich danych jak do sïownika, to znaczy poprzez ciÈgi z nazwami traktowanymi jako klucze warto ci. Tak skïadowanych danych nie dotyczÈ zwyczajne mechanizmy kontrolowania czasu ycia zmien- nych i w ka dym skrypcie czy te na ka dej stronie korzystajÈcej z danych trzeba „ujawniÊ”
  • 17. 142 CzÚ Ê II • Tworzenie aplikacji WWW w Javie stosowane nazewnictwo atrybutów-zmiennych. Nie mo na wtedy w prosty sposób wyszu- kaÊ wszystkich odwoïañ do zmiennych za po rednictwem zwyczajnych mechanizmów pro- gramistycznych, co z kolei utrudnia modyfikowanie odwoïañ do danych. A je li JSP nie hermetyzuje stosowanej konwencji nazewniczej, wiedza i niej i o niskopoziomowych prze- cie szczegóïach implementacji protokoïu HTTP musi byÊ implementowana w caïo ci apli- kacji, co skutecznie niweczy jej zdatno Ê do adaptacji do nowych zastosowañ. Co wiÚcej, mamy tu te potencjalne ródïo bïÚdów, które mogÈ powstaÊ nie tylko wskutek zwyczajnej literówki w nazwie zmiennej, ale tak e w wyniku zastosowania takiej samej nazwy w ró - nych skryptach do ró nych celów. W miarÚ zwiÚkszania siÚ liczby stron JSP budowanej w ten sposób aplikacji, problemy te mogÈ okazaÊ siÚ przytïaczajÈce. Kiedy do realizacji logiki aplikacji wykorzystuje siÚ strony JSP, wprowadza siÚ do nich potencjalnie znaczÈce ilo ci kodu. Tymczasem techniki zarzÈdzania kodem w przypadku kodu osadzonego w JSP muszÈ z konieczno ci byÊ ograniczone. Mieszanina kodu i tekstu na stro- nach JSP utrudnia te diagnostykÚ kodu. Co prawda w WTP znalazïy siÚ zarówno mechani- zmy asysty przy wprowadzaniu kodu w JSP, jak i mechanizmy interaktywnego debugowa- nia kodu, w przypadku prekompilowanych stron JSP trzeba bÚdzie debugowaÊ zïo ony kod generowany przez serwer, co jest trudne. Z tych wzglÚdów nale aïoby minimalizowaÊ ilo Ê kodu w stronach JSP i unikaÊ programowania tam logiki aplikacji. Obsïuga logiki biznesowej W JSP caïy kod ma strukturÚ monolitycznÈ. Co prawda mo na w nim wydelegowaÊ zadania biznesowe do obiektów biznesowych, ale wciÈ mamy do czynienia z mieszaniem logiki apli- kacji i logiki biznesowej. Tymczasem nie da siÚ skutecznie przetestowaÊ niezale nie od siebie poszczególnych fragmentów JSP, tak jak to jest mo liwe w przypadku odrÚbnych klas jÚzyka Java (i testów jednostkowych). Do tego realizacja logiki biznesowej w JSP prowadzi do dalsze- go przeïadowania strony kodem, co utrudnia zarzÈdzanie tym kodem i konserwacjÚ projektu. Generowanie danych wyj ciowych Przy generowaniu danych wyj ciowych w prostym skrypcie miesza siÚ tre Ê HTML bÈd XML z danymi dynamicznymi. Powoduje to wiÈzanie wyglÈdu strony wynikowej z pozo- staïymi warstwami aplikacji. Zmiana wyglÈdu strony WWW czy choÊby przystosowanie aplikacji do potrzeb i ograniczeñ ró nych urzÈdzeñ docelowych sÈ wtedy mocno utrudnione. A ta ostatnia trudno Ê nabiera znaczenia, poniewa sieÊ WWW nieustannie rozprzestrzenia siÚ na urzÈdzenia przeno ne, w tym choÊby telefony komórkowe. JSP pomaga w uporaniu siÚ z tym problemem, pozwalajÈc projektantom WWW tworzyÊ wyglÈd stron, podczas gdy pro- grami ci Java realizujÈ logikÚ prezentacji w adnotacjach. Taki ukïad uwa a siÚ powszechnie za najbardziej odpowiednie zastosowanie stron JSP. Projekt aplikacji WWW z podziaïem na warstwy W architekturze z wyodrÚbnionymi warstwami powstaje system skïadajÈcy siÚ z kilku wy- ra nie oddzielonych czÚ ci (warstw), z mo liwie ograniczonymi zale no ciami i interakcjami pomiÚdzy tymi czÚ ciami. Taki system cechuje siÚ dobrym podziaïem problematyki aplika- cji, co oznacza, e ró ne aspekty dziaïania aplikacji mo na opracowywaÊ niezale nie od siebie,
  • 18. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 143 z minimalnym wpïywem (a docelowo z brakiem takiego wpïywu) na pozostaïe czÚ ci. Od- dzielajÈc od siebie poszczególne fragmenty systemu czynimy oprogramowanie wysoce ad- aptowalnym, ïatwo dostosowujÈcym siÚ do zmieniajÈcych siÚ w przyszïo ci wymagañ. Warstwy obejmujÈ logikÚ pobierania danych i ich wyprowadzania (warstwa prezentacji), logikÚ aplika- cji, logikÚ biznesowÈ i zagadnienia trwaïo ci danych. Wszystkie te warstwy mo na wypro- wadziÊ z opisywanego wcze niej trzywarstwowego modelu wzorcowego; warstwa wej cia to skïadowa warstwy prezentacji. Warstwa logiki aplikacji jest czÚsto podzielona na logikÚ przepïywu sterowania w warstwie prezentacji i logikÚ biznesowÈ oraz przepïywy danych i procesów w warstwie logiki biznesowej. Logika utrwalania danych mo e stanowiÊ osobnÈ warstwÚ danych; elementy tej logiki mogÈ znajdowaÊ siÚ w warstwie logiki biznesowej. Warstwa danych wej ciowych Warstwa danych wej ciowych albo te warstwa wej cia obejmuje kod zajmujÈcy siÚ prze- twarzaniem i weryfikacjÈ poprawno ci skïadniowej danych wej ciowych, a wiÚc strumieni SOAP, HTTP, SMPT i tak dalej; odpowiada te za wyïuskiwanie warto ci parametrów z Èdañ. Wedle wzorca MVC odpowiada ona kontrolerowi wej cia. Do zmontowania tej warstwy wykorzystujemy komponenty i interfejsy serwletów do obsïugi protokoïu HTTP. Sposobami u ycia tych interfejsów i komponentów zajmiemy siÚ w dalszej czÚ ci rozdziaïu. Logika aplikacji Kod logiki aplikacji odpowiada za ogólny przepïyw sterowania w aplikacji WWW. CzÚsto ta warstwa okre lana jest mianem warstwy sklejajÈcej (ang. glue layer), oddzielajÈcej warstwÚ logiki biznesowej od logiki danych wej ciowych i wyj ciowych i zarzÈdzajÈcej stykiem tych warstw. Wymaga to zaszycia tutaj pewnej wiedzy o obu tych warstwach. W tej warstwie bÚdzie na przykïad dochodziÊ do konwersji pomiÚdzy wej ciem i wyj ciem warstwy prezentacji w po- staci ciÈgów znaków a komunikatami bÈd warto ciami obiektów biznesowych. W aplikacji WWW ta warstwa mo e równie zarzÈdzaÊ interakcjÈ u ytkownika z wieloma stronami aplika- cji jako sekwencjÈ kroków (przej ciami pomiÚdzy stronami WWW). W MVC odpowiada to roli kontrolera aplikacji. Standard J2EE nie definiuje bezpo rednio komponentów do realizacji logiki aplikacji. Warstwa ta jest zazwyczaj implementowana w obrÚbie kontenera WWW J2EE i wykorzy- stuje podobne komponenty i interfejsy, jak te wykorzystywane w warstwie danych wej- ciowych. Sytuacja ta poprawia siÚ wyra nie wraz z dodaniem do Java EE 5 specyfikacji JSF (JavaServer Faces). Logika biznesowa Kod logiki biznesowej, implementujÈcy tak zwane obiekty biznesowe, zajmuje siÚ wyïÈcz- nie wewnÚtrznymi i wïa ciwymi zadaniami aplikacji, czyli jej procesami biznesowymi. Kod ten powinien byÊ kompletnie niezale ny od warstw zewnÚtrznych (prezentacji). W zïo onej aplikacji logika biznesowa bÚdzie najpewniej najbardziej rozbudowanym komponentem, ci le
  • 19. 144 CzÚ Ê II • Tworzenie aplikacji WWW w Javie zwiÈzanym z kodem odwoïujÈcym siÚ do systemów zewnÚtrznych, w tym baz danych, korpo- racyjnych systemów informacyjnych (EIS) takich jak ERP (Enterprise Resource Planning) czy CRM (Client Relationship Management) i innych powiÈzanych usïug. We wzorcu MVC logice biznesowej odpowiada „model”. Obiekty realizujÈce logikÚ biznesowÈ nie powinny byÊ zale ne od obiektów pozosta- ïych warstw. W takim ukïadzie mo na ïatwo implementowaÊ rdzenne zadania biznesowe aplikacji i umo liwiÊ realizacjÚ tych zadañ nie tylko w obrÚbie aplikacji J2EE, ale równie w innych systemach. Nasza rekomendacja dotyczÈca projektowania warstwy biznesowej jest prosta: warstwa ta powinna byÊ mo liwie uproszczona, implementowana w miarÚ mo liwo ci za pomocÈ zwyczajnych obiektów Javy i caïkowicie niezale na od pozostaïych warstw archi- tektury aplikacji. Odwoïywanie siÚ tu do komponentu takiego jak JSP albo którego z in- terfejsów J2EE typowego dla specyfiki WWW (np. interfejsu Èdania HTTP) jest tu niepo- Èdane. Tak samo niepo Èdane byïoby korzystanie tu bezpo rednio z interfejsów utrwalania danych wykorzystywanych w warstwie trwaïo ci. Bo co stanie siÚ z obiektami logiki bizne- sowej po pó niejszej zmianie technologii utrwalania danych? Prawidïowe ograniczenie takich zale no ci eliminuje przyszïe problemy i umo liwia niezale ne wprowadzanie zmian w in- nych warstwach. Trwaïo Ê Logika biznesowa implementowana w postaci obiektów jÚzyka Java potrzebuje jakiego na- rzÚdzia do trwaïego skïadowania danych biznesowych. W wiÚkszo ci aplikacji w tej roli wy- stÚpujÈ relacyjne bazy danych. Mo na te wykorzystywaÊ technologie alternatywne, jak bazy danych XML czy bazy obiektowe. Zadaniem warstwy trwaïo ci jest udostÚpnienie tej funk- cjonalno ci w aplikacji. Logika biznesowa nie powinna byÊ zale na od warstwy trwaïo ci, wiÚc w modelu biznesowym nie nale y odwoïywaÊ siÚ wprost do interfejsów skïadowiska danych. Utrwalanie obiektów realizuje siÚ na ró ne sposoby, od obiektów DAO (Data Access Object), zale nych zazwyczaj od interfejsów dostÚpu do baz danych i jÚzyków zapytañ takich jak SQL. Takie podej cie jest odpowiednie w przypadku niewielkiego zestawu prostych obiektów, z zaletÈ zwiÚkszonej elastyczno ci. W innych podej ciach uwzglÚdnia siÚ interfejs trwaïo ci Java Persistence API (JPA), wyrafinowane szkielety ORM (Object-Relational Mapping), jak Hibernate czy TOPLink, oraz podej cia anga ujÈce obiektowe bazy danych. Utrwalanie obiektów byïo przedmiotem intensywnych prac i szczegóïowe omawianie tego zagadnienia wykracza poza zakres tematyczny niniejszej ksiÈ ki. Prezentacja wyników Ta warstwa grupuje kod i zasoby niestanowiÈce kodu (pliki HTML, XML czy obrazki), lecz wykorzystywane do prezentowania wyników dziaïania aplikacji u ytkownikowi. Zazwyczaj skïada siÚ z niewielkiej ilo ci kodu, a ten e kod dotyczy wyïÈcznie formatowania i prezen- towania danych. Na przykïad strona JSP warstwy prezentacji wyników mo e zawieraÊ frag- menty kodu w jÚzyku Java, wypisujÈcego saldo konta na dynamicznie generowanej stronie WWW. We wzorcu MVC odpowiada to koncepcji widoku. Standard J2EE udostÚpnia komponenty JSP i serwlety przewidziane do implemento- wania warstwy prezentacji. Komponenty te sÈ obsïugiwane poprzez bogaty zestaw interfejsów do przetwarzania HTML i XML, tworzenia obrazków, zarzÈdzania adresami URL i ogólnie do obsïugi wszystkich zadañ zwiÈzanych z budowÈ interfejsu u ytkownika poprzez WWW.
  • 20. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 145 Wzorzec MVC w aplikacji WWW Wzorzec MVC (Model-Controller-View) stanowi elegancki koncepcyjny model podziaïu zadañ w serwerowej stronie aplikacji WWW. AplikacjÚ implementuje siÚ jako poïÈczenie serwletów, stron JSP, usïug i wïa ciwego kodu w jÚzyku Java. Prezentowane i polecane tutaj podej cie to jedno z mo liwych podej Ê do podziaïu odpowiedzialno ci i wyeliminowania sïabo ci tkwiÈcych w wykorzystywanych technologiach. Koncepcja MVC wywodzi siÚ z systemu Smalltalk-80 i promuje warstwowe podej cie przy projektowaniu i tworzeniu graficznych interfejsów u ytkownika. Oto podstawowe koncepcje uczestniczÈce w MVC: „ model obsïugujÈcy logikÚ aplikacji i logikÚ biznesowÈ, „ widok obsïugujÈcy logikÚ prezentacji, „ kontroler przyjmujÈcy i rozprowadzajÈcy wej cie (z klawiatury i myszy). Wzorzec MVC powstaï jako sposób oddzielenia kodu modelowego (czyli kodu niezwiÈ- zanego z interfejsem u ytkownika) od kodu prezentacyjnego i sterujÈcego. Kod modelowy nie powinien zawieraÊ adnej wiedzy o interfejsie, a jedynie rozgïaszaÊ powiadomienia o wszel- kich zmianach stanu do komponentów zale nych, którymi w klasycznym ujÚciu sÈ widoki. Taki schemat zapewnia dobrÈ separacjÚ pomiÚdzy trzema wymienionymi warstwami, za to boryka siÚ z dwoma wadami. Po pierwsze, postrzeganie modelu jest uproszczone i nie uwzglÚdnia rozró nienia pomiÚdzy logikÈ aplikacji (na przykïad przepïywem sterowania po- miÚdzy skïadowymi stronami WWW aplikacji) i logikÈ biznesowÈ (czyli np. przetwarzaniem pïatno ci). Po drugie, w wiÚkszo ci systemów okienkowych i bibliotek funkcje kontrolera i widoku sÈ ïÈczone w pojedynczym elemencie interfejsu, co redukuje u yteczno Ê koncep- cyjnego podziaïu na kontroler i widok. Pierwotne rozumienie architektury MVC ulegaïo wiÚc ewolucji. Obecnie pojÚcie kontro- lera odnosi siÚ do obiektu obsïugujÈcego logikÚ aplikacji, a pojÚcie modelu zarezerwowano dla obiektów biznesowych. BÚdziemy wiÚc tak okre laÊ obiekty biznesowe, a pojÚcia kontroler wej cia i kontroler aplikacji odnosiÊ do dwóch podstawowych typów kontrolerów aplikacji. W popularnych ramach projektowych Javy, jak Struts, JSF czy Spring, koncepcje MVC sÈ wcielane w ycie jako poïÈczenie kodu w jÚzyku Java, stron JSP, serwletów i zwyczajnych obiektów Javy realizujÈcych zadania ró nych komponentów. Owe ramy projektowe koncen- trujÈ siÚ na oddzieleniu widoku od kontrolera, ale niekoniecznie sugerujÈ sposoby oddzielenia kontrolerów, czyli logiki aplikacji, od logiki biznesowej. W kontek cie WWW dwojakie stoso- wanie pojÚcia kontrolera (jako kontrolera wej cia i kontrolera aplikacji) jest jak najbardziej poprawne. W przypadku aplikacji HTTP wej cie i prezentacja sÈ od siebie caïkiem roz- dzielone, po Èdany jest wiÚc kontroler wej cia oddzielony od widoku. A w przypadku apli- kacji o jakiejkolwiek realnej zïo ono ci trzeba jeszcze uwzglÚdniÊ byt kontrolera aplikacji jako oddzielajÈcego szczegóïy przepïywu sterowania w aplikacji od szczegóïów implemen- tacji logiki biznesowej. W nastÚpnych podrozdziaïach bÚdziemy omawiaÊ podstawowÈ strukturÚ obiektów w ra- mach projektowych MVC dla WWW (zob. rysunek 5.4). Architektura ta jest implemento- wana przez liczne wymienione wcze niej szkielety aplikacyjne.
  • 21. 146 CzÚ Ê II • Tworzenie aplikacji WWW w Javie RYSUNEK 5.4. MVC dla aplikacji WWW Kontroler wej cia Centralnym elementem jest kontroler wej cia. W systemie dziaïa jeden taki kontroler dla wszystkich stron WWW. Kontroler wej cia odbiera i analizuje dane wej ciowe, wykrywa me- chanizm przekazywania danych, wyïuskuje z Èdania niezbÚdne informacje, we wspóïpracy z kontrolerem aplikacji identyfikuje nastÚpnÈ operacjÚ — okre lanÈ mianem akcji — i wy- woïuje owÈ akcjÚ w odpowiednim kontek cie (zmontowanym z zestawu danych wej cio- wych). Uruchomienie kontrolera wej cia jako pojedynczego komponentu pozwala na wy- izolowanie w projekcie caïo ci wiedzy zwiÈzanej z obsïugÈ protokoïu HTTP i konwencji nazewniczych obowiÈzujÈcych na poziomie Èdañ HTTP. W ten sposób eliminuje siÚ po- wielanie kodu i zmniejsza ïÈczny rozmiar kodu. DziÚki temu mo na te ïatwiej modyfiko- waÊ ka dÈ z funkcji przetwarzajÈcych dane wej ciowe, poniewa modyfikacje sÈ ograniczone do pojedynczego komponentu i nie wpïywajÈ na pozostaïe komponenty aplikacji. Kontroler wej cia jest typowo realizowany za po rednictwem serwletu; czÚsto wyró nia siÚ osobny serwlet, obsïugujÈcy Èdania dostÚpu do aplikacji za po rednictwem protokoïu HTTP z po- ziomu zwyczajnej przeglÈdarki WWW, i drugi, obsïugujÈcy dostÚp do aplikacji z poziomu urzÈdzeñ operujÈcych protokoïem i przeglÈdarkÈ WAP. Kontroler aplikacji Kontroler aplikacji jest najczÚ ciej zwyczajnym obiektem jÚzyka Java. Jego zadaniem jest koordynowanie dziaïañ zwiÈzanych z przepïywem sterowania w aplikacji, obsïuga bïÚdów, utrzymywanie informacji zwiÈzanych ze stanem aplikacji (w tym referencji do obiektów biz- nesowych) i wybieranie odpowiedniego widoku do wy wietlenia. Kontroler aplikacji musi
  • 22. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 147 „rozumieÊ” Èdania i ich udziaï w przepïywie sterowania w aplikacji oraz przekazywaÊ te È- dania w celu uzyskania odpowiedzi. ¿Èdania WWW sÈ kodowane w strumieniach tekstowego protokoïu HTTP, a warto ci parametrów majÈ w nich postaÊ par klucz-warto Ê (oba ele- menty pary to ciÈgi znaków). Kontroler aplikacji musi dysponowaÊ mechanizmem odwzo- rowania takich par na obiekty aplikacji, które zarzÈdzajÈ przepïywem danych. W wiÚkszo ci szkieletów aplikacyjnych te odwzorowania sÈ reprezentowane za pomocÈ rozbudowanych plików konfiguracyjnych w formacie XML, jak w przypadku pliku struts-config.xml wykorzy- stywanego w Struts. Na przykïad kontroler aplikacji rozpoznaje ciÈgi URI takie jak poni szy: /leagueplanet/addPlayer.do Bazuje siÚ tu na konwencji nazewniczej, co ma opisywane wcze niej wady, ale ponie- wa jest to jedyny komponent wykorzystywany w taki sposób, skutki tych sïabo ci sÈ mi- nimalizowane. W lepszym projekcie pojedynczy kontroler aplikacji jest zazwyczaj odpowie- dzialny za wiele stron WWW i wiele operacji. W najprostszej aplikacji pojedynczy kontroler aplikacji mo e obsïugiwaÊ wszystkie strony. W aplikacji rozbudowanej wyznacza siÚ zazwy- czaj kilka kontrolerów aplikacji, ka dy do innego obszaru jej dziaïalno ci. Poprzez wykorzysty- wanie pojedynczego obiektu jako wspólnego, centralnego punktu odniesienia dla hermetyza- cji informacji kontroler aplikacji rozwiÈzuje zagadnienia ukrywania informacji i konwencji nazewniczych. Zamiast przechowywaÊ izolowane skrawki informacji w atrybutach sesji, skïa- duje siÚ je w obiektach biznesowych. Do ledzenia dziaïania kontrolera aplikacji i obiektów biznesowych mo na wykorzystaÊ klasyczne mechanizmy jÚzyka programowania, co bardzo uïatwia konserwacjÚ i modyfikowanie kodu. Do tego caïo Ê podlega statycznej kontroli typów, co jest niejako dodatkowÈ metodÈ walidacji danych. Kontrolery aplikacji konstruuje siÚ rozmaicie. W szkielecie Struts reprezentuje siÚ je jako akcje, podczas gdy w JSF okre la siÚ je mianem managed backing beans. W Struts przewiduje siÚ obecno Ê wielu akcji. Je li na przykïad dana aplikacja ma dwa przypadki u ycia — two- rzenie dru yn i dodawanie graczy do dru yn — mo emy zrealizowaÊ te przypadki w aplika- cji za pomocÈ dwóch odpowiednich akcji. W aplikacji Struts klasy implementujÈce takie akcje mogïyby wyglÈdaÊ tak, jak na listingu 5.2. Listing 5.2. Przykïadowy kod klasy akcji (Struts) public class CreateTeamAction { public void execute(...){} } public class AddPlayerAction { public void execute(...){} } Akcje dotyczÈce dru yny i graczy sÈ w oczywisty sposób powiÈzane. ChoÊby przez to, e graczy dodaje siÚ do dru yn. Ale w Struts nie przewidziano mechanizmu do grupowania akcji. Nie mo na wiÚc zgrupowaÊ wielu akcji bÚdÈcych czÚ ciÈ tego samego przepïywu, jak na przykïad przy procesie rejestracji konta online.
  • 23. 148 CzÚ Ê II • Tworzenie aplikacji WWW w Javie Te braki szkieletu aplikacyjnego Struts sÈ wypeïniane przez inne mechanizmy, bazujÈce na Struts, jak w projekcie Eclipse Pollinate, w którym kontroler aplikacji to obiekt Javy zwany przepïywem w obrÚbie strony (ang. page flow). Jest to klasa ujmujÈca grupÚ akcji jako jej metody i definiujÈca strukturÚ opisujÈcÈ przepïyw pomiÚdzy poszczególnymi metodami. W Pollinate powy sze przypadki u ycia zrealizowaliby my za pomocÈ pojedynczej klasy przepïywu dla strony (klasy akcji i ich zachowanie z przykïadowego listingu 5.2 zostaïyby zaimplementowane jako metody klasy przepïywu). Mo liwo Ê grupowania akcji i kojarzenia ich z obiektem reprezentujÈcym przepïyw sterowania w obrÚbie strony ilustruje kod z listingu 5.3. Posiadanie wspólnego kontrolera aplikacji dla caïej grupy akcji zwiÚksza elastyczno Ê wyra ania logiki aplikacji. Do tego mo na zarzÈdzaÊ stanem przepïywu w obrÚbie pojedynczego obiektu, a nie za po rednictwem Èdañ HTTP i interfejsów obsïugi sesji. Listing 5.3. Przykïadowy kod klasy przepïywu page flow public class LeacuePlanetPageFlow extends PageFlowController { public Forward createTeam(){..} public Forward addPlayer(){..} } Dwie najpopularniejsze obecnie realizacje modelu MVC w programowaniu aplikacji WWW, czyli Struts i JSF, sÈ w istocie bardzo podobnymi koncepcjami. Niektórzy uwa ajÈ, e bli szy zaïo eniom MVC jest JSF, a to ze wzglÚdu na dostÚpno Ê komponentów stano- wych w warstwie widoku i obsïugÚ modelu zdarzeniowego do obsïugi interakcji (np. zda- rzeñ klikniÚcia przycisku). JSF okre la te rozbudowanÈ bibliotekÚ standardowych znaczników, które wydatnie zmniejszajÈ ilo Ê kodu Java w stronach JSP (zob. listing 5.4). Listing 5.4. Znaczniki JSF w JSP <h:panelGroup> <h:commandButton id="submitCreateTeam" action="#{JsfLeaguePlanetBean.createTeam}" value="Create Team" /> <h:commandButton id="submitAddPlayer" action="#{JsfLeaguePlanetBean.addPlayer}" value="Add Player" /> </h:panelGroup> Trzeba jednak zawsze pamiÚtaÊ, e wszystkie te szkielety aplikacyjne bazujÈ na bezsta- nowym protokole HTTP. W JSF wystÚpuje koncepcja kontrolera aplikacji w postaci kom- ponentów managed backing beans (listing 5.5). Te komponenty mogÈ ujmowaÊ grupy powiÈza- nych akcji, czego brakuje w Struts. Wreszcie koncepcja przepïywu w obrÚbie strony nie jest implementowana ani w JSF, ani w Struts. Informacja o takim przepïywie jest niejawnie za- szyta w kontrolerach i plikach konfiguracyjnych XML.
  • 24. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 149 Listing 5.5. Komponent backing bean w JSF public class JsfLeaguePlanetBean { public String createTeam(...){} public String addPlayer(...){} } Kontroler wej cia dla ka dego Èdania wywoïa jednÈ z wielu mo liwych akcji. Jednym z jego zadañ jest okre lenie wïa ciwego kontekstu akcji przeznaczonej do wywoïania. Wy- bór akcji zale ny jest zarówno od danych wprowadzonych na wej cie, jak i od bie Ècego stanu aplikacji; decyzja nale y wiÚc do kontrolera aplikacji. Wynik tego procesu decyzyjne- go jest reprezentowany poprzez obiekt ApplicationController (ApplicationController to implementacja wzorca projektowego Command, opisywanego w Gamma 1995). Obiekty biznesowe sÈ zwyczajnymi obiektami Javy, zawierajÈcymi wyïÈcznie logikÚ biz- nesowÈ, bez jakichkolwiek informacji o warstwach sÈsiadujÈcych. Jedynym komponentem wyznaczonym do manipulowania obiektami biznesowymi jest za wïa nie kontroler aplikacji (zob. rysunek 5.4). DziÚki temu znacznie ïatwiej jest zarówno zaimplementowaÊ, jak i prze- testowaÊ logikÚ biznesowÈ, bo mo e siÚ to odbywaÊ w caïkowitej izolacji od caïej kïopotli- wej infrastruktury WWW. Je li aplikacja jest prawidïowo zaprojektowana, obiekty biznesowe stanowiÈ wyizolowanÈ warstwÚ, zdatnÈ do wykorzystania zarówno w aplikacji WWW, jak i w aplikacjach zakïadajÈcych dostÚp z poziomu innych rodzajów klientów, a nawet w kla- sycznych aplikacjach stanowiskowych. Widok W aplikacji J2EE widoki sÈ najczÚ ciej stronami JSP, które odwoïujÈ siÚ do kontrolera apli- kacji i obiektów biznesowych. Widoki powinny zawieraÊ mo liwie maïo kodu, a wiÚc dele- gowaÊ wiÚkszo Ê swoich zadañ do kontrolera aplikacji albo obiektów biznesowych. Na samej stronie powinien pozostaÊ jedynie kod bezpo rednio zwiÈzany z prezentacjÈ bie Ècej strony. Specyfikacja JSP udostÚpnia te biblioteki znaczników (ang. taglibs) do definiowania wïasnych znaczników, ujmujÈcych bardziej rozbudowane zachowania widoku — w przypadku skom- plikowanych widoków zaleca siÚ przenoszenie kodu wïa nie do samodzielnie definiowanych znaczników. Na rysunku 5.4 byïo widaÊ dwa ró ne mechanizmy widoku. Kontroler wyj cia JSP wykorzystuje implementacjÚ JSP odpowiedniÈ dla przeglÈdarki WWW albo WAP. Kon- troler wyj cia WS reaguje na te same Èdania, a w odpowiedzi generuje komunikaty XML zdatne do u ytku w innych aplikacjach. Szkielety aplikacyjne dla Javy Programi ci aplikacji WWW mogÈ przebieraÊ pomiÚdzy rozmaitymi otwartymi i wolnymi (od „wolno Ê”) szkieletami aplikacyjnymi dla Javy — przyjrzymy siÚ niektórym z nich (zob. rysunek 5.5). Szkielety te wydatnie upraszczajÈ tworzenie aplikacji WWW w Javie. Udo- stÚpniajÈ elementy znacznie polepszajÈce mo liwo Ê testowania kodu, uïatwiajÈ zarzÈdzanie nim i samo programowanie. IzolujÈ i implementujÈ podstawowÈ infrastrukturÚ aplikacji i dobrze integrujÈ siÚ z serwerami aplikacyjnymi.
  • 25. 150 CzÚ Ê II • Tworzenie aplikacji WWW w Javie RYSUNEK 5.5. Szkielety aplikacyjne dla Javy OSGi OSGi Alliance (dawniej Open Services Gateway Initiative) to ciaïo definiujÈce standard udo- stÚpniania platform usïugowych na bazie Javy. Specyfikacja ta obejmuje szkielet aplikacyjny do modelowania cyklu ycia aplikacji oraz rejestr usïug. IstniejÈce implementacje OSGi, jak Eclipse Equinox, Felix czy Knoplerfish, udostÚpniajÈ kom- pletne i dynamiczne modele komponentowe, których brakowaïo w standardowych rodowi- skach wykonawczych dla Javy. DziÚki nim mo na instalowaÊ, uruchamiaÊ, zatrzymywaÊ, aktu- alizowaÊ i odinstalowywaÊ aplikacje bÈd komponenty nawet zdalnie. OSGi zyskuje uznanie jako uogólniona platforma dla usïug, poniewa dobrze siÚ skaluje, od urzÈdzeñ wbudowanych po systemy korporacyjne. Przykïadem systemu bazujÈcego na OSGi jest Eclipse (i co za tym idzie — WTP). Na bazie platform OSGi swoje serwery aplikacyjne na- stÚpnej generacji konstruujÈ takie firmy jak IBM i BEA. Co ciekawe, OSGi mo emy te wykorzy- staÊ sami do budowania prostych komponentów biznesowych i usïug, które w czasie wykonania sÈ skïadane do postaci usïugi biznesowej. W OSGi mo na na przykïad uruchamiaÊ aplikacje bazujÈce na Spring 2.0. Apache Beehive Projekt Beehive ma na celu udostÚpnienie szkieletu aplikacyjnego dla prostych komponentów sterowanych metadanymi, redukujÈcych ilo Ê kodu niezbÚdnego w aplikacjach J2EE. Roz- wiÈzania z Beehive dotyczÈ wszystkich trzech warstw modelowej aplikacji WWW. Szkielet wykorzystuje adnotacje, zwïaszcza metadane wedïug JSR 175 (JSR 175). Odwoïuje siÚ te
  • 26. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 151 do innych projektów Apache, jak Struts i Axis. Oferuje NetUI do prezentacji, szkielet Controls do prostych komponentów i WSM (Web Service Metadata — implementacja JSR 181) oraz bazujÈcy na adnotacjach model do konstruowania usïug WS w Javie (JSR 181). Apache Struts Struts to szkielet aplikacyjny udostÚpniajÈcy warstwÚ kontrolnÈ bazujÈcÈ na standardowych technologiach WWW w Javie — wykorzystuje siÚ tu JSP, serwlety oraz inne projekty Apache. Jest to swoista implementacja wzorca projektowego MVC. JavaServer Faces JSF to standard JSR 127 wywodzÈcy siÚ z JCP (Java Community Process) (JSR 127), definiu- jÈcy zestaw znaczników JSP oraz klas Java upraszczajÈcych konstruowanie interfejsu u yt- kownika dla aplikacji WWW. Powszechnie uwa a siÚ, e JSF ma szansÚ zestandaryzowaÊ na- rzÚdzia i komponenty. JSF to szkielet dla warstwy prezentacji, z koncepcjami zapo yczonymi z MVC. JSF to oficjalny element specyfikacji J2EE 5. Spring Spring to szkielet aplikacyjny obejmujÈcy komplet trzech warstw typowej aplikacji WWW w Javie. Szkielet dla wszystkich swoich komponentów implementuje wzorce projektowe Inversion of Control oraz Dependency Injection. UdostÚpnia te prosty kontener do im- plementowania logiki biznesowej za pomocÈ zwyczajnych obiektów Javy (POJO) i dziÚki temu mo e wyeliminowaÊ potrzebÚ stosowania komponentów EJB. Do tego Spring udostÚpnia mechanizmy do zarzÈdzania danymi aplikacji. Pico Container Pico Container jest prostym szkieletem aplikacyjnym, równie bazujÈcym na wzorcach Inversion of Control i Dependency Injection. Podobnie jak Spring, powstaï jako odpowied na nadmiernÈ zïo ono Ê tworzenia aplikacji J2EE, a szczególnie na trudno ci zwiÈzane z pro- gramowaniem komponentów EJB. Hibernate Hibernate to szkielet relacyjnego odwzorowania obiektów — ORM (Object Relational Mapping). Pozwala programistom implementowaÊ relacyjne utrwalanie obiektów oraz odpytywaÊ usïugi o obiekty Javy bez konieczno ci modyfikowania ich kodu. Specyfikacja komponentów encyjnych EJB3, a zwïaszcza specyfikacja interfejsu trwaïo ci JPA (Java Persistent API), która z niej wyewoluowaïa, w obliczu zïo ono ci dostÚpnych rozwiÈ- zañ standardowych zwiÚksza jeszcze atrakcyjno Ê Hibernate i podobnych szkieletów ORM.
  • 27. 152 CzÚ Ê II • Tworzenie aplikacji WWW w Javie Architektura usïugowa SOA SOA (Service Oriented Architecture) dotyczy wydzielania czÚ ci wïa ciwej dziaïalno ci aplikacji do postaci istotnych jednostek, zwanych usïugami, oraz montowania aplikacji poprzez inte- growanie tych e usïug. Ukierunkowanie na usïugi oznacza ujmowanie poszczególnych ele- mentów logiki biznesowej. Usïuga to wcielenie fundamentalnej zasady programowania obiek- towego, czyli oddzielenia implementacji od interfejsu. W poïÈczeniu ze standardowymi jÚzykami opisu (jak XML), powszechnymi protokoïami transportowymi (HTTP) oraz mo - liwo ciÈ wyszukiwania i kojarzenia usïugodawcy w czasie wykonania SOA okazuje siÚ wietnÈ technologiÈ integrowania rozmaitych systemów. SOA i usïugi WWW Web Service opierajÈ siÚ na licznych standardach, w tym XML, XML Schema, WSDL (Web Service Description Language), UDDI (Universal Description, Discovery and Integration), SOAP, JAX-RPC i wielu specyfikacjach WS-*. Szczegóïowe omówienie SOA dalece wykracza poza tematykÚ niniejszej ksiÈ ki, zajmiemy siÚ jednak tym, jak mo na w WTP montowaÊ aplikacje WWW ukierun- kowane usïugowo, gïównie na bazie technologii Web Service. UdostÚpnianie usïug. Warstwa usïugowa Zadaniem warstwy usïugowej w aplikacji jest eksponowanie poszczególnych funkcji aplikacji i funkcji biznesowych jako wyodrÚbnionych usïug. O przydatno ci czy ciekawo ci aplikacji wiadczÈ przecie wyïÈcznie wykorzystujÈcy jÈ klienci (je li w lesie przewróci siÚ drzewo, a nikogo nie ma w pobli u, to czy sïychaÊ trzask?). Z usïug, w przeciwieñstwie do aplikacji, mo na korzystaÊ rozmaicie: „ za po rednictwem rozbudowanych aplikacji klienckich RCA (Rich Client Application), które konsumujÈ usïugi wielu usïugodawców; „ w systemach osadzonych (telefony komórkowe); „ w portalach i aplikacjach WWW, od zdalnych portali i aplikacji WWW po warstwy sterujÈce systemu pionowego, w których warstwa usïugowa wykorzystywana jest do odwoïañ do modelu biznesowego, w rozbudowanej implementacji MVC z warstwÈ usïugowÈ w postaci opisanej dalej; „ w projektach integracyjnych, za po rednictwem jÚzyka BPEL (Business Process Execution language) automatyzujÈcego procesy biznesowe; „ w systemach udostÚpniajÈcych usïugi bÚdÈce wynikiem zmontowania usïug dostÚpnych skÈdinÈd w nowym modelu biznesowym. Uzupeïnienie omówionej poprzednio architektury o warstwÚ usïugowÈ (jak na rysun- ku 5.6) pozwala na tworzenie aplikacji, która nie tylko jest u yteczna dla u ytkowników koñ- cowych, ale te mo e wspóïdziaïaÊ z innymi systemami informatycznymi. Dodatkowa warstwa skïada siÚ z elementów takich jak usïugi Web Service, rejestry usïug (UDDI), kontrakty (WSDL) i elementy po redniczÈce (proxy), które wiÈ È te usïugi z naszymi aplikacjami. Warstwa usïugowa eksponuje ci le zdefiniowane interfejsy do identycznego jak poprzed- nio modelu biznesowego. Interfejs usïugi jest okre lany przez kontrakt opisywany w jÚzyku
  • 28. Rozdziaï 5. • Architektura i projektowanie aplikacji WWW 153 RYSUNEK 5.6. Model rozszerzony o warstwÚ usïugowÈ WSDL. W danym modelu biznesowym mo na korzystaÊ z procesów i logiki bazujÈcej na usïugach systemów zewnÚtrznych. Konsumentom usïug nie sÈ ujawniane szczegóïy we- wnÚtrznego modelu biznesowego. Wszystkie szczegóïy techniczne niezbÚdne do konsumo- wania usïug sÈ opisywane przez kontrakt wyra ony w WSDL. Gdzie pasuje SOA? Warto byïoby siÚ zastanowiÊ, jak ma siÚ SOA do tradycyjnego podziaïu warstwowego aplikacji. NasuwajÈ siÚ od razu takie pytania: Czy SOA to czÚ Ê warstwy prezentacji? Czy SOA zastÚpuje warstwÚ prezentacji warstwÈ usïugowÈ? A co z logikÈ biznesowÈ, gdzie ona teraz przynale y? Otó usïuga nie ma widoku; skoro tak, nie ma potrzeby wydzielania warstwy prezentacji. ZastÚ- puje jÈ zazwyczaj warstwa usïugowa. Mo na wiÚc powiedzieÊ, e warstwa usïugowa odgrywa rolÚ warstwy prezentacji; usïuga jest prezentacjÈ, widokiem perspektywy biznesowej w formie dostÚpnej do zautomatyzowanego u ycia przez inne aplikacje. Trudniejsze jest pytanie o to, czy usïugi wchodzÈ w skïad modelu aplikacji i jej logiki bizneso- wej. Najpro ciej byïoby odpowiedzieÊ „nie”, ale to nie wyczerpuje zagadnienia. Logika bizne- sowa nie jest zawsze i wyïÈcznie modelowana w formie, którÈ da siÚ natychmiast i bezpo rednio udostÚpniÊ jako usïugi. Dobry model obiektowy cechuje siÚ wysokÈ ziarnisto ciÈ i skïada z wielu niewielkich, ale prostych do ogarniÚcia obiektów z ïatwymi do opanowania i wykorzystywania metodami. Obiekty te ujmujÈ istotne koncepcje biznesowe i dane, ale nie sÈ specjalnie przy- datne do tworzenia usïug. Usïugi sÈ zazwyczaj projektowane na bazie przypadków u ycia; re- prezentujÈ zachowanie biznesowe jako ciÈg zdarzeñ, jak np. „pïatno Ê za rezerwacjÚ”. Drob- noziarniste obiekty modelu pojedynczo nie ujmujÈ takich transferów. Usïugi stanowiÈ wiÚc mieszankÚ logiki biznesowej i logiki aplikacji. W naszej przykïadowej aplikacji League Planet warstwa usïugowa dysponowaïaby obiektem obsïugujÈcym tworzenie nowej ligi. WarstwÚ logiki biznesowej omówimy w rozdziale 8.
  • 29. 154 CzÚ Ê II • Tworzenie aplikacji WWW w Javie Konsumowanie usïug — zestawianie Aplikacje konsumujÈ usïugi przez zestawianie i ïÈczenie tre ci bÈd usïug udostÚpnianych przez usïugodawców. Mo na wiÚc zrealizowaÊ nowy proces biznesowy na bazie integracji usïug wiadczonych przez ró nych usïugodawców i uzupeïniÊ caïo Ê o nowÈ logikÚ bizneso- wÈ, nowe reguïy i mo liwo ci. UdostÚpnione tre ci podlegajÈ rekompozycji i odwzorowa- niu do modelu biznesowego aplikacji klienckiej i sÈ w niej prezentowane w nowy i unikatowy sposób, niekoniecznie dostÚpny od któregokolwiek z usïugodawców usïug skïadowych z osobna. To podstawowe zaïo enie SOA. Modelowanie procesu biznesowego i montowanie usïug mo e konsumowaÊ usïugi w sposób standaryzowany, za po rednictwem mechanizmów usïug WWW. Warstwa usïu- gowa realizuje abstrakcjÚ wielu ró nych systemów biznesowych, a usïugi tej warstwy mo na wykorzystywaÊ do montowania nowych procesów biznesowych. W WTP nie mamy do dys- pozycji narzÚdzi do zestawiania usïug w taki sposób, ale producenci tacy jak IBM, Oracle czy BEA rozszerzyli WTP o mo liwo Ê projektowania i wykonywania takich procesów „skïa- danych”. Sïu y tam do tego jÚzyk BPEL (Business Process Execution Language), standard OASIS bÚdÈcy odpowiednikiem jÚzyka XML dla dziedziny zestawiania i kompozycji usïug w procesy. Studium przypadku — League Planet W tym podrozdziale spróbujemy opracowaÊ architekturÚ dla naszej fikcyjnej strony WWW League Planet (zob. podrozdziaï „Przedstawiamy League Planet” w rozdziale 1.). Z punktu widzenia architektury League Planet jest systemem wieloaspektowym, z ró nymi profilami dla ró nych u ytkowników. Po pierwsze, mamy w ród nich ludzi, którzy umieszczajÈ tre ci w systemie. SÈ to osoby zainteresowane sportem i wykorzystujÈce League Planet do prowadzenia wïasnych amator- skich lig sportowych. OdwiedzajÈ stronÚ WWW i tworzÈ nowe ligi, w ramach których mogÈ rejestrowaÊ dru yny, graczy, terminarze rozgrywek, miejsca rozgrywek, wyniki, statystyki i wiele rozmaitych innych informacji. League Planet ma dla nich udostÚpniaÊ wysoce dyna- miczny interfejs WWW, który pozwoli im wchodziÊ w bezpo rednie interakcje z systemem. Korzystanie z systemu polega na przechodzeniu pomiÚdzy stronami WWW i wykony- waniu czynno ci takich, jak przeglÈdanie prezentowanych informacji, wypeïnianie formu- larzy i zamawianie dóbr oferowanych przez partnerów biznesowych League Planet. Do ob- sïugi takich u ytkowników League Planet musi mieÊ warstwÚ prezentacji. Warstwa prezentacji bÚdzie zrealizowana na bazie stron JSP. Aby ograniczyÊ ilo Ê kodu opisujÈcego interfejs, wy- korzystamy bibliotekÚ znaczników dla Javy. Warstwa prezentacji bÚdzie ograniczona do ko- du wy wietlajÈcego informacje i przyjmujÈcego dane od u ytkownika. Przepïyw sterowania w aplikacji bÚdzie nale eÊ do zadañ warstwy sterujÈcej. Warstwa kontroli jest odpowiedzialna za takie zadania, jak weryfikacja poprawno ci wpro- wadzanych danych, przepïyw sterowania na stronie i pomiÚdzy nimi oraz wspóïpraca z warstwÈ modelu biznesowego w celu realizacji zadañ biznesowych i udostÚpniania tre ci dla warstwy widoku (prezentacji).