Ein EJB-Modul (Enterprise JavaBeans)
wird verwendet, um eine oder mehrere Enterprise-Beans zu einer implementierbaren
Einheit zusammenzustellen (assemblieren). EJB-Module werden in einer Standard-JAR-Datei
(Java™ Archive) gespeichert.
Ein EJB-Modul enthält folgende Elemente:
- Mindestens eine implementierbare Enterprise-Bean.
- Einen Implementierungsdeskriptor, der in einer XML-Datei (Extensible Markup Language)
gespeichert ist. Diese Datei deklariert den Inhalt des Moduls, definiert die Struktur und
die externen Abhängigkeiten der Beans im Modul und beschreibt, wie die Beans zur
Laufzeit zu verwenden sind.
Die Verwendung von XML-Implementierungsdeskriptoren
in Modulen der EJB Version 3.x ist nicht erforderlich, wird aber unterstützt.
Anstelle der Implementierungsdeskriptoren können Sie Annotationen verwenden, um die Metadaten der Komponente bereitzustellen.
EJB-Module können als eigenständige Anwendung implementiert oder mit anderen
EJB-Modulen oder Webmodulen zu einer Java-Anwendung kombiniert werden.
EJB-Module werden in einem Enterprise-Bean-Container installiert und ausgeführt.
Zum Packen eines Moduls der EJB Version 3.x
mit einem Implementierungsdeskriptor stehen mehrere Methoden zur Verfügung:
Paketieren eines Moduls der EJB Version 3.x ausschließlich mit einer
Session-Bean der EJB Version 3.x und/oder nachrichtengesteuerten Bean,
ausschließlich mit einer EJB-2.1-Session-Bean und/oder nachrichtengesteuerten Bean,
oder mit einer Kombination von Beans der Version 2.1 und der Version 3.x.
Der XML-Implementierungsdeskriptor muss ein Implementierungsdeskriptor der
Version 3.x sein. Entity-Beans der Version 2.1 müssen mit Implementierungsdeskriptoren der Version 2.1
in Module paketiert werden.
EJB-Module, die Beans der EJB Version 3.x enthalten, müssen bei ihrer Ausführung im Produkt
die Spezifikationsstufe EJB 3.x erfüllen.
Wenn Sie das EJB-Modul für die Unterstützung von Beans der EJB Version 3.x definieren möchten,
können Sie den Implementierungsdeskriptor
"ejb-jar.xml" auf Version 3.0 oder 3.1 setzen, um sicherzustellen, dass das Modul
den Implementierungsdeskriptor "ejb-jar.xml" nicht enthält.
Wenn das EJB-Modul die Stufe
2.1 oder eine frühere Stufe verwendet, werden zur Ausführungszeit keine
Funktionen der EJB Version 3.x, einschließlich Annotationssuche oder Ressourceninjektion, ausgeführt.
Weitere Informationen zum Packen und zur Implementierung von Beans der EJB Version 3.x finden Sie in der Übersicht über das Packen
von Modulen der EJB Version 3.x.
Sichten des lokalen Clients
Die EJB-Spezifikation erfordert, dass lokale Clientsichten
nur für EJBs, die in einer Anwendung gepackt sind, unterstützt werden. Das schließt lokale Home-Schnittstellen, lokale Geschäftsschnittstellen und
Sichten ohne Schnittstellen ein. Das Produkt lässt den Zugriff auf lokale Clientsichten für EJBs, die in einer eigenständigen Anwendung gepackt sind,
mit folgenden Einschränkungen zu:
- Die lokale Schnittstelle und alle Parameter-, Rückgabe- und Ausnahmetypen, die von der lokalen Schnittstelle verwendet werden,
müssen sowohl für den Klassenlader der aufrufenden Anwendung als auch den Klassenlader der EJB-Zielanwendung sichtbar sein. Sie können das sicherstellen,
indem Sie entweder eine gemeinsam genutzte Bibliothek, die einem Serverklassenlader zugeordnet ist, oder eine isolierte gemeinsam genutzte Bibliothek,
die beiden Anwendungen zugeordnet ist, verwenden.
Weitere Informationen finden Sie im Artikel "Gemeinsam genutzte Bibliotheken erstellen".
- Wenn die EJB-Zielanwendung gestoppt ist, müssen alle zwischengespeicherten Referenzen auf die EJB aktualisiert werden. Dazu können Sie
eine der folgenden Aktionen ausführen:
- Starten Sie die aufrufende Anwendung erneut. Am einfachsten ist es, die aufrufende Anwendung immer beim Neustart einer
EJB-Zielanwendung, auf die sie sich stützt, erneut zu starten.
- Rufen Sie eine neue Referenz aus JNDI ab.
Standardmäßig werden JNDI-Suchvorgänge im Java-Namespace zwischengespeichert, und der Cache muss entweder inaktiviert oder gelöscht werden, wenn
eine neue Referenz abgerufen werden soll. Weitere Informationen finden Sie im Artikel "Anwendungen entwickeln, die JNDI verwenden".
Wenn
die EJB-Anwendung gestoppt wurde, lösen EJB-Methodenaufrufe die Ausnahme com.ibm.websphere.ejbcontainer.EJBStoppedException aus. Wenn
Sie die EJB-Referenz mit einer "@EJB"-Injektion oder einer JNDI-Suche in einer Instanzvariable
zwischengespeichert haben, können Sie diese Ausnahme abfragen und die EJB-Referenz durch Ausführen einer nicht zwischengespeicherten Suche
aktualisieren.
- Aktivieren Sie indirekte lokale EJB-Proxys für die EJB-Zielanwendung.
Das hat zur Folge, dass der lokale EJB-Proxy beim Neustart der Anwendung automatisch aktualisiert wird. Das Aktivieren indirekter lokaler Proxys
verursacht zusätzlichen Systemaufwand für jeden EJB-Methodenaufruf.
Sie können indirekte lokale Proxys beispielsweise über eine Administrationskonsole
aktivieren. Klicken Sie auf . Geben Sie für die angepasste Eigenschaft den Namen com.ibm.websphere.ejbcontainer.indirectLocalProxies mit dem Wert
true an, wenden Sie die Änderungen an, und speichern Sie sie.