Für Projekte, die von EJB 1.1 in EJB 2.x konvertiert werden, müssen Schritte ausgeführt
werden, um vorhandenen EJB 1.1-Code auf EJB 2.x zu migrieren.
Informationen zu diesem Vorgang
Anmerkung: EJB 2.x-Beans werden nur in einem EJB 2.x-Projekt unterstützt (obwohl ein
2.x-Projekt auch 1.1-Beans unterstützt).
- Ersetzen Sie bei jeder 1.1-CMP-Bean alle CMP-Felder durch die
abstrakten Methoden getXXX und setXXX.
(Dann muss die Bean-Klasse abstrakt sein.)
- Erstellen Sie für alle CMPs eine abstrakte Methode getXXX und setXXX
für den Primärschlüssel.
- Erstellen Sie für alle CMP 1.1-Finder-Methoden eine EJBQL-Methode (EJB Query Language, EJB-Abfragesprache)
für die einzelnen Finder-Methoden.
Anmerkung: Für die EJB-Abfragesprache gelten in
Version 8.5.x Version 6.0 die folgenden Einschränkungen:
- Abfragen in EJB-Abfragesprache, bei denen EJBs
mit Schlüsseln verwendet werden, die aus
Beziehungen zu anderen EJBs bestehen, werden als
ungültig angezeigt und verursachen Fehler bei der
Implementierung.
- Die Unterstützung der IBM® EJB-Abfragesprache
erweitert die EJB 2.x-Spezifikation auf verschiedene Arten, z. B. werden einige Einschränkungen
verringert, Unterstützung für weitere DB2-Funktionen
wird hinzugefügt usw. Wenn die Portierbarkeit
zu Datenbanken verschiedener Anbieter oder das EJB-Implementierungstool eine Rolle spielen, muss sorgfältig darauf geachtet
werden, dass alle Abfragen in EJB-Abfragesprache streng nach den in Kapitel 11 der
EJB 2.x-Spezifikation aufgeführten Anweisungen geschrieben werden.
- Geben Sie für alle CMP 1.1-Finder java.util.Collection statt java.util.Enumeration zurück.
- Ändern Sie für alle CMP 1.1-Beans alle Vorkommen von this.field = value in setField(value) in ejbCreate(). Führen
Sie diese Änderung im übrigen Code ebenfalls durch.
- Aktualisieren Sie die Behandlung von Ausnahmen
(Rollbackverhalten) bei Ausnahmen, die nicht für
Anwendungen ausgegeben werden:
- Lösen Sie javax.ejb.EJBException anstelle von
java.rmi.RemoteException aus, um Ausnahmen zu
melden, die nicht für Anwendungen ausgegeben werden.
- In EJB 2.x und 1.1 führen alle nicht für Anwendungen von der Instanz ausgegebenen Ausnahmen
zu einem
Rollback der Transaktion, in der die Instanz ausgeführt
wurde, und zum Löschen der Instanz.
- Aktualisieren Sie die Behandlung von Ausnahmen (Rollbackverhalten) für Anwendungsausnahmen wie folgt:
- In EJB 2.x und 1.1 führt eine Anwendungsausnahme nicht dazu, dass der Container automatisch
einen Rollback einer Transaktion durchführt.
- In EJB 1.1 führt der Container den Rollback nur durch, wenn die Instanz mithilfe
der Methode setRollbackOnly() für das zugehörige EJBContext-Objekt aufgerufen wurde.
- Aktualisieren Sie alle CMP-Einstellungen anwendungsspezifischer Standardwerte so, dass diese sich innerhalb von ejbCreate befinden. (Verwenden
Sie dazu keine globalen Variablen, da EJB 1.1-Container alle Felder auf generische
Standardwerte setzen, bevor sie ejbCreate aufrufen und dadurch alle vorherigen
anwendungsspezifischen Standardwerte überschreiben.)