31
Wydawnictwo Helion ul. Kociuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: [email protected] 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 sposb 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 (skrt 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„, powiŒcon„ tej w‡anie platformie. Autorzy przedstawiaj„ tu inspiruj„c„ historiŒ tego rozwi„zania, strukturŒ projektu oraz sposb konfiguracji Web Tools Platform. Kolejne rozdzia‡y przybli¿„ Ci zagadnienia zwi„zane z warstw„ prezentacji, logiki biznesowej i trwa‡oci. Dowiesz siŒ, w jaki sposb wykorzysta narzŒdzia dostarczane przez WTP do przyspieszenia prac w ka¿dej z tych warstw. W zakresie podejmowanych zagadnieæ znajduj„ siŒ rwnie¿ tematy zwi„zane z testami integracyjnymi i wydajnociowymi. Konfiguracja Web Tools Platform Architektura aplikacji WWW Podzia‡ projektu na warstwy Sposb wykorzystania narzŒdzia Maven Wykorzystanie us‡ug WWW Testowanie aplikacji WWW Rozszerzanie WTP Poznaj jedn„ z najlepszych platform do tworzenia aplikacji WWW i nie tylko!

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

Embed Size (px)

DESCRIPTION

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* Rozszerzanie WTP Poznaj jedną z najlepszych platform do tworzenia aplikacji WWW i nie tylko!

Citation preview

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

Wydawnictwo Helion ul. Ko�ciuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: [email protected]

Eclipse Web Tools Platform. Tworzenie aplikacji WWW w jêzyku JavaAutor: Naci Dai, Lawrence Mandel, Arthur RymanT³umaczenie: Przemys³aw SzeremiotaISBN: 978-83-246-1391-5Tytu³ orygina³u: COM+ Developer's GuideFormat: 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� Rozszerzanie WTP

Poznaj jedn¹ z najlepszych platform do tworzenia aplikacji WWW i nie tylko!

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

Spis tre�ci

Przedmowa ................................................................................................................ 13

Wst�p ........................................................................................................................ 15

Podzi�kowania ........................................................................................................... 19

O autorach ................................................................................................................. 21

Cz��� I Zaczynamy ............................................................................................... 23

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

Rozdzia� 2. Wprowadzenie do Eclipse Web Tools Platform ........................................................... 33Narodziny WTP ............................................................................................................. 33Ekonomika WTP ............................................................................................................ 35

Redukcja nak�adów programistycznych .................................................................. 36Generowanie przychodu .......................................................................................... 38

Struktura WTP ............................................................................................................... 42Przedmiot WTP ....................................................................................................... 43Projekty sk�adowe WTP .......................................................................................... 44Architektura WTP .................................................................................................... 46Podprojekt WST ....................................................................................................... 48Podprojekt JST ......................................................................................................... 53

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

6 Spis tre�ci

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

Podsumowanie ............................................................................................................... 59

Rozdzia� 3. Elementarz ................................................................................................................. 61Wprowadzenie ................................................................................................................ 61Podej�cie 1. Aplikacje WWW J2EE ................................................................................ 64

Dodawanie �rodowiska wykonawczego serwera .................................................... 66Tworzenie dynamicznego projektu WWW ............................................................ 72Tworzenie i edycja strony JSP ................................................................................. 76Uruchomienie JSP na serwerze .............................................................................. 76Podsumowanie podej�cia 1. ..................................................................................... 80

Podej�cie 2. Serwlety i skryptlety .................................................................................. 80Dodanie do JSP skryptletu w j�zyku Java ............................................................... 80Debugowanie JSP ..................................................................................................... 81Tworzenie serwletu ................................................................................................. 85Debugowanie serwletu ............................................................................................ 89Podsumowanie podej�cia 2. ..................................................................................... 90

Podej�cie 3. Odwo�ania do bazy danych ....................................................................... 91Nawi�zanie po��czenia z baz� danych ..................................................................... 93Wykonywanie zapyta� SQL ..................................................................................... 96Realizowanie odwo�a� do bazy danych do aplikacji WWW ................................... 99Podsumowanie podej�cia 3. ................................................................................... 103

Podej�cie 4. Us�ugi WWW ........................................................................................... 104Instalowanie us�ugi Web Service ........................................................................... 104Korzystanie z testowej aplikacji klienckiej ............................................................ 107Monitorowanie komunikatów SOAP ................................................................... 108Podsumowanie podej�cia 4. ................................................................................... 109

Podsumowanie ............................................................................................................. 109

Rozdzia� 4. Przygotowanie przestrzeni roboczej .......................................................................... 111Instalowanie i aktualizowanie WTP ............................................................................ 111

Instalowane komponenty WTP ............................................................................. 112Rodzaje kompilacji WTP ....................................................................................... 113Instalacja za pomoc� mened�era aktualizacji ........................................................ 115Instalowanie z archiwów ZIP ................................................................................ 118Instalowanie materia�ów zewn�trznych ................................................................ 120JDK ......................................................................................................................... 123Weryfikowanie instalacji ........................................................................................ 124Aktualizowanie WTP ............................................................................................. 125

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

Spis tre�ci 7

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

Podsumowanie ............................................................................................................. 131

Cz��� II Tworzenie aplikacji WWW w Javie ......................................................... 133

Rozdzia� 5. Architektura i projektowanie aplikacji WWW ............................................................ 135Krajobraz WWW ........................................................................................................... 135Aplikacje WWW ............................................................................................................ 137

Aplikacje WWW w Javie ......................................................................................... 138Projekt aplikacji WWW z podzia�em na warstwy ................................................. 142Wzorzec MVC w aplikacji WWW ......................................................................... 145Szkielety aplikacyjne dla Javy ................................................................................. 149

Architektura us�ugowa SOA ........................................................................................ 152Udost�pnianie us�ug. Warstwa us�ugowa ............................................................. 152

Studium przypadku — League Planet ........................................................................ 154Podsumowanie ............................................................................................................. 156

Rozdzia� 6. Organizacja projektu ................................................................................................ 157Typy projektów WWW i aplikacji J2EE ...................................................................... 158

Projekty WWW ....................................................................................................... 159Modu�y J2EE .......................................................................................................... 160Tworzenie aplikacji ................................................................................................ 160Tworzenie aplikacji EJB ......................................................................................... 167Tworzenie aplikacji EAR ....................................................................................... 173

Zaawansowane projekty WWW ................................................................................... 178Modelowanie perspektywy projektowej ............................................................... 181

Przyk�adowe projekty ................................................................................................... 184Prosta aplikacja korporacyjna ................................................................................. 184Podzia� modu�u WWW na wiele projektów ......................................................... 190Tworzenie aplikacji WWW a Maven ..................................................................... 199

Podsumowanie ............................................................................................................. 214

Rozdzia� 7. Warstwa prezentacji ................................................................................................ 217Wprowadzenie .............................................................................................................. 217Projektowanie interakcji .............................................................................................. 218Projektowanie grafiki ................................................................................................... 220Struktura warstwy prezentacji ..................................................................................... 222

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

8 Spis tre�ci

Podej�cie 1. Projekty statycznych stron WWW, HTML i edytorykodu �ród�owego .......................................................................................................... 225

Projekty statycznych aplikacji WWW .................................................................... 225HTML .................................................................................................................... 228Edytory kodu �ród�owego ..................................................................................... 236Szablony .................................................................................................................. 239Wstawki ................................................................................................................... 243Podsumowanie podej�cia 1. ................................................................................... 248

Podej�cie 2. CSS ........................................................................................................... 248Podsumowanie podej�cia 2. ................................................................................... 253

Podej�cie 3. JavaScript .................................................................................................. 253Maskowanie adresu e-mail .................................................................................... 253Walidacja danych wprowadzanych do formularza ............................................... 255Podsumowanie podej�cia 3. ................................................................................... 266

Podej�cie 4. XML i XSLT ............................................................................................ 267XML ........................................................................................................................ 267XSLT ....................................................................................................................... 271Podsumowanie podej�cia 4. ................................................................................... 276

Podej�cie 5. DTD ......................................................................................................... 276Podsumowanie podej�cia 5. ................................................................................... 281

Podej�cie 6. Serwery, projekty dynamicznych aplikacji WWW i serwlety ................ 281Serwery ................................................................................................................... 281Projekty dynamicznych aplikacji WWW ............................................................... 288Serwlety .................................................................................................................. 290Podsumowanie podej�cia 6. ................................................................................... 300

Podej�cie 7. JSP ............................................................................................................ 300Podsumowanie podej�cia 7. ................................................................................... 310

Podej�cie 8. Monitorowanie sesji HTTP ................................................................... 310Sesje HTTP ............................................................................................................ 310Monitor TCP/IP .................................................................................................... 311Podgl�danie sesji HTTP w monitorze TCP/IP ................................................... 312Modyfikowanie i ponowne przesy�anie komunikatu ........................................... 317Podsumowanie podej�cia 8. ................................................................................... 317

Podsumowanie ............................................................................................................. 317

Rozdzia� 8. Warstwa logiki biznesowej ...................................................................................... 319Typowy uk�ad warstwy biznesowej ............................................................................ 322Podej�cie 1. Model dziedzinowy ................................................................................. 323

Projekty pomocnicze J2EE .................................................................................... 323Model obiektowy ................................................................................................... 325Warstwa us�ugowa .................................................................................................. 332Warstwa dost�pu do danych .................................................................................. 336Testy ........................................................................................................................ 342Podsumowanie podej�cia 1. ................................................................................... 346

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

Spis tre�ci 9

Podej�cie 2. Tworzenie sesyjnych komponentów EJB .............................................. 347Dodawanie serwera JBoss ...................................................................................... 351XDoclet ................................................................................................................... 354Projekty EJB ........................................................................................................... 357Tworzenie komponentów sesyjnych .................................................................... 360Konstruowanie klienta WWW ............................................................................... 371Uruchamianie aplikacji .......................................................................................... 374WTP i komponenty EJB 3.0 .................................................................................. 377Podsumowanie podej�cia 2. ................................................................................... 379

Podej�cie 3. Komponenty komunikatowe .................................................................. 380Krótkie wprowadzenie do MDB ........................................................................... 380Tworzenie komponentu komunikatowego .......................................................... 380Tworzenie kolejki komunikatów w JBoss ............................................................ 384Tworzenie klienta kolejki JMS .............................................................................. 385Podsumowanie podej�cia 3. ................................................................................... 388

Podsumowanie ............................................................................................................. 389

Rozdzia� 9. Warstwa trwa�o�ci ................................................................................................... 391Projekty warstwy trwa�o�ci .......................................................................................... 392

Odwzorowanie obiektów w bazie danych za pomoc� interfejsu JDBC ............. 394Odwzorowanie obiektów w bazie danych za po�rednictwemkomponentów encyjnych ...................................................................................... 395Odwzorowanie obiektów w bazie danych za po�rednictwemgotowych szkieletów odwzorowania obiektowo-relacyjnego .............................. 396

Przegl�d wicze� .......................................................................................................... 397Podej�cie 1. Tworzenie bazy danych ........................................................................... 398

Podsumowanie podej�cia 1. ................................................................................... 407Podej�cie 2. Warstwa danych ....................................................................................... 408

Podsumowanie podej�cia 2. ................................................................................... 414Podej�cie 3. Komponenty encyjne .............................................................................. 414

Przygotowania w JBoss, Derby i XDoclet ............................................................ 415Tworzenie komponentu CMP .............................................................................. 419Definiowanie metody ejbCreate i metod wyszukuj�cych ................................... 423Dodawanie DAO z wykorzystaniem CMP .......................................................... 430Testowanie implementacji CMP .......................................................................... 433Programowanie JPA w WTP ................................................................................. 437Podsumowanie podej�cia 3. ................................................................................... 441

Podsumowanie ............................................................................................................. 441

Rozdzia� 10. Us�ugi WWW ........................................................................................................... 443WSDL ........................................................................................................................... 444SOAP ............................................................................................................................ 445REST ............................................................................................................................. 446Us�ugi WWW à la REST .............................................................................................. 448Przegl�d wicze� .......................................................................................................... 449

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

10 Spis tre�ci

Podej�cie 1. Budowanie us�ugi WWW „od góry” ....................................................... 450XSD ......................................................................................................................... 450WSDL ..................................................................................................................... 456Wdra�anie us�ug WWW ......................................................................................... 462Implementowanie us�ugi WWW ........................................................................... 469Testowanie us�ugi w eksploratorze us�ug WWW ................................................. 474Podsumowanie podej�cia 1. ................................................................................... 475

Podej�cie 2. Budowanie us�ugi WWW „od do�u” ....................................................... 477Implementacja klasy us�ugi .................................................................................... 478Wdra�anie us�ugi .................................................................................................... 483Podsumowanie podej�cia 2. ................................................................................... 487

Podej�cie 3. Generowanie proxy dla klientów us�ugi WWW .................................... 487Generowanie proxy klienckiego i testowej strony JSP ......................................... 488Korzystanie z testowej klienckiej strony JSP ........................................................ 491Podsumowanie podej�cia 3. ................................................................................... 493

Podej�cie 4. Kontrola interoperacyjno�ci us�ug WWW .............................................. 494Kontrola komunikatów pod k�tem zgodno�ci z WS-I ......................................... 495Podsumowanie podej�cia 4. ................................................................................... 498

Podej�cie 5. Wykorzystywanie us�ug WWW w aplikacjach WWW ........................... 501Generowanie klienta us�ugi Query ....................................................................... 501Tworzenie serwletów ............................................................................................. 502Importowanie kodu interfejsu u�ytkownika ........................................................ 504Testowanie interfejsu u�ytkownika ...................................................................... 515Podsumowanie podej�cia 5. ................................................................................... 519

Podej�cie 6. Wyszukiwanie i publikowanie us�ug WWW .......................................... 519UDDI ..................................................................................................................... 520WSIL ....................................................................................................................... 520Podsumowanie podej�cia 6. ................................................................................... 525

Podsumowanie ............................................................................................................. 525

Rozdzia� 11. Testy ........................................................................................................................ 527Testy zautomatyzowane ............................................................................................... 529Przegl�d zada� z bie��cego rozdzia�u .......................................................................... 530Podej�cie 1. Testy jednostkowe à la JUnit .................................................................. 530

Tworzenie projektu dla testów .............................................................................. 532Przypadek testowy JUnit ....................................................................................... 532Zestaw testów JUnit .............................................................................................. 537Podsumowanie podej�cia 1. ................................................................................... 538

Podej�cie 2. Testy integracyjne à la Cactus ................................................................. 539Podsumowanie podej�cia 2. ................................................................................... 545

Podej�cie 3. Testy systemowe à la HttpUnit .............................................................. 546Podsumowanie podej�cia 3. ................................................................................... 551

Podej�cie 4. Testy wydajno�ciowe à la TPTP ............................................................. 551Tworzenie projektu testu wydajno�ci ................................................................... 554Test rejestrowania HTTP ...................................................................................... 554Generowanie zestawienia wynikowego ................................................................ 556Podsumowanie podej�cia 4. ................................................................................... 558

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

Spis tre�ci 11

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

Podsumowanie ............................................................................................................. 563

Cz��� III Rozszerzanie WTP .................................................................................. 565

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

Rozdzia� 13. Obs�uga nowych typów plików ................................................................................ 601Tworzenie rozszerzenia DocBook .............................................................................. 603Walidator DocBook ...................................................................................................... 603

Infrastruktura walidacji w WTP ............................................................................ 605Implementacja walidatora dla DocBook ............................................................... 605

Tworzenie w�asnego typu markera ............................................................................. 618Deklarowanie typu zawarto�ci DocBook .................................................................... 619Podsumowanie ............................................................................................................. 624

Rozdzia� 14. Rozszerzenia dla WSDL ............................................................................................ 625Tworzenie wtyczki rozszerzenia WSDL ..................................................................... 629Rozszerzanie edytora WSDL ....................................................................................... 630

Dostosowywanie wygl�du elementów rozszerzaj�cych WSDLw panelu edycji wizualnej ...................................................................................... 632Dodawanie elementów rozszerzaj�cych do edytora ............................................. 635Dodawanie w�asnych akcji do widoku edycji wizualnej edytora WSDL ............ 644

Rozszerzanie walidacji WSDL ..................................................................................... 651Dodatki do walidacji WSDL 1.1 ............................................................................ 652W�asne regu�y walidacji .......................................................................................... 656

Podsumowanie ............................................................................................................. 660

Rozdzia� 15. Dostosowywanie mechanizmu rozwi�zywania URI dla zasobów .............................. 661Tworzenie wtyczki rozszerzenia infrastruktury rozwi�zywania zasobów ................ 664Dodawanie zasobów do katalogu XML ...................................................................... 665

Katalog XML .......................................................................................................... 667Dodawanie pojedynczego zasobu do katalogu XML ........................................... 667Dodawanie do katalogu XML zestawu zasobów .................................................. 670

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

12 Spis tre�ci

W�asna strategia rozwi�zywania zasobów ................................................................... 673Infrastruktura rozwi�zywania URI dla zasobów .................................................. 675Tworzenie folderu mechanizmu rozwi�zywania URI ........................................ 678

Podsumowanie ............................................................................................................. 681

Cz��� IV Produkty i dodatki .................................................................................. 683

Rozdzia� 16. Inne narz�dzia WWW bazuj�ce na Eclipse ................................................................ 685WWW w Javie ............................................................................................................... 686

BEA Workshop ....................................................................................................... 686CodeGear JBuilder ................................................................................................. 686Exadel Studio .......................................................................................................... 686IBM Rational Application Developer ................................................................... 687JBoss Tools (JBoss IDE) ........................................................................................ 688MyEclipse ............................................................................................................... 688ObjectWeb Lomboz ............................................................................................... 688SAP NetWeaver Developer Studio ....................................................................... 689W4T Eclipse ........................................................................................................... 689

WWW w Perlu .............................................................................................................. 689EPIC ........................................................................................................................ 690

WWW w PHP ............................................................................................................... 690Eclipse PHP Development Tools ......................................................................... 691PHPEclipse ............................................................................................................. 691

WWW w Pythonie ........................................................................................................ 691PyDev ...................................................................................................................... 691

WWW w Ruby .............................................................................................................. 692RadRails .................................................................................................................. 692

Podsumowanie ............................................................................................................. 692

S�owniczek ............................................................................................................... 693

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

Skorowidz ................................................................................................................ 709

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

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 — infrastrukturyaplikacji 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 bazachdanych. Dla takich rodzajów systemów architektur� warstwow� udost�pnia infrastrukturaaplikacji. 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 WWWSie 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 wymianyinformacji i koordynacji dzia�a�. Budowanie aplikacji WWW i integrowanie tych aplikacji nie

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

136 Cz��� II • Tworzenie aplikacji WWW w Javie

RYSUNEK 5.1. Aplikacje i us�ugi WWW

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

Rozdzia� 5. • Architektura i projektowanie aplikacji WWW 137

s� ju� oddzielnymi zadaniami. Podstawowym za�o�eniem SOA jest to, �e systemy WWWpowinny 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: aplikacjep�atnicze uruchamiane na komputerach typu mainframe, drukarki fotograficzne drukuj�cezdj�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�dyz takich „systemów-us�ugodawców” eksponuje swoje zasoby za po�rednictwem publicznegointerfejsu definiuj�cego jego us�ug�. Nowe aplikacje u�ywaj� takich us�ug i montuj� z nichnowe 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�pnejgeneracji, z prawie nieograniczonymi mo�liwo�ciami.

Aplikacje WWWProsta aplikacja WWW sk�ada si� z trzech logicznych warstw: warstwy prezentacji, warstwylogiki 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�cei wyodr�bniaj�ce poszczególne charakterystyczne elementy architektury aplikacji. Architek-tura fizyczna aplikacji jest tu nieistotna: wszystkie trzy warstwy mog� równie dobrze dzia�ana 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�nieod warstw logicznych aplikacji.

RYSUNEK 5.2. Aplikacje i us�ugi WWW

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

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 AJAXwprowadzaj� zreszt� do warstwy prezentacji nowsze technologie implementacji strony klienc-kiej, na przyk�ad Flash czy JavaScript. Je�li interfejs u�ytkownika nie wymaga do uruchomienianiczego poza przegl�dark� WWW, okre�lamy go mianem „cienkiego klienta” — ang. thin client.

Adobe FlashFlash jest co prawda najpowszechniejszy w�a�nie w bogatym interfejsie u�ytkownika, ale cz�stowykorzystuje si� go równie� w aplikacjach wielowarstwowych. Flash ma w�asny obiektowy j�zykprogramowania — ActionScript 2.0 — i komponenty umo�liwiaj�ce odwo�ywanie si� do us�ugWWW 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 zorientowanymna us�ugi aplikacje s� zintegrowane za po�rednictwem tych�e us�ug; miejsce u�ytkownikóww tych systemach zajmuj� inne, zewn�trzne aplikacje WWW, a warstwa prezentacji jest za-st�powana warstw� us�ugi.

Aplikacje WWW w JavieAplikacje 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 informatyceobecna znacznie d�u�ej ni� technologie WWW i j�zyk Java. Chyba najcenniejszym wk�ademze 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 aplikacyjnychobs�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� zdefiniowaneus�ugi dotycz�ce rozproszenia, transakcyjno�ci i zarz�dzania danymi, umo�liwiaj�ce urucha-mianie tych komponentów w �rodowiskach korporacyjnych.

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

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 integrowaniaich z innymi systemami korporacyjnymi. Model J2EE dzieli warstw� prezentacji na warstwyprezentacji 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ówinformatycznych.

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. Komponentyte s� wykorzystywane powszechnie do realizacji warstwy prezentacji.

Kontener komponentów EJB udost�pnia �rodowisko wykonawcze dla komponentówbiznesowych 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�ugtransakcyjno�ci (JTA/JST), architektury J2CA (Java 2 Connector), us�ug uwierzytelniania

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

140 Cz��� II • Tworzenie aplikacji WWW w Javie

i autoryzacji (JAAS), us�ug interfejsu systemów nazw i katalogów (JNDI) i mnóstwa innychinterfejsów realizuj�cych komunikacj� wewn�trzn� i zewn�trzn�, zapewniaj�cych rozszerzal-no� systemów J2EE.

Projektowanie aplikacji WWW w j�zyku JavaCzasami 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 niekoniecznienajlepszych 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�cikodu do ponownego wykorzystania. Komponenty EJB jako sk�adowe biznesowych kom-ponentów aplikacji s� krytykowane za nadmiern� z�o�ono�. XML promuje wspó�dzieleniei wielokrotne wykorzystanie, ale bywa nadu�ywany.

Aplikacje WWW pisane w Javie sk�adaj� si� od strony warstwy prezentacji ze stron JSPi serwletów. Zarówno JSP, jak i serwlety mo�na wykorzysta przy tworzeniu architekturz 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 FrameworkDesign, 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 MVCw aplikacji WWW”).

