Enterprise-Bean-Code von Version 1.1 auf Version 2.1 migrieren

Beans, die mit der Spezifikation Enterprise JavaBeans (EJB) Version 2.1 konform sind, können nur ein einem EJB-2.1-konformen Modul assembliert werden, obwohl ein EJB-2.1-konformes Modul eine Mischung aus Beans der Version 1.x und Beans der Version 2.1 enthalten kann.

Informationen zu diesem Vorgang

Version 2.1 der EJB-Spezifikation schreibt zwingend vor, dass der Status aller in der aktuellen Transaktion aufgelisteten Enterprise-Beans mit dem persistenten Speicher synchronisiert werden muss, bevor der EJB-Container eine Abfrage findByMethode ausführt. (Diese Aktion ist notwendig, damit die Abfrage an die aktuellen Daten gerichtet wird.) Werden Beans der Version 1.1 erneut zu einem Modul gemäß EJB 2.1 assembliert, synchronisiert der EJB-Container sowohl den Status von Beans der Version 1.1 als auch von Beans der Version 2.1. Im Ergebnis dieses Prozesses kann es zu Änderungen des Anwendungsverhaltens kommen, obwohl sich der Anwendungscode der Beans von Version 1.1 nicht geändert hat.

Die folgenden Informationen gelten generell für alle Enterprise-Beans, die derzeit Version 1.1 der EJB-Spezifikation entsprechen. Nähere Informationen zur Migration von Code für Beans, der mit Rational Application Developer erzeugt wurde, finden Sie in der Dokumentation zu diesem Produkt.

Vorgehensweise

  1. In Beans mit CMP (Container-Managed Persistence) Version 1.x müssen Sie jedes CMP-Feld durch abstrakte Getter- und Setter-Methoden ersetzen. Dabei machen Sie aus jeder Bean-Klasse eine abstrakte Klasse.
  2. Ändern Sie in Beans mit CMP Version 1.x alle Vorkommen von dieses.Feld = Wert in setFeld(Wert).
  3. Erstellen Sie in jeder CMP-Bean abstrakte Getter- und Setter-Methoden für den Primärschlüssel.
  4. Erstellen Sie in Beans mit CMP Version 1.x für jede Finder-Methode eine Anweisung in EJB Query Language.
    Anmerkung: EJB Query Language hat in Application Developer Version 5 die folgenden Einschränkungen:
    • Abfragen mit EJB Query Language, die Beans mit Schlüsseln verwenden, die sich aus Beziehungen zu anderen Beans zusammensetzen, sind ungültig und lösen während der Implementierung Fehler aus.
    • Die IBM Unterstützung für EJB Query Language erweitert die Spezifikation EJB 2.1, indem sie verschiedene Einschränkungen lockert, weitere DB2-Funktionen unterstützt usw. Wenn die Portierbarkeit auf mehrere Anbieterdatenbanken oder EJB-Implementierungstools wichtig für Sie ist, müssen Sie sich beim Schreiben der Anfragen mit EJB Query Language streng an die Anweisungen halten, die in Kapitel 11 der Spezifikation EJB 2.1 beschrieben sind.
  5. Geben Sie in Finder-Methoden für Beans mit CMP Version 1.x java.util.Collection an Stelle von java.util.Enumeration zurück.
  6. Aktualisieren Sie die Handhabung von anwendungsunabhängigen Ausnahmen.
    • Für die Meldung anwendungsunabhängiger Ausnahmen müssen Sie javax.ejb.EJBException an Stelle von java.rmi.RemoteException auslösen.
    • Ändern Sie das Verhalten von ROLLBACK-Operationen nach Bedarf: In den EJB-Versionen 1.1 und 2.1 führen alle von der Bean-Instanz ausgelösten anwendungsunabhängigen Ausnahmen dazu, dass die Transaktion, in der die Instanz ausgeführt wird, zurückgesetzt wird (ROLLBACK). Die Instanz wird gelöscht. In EJB 1.0 setzt der Container die Transaktion nicht zurück und löscht die Instanz nicht, wenn sie java.rmi.RemoteException auslöst.
  7. Aktualisieren Sie das ROLLBACK-Verhalten im Falle von Anwendungsausnahmen.
    • In den EJB-Versionen 1.1 und 2.1 führt eine Anwendungsausnahme nicht dazu, dass der EJB-Container die Transaktion automatisch zurücksetzt (ROLLBACK).
    • In EJB Version 1.1 führt der Container die ROLLBACK-Operation nur aus, wenn die Instanz setRollbackOnly() für ihr EJBContext-Objekt aufgerufen hat.
    • In EJB Version 1.0 muss der Container eine Transaktion zurücksetzen (ROLLBACK), wenn eine Anwendungsausnahme über die Grenze einer vom Container gestarteten Transaktion hinweg übergeben wird.
  8. Aktualisieren Sie die CMP-Einstellungen aller anwendungsspezifischen Standardwerte innerhalb von ejbCreate (nicht mit globalen Variablen, da EJB-1.1-Container alle Felder auf generische Standardwerte setzt, bevor er die Methode ejbCreate aufruft, die alle vorherigen anwendungsspezifischen Standardwerte überschreibt). Dieses Konzept funktioniert auch für EJB-1.0-CMPs.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_migr20
Dateiname:tejb_migr20.html