220 likes | 436 Views
Enterprise Java Beans. Kamil Falana. 13 grudnia 2004. PJWSTK. Plan prezentacji. Wprowadzenie. RMI. JNDI. Historia EJB. Plan prezentacji c.d. Rodzaje bean’ów EJB:. SessionBean :. stateless. stateful. EntityBean. Message-Driven Bean. Przykład. Podsumowanie. Wprowadzenie.
E N D
Enterprise Java Beans Kamil Falana 13 grudnia 2004 PJWSTK
Plan prezentacji • Wprowadzenie • RMI • JNDI • Historia EJB
Plan prezentacji c.d. • Rodzaje bean’ów EJB: • SessionBean: • stateless • stateful • EntityBean • Message-Driven Bean • Przykład • Podsumowanie
Wprowadzenie - J2EE jest specyfikacją, a nie konkretnym produktem - EJB jest częścią J2EE - Komponenty EJB – warstwa biznesowa - Serwer aplikacji (kontener)
RMI (Remote Method Invocation) - RMI over IIOP (Internet Inter-Orb Protocol) - rozproszona komunikacja między obiektami - przekazywanie parametrów przez referencję i przez wartość (serializacja)
JNDI (Java Naming and Directory Interface) - API J2EE (standardowy interfejs do lokalizacji m.in. komputerów, obiektów) - usługi nazwowe (łączenie nazw do obiektów) - usługi katalogowe (obiekt katalogu - atrybuty) - wspólny interfejs dla różnych katalogów • wykorzystywane przez komponenty do poszukiwania innych komponentów
JNDI (Java Naming and Directory Interface) - JNDI składa się z 2 części: • API klienta • interfejsu SPI (Service Provider Interface) KLIENT API klienta JNDI Interfejs dostawcy usług (SPI) Interfejs usługi LDAP Interfejs systemu plików
Enterprise Java Beans Integeracja RMI i JNDI: - serwer RMI publikuje się w drzewie JNDI - klient wyszukuje serwera RMI poprzez JNDI
Historia - EJB 1.0 – specyfikacja 1998 rok - Aktualizacje: – EJB 1.1 – EJB 1.2 - EJB 2.0 – wrzesień 2001 roku - EJB 2.1 – październik 2003 roku - EJB 3.0 – ?
Session Bean Komponent sesyjny - obiekt krótkotrwały - rozszerzenie aplikacji klienta po stronie serwera (implementuje logikę biznesową) - 2 podtypy: - Stateful (stanowy) - Stateless (bezstanowy)
Session Bean Stateful (stanowy) - przez cały czas życia skojarzone z jedną aplikacją klienta - pamięta swój stan obiektu
Session Bean Stateless (bezstanowy) - przy każdym wywołaniu może być wykorzystywany przez inną aplikację klienta - niepamiętają swojego stanu obiektu
Entity Bean Komponent encyjny - żyją aż do momentu jawnego ich usunięcia - automatyczne, fizyczne składowanie obiektów Java w bazie danych - wykorzystywane do komunikacji logiki biznesowej z bazą danych - pojedynczy komponent może być współdzielony przez wielu klientów
Entity Bean - 2 rodzaje: - BMP (Bean-Managed Persistency) - z trwałością obsługiwaną przez komponent - CMP (Container-Managed Persistency) - z trwałością obsługiwaną przez kontener EJB
Message-Driven Bean Komponent sterowany komunikatami - uruchamiany wtedy, gdy nadchodzi komunikat od klienta - wykonywany asynchronicznie - bezstanowy - może modyfikować zawartość bazy danych
Przykład (Session Stateless Bean) Interfejs zdalny • import javax.ejb.EJBObject; • import java.rmi.RemoteException; • public interface ExampleRemote extends EJBObject { • String HelloWorld() throws RemoteException; • } Deklaruje metody komponentu EJB, które będą dostępne dla zdalnej aplikacji klienta.
Przykład (Session Stateless Bean) Interfejs domowy • import javax.ejb.EJBHome; • import java.rmi.RemoteException; • import javax.ejb.CreateException; • public interface ExampleHome extends EJBHome { • ExampleRemote create() throws RemoteException, CreateException; • } Deklaruje metody zarządzania cyklem życia komponentu EJB.
Przykład (Session Stateless Bean) Klasa komponentu EJB • import javax.ejb.SessionBean; • import javax.ejb.SessionContext; • public interface ExampleBean implements SessionBean { • public ejCreate() {...}; • ... • public HelloWorld() {...} • }
Przykład (Session Stateless Bean) Deskryptor rozmieszczenia (ejb-jar.xml) <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd"> <ejb-jar> <enterprise-beans> <session> <description>Session Bean ( Stateless )</description> <display-name>Example</display-name> <ejb-name>Example</ejb-name> <home>ExampleHome</home> <remote>ExampleRemote</remote> <ejb-class>ExampleBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> </ejb-jar>
Podsumowanie - interfejs zdalny - interfejs domowy - klasa komponentu - deskryptor rozmieszczenia - lokalny interfejs i lokalny interfejs domowy (*)
Enterprise Java Beans KONIEC