Wedle modelu 1. najwa�niejszym celem jest przeniesienie mo�liwie du�ej ilo�ci koduobs�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 generowaodpowiedzi 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 zasadzierealizowana na bazie JSP. Niektórzy podnosz�, �e mimo wszystko dochodzi do separacji tre�cii 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 zazwyczajnie 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 warstwylogiczne 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. Wedlemodelu 1. JSP musi:

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

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 wykorzystaniasamych 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 kodemi diagnostyk� kodu.

Przyjmowanie danych wej�ciowych

W ramach przyjmowania danych wej�ciowych skrypt otrzymuje do dyspozycji obiektHttpServletRequest, b�d�cy reprezentacj� strumienia wej�ciowego HTTP, minimalnie tylkoprzetworzon�. 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�cychsi� 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, jestbrak hermetyzacji informacji przy odwo�aniach do danych ��dania i danych sesji. Skrypt musipobra 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, albowielokrotnie 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 toefektywny zapis danych w zasi�gu globalnym, a aplikacja odwo�uje si� do takich danych jakdo s�ownika, to znaczy poprzez ci�gi z nazwami traktowanymi jako klucze warto�ci. Taksk�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”

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

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 niehermetyzuje 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 zwyczajnejliteró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 tensposób aplikacji, problemy te mog� okaza si� przyt�aczaj�ce.

