Szczegóły aplikacji WWW Aukcja

Aplikacja aukcyjna WWW składa się z kilku komponentów przedstawionych na poniższym diagramie. Nie jest to kurs budowy całej aplikacji. Zamiast tego w tym dokumencie zostały opisane istotne zagadnienia dotyczące programowania i projektowania za pomocą różnych narzędzi dostępnych w ramach środowiska roboczego, co umożliwi wykorzystanie tej wiedzy podczas projektowania własnych aplikacji WWW.

Ten diagram przedstawia relacje między danymi, logiką biznesową, treścią WWW i narzędziami.
Na poprzednim diagramie pokazano, że treść WWW została opracowana równolegle z danymi i logiką biznesową. Gdy projektanci opracowywali styl i układ stron WWW, programiści Java i usług WWW kodowali logikę biznesową sterującą tymi stronami. W następnych sekcjach opisano sposób tworzenia kluczowych komponentów oraz ich wkład w aplikację WWW Aukcja:
  1. Odwzorowywanie komponentów bean jednostki na tabele bazy danych za pomocą edytora odwzorowań EJB
  2. Generowanie fasady sesji za pomocą obiektów danych SDO przy użyciu kreatora komponentu bean fasady sesji
  3. Definiowanie układu serwisu WWW za pomocą Projektanta serwisów WWW
  4. Tworzenie szablonów stron WWW za pomocą Projektanta stron
  5. Dodawanie komponentów JavaServer Faces do stron JSP za pomocą Projektanta stron
  6. Tworzenie usługi WWW

Odwzorowywanie komponentów bean jednostki na tabele bazy danych za pomocą edytora odwzorowań EJB

Komponenty EJB (Enterprise JavaBeans) oferują dogodny sposób dostępu aplikacji Java do danych przechowywanych w relacyjnych bazach danych. Komponenty bean jednostki można projektować za pomocą trwałości zarządzanej przez komponent bean (BMP) lub przez kontener (CMP). Metoda CMP umożliwia większą elastyczność niż BMP, ponieważ kontener EJB wykonuje wszystkie wywołania dotyczące bazy danych zgodnie z instrukcjami przekazanymi przez komponent bean. Domyślnie narzędzia środowiska roboczego Rational generują komponenty bean jednostki za pomocą CMP. Komponent bean jednostki CMP nie zawiera kodu dostępu SQL. Umożliwia to wdrożenie komponentu bean na innych serwerach J2EE korzystających z innych baz danych bez konieczności zmiany kodu.

Istnieją różne podejścia do odwzorowywania obiektów w relacyjnych bazach danych, takie jak zstępujące, wstępujące i dwukierunkowe. W podejściu zstępującym rozpoczyna się od istniejących obiektów, a następnie w miarę potrzeb definiuje się coraz bardziej szczegółowe warstwy i kończy na projekcie bazy danych jako ostatnim kroku. W podejściu wstępującym używa się istniejącego schematu bazy danych, a następnie projektuje się warstwy zależne definiujące obiekty. W podejściu dwukierunkowym używa się istniejącej bazy danych i istniejących obiektów, a następnie projektuje się warstwy pośrednie dopasowane do obiektów w odpowiednich tabelach bazy danych.

W aplikacji Aukcja podczas projektowania komponentów EJB jednostki używa się podejścia wstępującego. Początkowo istniała baza danych Derby zawierająca tabele zgodne z potrzebnymi komponentami EJB. Po utworzeniu połączenia z bazą danych za pomocą kreatora połączenia bazy danych został użyty kreator odwzorowania EJB na RDB w celu utworzenia komponentów EJB odwzorowanych z jednej lub więcej tabel - z pewnymi wyjątkami. Na poniższym rysunku zostały przedstawione komponenty EJB jednostki użyte w aplikacji Aukcja i łączące je relacje.

Ten diagram przedstawia relacje między różnymi komponentami bean jednostki.

Komponenty bean jednostki w aplikacji aukcyjnej nie umożliwiają bezpośredniego dostępu za pomocą klienta zdalnego. Wszystkie żądania i odpowiedzi są obsługiwane przez fasady sesji, a komponenty bean umożliwiają dostęp do danych postprocesora. Umożliwia to współużytkowany dostęp po stronie serwera do składnicy trwałych danych. W następnej sekcji zostaną dokładniej omówione fasady sesji.

