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 umożliwiają budowanie aplikacji rozproszonych przez połączenie komponentów zaprojektowanych przy użyciu
narzędzi od różnych dostawców.
- Komponenty EJB ułatwiają pisanie aplikacji. Nie trzeba zajmować się szczegółami transakcji, zarządzaniem stanem, wielowątkowością, łączeniem zasobów w pule ani innymi skomplikowanymi interfejsami API niskiego poziomu. Mimo to doświadczeni programiści mogą w razie potrzeby uzyskać dostęp bezpośredni do interfejsów API niskiego poziomu.
- Komponenty EJB są projektowane tylko raz, a następnie wdrażane wielokrotnie na wielu platformach bez ponownej kompilacji
lub modyfikacji kodu źródłowego.
- Komponenty EJB zapewniają kompatybilność między specyfikacjami EJB, które zarządzają użyciem komponentów EJB, oraz innymi
interfejsami API języka Java™ i architekturą
CORBA. Umożliwia to również współdziałanie komponentów EJB i aplikacji napisanych w innych językach niż Java.
- 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.