Kiedy do realizacji logiki aplikacji wykorzystuje si� strony JSP, wprowadza si� do nichpotencjalnie znacz�ce ilo�ci kodu. Tymczasem techniki zarz�dzania kodem w przypadku koduosadzonego 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 kodgenerowany 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 zadaniabiznesowe 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 siebieposzczególnych fragmentów JSP, tak jak to jest mo�liwe w przypadku odr�bnych klas j�zykaJava (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 choby przystosowanieaplikacji 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 choby 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� powszechnieza najbardziej odpowiednie zastosowanie stron JSP.

Projekt aplikacji WWW z podzia�em na warstwyW 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 interakcjamipomi�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,

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

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�. Warstwyobejmuj� 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�ciato 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 danychi 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�ciowychWarstwa 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 strumieniSOAP, HTTP, SMPT i tak dalej; odpowiada te� za wy�uskiwanie warto�ci parametrówz ��da�. Wedle wzorca MVC odpowiada ona kontrolerowi wej�cia.

Do zmontowania tej warstwy wykorzystujemy komponenty i interfejsy serwletów doobs�ugi protoko�u HTTP. Sposobami u�ycia tych interfejsów i komponentów zajmiemy si�w dalszej cz��ci rozdzia�u.

Logika aplikacjiKod logiki aplikacji odpowiada za ogólny przep�yw sterowania w aplikacji WWW. Cz�sto tawarstwa okre�lana jest mianem warstwy sklejaj�cej (ang. glue layer), oddzielaj�cej warstw� logikibiznesowej 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 naprzyk�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 aplikacjiWWW 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 toroli 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 biznesowaKod 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. Kodten powinien by kompletnie niezale�ny od warstw zewn�trznych (prezentacji). W z�o�onejaplikacji logika biznesowa b�dzie najpewniej najbardziej rozbudowanym komponentem, �ci�le

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

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) czyCRM (Client Relationship Management) i innych powi�zanych us�ug. We wzorcu MVC logicebiznesowej 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 biznesoweaplikacji 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 jestprosta: warstwa ta powinna by mo�liwie uproszczona, implementowana w miar� mo�liwo�ciza 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 utrwalaniadanych 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 takichzale�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 bazydanych 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�cw 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 AccessObject), zale�nych zazwyczaj od interfejsów dost�pu do baz danych i j�zyków zapyta� takichjak SQL. Takie podej�cie jest odpowiednie w przypadku niewielkiego zestawu prostychobiektów, z zalet� zwi�kszonej elastyczno�ci. W innych podej�ciach uwzgl�dnia si� interfejstrwa�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. Utrwalanieobiektów by�o przedmiotem intensywnych prac i szczegó�owe omawianie tego zagadnieniawykracza poza zakres tematyczny niniejszej ksi��ki.