Więcej informacji na temat odwzorowania komponentów bean jednostki można znaleźć w temacie pomocy Generowanie odwzorowania wstępującego.

Generowanie fasady sesji za pomocą obiektów danych SDO przy użyciu kreatora komponentu bean fasady sesji

Fasada sesji jest to interfejs między klientem i postprocesorem umożliwiający komunikację z komponentami SDO (Service Data Object) i bazą danych. Fasada sesji jest przydatna, gdy klient wysyła żądanie wymagające wykonania kilku obiektów. Wysyłanie tych żądań oddzielnie do poszczególnych obiektów może zwiększyć ruch w sieci i opóźnienia. Fasada sesji działa jak bufor między dwoma końcami, pobierając ogólne żądanie od klienta, a następnie wysyłając konkretne żądania do niezbędnych obiektów. Powoduje to zmniejszenie ruchu i upraszcza projektowanie klienta.

Po utworzeniu fasady można wybrać zarządzane przez nią komponenty EJB, wybierając opcję Odwzoruj komponenty EJB z menu narzędzi. Fasada generuje niezbędne komponenty SDO na podstawie komponentów bean jednostki. W aplikacji aukcyjnej istnieją dwie fasady oparte na dwóch następujących grup funkcjonalnych:
  • Fasada systemu tworzy interfejs z komponentami EJB postprocesora specyficznymi dla systemu, takimi jak kategoria i rola.
  • Fasada użytkownika hermetyzuje dane specyficzne dla użytkownika, takie jak oferta, przedmiot i rola.

Grupując komponenty EJB i korzystając z dwóch różnych fasad, można zwiększyć wydajność aplikacji, ponieważ użytkownicy uzyskują dostęp tylko do potrzebnych komponentów EJB. Komponenty bean jednostki sterujące funkcjami samego serwisu WWW, takie jak kategoria, są sterowane przez fasadę systemu.

Komponenty EJB przywoływane przez fasadę są wybierane po jednym naraz za pomocą kreatora tworzenia fasady komponentu bean sesji, co zostało pokazane na poniższym diagramie. W razie potrzeby do komponentu EJB może się odwoływać więcej niż jedna fasada. Ten mechanizm nie jest wykorzystywany w aplikacji Aukcja.

Ten diagram przedstawia interfejs użytkownika tworzenia fasady komponentu bean sesji.

Można dodać dodatkowe funkcje, dodając metody do fasad. Na przykład w fasadzie użytkownika istnieje metoda zwracająca listę użytkowników oraz metoda zwracająca listę aktywnych użytkowników. Używając tych metod jako przykładu, do fasady użytkownika można dodać inną metodę zwracającą listę wszystkich użytkowników oznaczonych jako nieaktywni.

Więcej informacji na temat fasad sesji można znaleźć w opracowaniu "Design Patterns: Session Facade" pod adresem http://java.sun.com./.

Definiowanie układu serwisu WWW za pomocą Projektanta serwisów WWW

Widok Nawigacja narzędzia Projektant serwisów WWW umożliwia wizualną reprezentację układu serwisu. Wyświetla ono poszczególne strony i ich organizację hierarchiczną, a ponadto jest przydatne podczas konserwowania układu i organizacji stron w serwisie. Podczas przeciągania i upuszczania stron w edytorze następuje automatyczna aktualizacja elementów sterujących nawigacji w szablonach stron. Na przykład dla struktury nawigacji aukcji przedstawionej na poniższym diagramie można zmienić kolejność zakładek nawigacji, przenosząc stronę Sprzedaż przed stronę Przeglądaj. Projektant serwisów WWW automatycznie wygeneruje zakładki w poprawnej kolejności na wszystkich stronach. Aby uwidocznić zmiany w działającej aplikacji, należy ponownie zapisać każdą stronę korzystającą z danego szablonu nawigacji.

Ten diagram przedstawia strony JSP programu Aukcja wyświetlane w Projektancie serwisów WWW.

