Enterprise JavaBeans - Ein Überblick |
Was ist eine Enterprise Bean genau?
Nochmal: Eine Enterprise Bean ist eine
in Java geschriebene serverseitige Komponente, in der die eigentliche Anwendungslogik
'business logic' gekapselt ist. Mit business
logic bezeichnet man den Code, der die eigentlichen Zwecke der Applikation verfolgt.
In einer Applikation zur Lagerverwaltung könnte eine Enterprise Bean beispielsweise
Methoden namens pruefeBestand oder bestelleArtikel
implementieren. Beim Aufruf dieser Methoden können Remote-Clients diese
Dienste des Lageverwaltungsprogramms in Anspruch nehmen.
EJBs vereinfachen die Entwicklung von komplexen, verteilten Applikationen.
Zum einen sorgt der EJB-Container für Dienste auf System-Level-Ebene, so dass sich der Bean-Entwickler auf die wirklichen Probleme der Anwendungslogik konzentrieren kann. Der EJB-Container - und nicht der Bean-Entwickler - ist für Dienste wie Transaktions- und Sicherheitmanagement zuständig.
Zweitens ist im Idealfall im Client
keine Anwendungslogik mehr enthalten, sondern nur noch in den Beans.
Der Entwickler des Clients kann sein Interesse daher ganz auf die Präsentationsschicht
im Client focussieren. Er muss beisepielsweise keine Routinen für die Umsetzung
der business rules schreiben oder Code für den Datenbankzugang. Dadurch
wird der Client 'dünner'; er wird zum 'thin
client'. Das ist natürlich für Clients besonders wichtig, die
auf kleinen Geräten wie Handys oder PDAs laufen sollen.
Drittens sind Enterprise Beans portierbare Komponenten, d.h. ein application assembler kann aus vorhandenen Beans neue Applikationen zusammenstellen, die wiederum auf jedem kompatiblen J2EE Server laufen.
Wann sollte man Enterpries Beans benutzen?
Wenn folgende Ansprüche an die Appliaktion gestellt werden:
![]()
Wie sieht eine Enterprise Bean aus?
Jede EJB hat ein Home-Interface, die Schnittstelle zum Lebenszyklus einer EJB: Erzeugen, Löschen, Finden
Die Schnittstelle zu den Geschäftsfunktionen wird vom (Remote) Component Interface der EJB dargestellt: Geschäftsmethoden
Daneben verfügt sie über die eigentliche Bean-Klasse, die das gewünschte Verhalten implementiert : Geschäftsmethoden und Call-Back-Methoden.

Aufruf von EJBs
EJBs folgen dem Design Pattern 'Abstract Factory': Clients benutzen den Namensdienst
des Servers (JNDI), um ein Fabrikationobjekt zu finden, das eine Instanz der
gewünschten EJB liefern kann.
Das Fabrikationsobjekt implementiert das Home-Interface der EB.
Der Client erzeugt eine Instanz der EJBHome class. Der EJBContainer erzeugt
dann Instanzen der EJBObjekt class und der bean class.Der Client ruft die business
methods über das remote Interface auf.
Das Fabrikationsobjekt erzeugt/lädt eine Instanz der EB uind ein Proxy-Objekt,
auf dem der Client die Geschäftsmethoden der EJB aufrufen kann.
![]()
Das Home Interface
![]()
Das Home Interface ist die Schnittstelle zu den Lebenszyklus-Funktionen
einer EJB und wird von javax.ejb.EJBHome (für die remote view)
oder javax.ejb.LocalHome (für die local view) abgeleitet.
Der Client benutzt dieses Interface hauptsächlich, um Bean-Instanzen zu
erzeugen, sie zu finden, oder sie zu löschen .
|
![]()
Das (Remote) Component Interface
![]()
Das (remote) Component Interface bietet eine Schnittstelle zu den Methoden
an, die von einer Bean nach außen angeboten werden. Das Component Interface
macht die geforderte Funktionalität aus der
business logic nach außen sichtbar: E bietet an, 'was diese Bean
ist oder macht'.
Dieses Interface wird von javax.ejb.EJBObject (für die remote
view) oder javax.ejb.LocalObject (für die local view) abgeleitet.
Der Client kann nur so die Methoden aufrufen, die die Bean anbietet.
![]()
Die Enterprise Bean Class

Die Enterprise Bean Class sorgt für die eigentliche
Implementation der Geschäftsmethoden. Wenn ein Client eine Methode
am Component Interface aufruft, wird vom Container die entsprechende Geschäftsmethode
in der Enterprise Bean Class aufgerufen.
Je nachdem, ob es sich um eine Entity Bean, eine Session Bean oder eine Message-Driven
Bean handelt, wird die Bean Class von von javax.ejb.EntityBean, javax.ejb.SessionBean
oder javax.ejb.MessageDrivenBean abgeleitet.
| Typ der Enterprise Bean |
Zweck | Eselsbrücke |
|---|---|---|
| Session Bean |
Führt Aufgaben für den Client aus |
'mach dies und jenes' |
| Entity Bean |
Repräsentiert ein Objekt aus der Anwendungslogik
(business entity object), das im persistenten Speicher existiert |
'Ding' |
| Message-Driven Bean
|
arbeitet als Listener ('Horchdienst') für
die Java Message Service API für die Verarbeitung asynchroner Messages
|
'wartender Bote' |
18 -07-2002 Petra Haberer
Version 1.0.0