Prezentacja wynikówTa warstwa grupuje kod i zasoby niestanowi�ce kodu (pliki HTML, XML czy obrazki), leczwykorzystywane do prezentowania wyników dzia�ania aplikacji u�ytkownikowi. Zazwyczajsk�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 stronieWWW. 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ówdo przetwarzania HTML i XML, tworzenia obrazków, zarz�dzania adresami URL i ogólniedo obs�ugi wszystkich zada� zwi�zanych z budow� interfejsu u�ytkownika poprzez WWW.

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

Rozdzia� 5. • Architektura i projektowanie aplikacji WWW 145

Wzorzec MVC w aplikacji WWWWzorzec 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�cieto jedno z mo�liwych podej� do podzia�u odpowiedzialno�ci i wyeliminowania s�abo�citkwi�cych w wykorzystywanych technologiach. Koncepcja MVC wywodzi si� z systemuSmalltalk-80 i promuje warstwowe podej�cie przy projektowaniu i tworzeniu graficznychinterfejsó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 modelowynie 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 nieuwzgl�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. przetwarzaniemp�atno�ci). Po drugie, w wi�kszo�ci systemów okienkowych i bibliotek funkcje kontrolerai 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 dlaobiektów biznesowych. B�dziemy wi�c tak okre�la obiekty biznesowe, a poj�cia kontrolerwej�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 MVCs� wcielane w �ycie jako po��czenie kodu w j�zyku Java, stron JSP, serwletów i zwyczajnychobiektów Javy realizuj�cych zadania ró�nych komponentów. Owe ramy projektowe koncen-truj� si� na oddzieleniu widoku od kontrolera, ale niekoniecznie sugeruj� sposoby oddzieleniakontroleró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 najbardziejpoprawne. 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 aplikacjijako 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.

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

