Für Projekte, die von EJB 1.1 in EJB 2.x konvertiert wurden, müssen zur Migration von
vorhandenem EJB 1.1-Code auf EJB 2.x bestimmte Schritte ausgeführt werden.
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 Beanklasse abstrakt sein.)
- Erstellen Sie für jede CMP eine abstrakte Methode getXXX und
setXXX für den Primärschlüssel.
- Erstellen Sie für jede CMP 1.1-Finder-Methode eine EJBQL-Methode (EJBQL, EJB Query Language) für jede
Finder-Methode.
Anmerkung: Für die EJB Query Language gelten in
Rational Application
Developer V6.0 die folgenden Einschränkungen:
- EJB Query Language-Abfragen, 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 IBM EJB Query Language-Unterstützung erweitert die EJB 2.x-Spezifikation auf
verschiedene Arten, beispielsweise durch das Aufheben einiger Einschränkungen und
das Hinzufügen von Unterstützung für weitere DB2-Funktionen usw. Wenn die Portierbarkeit
zu Datenbanken anderer Hersteller oder das EJB-Implementierungstool Probleme verursachen, muss sorgfältig darauf geachtet
werden, dass alle Abfragen in EJB Query Language streng nach den in Kapitel 11 der
EJB 2.x-Spezifikation aufgeführten Anweisungen geschrieben werden.
- Geben Sie für jeden 1.1-CMP-Finder java.util.Collection statt java.util.Enumeration zurück.
- Ändern Sie für jede 1.1-CMP-Bean alle Vorkommen von this.field = value in setField(value) in
ejbCreate() und an den anderen Stellen im gesamten Code.
- Aktualisieren Sie die Behandlung von Ausnahmebedingungen
(ROLLBACK-Verhalten) bei Ausnahmebedingungen, die nicht für
Anwendungen ausgegeben werden:
- Lösen Sie javax.ejb.EJBException anstelle von
java.rmi.RemoteException aus, um Ausnahmebedingungen zu
melden, die nicht für Anwendungen ausgegeben werden.
- In EJB 2.x und 1.1 führen alle Ausnahmebedingungen, die
durch das Exemplar nicht für Anwendungen ausgegeben werden, zu einer
ROLLBACK-Operation der Transaktion, in der das Exemplar ausgeführt
wurde, und zum Löschen des Exemplars.
- Aktualisieren Sie die Behandlung von Ausnahmebedingungen
(ROLLBACK-Verhalten)
bei Ausnahmebedingungen für Anwendungen:
- In EJB 2.x und 1.1 führt eine Ausnahmebedingung für Anwendungen
nicht dazu, dass der Container automatisch eine ROLLBACK-Operation
für die Transaktion ausführt.
- In EJB 1.1 führt der Container die ROLLBACK-Operation nur
dann aus, wenn das Exemplar unter Verwendung der Methode setRollbackOnly() für sein Objekt "EJBContext"
aufgerufen wurde.
- Aktualisieren Sie sämtliche CMP-Einstellungen von anwendungsspezifischen Standardwerten, sodass sie sich in ejbCreate befinden (verwenden Sie dabei keine globalen Variablen, da EJB 1.1-Container alle Felder auf generische Standardwerte setzten, bevor sie ejbCreate aufrufen; dadurch werden alle vorherigen anwendungsspezifischen Standardeinstellungen überschrieben).