Oprócz właśnie opisanego widoku Nawigacja Projektant serwisów WWW udostępnia widok Szczegóły porządkujący dodatkowe elementy strony w wygodnej, umożliwiającej edycję tabeli, co zostało pokazane na następnym rysunku. Ta tabela ułatwia aktualizację właściwości stron, takich jak tytuł, autor i etykieta nawigacji.

Ten diagram przedstawia widok szczegółów Projektanta serwisów WWW.

Więcej informacji na temat korzystania z Projektanta serwisów WWW do zarządzania układem serwisu WWW można znaleźć w temacie Tworzenie struktury serwisu WWW w pomocy elektronicznej.

Tworzenie szablonów stron WWW za pomocą Projektanta stron

Środowisko robocze jest dostarczane z narzędziem do wizualnego projektowania szablonów stron oraz ze stronami WWW.

Szablony stron są to fragmenty kodu treści do wielokrotnego użytku zapewniające wspólny wygląd lub zachowanie sekcji serwisu WWW. Aby współużytkować wspólny wygląd i zachowanie, na stronach WWW są używane tylko odwołania do szablonów. Korzystanie z szablonów jest użyteczne zarówno dla użytkownika, który może łatwo nawigować w serwisie WWW, jak i dla programisty, który musi napisać tylko kod specyficzny dla konkretnej strony.

Szablony stron umożliwiają również łatwą konserwację treści serwisu WWW. Zmiany w pliku szablonu są automatycznie odzwierciedlane na każdej stronie, która się do niego odwołuje. Na przykład w aplikacji WWW Aukcja szablon maintemplate.jtpl udostępnia ogólny układ stron aukcji. Elementy strony WWW można dodać do szablonu, korzystając z palety w Projektancie stron, który umożliwia przeciąganie i upuszczanie elementów na stronę WWW. Wymagany kod HTML jest generowany automatycznie. Szablon aukcji można w ten sposób łatwo zmodyfikować na przykład w celu dodania w stopce bieżącej daty i godziny.

Kluczowymi elementami szablonu aukcji są elementy sterujące nawigacji. Pasek nawigacyjny aplikacji WWW Aukcja korzysta z dwóch form nawigacji:
  • Zakładki nawigacji: wyświetlają różne sekcje serwisu WWW.
  • Ślady nawigacji lub "okruszki": wyświetlają tekstowy opis miejsca, w którym znajduje się użytkownik w serwisie WWW, na przykład Strona główna > Przeglądaj > Listing.
Ten diagram przedstawia zakładki nawigacji wyświetlane na stronach przykładowego serwisu Aukcja.

Wstawiając znacznik wywołujący szablon zamiast kodowania nawigacji, użytkownik może dołączyć ten sam pasek nawigacyjny do wszystkich stron serwisu. Edytor odwzorowań szablonów wstawia odwołania do szablonu na stronę WWW.

Szablony dynamiczne są następnym etapem rozwoju tej technologii, na przykład poprzez zmienianie treści strony WWW na podstawie ról lub możliwości użytkowników albo wstawianie na stronie WWW informacji specyficznych dla użytkownika. Przykładowy program Aukcja używa szablonów dynamicznych do udostępniania odsyłaczy administracyjnych na pasku nawigacyjnym tylko użytkownikom zalogowanym jako administratorzy i do zmieniania tytułu przycisku "Logowanie" na "Wylogowanie" po pomyślnym zalogowaniu użytkownika.

Więcej informacji na temat tworzenia szablonów stron WWW można znaleźć w temacie pomocy dotyczącym tworzenia szablonu strony.

Dodawanie komponentów JavaServer Faces do plików JSP za pomocą Projektanta stron

Technologia JSF (JavaServer Faces) jest stosowana podczas budowania interfejsów użytkownika dla dynamicznych aplikacji WWW działających na serwerze aplikacji. JSF jest to otwarty język standardowy korzystający ze standardowej biblioteki znaczników JavaServer Faces. Znaczniki są wstawiane do kodu HTML w celu utworzenia dynamicznych stron WWW.