146 Cz��� II • Tworzenie aplikacji WWW w Javie

RYSUNEK 5.4. MVC dla aplikacji WWW

Kontroler wej�ciaCentralnym elementem jest kontroler wej�cia. W systemie dzia�a jeden taki kontroler dlawszystkich 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ó�pracyz 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 konwencjinazewniczych 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� ograniczonedo pojedynczego komponentu i nie wp�ywaj� na pozosta�e komponenty aplikacji. Kontrolerwej�cia jest typowo realizowany za po�rednictwem serwletu; cz�sto wyró�nia si� osobnyserwlet, 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 poziomuurz�dze� operuj�cych protoko�em i przegl�dark� WAP.

Kontroler aplikacjiKontroler aplikacji jest najcz��ciej zwyczajnym obiektem j�zyka Java. Jego zadaniem jestkoordynowanie 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

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

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 tekstowegoprotoko�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�ciszkieletów aplikacyjnych te odwzorowania s� reprezentowane za pomoc� rozbudowanychplikó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 kontroleraplikacji 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 konwencjinazewniczych. Zamiast przechowywa izolowane skrawki informacji w atrybutach sesji, sk�a-duje si� je w obiektach biznesowych. Do �ledzenia dzia�ania kontrolera aplikacji i obiektówbiznesowych mo�na wykorzysta klasyczne mechanizmy j�zyka programowania, co bardzou�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 jakoakcje, podczas gdy w JSF okre�la si� je mianem managed backing beans. W Struts przewidujesi� 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 akcjemog�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. Choby przez to,�e graczy dodaje si� do dru�yn. Ale w Struts nie przewidziano mechanizmu do grupowaniaakcji. Nie mo�na wi�c zgrupowa wielu akcji b�d�cych cz��ci� tego samego przep�ywu, jakna przyk�ad przy procesie rejestracji konta online.

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

