Enterprise Java Beans

advertisement
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
Enterprise Java Beans
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
Download