EJB 2.x-Architektur

Dieses Thema bietet einen problemorientierten Überblick über die verteilte Komponentenarchitektur, wie sie in Version 2.x 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 verfügbar.

,Enterprise-Beans bieten verschiedene Vorteile für Anwendungsentwickler, und zwar:

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 und nachrichtengesteuerte Beans sind allgemein definierte Komponenten für den Entwurf von Geschäftsprozessen, während Entity-Beans verwendet werden, um differenzierte Datenobjekte zu modellieren.
  • Session-Beans: Session-Beans sind nicht persistente Enterprise-Beans. Sie können statusabhängig (stateful) oder statusunabhängig (stateless) sein.
    • Statusabhängige Session-Beans: Diese arbeiten für einen einzelnen Client und verwaltet clientspezifische Sitzungsdaten (auch Dialogstatus genannt) über mehrere Methodenaufrufe und Transaktionen hinweg. Sie existieren für die Dauer einer einzigen Client/Server-Sitzung.
    • Statusunabhängige Session-Beans: Diese verwalten keinen Dialogstatus und werden im zugehörigen Container als Pool verwaltet, um Mehrfachanforderungen von mehreren Clients zu verarbeiten.
  • Entity-Beans: Entity-Beans sind Enterprise-Beans, die persistente Daten enthalten und die 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. Die ferne Clientsicht besteht aus zwei Schnittstellen.
  • 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. Die lokale Clientsicht besteht aus zwei Schnittstellen.
  • 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.
Ansicht 'Web-Service-Client'
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, die die Clientschnittstellen enthalten kann, die ein Clientprogramm verwenden muss und die Clientsichten der Enterprise-Beans, 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.