148 Cz��� II • Tworzenie aplikacji WWW w Javie

Te braki szkieletu aplikacyjnego Struts s� wype�niane przez inne mechanizmy, bazuj�cena Struts, jak w projekcie Eclipse Pollinate, w którym kontroler aplikacji to obiekt Javyzwany przep�ywem w obr�bie strony (ang. page flow). Jest to klasa ujmuj�ca grup� akcji jako jejmetody 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 klasyprzep�ywu dla strony (klasy akcji i ich zachowanie z przyk�adowego listingu 5.2 zosta�ybyzaimplementowane jako metody klasy przep�ywu).

Mo�liwo� grupowania akcji i kojarzenia ich z obiektem reprezentuj�cym przep�ywsterowania w obr�bie strony ilustruje kod z listingu 5.3. Posiadanie wspólnego kontroleraaplikacji dla ca�ej grupy akcji zwi�ksza elastyczno� wyra�ania logiki aplikacji. Do tego mo�nazarz�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 aplikacjiWWW, 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 jestimplementowana ani w JSF, ani w Struts. Informacja o takim przep�ywie jest niejawnie za-szyta w kontrolerach i plikach konfiguracyjnych XML.

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

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. Jednymz 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��cegostanu aplikacji; decyzja nale�y wi�c do kontrolera aplikacji. Wynik tego procesu decyzyjne-go jest reprezentowany poprzez obiekt ApplicationController (ApplicationController toimplementacja 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 komponentemwyznaczonym 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 biznesowestanowi� wyizolowan� warstw�, zdatn� do wykorzystania zarówno w aplikacji WWW, jaki w aplikacjach zak�adaj�cych dost�p z poziomu innych rodzajów klientów, a nawet w kla-sycznych aplikacjach stanowiskowych.

WidokW 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 samejstronie 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�asnychznaczników, ujmuj�cych bardziej rozbudowane zachowania widoku — w przypadku skom-plikowanych widoków zaleca si� przenoszenie kodu w�a�nie do samodzielnie definiowanychznaczników. Na rysunku 5.4 by�o wida dwa ró�ne mechanizmy widoku. Kontroler wyj�ciaJSP 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 XMLzdatne do u�ytku w innych aplikacjach.

Szkielety aplikacyjne dla JavyProgrami�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�dzanienim i samo programowanie. Izoluj� i implementuj� podstawow� infrastruktur� aplikacjii dobrze integruj� si� z serwerami aplikacyjnymi.

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

150 Cz��� II • Tworzenie aplikacji WWW w Javie

RYSUNEK 5.5. Szkielety aplikacyjne dla Javy

OSGiOSGi 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 domodelowania 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, odurz�dze wbudowanych po systemy korporacyjne. Przyk�adem systemu bazuj�cego na OSGijest 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 wykonanias� sk�adane do postaci us�ugi biznesowej. W OSGi mo�na na przyk�ad uruchamia� aplikacjebazuj�ce na Spring 2.0.

Apache BeehiveProjekt Beehive ma na celu udost�pnienie szkieletu aplikacyjnego dla prostych komponentówsterowanych metadanymi, redukuj�cych ilo� kodu niezb�dnego w aplikacjach J2EE. Roz-wi�zania z Beehive dotycz� wszystkich trzech warstw modelowej aplikacji WWW. Szkieletwykorzystuje adnotacje, zw�aszcza metadane wed�ug JSR 175 (JSR 175). Odwo�uje si� te�

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

Rozdzia� 5. • Architektura i projektowanie aplikacji WWW 151

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

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

JavaServer FacesJSF 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�yczonymiz MVC. JSF to oficjalny element specyfikacji J2EE 5.

SpringSpring to szkielet aplikacyjny obejmuj�cy komplet trzech warstw typowej aplikacji WWWw Javie. Szkielet dla wszystkich swoich komponentów implementuje wzorce projektoweInversion 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 temumo�e wyeliminowa potrzeb� stosowania komponentów EJB. Do tego Spring udost�pniamechanizmy do zarz�dzania danymi aplikacji.

Pico ContainerPico Container jest prostym szkieletem aplikacyjnym, równie� bazuj�cym na wzorcachInversion 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.

HibernateHibernate to szkielet relacyjnego odwzorowania obiektów — ORM (Object Relational Mapping).Pozwala programistom implementowa relacyjne utrwalanie obiektów oraz odpytywa us�ugio obiekty Javy bez konieczno�ci modyfikowania ich kodu.

Specyfikacja komponentów encyjnych EJB3, a zw�aszcza specyfikacja interfejsu trwa�o�ciJPA (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.

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

152 Cz��� II • Tworzenie aplikacji WWW w Javie

Architektura us�ugowa SOASOA (Service Oriented Architecture) dotyczy wydzielania cz��ci w�a�ciwej dzia�alno�ci aplikacjido 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 standardowymij�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 DescriptionLanguage), UDDI (Universal Description, Discovery and Integration), SOAP, JAX-RPC i wieluspecyfikacjach WS-*. Szczegó�owe omówienie SOA dalece wykracza poza tematyk� niniejszejksi��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�ugowaZadaniem warstwy us�ugowej w aplikacji jest eksponowanie poszczególnych funkcji aplikacjii 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 warstwysteruj�ce systemu pionowego, w których warstwa us�ugowa wykorzystywana jestdo odwo�a� do modelu biznesowego, w rozbudowanej implementacji MVCz warstw� us�ugow� w postaci opisanej dalej;

� w projektach integracyjnych, za po�rednictwem j�zyka BPEL (Business ProcessExecution language) automatyzuj�cego procesy biznesowe;

� w systemach udost�pniaj�cych us�ugi b�d�ce wynikiem zmontowania us�ugdost�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 warstwask�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

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

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 naus�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�pujewarstw� 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 odgrywarol� warstwy prezentacji; us�uga jest prezentacj�, widokiem perspektywy biznesowej w formiedost�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�rednioudost�pni� jako us�ugi. Dobry model obiektowy cechuje si� wysok� ziarnisto�ci� i sk�ada z wieluniewielkich, ale prostych do ogarni�cia obiektów z �atwymi do opanowania i wykorzystywaniametodami. 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�cmieszank� logiki biznesowej i logiki aplikacji. W naszej przyk�adowej aplikacji League Planetwarstwa us�ugowa dysponowa�aby obiektem obs�uguj�cym tworzenie nowej ligi. Warstw� logikibiznesowej omówimy w rozdziale 8.

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

154 Cz��� II • Tworzenie aplikacji WWW w Javie

Konsumowanie us�ug — zestawianieAplikacje konsumuj� us�ugi przez zestawianie i ��czenie tre�ci b�d� us�ug udost�pnianychprzez us�ugodawców. Mo�na wi�c zrealizowa nowy proces biznesowy na bazie integracjius�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 unikatowysposób, niekoniecznie dost�pny od któregokolwiek z us�ugodawców us�ug sk�adowychz osobna. To podstawowe za�o�enie SOA.

Modelowanie procesu biznesowego i montowanie us�ug mo�e konsumowa us�ugiw 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�nawykorzystywa 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, Oracleczy 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 OASISb�d�cy odpowiednikiem j�zyka XML dla dziedziny zestawiania i kompozycji us�ug w procesy.

Studium przypadku — League PlanetW tym podrozdziale spróbujemy opracowa architektur� dla naszej fikcyjnej strony WWWLeague Planet (zob. podrozdzia� „Przedstawiamy League Planet” w rozdziale 1.). Z punktuwidzenia architektury League Planet jest systemem wieloaspektowym, z ró�nymi profilamidla ró�nych u�ytkowników.

Po pierwsze, mamy w�ród nich ludzi, którzy umieszczaj� tre�ci w systemie. S� to osobyzainteresowane 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, statystykii 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 prezentacjib�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 sterowaniaw 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 warstwywidoku (prezentacji).

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

Rozdzia� 5. • Architektura i projektowanie aplikacji WWW 155

Kolejny profil dla League Planet to aplikacje zewn�trzne, np. aplikacje sponsorów, którzypotrzebuj� dost�pu do pewnych us�ug. League Planet generuje spor� cz�� swojego przy-chodu z reklam og�oszeniodawców. Informacje o dru�ynach, graczach i odwiedzaj�cych orazich profilach mog� si� przyda do przygotowywania skuteczniejszych reklam. Profile te s�u��do generowania banerów reklamowych i odno�ników do stron odpowiednich partnerów biz-nesowych. Informacje te s� udost�pniane systemom partnerów League Planet za po�red-nictwem zbioru us�ug, realizowanych w warstwie us�ugowej; samo wy�wietlanie reklamrównie� realizowane jest na bazie us�ug, tym razem zewn�trznych (udost�pnianych w sys-temach partnerów biznesowych).

Wreszcie serwis League Planet wspiera te� swoje organizacje partnerskie, oferuj�c wi�k-szo� swoich tre�ci i us�ug online dla zewn�trznych serwisów. Niektóre z nich to darmowei abonamentowe informacje o ligach, graczach, dru�ynach, profilach odwiedzaj�cych,og�oszeniach, wiadomo�ci ze �wiatka oraz doniesienia o najnowszych wynikach spotka�. Jakodostawca us�ug WWW League Planet jest �ród�em unikatowych tre�ci i us�ug, przeznaczo-nych do konsumpcji w aplikacjach zewn�trznych.

Aby zrealizowa taki system, wykorzystamy architektur� opisan� w poprzednim pod-rozdziale (zob. rysunek 5.6). Aby zademonstrowa planowany sposób dzia�ania systemu, we�-my scenariusz rozpisany na diagramie z rysunku 5.7.

RYSUNEK 5.7. Warstwa us�ugowa

Aplikacja kliencka, podobna do naszej w�asnej aplikacji WWW, konsumuje us�ugi udo-st�pniane przez League Planet. Konsument us�ugi b�dzie wykorzystywa� jedn� (b�d� wiele)z udost�pnianych us�ug Web Service za po�rednictwem protoko�u SOAP. Oba systemy maj�kompletnie ró�ne modele biznesowe i odmienn� logik� aplikacji, ale b�d� zdolne do wspó�-dzia�ania na bazie architektury SOAP. Mianowicie, klient wysy�a ��danie w celu pozyskaniainformacji o zespo�ach graj�cych w danej lidze. ��danie jest wysy�ane za po�rednictwem

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

156 Cz��� II • Tworzenie aplikacji WWW w Javie

protoko�u SOAP. Warstwa us�ugowa w League Planet odbiera ��danie; �rodowisko wyko-nawcze us�ug WWW rozpracowuje ��danie i odwzorowuje dane wej�ciowe opisane w przy-s�anym XML na odpowiadaj�ce im obiekty klas Javy. Kod Javy w LeagueService odbiera takie��danie tak, jakby by�o zwyczajnym wywo�aniem (komunikatem) z obiektu Javy. Warstwaus�ugowa wysy�a do warstwy modelowej komunikaty Javy maj�ce na celu pozyskanie z bazydanych informacji o zespo�ach w danej lidze; zespo�y te s� odwzorowywane na obiekty Javyi w takiej postaci przekazywane do warstwy us�ugowej. Tam wreszcie dochodzi do seriali-zacji obiektów wynikowych, to jest konwersji obiektów Javy na ich reprezentacj� tekstow�w j�zyku XML, okre�lon� poprzez typy danych odpowiedzi opisane WSDL. Odpowied� jestpotem zwracana do aplikacji klienckiej w formacie XML. Konsument us�ugi odbieraj�cy tak�odpowied� wykorzystuje podobne technologie do odwzorowania odpowiedzi na jego w�asnewewn�trzne obiekty modelu biznesowego i na przyk�ad prezentuje pozyskane dane o ze-spo�ach na swojej stronie WWW.

PodsumowanieKoncepcje omawiane w tym rozdziale powinny okaza si� pomocne przy projektowaniuaplikacji WWW, które od pocz�tku maj� mie poprawn� architektur�. Zaprezentowali�myszereg ró�nych podej� i omówili�my ró�ne gotowe szkielety aplikacyjne wcielaj�ce te po-dej�cia. Na bazie prezentowanych tu wzorców omówili�my zyski jako�ciowe, bo wzorce tenarzucaj� i promuj� uznane zasady projektowania obiektowego. Omówione szkielety apli-kacyjne s� pomoc� szczególnie istotn� dla projektantów niedo�wiadczonych w metodologiiobiektowej, bo daj� im punkt wyj�cia do projektu wysokiej jako�ci, bez konieczno�ci zag��-biania si� w szczegó�y implementacji systemu, na którym ta jako� w du�ej mierze bazuje.Szkielety wzorowane na MVC, omawiane w tym rozdziale, mog�yby zosta rozszerzonew kilku dziedzinach, uwzgl�dniaj�c na przyk�ad ró�ne charakterystyczne dla WWW wyma-gania, jak bezpiecze�stwo, walidacja danych itp. Zalecamy w�asne eksperymenty z wymie-nionymi technologiami, bo to najlepiej pozwoli ogarn� ich struktur� i pozna zastosowanekompromisy architekturalne; w ten sposób najlepiej mo�na si� te� zorientowa w zdatno�cidanego rozwi�zania w danej dziedzinie zastosowa�.

Po wyk�adzie z projektowania mo�emy kontynuowa nauk� wykorzystywania WTP przytworzeniu w�asnych aplikacji WWW. W rozdziale 6. zajmiemy si� konkretnie ró�nymi stylamitworzenia aplikacji WWW w Javie i ró�nymi organizacjami projektu.