Środowisko JSF zarządza stanami interfejsu użytkownika dla żądań serwerów i udostępnia prosty model programistyczny obsługujący zdarzenia po stronie serwera uaktywniane przez klienta. Na przykład element JSF może zachowywać się w określony sposób dla różnych zdarzeń, takich jak kliknięcie przycisku. Projektant stron ma wbudowane funkcje, które są wizualnie wyświetlane na palecie i które można przeciągać i upuszczać na stronie WWW. Te funkcje przeciągania i upuszczania ułatwiają używanie technologii JSF, języka HTML i innych elementów skryptowych. Jest to przydatne nie tylko do kontrolowania podstawowych funkcji pola, takich jak typ wartości pola tekstowego (liczba całkowita, alfanumeryczna), ale również umożliwia ustawienie reguł sprawdzania poprawności. W Projektancie stron elementy sterujące JSF mogą zostać powiązane z danymi SDO połączonymi z każdą stroną.

Paleta Projektanta stron może służyć do dodawania dodatkowych funkcji do stron JSF. Na przykład przycisk "Kup teraz" można dodać do strony szczegółów przedmiotu w celu umożliwienia użytkownikowi kupienia przedmiotu za kwotę ustaloną przez sprzedającego.

Na poniższym rysunku zostały pokazane elementy sterujące JSF dla strony szczegółów aukcji. Pole inputText newbid może akceptować tylko liczby całkowite, co jest określane przez pole wyboru Tylko wartości całkowite znajdujące się w dolnym prawym rogu rysunku. Pole inputText ma dodatkowe ustawienia dla sprawdzania poprawności, zachowania i ułatwień dostępu zdefiniowane na zakładkach pod polem h:inputText z lewej strony u dołu rysunku. Zakładka Sprawdzanie poprawności umożliwia zdefiniowanie konkretnych reguł sprawdzania poprawności za pomocą języka Java. Na przykład poprawną wartością wejściową dla pola inputText newbid jest liczba całkowita różna od zera, większa od oferty początkowej i większa od aktualnej oferty plus jeden.

Ten diagram przedstawia elementy sterujące JSF używane na stronie szczegółów aukcji.

Następujący kod został wygenerowany dla pola inputText newbid na stronie itemdetails aplikacji aukcyjnej.

<h:inputText styleClass="inputText" id="newbid" required="true" size="14">
    <f:convertNumber integerOnly="true" />
    <f:validateLongRange minimum="#{pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean==null ?
        pc_Itemdetail.userFacadeLocalGetBidItemSDOByKeyResultBean.startingbid :
        pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean.currentbid+1}">
    </f:validateLongRange>
</h:inputText>

Więcej informacji na temat tworzenia plików Faces JSP można znaleźć w temacie pomocy dotyczącym technologii JavaServer Faces.

Tworzenie usługi WWW

Usługa WWW została opracowana równolegle z aplikacją WWW, ponieważ nie zależy ona od aplikacji - usługa WWW jest innym środkiem uzyskania dostępu do logiki biznesowej i nie zawiera wszystkich funkcji aplikacji WWW. Szczegółowy opis tej części aplikacji aukcyjnej można znaleźć w sekcji dotyczącej usługi WWW.

Organizacja projektów aukcyjnych

Aplikacja WWW Aukcja zawiera wiele projektów. Każdy projekt ma konkretny cel. Poniższa lista opisuje każdy projekt i sposób jego użycia w przykładowym programie Aukcja:
  • Projekt AuctionV60EAR jest głównym plikiem archiwum przedsiębiorstwa (EAR) wdrażanym na serwerze aplikacji. Ten projekt jest wymagany przez środowisko wykonawcze.
  • Projekt AuctionV60EJB zawiera komponenty EJB i klasy fasady.
  • Projekt AuctionV60EJBClient przechowuje wygenerowany kod - włącznie z klasami SDO - i jest wdrażany na kliencie.
  • Projekt AuctionV60Web zawiera wszystkie pliki JSF, szablon i logikę biznesową wymagane do uruchamiania plików JSF.
  • Projekt AuctionV60WebService zawiera pliki WSDL usługi WWW i źródło Java dla usługi WWW.
  • Projekty OIDGenerator i OIDGeneratorClient są niezbędne do tworzenia nowych kluczy dla wstawek do bazy danych.
Temat nadrzędny: Aplikacja WWW Aukcja

Opinia