Dieses Thema bietet einen problemorientierten Überblick über die verteilte Komponentenarchitektur
wie sie in der Architekturspezifikation für Sun Microsystems Enterprise JavaBeans
(EJB) definiert ist.
Die vollständigen Spezifikationen für Enterprise JavaBeans und Beschreibungen der Technologie
sind auf der Website java.sun.com [/concept/conbody/p/xref/desc
{"- topic/desc "}) (desc] verfügbar.
Enterprise-Beans bieten verschiedene Vorteile für Anwendungsentwickler:
- Sie ermöglichen das Erstellen verteilter Anwendungen durch Kombinieren von Komponenten,
die mit Tools verschiedener Anbieter entwickelt wurden.
- Sie vereinfachen das Schreiben von Anwendungen. Der Programmierer muss sich nicht mit
allen Einzelheiten von Transaktions- und Statusverwaltung, Multithreading, Ressourcenpooling
und anderen komplexen APIs der unteren Ebene befassen. Bei Bedarf können versierte Programmierer jedoch auf
die APIs der unteren Ebene direkt zugreifen.
- Sie können einmal entwickelt und anschließend auf mehreren Plattformen implementiert werden, und zwar ohne
erneute Kompilierung oder Quellcodeänderung.
- Die EJB-Spezifikation, der die Verwendung von Enterprise-Beans unterliegt, ist mit anderen
Java-APIs und mit CORBA kompatibel. Sie ermöglicht außerdem die Interoperabilität zwischen
Enterprise-Beans und Nicht-Java-Anwendungen.
- Enterprise-Beans
- Eine Enterprise-Bean ist eine nicht grafische Komponente einer verteilten,
transaktionsorientierten Unternehmensanwendung. Enterprise-Beans werden normalerweise
in EJB-Containern implementiert und auf EJB-Servern ausgeführt. Sie können durch Ändern
der zugehörigen Implementierungsdeskriptoren angepasst und mit anderen Beans kombiniert
werden, um neue Anwendungen zu erstellen. Es gibt drei Arten von Enterprise-Beans: Session-Beans,
Entity-Beans und nachrichtengesteuerte Beans.
- Session-Beans: Session-Beans sind nicht
persistente Enterprise-Beans. Sie können statusabhängig (stateful) oder statusunabhängig (stateless)
sein. Eine statusabhängige Session-Bean arbeitet für einen einzelnen Client und verwaltet
clientspezifische Sitzungsdaten (auch Dialogstatus genannt) über mehrere Methodenaufrufe und
Transaktionen hinweg.
Es existiert für die Dauer einer einzigen Client/Server-Sitzung. Eine statusunabhängige Session-Bean hingegen verwaltet keinen Dialogstatus.
Statusunabhängige Session-Beans werden im zugehörigen Container als Pool verwaltet, um
Anforderungen von mehreren Clients zu verarbeiten.
- Entity-Beans: Entity-Beans sind Enterprise-Beans, die persistente Daten
enthalten und in verschiedenen persistenten Datenspeichern gespeichert werden können. Jede Entity-Bean verfügt über eine eigene Identität. Entity-Beans, die ihre eigene
Persistenz verwalten, werden als BMP-Entity-Beans (bean-managed persistence, beangesteuerte Persistenz)
bezeichnet. Entity-Beans, die ihre Persistenz an ihren EJB-Container delegieren, werden als
CMP-Entity-Beans (container-managed persistence, containergeseteuerte Persistenz) bezeichnet.
- Nachrichtengesteuerte Beans: Nachrichtengesteuerte Beans sind Enterprise-Beans,
die JMS-Nachrichten empfangen und verarbeiten. Im Unterschied zu Session- und Entity-Beans
verfügen nachrichtengesteuerte Beans nicht über Schnittstellen. Sie können nur über Nachrichtenübertragung
aufgerufen werden, und sie verwalten keine Dialogstatus. Nachrichtengesteuerte Beans ermöglichen
asynchrone Übertragung zwischen der Warteschlange und dem Listener, und sie trennen Nachrichtenverarbeitung
und Geschäftslogik voneinander.
- Ferne Clientsicht
- Die Spezifikation Ferne Clientsicht wurde in EJB 1.1
eingeführt. Die ferne Clientsicht einer Enterprise-Bean ist positionsunabhängig.
Ein Client, der in derselben JVM wie eine Bean-Instanz ausgeführt wird, greift über dieselbe
API auf die Bean zu wie ein Client, der in einer anderen JVM auf derselben oder einer anderen
Maschine ausgeführt wird.
- Remote-Schnittstelle: Die Remote-Schnittstelle gibt an,
welche fernen Geschäftsmethoden ein Client auf einer Enterprise-Bean aufrufen kann.
- Remote-Home-Schnittstelle: Die Remote-Home-Schnittstelle gibt an, welche Methoden
von fernen Clients zum Lokalisieren, Erstellen und Entfernen von Instanzen der Enterprise-Bean-Klassen
verwendet werden.
- Lokale Clientsicht
- Die Spezifikation der lokalen Clientsicht ist seit EJB 2.0 verfügbar. Im Unterschied zur fernen Clientsicht ist die lokale Clientsicht einer Bean
positionsabhängig. Für den Zugriff einer lokalen Clientsicht auf eine
Enterprise-Bean müssen sich der lokale Client und die Enterprise-Bean
in derselben JVM befinden. Daher stellt die lokale Clientsicht nicht die
Positionsunabhängigkeit bereit, die von der fernen Clientsicht
bereitgestellt wird. Lokale Schnittstellen und lokale Home-Schnittstellen
bieten Unterstützung für reduzierten Zugriff von Enterprise-Beans, die lokale
Clients sind. Session- und Entity-Beans können eng mit ihren Clients gekoppelt sein
und ermöglichen so den Zugriff ohne den Systemaufwand, der normalerweise mit
Remote-Methodenaufrufen verbunden ist.
- Lokale Schnittstelle: Die
lokale Schnittstelle ist eine reduzierte Version der Remote-Schnittstelle
für lokale Clients. Sie enthält Methoden für Geschäftslogik, die von einem
lokalen Client aufgerufen werden können.
- Lokale Home-Schnittstelle: Die lokale Home-Schnittstelle gibt an, welche
Methoden von lokalen Clients zum Lokalisieren, Erstellen und Entfernen von Instanzen der
Enterprise-Bean-Klassen verwendet werden.
- Web-Service-Clientsicht
- In der Spezifikation EJB 2.1 wurde die Unterstützung für Web-Services in die EJB-Architektur
eingeführt. Ein Client für ein Session-Bean kann ein Web-Service-Client sein.
Ein Web-Service-Client kann die Web-Service-Clientsicht einer statusunabhängigen Session-Bean
verwenden, die über eine entsprechende Serviceendpunktschnittstelle verfügt.
- Serviceendpunktschnittstelle
- Die Serviceendpunktschnittstelle für eine statusunabhängige Session-Bean
stellt die Funktionalität der Session-Bean als Web-Service-Endpunkt dar. Das WSDL-Dokument (WSDL = Web Service
Description Language) für einen Web-Service beschreibt den Web-Service als Gruppe von Endpunkten, die
auf Nachrichten reagiert. Ein WSDL-Dokument kann die Serviceendpunktschnittstelle einer statusunabhängigen
Session-Bean als einen seiner Endpunkte enthalten.
Eine vorhandene statusunabhängige Session-Bean kann so modifiziert werden, dass sie eine
Web-Service-Clientsicht enthält, oder eine Serviceendpunktschnittstelle kann von einem
vorhandenen WSDL zugeordnet werden, um die richtige Schnittstelle bereitzustellen.
Ein Web-Service-Client ist positionsunabhängig und kann über Remotezugriffe aufgerufen
werden.
- JAR-Datei für EJB-Client
- Eine JAR-Datei für EJB-Client ist eine optionale JAR-Datei und kann die Clientschnittstellen
enthalten, die ein Clientprogramm benötigt, um die Clientsichten der Enterprise-Beans zu
nutzen, die in der EJB-JAR-Datei enthalten sind. Wenn Sie für ein EJB-Modul keine JAR-Datei
für EJB-Client erstellen, sind alle Clientschnittstellenklassen in der EJB-JAR-Datei
enthalten. Standardmäßig erstellt die Workbench JAR-Projekte für EJB-Clients für jedes
entsprechende EJB-Projekt.
- EJB-Container
- Ein EJB-Container ist eine Laufzeitumgebung, die mindestens eine
Enterprise-Bean verwaltet. Der EJB-Container verwaltet die Lebenszyklen von
Enterprise-Bean-Objekten, koordiniert verteilte Transaktionen und implementiert
die Objektsicherheit. In der Regel wird jeder EJB-Container von einem EJB-Server
bereitgestellt und enthält eine Gruppe von Enterprise-Beans, die auf dem Server
ausgeführt werden.
- Implementierungsdeskriptor
- Ein Implementierungsdeskriptor ist eine XML-Datei, die zusammen mit den
Enterprise-Beans in eine EJB-JAR-Datei oder eine EAR-Datei gepackt ist. Sie enthält
Metadaten, die den Inhalt und die Struktur der Enterprise-Beans beschreiben sowie
Informationen zu Laufzeittransaktionen und Sicherheit für den EJB-Container.
- EJB-Server
- Ein EJB-Server ist ein Prozess oder eine Anwendung auf hoher Ebene, der bzw. die
eine Laufzeitumgebung zur Unterstützung der Ausführung von Serveranwendungen bereitstellt,
die Enterprise-Beans verwenden. Ein EJB-Server stellt einen JNDI-fähigen Namensservice bereit,
der die Zuordnung von Ressourcen zu Clientanwendungen verwaltet und koordiniert, Zugriff auf
Systemressourcen bietet und einen Transaktionsservice zur Verfügung stellt. Ein EJB-Server
kann beispielsweise von einer Datenbank oder einem Anwendungsserver bereitgestellt werden.