Enterprise-Beans


...[Seminar XML und JAVA]... [Die Architektur von Enterprise JavaBeans] ...[EJB-Rollenverteilung]...

Gesamtübersicht: Enterprise-Beans


Was ist eine Enterprise-Bean ?

Eine Enterprise-Bean ist eine serverseitige Komponente, die die Anwendungslogik implementiert, auf die Clients zurückgreifen. Der EJB-Server und -Container sorgen nur dafür, daß die Beans von den Clients benutzt werden können. Enterprise-Beans werden in einem EJB-Container installiert, der ihnen bestimmte Dienste und Laufzeitumgebungen zur Verfügung stellt.


Typen von Enterprise-Beans

Es gibt zwei Arten von Enterprise-Beans, die sich in ihrem Wesen stark unterscheiden:

Der Lebenszyklus einer Session-Bean

Während ihrer Lebensdauer geht eine Session-Bean durch mehrere Zustände. Der Lebenszyklus wird vom EJB-Container verwaltet und nicht von der Anwendung. In diesem Abschnitt wird sowohl der Lebenszyklus einer zustandslosen als auch einer zustandsbehafteten Session-Bean dargestellt.

Der Lebenszyklus einer zustandsbehafteten Session-Bean

Der Client initialisiert den Lebenszyklus einer Session-Bean, indem die Methode create aufgerufen wird. Der EJB-Container initialisiert die Bean und ruft die Methode setContextSession auf. Dadurch bekommt die Session-Bean den Kontext, über den sie mit dem Container kommunizieren kann. Dieser Kontext bleibt mit der Bean während ihrer gesamten Lebensdauer assoziiert. Anschließend wird die Methode ejbCreate vom Container aufgerufen. Und die Bean ist bereit, ihre Arbeit durchzuführen, falls diese von einem Client angefordert wird.

Während sich eine Bean im Bereit-Zustand befindet, kann der Container entscheiden, sie durch den Aufruf der Methode ejbPassivate zu deaktivieren. Typischerweise entscheidet er nach der LRU-Strategie (least recently used). Nach dem die Bean deaktiviert worden ist, befindet sie sich im passiven Zustand. Falls ein Client eine Methode dieser Bean aufruft, wird sie vom Container durch den Aufruf der Methode ejbActivate aktiviert.

Am Ende des Lebenszyklus ruft ein Client die Methode remove auf und der EJB-Container führt die Methode ejbRemove aus. Somit ist die Instanz der Bean bereit für den Garbage-Collector.

Der Lebenszyklus einer zustandslosen Session-Bean

Da eine zustandslose Session-Bean nie passiv ist, hat ihr Lebenszyklus nur zwei Zustände: nicht-existiert oder bereit für Aufruf von Business-Methoden.


Der Lebenszyklus einer Entity-Bean

Wie beim Life-Cycle einer Session-Bean wird auch der Lebenszyklus einer Entity-Bean vom EJB-Container kontrolliert. Nachdem der Container eine Instanz einer Entity-Bean erzeugt hat, ruft er die Methode setEntityContext auf. Diese Methode übergibt einer Entity-Bean einen Kontext, über den ihre Identität vom Container verwaltet wird. Über eine Änderung des Kontextes kann der EJB-Container die Identität verändern. Nach der Erzeugung einer Instanz wandert sich diese in einen Pool, in dem die Instanzen verwaltet werden. In diesem Pool ist keine Instanz mit irgendeinem EJB-Objekt assoziiert. Alle in dem Instanzen sind identisch. Sobald eine Instanz sich in den Zustand bereit bewegt, wird ihr eine Identität vom Container zugewiesen.

Es gibt zwei Möglichkeiten, vom Zustand pooled zum Zustand bereit zu wechseln. Die erste ist, daß ein Client die Methode create aufruft. Dies führt dazu, daß der EJB-Container die beiden Methoden ejbCreate und ejbPostCreate ausführt. Nach dieser Ausführung bekommt die Bean-Instanz eine neue Identität und befindet sich im Zustand bereit. Die zweite Möglichkeit ist, daß der EJB-Container die Methode ejbActivate aufruft. Um in den Zustand pooled zurückzukehren, wird dieser Vorgang vom Client durch den Aufruf der Methode remove, die den Container dazu leitet, die Methode ejbRemove auszuführen, oder vom Container durch den Aufruf der Methode ejbPassivate angestoßen.

Will der EJB-Container zu einem Zeitpunkt die Menge der Bean-Instanzen im Pool verringern, so ruft er die Methode unsetEntityContext auf und verwirft die Instanz danach.


Bestandteile einer Enterprise-Bean

Zu einer Enterprise-Bean-Komponente gehören folgende Bestandteile:

Wie alles zusammenspielt

Sind alle Bestandteile einer Bean vorhanden, so werden sie in eine Datei im jar-Format (Java-Archiv) verpackt. Damit sind die Bestandteile einer Enterprise-Bean komplett als Komponente in einer jar-Datei verpackt. Dann kann die Installation in einem EJB-Container mit Hilfe von entsprechenden Tools erfolgen. Wie diese Tools aussehen und wie sie zu bedienen sind, ist dem Container-Hersteller überlassen. Entscheidend ist jedoch, daß die Implementierung des Remote- und Home-Interfaces vom Container aus den Bestandteilen der Bean generiert wird.

Die Implementierungsklassen des Remote- und Home-Interfaces heißen üblicherweise EJBObject und EJBHome. Sie sind der verlängerte Arm der Laufzeitumgebung des Containers für bestimmte Bean-Typen. Sie sind Remote-Objekte, an denen der Client die Methoden aufruft. EJBObject und EJBHome delegieren die entsprechenden Methoden an die Bean-Instanz. Die EJBHome-Klasse enthält den Code für das Erzeugen, Finden und das Löschen von Bean-Instanzen. Die EJBObject-Klasse implementiert das transaktionale Verhalten , die Sicherheitsüberprüfungen und ggf. die container-gesteuerte Persistenz.


...[Seminar XML und JAVA]... [Enterprise-Beans] ...[Die Architektur von Enterprise JavaBeans]... [EJB-Rollenverteilung]...