Ten temat zawiera ogólny przegląd architektury komponentów rozproszonych zdefiniowanej w specyfikacji architektury Sun Microsystems Enterprise JavaBeans™ (EJB).
Pełne specyfikacje i opisy technologii EJB są dostępne w serwisie WWW java.sun.com.
Komponenty EJB są pod różnymi względami korzystne dla programistów aplikacji:
- Umożliwiają tworzenie rozproszonych aplikacji przez łączenie komponentów opracowanych przy użyciu narzędzi różnych producentów.
- 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.
- Można je opracować raz, a następnie wdrażać na wielu platformach bez ponownego kompilowania czy modyfikowania kodu źródłowego.
- Specyfikacja EJB, której podlega sposób korzystania z komponentów EJB, jest zgodna z innymi interfejsami API Java™ i architekturą CORBA. Umożliwia również współdziałanie między komponentami EJB i aplikacjami niebędącymi aplikacjami Java.
- Komponenty EJB
- Komponent EJB to niewizualny 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 encji i komponenty bean sterowane komunikatami.
- Komponenty bean sesji: komponenty bean sesji są nietrwałymi komponentami EJB.
Mogą one być stanowe lub bezstanowe. Stanowy komponent bean sesji działa w imieniu pojedynczego klienta i zachowuje informacje o sesji właściwe dla klienta (tzw. stan konwersacji) na potrzeby wielu transakcji i wywołań metod.
Komponent taki istnieje przez czas trwania sesji klient/serwer.
Bezstanowy komponent bean sesji, dla odmiany, nie zachowuje stanu konwersacji.
Bezstanowe komponenty bean sesji są łączone w pule przez ich kontener, aby mogły wykonywać wiele żądań wielu klientów.
- Komponenty bean encji: komponenty bean encji to komponenty EJB, które zawierają trwałe dane i mogą być zapisywane w różnych trwałych składnicach danych.
Każdy komponent bean encji ma własną tożsamość. Komponenty bean encji, które zarządzają własną trwałością, są nazywane komponentami bean encji o trwałości sterowanej przez komponent bean (BMP)
. Komponenty bean, które delegują swoją trwałość na kontener EJB, są nazywane komponentami bean encji o trwałości sterowanej przez kontener (CMP).
- Komponenty bean sterowane komunikatami: komponenty bean sterowane komunikatami to komponenty EJB, które otrzymują komunikaty JMS i je przetwarzają.
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 została udostępniona, poczynając od EJB 1.1. 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 interfejs: zdalny interfejs określa zdalne metody biznesowe, które klient może wywoływać w komponencie EJB.
- Zdalny interfejs macierzysty: zdalny interfejs macierzysty określa metody używane przez zdalnych klientów do lokalizacji, tworzenia i usuwania instancji klas komponentów EJB.
- Lokalny widok klienta
- Specyfikacja lokalnego widoku klienta jest dostępne w EJB w wersji 2.0 lub nowszej.
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.
Lokalne interfejsy i lokalne interfejsy macierzyste umożliwiają obsługę uproszczonego dostępu z komponentu EJB do klientów lokalnych.
Komponenty bean sesji i encji mogą być ściśle powiązane ze swoimi klientami, co umożliwia dostęp bez narzutu zazwyczaj związanego ze zdalnymi wywołaniami metod.
- Lokalny interfejs: lokalny interfejs to uproszczona wersja zdalnego interfejsu dla klientów lokalnych.
Zawiera metody logiki biznesowej, które mogą być wywoływane przez lokalnego klienta.
- Lokalny interfejs macierzysty: lokalny interfejs macierzysty określa metody używane przez lokalnych klientów do lokalizacji, tworzenia i usuwania instancji klas komponentów 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.
- Plik JAR klienta EJB
- Plik JAR klienta EJB to opcjonalny plik JAR, który może zawierać interfejsy klienta wymagane przez program klienta do korzystania z widoków klienta komponentów EJB zawartych w pliku JAR 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 służące do zarządzania komponentem lub komponentami 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 połączony z komponentami EJB w pliku JAR EJB lub 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 aplikacja lub proces wysokiego poziomu, który udostępnia środowisko wykonawcze do obsługi wykonywania aplikacji serwera wykorzystujących komponenty 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.
(C) Copyright IBM Corporation 2000, 2005. Wszelkie prawa zastrzeżone.