Architektura EJB 2.x

Niniejszy temat zawiera ogólny przegląd architektury komponentów rozproszonych, która została zdefiniowana w specyfikacji architektury komponentów Sun Microsystems Enterprise JavaBeans™ (EJB) w wersji 2.x.

Pełna specyfikacja oraz opis technologii Enterprise JavaBeans są dostępne na stronie WWW java.sun.com .

Komponenty EJB dają wiele korzyści twórcom aplikacji. Poniżej przedstawiono ich cechy:

Komponenty EJB
Komponent EJB to inny niż wizualny komponent rozproszonej, zorientowanej na transakcje aplikacji korporacyjnej. Komponenty EJB są zazwyczaj wdrażane w kontenerach EJB i uruchamiane na serwerach EJB. Można je dostosować, zmieniając ich deskryptory wdrażania, i złożyć z innymi komponentami bean, aby utworzyć nowe aplikacje. Istnieją trzy typy komponentów EJB: komponenty bean sesji, komponenty bean obiektu i komponenty bean sterowane komunikatami. Komponenty bean sesji i komponenty bean sterowane komunikatami to bardziej ogólne komponenty służące do modelowania procesu biznesowego, podczas gdy komponenty bean obiektu są używane do modelowania obiektów danych na niższym poziomie.
  • Komponenty bean sesji: Komponenty bean sesji to nietrwałe komponenty EJB. Mogą one być stanowe lub bezstanowe.
    • Stanowe komponenty bean sesji: Działają w imieniu pojedynczego klienta i zachowują specyficzne dla klienta informacje o sesji (tzw. stan konwersacji) na potrzeby wielu transakcji i wywołań metod. Komponenty te istnieją przez czas trwania pojedynczej sesji klient/serwer.
    • Bezstanowe komponenty bean sesji: Nie zachowują żadnego stanu konwersacji i są przechowywane w puli przez ich kontener w celu obsługi wielu żądań od wielu klientów.
  • Komponenty bean obiektu: Są to komponenty EJB, które zawierają dane trwałe i mogą być zapisywane w różnych trwałych składnicach danych. Każdy komponent bean encji ma własną tożsamość. Komponenty bean obiektu, które zarządzają własną trwałością, są nazywane komponentami bean obiektu o trwałości zarządzanej przez komponent (bean-managed persistence - BMP). Komponenty bean obiektu, które delegują własną trwałość do swojego kontenera EJB, są nazywane komponentami bean obiektu o trwałości zarządzanej przez kontener (container-managed persistence - CMP).
  • Komponenty bean sterowane komunikatami: Są to komponenty EJB, które odbierają i przetwarzają komunikaty JMS. W odróżnieniu od komponentów bean sesji i encji komponenty bean sterowane komunikatami nie mają interfejsów. Są one dostępne wyłącznie przez przesyłanie komunikatów i nie zachowują żadnego stanu konwersacji. Komponenty bean sterowane komunikatami zezwalają na komunikację asynchroniczną między kolejką a nasłuchiwaniem, a także umożliwiają oddzielenie przetwarzania komunikatów od logiki biznesowej.
Zdalny widok klienta
Specyfikacja zdalnego widoku klienta stała się dostępna od wersji 1.1 komponentów EJB. Widok zdalnego klienta komponentu EJB jest niezależny od położenia. Klient działający w tej samej maszynie JVM co instancja komponentu bean używa tego samego interfejsu API, aby uzyskać dostęp do komponentu bean, co klient działający w innej maszynie JVM na tym samym lub innym komputerze. Zdalny widok klienta składa się z dwóch interfejsów:
  • Interfejs zdalny: Interfejs zdalny określa zdalne metody biznesowe, które mogą zostać wywołane przez klienta dla komponentu EJB.
  • Zdalny interfejs podstawowy: Zdalny interfejs podstawowy określa metody używane przez klienty zdalne w celu znajdowania, tworzenia i usuwania instancji klas komponentu EJB.
