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

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