Enteprise Java Beans Emil Wcisło
Czym jest Enteprise Java Beans Architektura J2EE - EJB Dlaczego EJB? Plan prezentacji Czym jest Enteprise Java Beans Architektura J2EE - EJB Dlaczego EJB? Rodzaje komponentów EJB Architektura kontenera EJB Java Naming and Directory Service Wywołania zdalne – RMI-IIOP Zarządzanie transakcjami w EJB
Czym jest EJB Wchodzi w skład specyfikacji J2EE Definiuje standard – nie jest to konkretny produkt Architektura komponentów po stronie serwera Warstwa biznesowa aplikacji Działanie w środowisku kontenera EJB
Architektura J2EE - EJB
Dlaczego EJB Złożona aplikacja biznesowa zawiera: Logikę biznesową Infrastrukturę systemową: Bezpieczństwo Zdalne wywołania Zarządzanie transakcjami Zarządzanie zasobami Obsługa wielu klientów jednocześnie – skalowalność Integracja w środowisku heterogenicznym
Dlaczego EJB cd. Enteprise Java Beans dostarczają infrastrukurę dla wymagań niefunkcjonalnych aplikacji Pozwalają skupić uwagę na tworzeniu logiki biznesowej
Rodzaje komponentów EJB Session Bean Stateless Statefull Entity Bean Message – Driven Bean
Rodzaje EJB – Session Stateless Zawiera logikę biznesową Bezstanowy – nie przypisany do klienta Może być widziany jako: obiekt zdalny obiekt lokalny (dla innych beanów) Web-service Najczęściej wykorzystywany rodzaj EJB
Cykl życia EJB Session Stateless
Rodzaje EJB – Session Statefull Zawiera logikę biznesową Stanowy – jest przypisany do konkretnego klienta Może zapamiętać stan konwersacji z klientem W razie potrzeby może zostać pasywowany Może być widziany jako: obiekt zdalny
Cykl życia EJB Session Statefull
Rodzaje EJB – Entity Bean Reprezentuje trwałe dane Dostarcza metody do manipulowania danymi Typy Entity Beanów: Bean Managed Persistance (BMP) Container Managed Persistance (CMP) Jest nieudaną próbą stworzenia standardu obiektowo – relacyjnego
Cykl życia EJB Entity
Dlaczego NIE należy używać Entity Beanów Ograniczone możliwości definiowania złożonych obiektów Duży narzut wydajnościowy Małe możliwości optymalizacji Dodatkowa warstwa blokowania się zasobów Ograniczony dostęp bezpośredni z zewnatrz kontenera
Message – Driven Bean Służy do odbierania asynchronicznych komunikatów (JMS) Nie jest widoczny dla klienta i innych komponentów Jest bezstanowy
Cykl życia Message – Driven Bean
Wymagane elementy aplikacji EJB Klasa komponentu Interfejsy komponentu Interfejs zdalny / lokalny Interfejs domowy Standardowy deskryptor wdrożenia – ejb-jar.xml Deskryptory specyficzne dla danego serwera aplikacji
Architektura kontenera EJB
Java Naming and Directory Interface Usługa nazw i katalogu API klienta i Service Provider Interface
Zastosowania JNDI w EJB Wyszukiwanie komponentów przez klientów zdalnych Dostarczenie zasobów do komponentów Łączenie komponentów Dostarczenie referencji do interfejsu UserTransaction (Java Transaction API)
Wywołania zdalne – RMI-IIOP IIOP – protokół zdalnych wywołań CORBA IDL – język opisowy interfejsów CORBA Podobieństwa CORBA i RMI Ukrycie komunikacji przed klientem – wsparcie dla clusteringu Pieńki i szkielety Standard a nie konkretny produkt
Wywołania zdalne – RMI-IIOP cd.
Zarządzanie transakcjami w EJB Środowisko: Wiele rozproszonych, transakcyjnych zasobów Cel: Realizacja transakcyjności na rozproszonych zasobach Elastyczne określenie granic transakcji Środki: Implementacja OMG Object Transaction Service Java Transaction Service (JTS) Java Transaction API (JTA)
Sposoby ograniczenia transakcji Transakcje programowalne Interfejs javax.transaction.UserTransaction Ziarnistość na poziomie kodu Transakcje deklaratywne Określenie atrybutów transakcji w deskryptorze wdrożenia Ziarnistość na poziomie metody biznesowej Transakcje inicjowane przez klienta Niska wydajność Ziarnistość na poziomie wywołanie metody zdalnej
Atrybuty transakcji deklaratywnych Required RequiresNew Supports Mandatory NotSupported Never
DZIĘKUJĘ ZA UWAGĘ