Hinweise zu Modulen der EJB Version 3.x
Wenn Sie Module der Enterprise JavaBeans (EJB) Version 3.x verwenden, müssen Sie die folgenden Hinweise beachten.
Version 8.0 unterstützt keine Entity-Beans der Version 1.x und 2.x in Modulen der EJB Version 3.x
IBM® WebSphere Application Server Version 8.0 unterstützt keine BMP-Entity-Beans (Bean-managed Persistence, über JavaBeans realisierte Transaktionspersistenz) und CMP-Entity-Beans (Container-managed Persistence, über Container realisierte Transaktionspersistenz) der Version 1.x und 2.x in Modulen der EJB Version 3.x. EJB-Entity-Beans können in Version 8.0 zwar noch verwendet werden, müssen aber in ein Modul der EJB Version 2.1 oder früher gepackt werden.
Java-EE-Anwendungen (Java Platform, Enterprise Edition), in die EJB-Entity-Beans in Modulen der EJB Version 3.x gepackt sind, können unter Version 8.0 nicht installiert werden.
- Die EJB-JAR-Datei enthält Konfigurationsdaten in einer Datei
ejb-jar.xml mit einer Headerspezifikation der EJB Version 3.0 oder EJB Version 3.1.
Beispiel:
<ejb-jar id="ejb-jar_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
- Die EJB-JAR-Datei enthält Beans mit Quellenannotationen der EJB Version 3.x, die Konfigurationsdaten bereitstellen. Eine Implementierungsdeskriptordatei des Typs ejb-jar.xml ist nicht enthalten.
Sie müssen Ihre Module der EJB Version 3.x mit Modulen der EJB Version 2.x und früher erneut packen. Andernfalls scheitert die Installation von Anwendungen, die Entity-Beans enthalten.
Annotationen
Prüfen Sie, ob Sie Annotationen und/oder Implementierungsdeskriptoren verwenden möchten. Weitere Informationen zu Annotationen finden Sie im Artikel "Annotationen für Metadaten der EJB Version 3.x".
EJB-Modul
WebSphere Application Server Version 8.0 unterstützt JAR-Dateien (Java™-Archive) für EJB-Module mit einem Implementierungsdeskriptor ejb-jar.xml der Version 1.1, 2.0, 2.1, 3.0 oder 3.1 oder ohne Implementierungsdeskriptor ejb-jar.xml. Wenn kein Implementierungsdeskriptor vorhanden ist, wird von einem EJB-Modul der Version 3.0 oder höher ausgegangen.
EJB-Module, die Beans der EJB Version 3.x enthalten, müssen mit Version EJB 3.0 oder EJB 3.1 deklariert werden. Dazu muss entweder der Implementierungsdeskriptor ejb-jar.xml auf Version 3.0 oder 3.1 aktualisiert werden, oder es muss sichergestellt sein, dass das Modul keinen Implementierungsdeskriptor ejb-jar.xml enthält. Wenn die Modulversion 2.1 oder eine ältere Version verwendet wird, werden keine für EJB 3.x spezifischen Funktionen wie das Durchsuchen von Annotationen oder die Ressourceninjektion verwendet.
Entity-Beans werden in Modulen der EJB Version 3.x nicht unterstützt. Sie müssen alle Entity-Beans in Module der EJB Version 2.1 packen.
Zum Packen eines Moduls der EJB Version 3.x mit einem Implementierungsdeskriptor stehen mehrere Methoden zur Verfügung: Packen eines Moduls der EJB Version 3.x ausschließlich mit einer Session-Bean der EJB Version 3.x und einer nachrichtengesteuerten Bean, ausschließlich mit einer Session-Bean der EJB Version 2.1 und einer 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.0 oder 3.1 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.0 oder EJB 3.1 haben. Bereiten Sie das EJB-Modul für die Unterstützung von Beans der EJB Version 3.x vor, indem Sie die Version im Implmentierungsdeskriptor ejb-jar.xml auf Version 3.0 oder 3.1 setzen oder sicherstellen, dass das Modul keinen Implementierungsdeskriptor ejb-jar.xml enthält. Wenn das EJB-Modul die Stufe 2.1 oder eine frühere Stufe verwendet, werden zur Ausführungskeite keine Funktionen der EJB Version 3.x, einschließlich Annotationssuche oder Ressourceninjektion, ausgeführt.
Java-EE-Anwendungsclientmodul
Das Produkt unterstützt Java-EE-Anwendungsclientmodule. Außerdem unterstützt es die Injektion von EJB-Referenzen in Clientkomponenten, wenn die Injektion über die Annotation @EJB definiert wird.
ejb-ref-Referenz auf eine Geschäftsschnittstelle der EJB Version 3.x über einen Java-EE-Clientkomponentendeskriptor definieren
Es ist möglich, eine ejb-ref-Referenz über einen Deskriptor application-client.xml zu definieren, der auf eine Geschäftsschnittstelle der EJB Version 3.x verweist. Der Zugriff auf Geschäftsschnittstellen der EJB Version 3.x erfolgt direkt und ohne Home-Schnittstelle, das Element "ejb-ref" in Java EE setzt jedoch voraus, dass eine Home-Schnittstelle angegeben wird. Daher müssen Sie die Zeilengruppe <home></home> in der Definition von ejb-ref einschließen, jedoch, wie im Beispiel gezeigt, einen Nullwert angeben. Geben Sie als Wert der Zeilengruppe <remote> den Klassennamen der Geschäftsschnittstelle von EJB 3.x an. Wenn Sie den Bindungswert bei der Anwendungsinstallation oder mit Tools setzen, geben Sie an, wo die Geschäftsschnittstelle von EJB 3.x gebunden wurde.
<ejb-ref id="EJBRef_1">
<ejb-ref-name>java_comp-env_name_of_ref</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home></home>
<remote>com.ejbs.business.interface.class.name</remote>
</ejb-ref>
Der entsprechende Abschnitt der Datei ibm-application-client-bnd.xmi
würde etwa im folgenden Codebeispiel aussehen. Hier wird ein Muster für die EJB-Standardbindung verwendet. Die Konventionen für die EJB-Standardbindung sind in dem
Artikel, der sich mit der Unterstützung von Anwendungsbindungen der EJB Version 3.x befasst, beschrieben. <ejbRefBindings xmi:id="EjbRefBinding_1"
jndiName=EJB3App/EJB3Mod.jar/MyBean##com.ejbs.business.interface.class.name">
<bindingEjbRef href="application-client.xml#EjbRef_1"/>
</ejbRefBindings>