Lokalny widok klienta
Specyfikacja lokalnego widoku klienta jest dostępna od wersji 2.0 komponentów EJB 2.0. W odróżnieniu od zdalnego widoku klienta, lokalny widok klienta komponentu bean jest zależny od położenia. Dostęp lokalnego widoku klienta do komponentu EJB wymaga zarówno lokalnego klienta, jak i komponentu EJB, który udostępnia lokalny widok klienta w tej samej maszynie JVM. W związku z tym lokalny widok klienta nie zapewnia przezroczystości położenia, którą zapewnia zdalny widok klienta. Interfejsy lokalne i lokalne interfejsy podstawowe zapewniają obsługę uproszczonego dostępu z komponentów EJB, które są klientami lokalnymi. Komponenty bean sesji i obiektów mogą zostać ściśle połączone z ich klientami, umożliwiając dostęp bez nakładów zwykle powiązanych z wywołaniami metod zdalnych. Lokalny widok klienta składa się z dwóch interfejsów:
  • Interfejs lokalny: Interfejs lokalny stanowi uproszczoną wersję interfejsu zdalnego, ale jest przeznaczony dla klientów lokalnych. Zawiera metody logiki biznesowej, które mogą być wywoływane przez lokalnego klienta.
  • Lokalny interfejs podstawowy: Lokalny interfejs podstawowy określa metody używane przez klienty lokalne w celu znajdowania, tworzenia i usuwania instancji klas komponentu EJB.
Widok klienta usługi WWW
W specyfikacji EJB 2.1 architektury EJB umożliwiono obsługę usług WWW. Klientem dla komponentu bean sesji może być klient usług WWW. Klient usług WWW może korzystać z widoku klienta usługi WWW bezstanowego komponentu bean sesji mającego odpowiedni interfejs punktu końcowego usługi.
Interfejs punktu końcowego usługi
Interfejs punktu końcowego usługi dla bezstanowego komponentu bean sesji udostępnia funkcjonalność tego komponentu jako punkt końcowy usługi Web Service. W dokumencie WSDL (Web Service Description Language) usługi WWW jest ona opisana jako zestaw punktów końcowych operujących na komunikatach. W dokumencie WSDL interfejs punktu końcowego usługi bezstanowego komponentu bean sesji może być zawarty jako jeden z punktów końcowych. Istniejący bezstanowy komponent bean sesji można zmodyfikować, włączając do niego widok klienta usługi WWW; można również odwzorować interfejs punktu końcowego usługi z istniejącego dokumentu WSDL, aby udostępnić poprawny interfejs.

Widok klienta usługi WWW jest niezależny od położenia i dostępny przez zdalne wywołania

Plik JAR klienta EJB
Plik JAR klienta EJB to opcjonalny plik JAR, który może zawierać interfejsy klienta wymagane przez program kliencki oraz widoki klienta komponentów EJB zawartych w pliku JAR komponentu EJB. Jeśli plik JAR klienta EJB nie zostanie utworzony dla modułu EJB, wszystkie klasy interfejsu klienta będą się znajdowały w pliku JAR EJB. Domyślnie w środowisku roboczym są tworzone projekty JAR klienta EJB dla każdego projektu EJB.
Kontener EJB
Kontener EJB to środowisko wykonawcze zarządzające jednym lub większą liczbą komponentów EJB. Kontener EJB zarządza cyklami życia komponentów EJB, koordynuje rozproszone transakcje i implementuje zabezpieczenia obiektu. Generalnie, każdy kontener EJB jest udostępniony przez serwer EJB i zawiera zestaw komponentów EJB uruchamianych na serwerze.
Deskryptor wdrażania
Deskryptor wdrażania to plik XML, który jest spakowany wraz z komponentami EJB w pliku JAR komponentu EJB lub w pliku EAR. Zawiera on metadane opisujące treść i strukturę komponentów EJB oraz informacje o bezpieczeństwie i transakcji wykonawczej dla kontenera EJB.
Serwer EJB
Serwer EJB to proces wysokiego poziomu lub aplikacja zapewniająca środowisko wykonawcze w celu obsługi wykonywania aplikacji serwerowych używających komponentów EJB. Serwer EJB udostępnia usługę nazw dostępną na podstawie nazw JNDI, koordynuje przydzielanie zasobów do aplikacji klienckich i zarządza nimi, umożliwia dostęp do zasobów systemu i udostępnia usługę transakcji. Serwer EJB może być udostępniony np. przez serwer aplikacji lub bazy danych.