Migration von JavaServer Faces-Ressourcen mit Faces Client-Komponenten

Wenn Sie in WebSphere Studio V5.1.x Projekte erstellt haben, die Faces Client-Komponenten in JavaServer Pages (JSPs) von JavaServer Faces enthalten, müssen Sie die Laufzeitressourcen der Faces Client-Komponenten auf den jeweils neuesten Stand migrieren.

Nachdem Sie in V6.0 ein Projekt geöffnet haben, das JSPs von JavaServer Faces mit Faces Client-Komponenten enthält, die in WebSphere Studio V5.1.x erstellt wurden, müssen Sie die Laufzeitressourcen der Faces Client-Komponenten wie folgt migrieren:
  1. Erstellen Sie eine neue JSP-Datei und wählen Sie als Modell Basis mit Zwischenspeicherung auf der Client-Seite aus. Diese JSP wird nur temporär benötigt, damit Rational Application Developer alle Java-Archivdateien (JAR-Dateien) des Systems auf den jeweils neuesten Stand migriert.
  2. Sie werden darauf hingewiesen, dass Sie die Laufzeitressourcen für das Projekt auf den jeweils neuesten Stand migrieren können. Wählen Sie Ja aus, um den Migrationsprozess vollständig aufzuführen. Wichtig: Wenn Sie Nein auswählen oder das Dialogfenster schließen, werden die Faces Client-Komponenten Ihres Projekts nicht auf den neuesten Stand migriert und Sie erhalten den Hinweis nicht erneut. Dies führt zu mehreren schwerwiegenden Problemen zwischen den neuen Tools und den alten JAR-Dateien der Laufzeit.
  3. Nach Erstellung der neuen JSP-Datei können Sie sie aus dem Projekt löschen.
  4. Wählen Sie im Clientdatenbereich ein beliebiges Datenobjekt aus, klicken Sie mit der rechten Maustaste und wählen Sie Konfigurieren aus. Wählen Sie auf der Registerkarte Erweitert die Option für Alle erneut generieren aus. Dadurch werden alle Ihre Mediatoren erneut generiert.
    Anmerkung: Verwenden Sie nicht die Schaltfläche Erneut aus serverseitigen Daten generieren. Sie müssen die Option für Alle erneut generieren verwenden.
  5. In Version 5.12 gibt es WDO-Schemaelemente (WDO = WebSphere Data Objects), die in Version 6.0 nicht mehr verwendet werden. Die Mediatorklassen für diese Elemente werden nicht erneut generiert und verursachen weiterhin Fehler bei der Kompilierung. Diese Mediatoren folgen der Namenskonvention '*_DataGraphSchema_wdo4js_*.java'. Löschen Sie diese Mediatorklassen aus Ihrem Projekt, um diese Kompilierungsfehler zu vermeiden.
Wenn Sie auf einer Linux-Plattform arbeiten oder eine andere als die englische Ländereinstellung verwenden: Wenn die Projekte in Version 6.0 geladen werden, bevor Sie die zuvor beschriebenen Schritte ausführen, um Ihre in WebSphere Studio V5.1.x erstellen Projekte zu migrieren, die Faces Client-Komponenten auf JSPs von JavaServer Faces enthalten, wird unter Umständen eine Fehlernachricht mit folgendem Inhalt angezeigt:
Projekt
kann nicht geladen werden, da <klassenname>.java nicht gelesen werden konnte. 
Die Dateien konnten nicht gelesen werden, da die Mediatorklassen der Clientdaten im V5.1.x/Projekt unverschlüsselte Sonderzeichen enthalten kann, während die Mediatorklassen in Rational Application Developer V6.0 diese Sonderzeichen verschlüsseln. Diese Fehlernachrichten werden nicht mehr angezeigt, sobald Sie Ihre Clientdaten anhand der vorstehend beschriebenen Schritte erneut generiert haben. Bevor Sie jedoch diese Schritte ausführen, um Ihr Projekt mit Faces Client-Komponenten zu migrieren, müssen Sie zunächst die Mediatordateien der Clientdaten aus dem in V6.0 geladenen Projekt löschen, damit Ihr Arbeitsbereich erstellt werden kann. Um die Mediatordateien der Clientdaten zu löschen, gehen Sie wie folgt vor:
  1. Löschen Sie aus Ihrem Projekt alle Mediatorklassenpakete von Clientdaten, die der Namenskonvention 'com.ibm.dynwdo4jsmediators.<clientdatenname>' folgen.
  2. Löschen Sie NICHT das Paket namens 'com.ibm.dynwdo4jsmediators'. Dieses Paket enthält Metadaten (ecore- und emap-Dateien) für die Clientdaten in Ihrem Projekt, die zum erneuten Generieren der Mediatoren verwendet werden.
  3. Nach dem Löschen der Mediatorpakete wird Ihr Projekt erstellt und Sie können die zuvor beschriebenen Migrationsschritte ausführen.

In einigen Fällen wird die Nachricht Mediatorgenerierung ist fehlgeschlagen angezeigt. Um dieses Problem zu korrigieren, müssen Sie in der Datei 'OdysseyBrowserFramework.properties' die Einträge für die Eigenschaften EMAP_FILES und ECORE_FILES löschen und den Vorgang wiederholen.

Anmerkung: Wenn Sie den Zielserver eines Projekts, das Faces Client-Komponenten enthält, von WebSphere Application Server V5.1 in V6.0 ändern, können Probleme auftreten.
Die folgenden beiden Probleme können auftreten, wenn der Zielserver eines Projekts, das Faces Client-Komponenten enthät, von WebSphere Application Server V5.1 in V6.0 geändert wird:
  • Bereits erstellte Mediatorklassen von Clientdaten können nicht mehr kompiliert werden. Sie müssen erneut generiert werden, und zwar jeweils für eine JSP zur Zeit. Gehen Sie hierzu wie folgt vor:
    1. Öffnen Sie die Datei 'OdysseyBrowserFramework.properties' im Java-Stammquellenordner. Speichern Sie den Inhalt für zukünftige Verwendung.
    2. Suchen Sie in der Datei 'OdysseyBrowserFramework.properties' für jede JSP in Ihrem Projekt, die Faces Client-Daten enthält, die Einträge <clientdatenname>.ecore und <clientdatenname>.emap für die Eigenschaften EMAP_FILES und ECORE_FILES.
    3. Belassen Sie lediglich die übereinstimmenden Einträge für die Clientdaten auf Ihrer JSP und löschen Sie alle anderen Einträge.
      Beispiel: Ihre aktuelle Seite enthält Clientdaten namens ACCOUNT, und Ihre Eigenschaftsdatei '.properties' enthält den folgenden Eintrag:
      EMAP_FILES=com\\ibm\\dynwdo4jsmediators/account.emap com\\ibm\\dynwdo4jsmediators/orders.emap
      In diesem Fall müssen Sie com\\ibm\\dynwdo4jsmediators/orders.emap aus dem Eintrag löschen. Der Eintrag würde nun wie folgt aussehen:
      EMAP_FILES=com\\ibm\\dynwdo4jsmediators/account.emap
    4. Sichern Sie die Eigenschaftsdatei.
    5. Klicken Sie mit der rechten Maustaste auf die Clientdaten auf Ihrer JSP und wählen Sie Konfigurieren aus.
    6. Wählen Sie die Registerkarte Erweitert aus. Klicken Sie auf die Schaltfläche für Alle erneut generieren. Dadurch werden alle Artefakte erneut generiert, die für sämtliche Clientdaten auf der aktuellen JSP benötigt werden.
    7. Wiederholen Sie diese Schritte für jede JSP in Ihrem Projekt, die Clientdaten enthält.

    Nachdem Sie die Mediatorklassen der Clientdaten für die JSPs in Ihrem Projekt erneut generiert haben, gibt es immer noch Mediatorklassen, die nicht kompiliert werden können. Hierbei handelt es sich um Mediatoren für Schemaelemente, die in Servicedatenobjekten (SDOs) in V6.0 nicht mehr verwendet werden. Diese Mediatoren folgen der Namenskonvention '*_DataGraphSchema_wdo4js_*.java' und '*_RootDataObject_wdo4js_*.java'. Löschen Sie diese Mediatorklassen aus Ihrem Projekt, um diese Kompilierungsfehler zu vermeiden.

    Stellen Sie nach erfolgreichem Abschluss der Migration den ursprünglichen Inhalt der Datei 'OdysseyBrowserFramework.properties' wieder her.

  • Faces Client-Komponenten der Baumstrukturansicht, die an WDOs gebunden sind, können auf dem Server nicht mehr ausgeführt werden, nachdem der Zielserver des Projekts in WebSphere Application Server V6.0 geändert wurde.
    Dieses Problem kann umgangen werden, indem in der Quellenansicht Ihrer JSP alle className-Tags so geändert werden, dass sie statt der WDO-DataObject-Klasse die SDO-DataObject-Klasse verwenden. Beispiel für ein WDO namens account:
    1. Ändern Sie für das Stammobjekt den Tag 'className' von className="com.ibm.etools.wdo.DataObject(DynWDO`account`RootDataObject)" in className="commonj.sdo.DataObject(DynWDO`account`DataGraphRoot)".
    2. Ändern Sie für alle untergeordneten Knoten den Tag 'className' von className="com.ibm.etools.wdo.DataObject(DynWDO`account`ACCOUNT)" in className="commonj.sdo.DataObject(DynWDO`account`ACCOUNT)", wobei ACCOUNT der Name des Datenknotens ist.
Upgrade auf automatisierte Diff-Handler und -Prozessoren: Diff-Handler und -Prozessoren, d. h. Steuerroutinen und Prozesse für Unterschiede (Diff), werden nun automatisch generiert. Wenn Sie Diff-Handler und -Prozessoren für Ihre Faces Client-Komponenten in WebSphere Studio V5.1.x geschrieben haben, wird empfohlen, den entsprechenden Code zu verwerfen und die automatisch generierten Handler und Prozessoren zu verwenden. Gehen Sie hierzu wie folgt vor:
  1. Generieren Sie die neuen Diff-Handler und -Prozessoren. Hierzu müssen Sie für jedes Clientdatenobjekt in Ihrem Projekt die folgenden Schritte ausführen:
    1. Wählen Sie das Clientdatenobjekt aus, klicken Sie mit der rechten Maustaste und wählen Sie Konfigurieren aus.
    2. Wählen Sie auf der Registerkarte Erweitert die Option für Alle erneut generieren aus.
  2. Entfernen Sie den Code, den Sie zum Aufrufen Ihrer Diff-Prozessoren und -Handler geschrieben haben, da die generierten Prozessoren und Handler automatisch aufgerufen werden. Dieser Code wurde beispielsweise häufig für das Befehlsereignis für die Komponente 'Befehlsschaltfläche' verwendet. Der Code könnte beispielsweise wie folgt aussehen:
    String Diff = getClientData1().getDiffStr();
    if (DiffProcessor.Synch(getRoot(), Diff) == true)
     return "";
    return "failure";
  3. Entfernen Sie aus Ihrem Projekt die Dateien, die den alten angepassten Handlern und Prozessoren entsprechen, die Sie erstellt haben.
Angepasste Diff-Handler und -Prozessoren für V5.1.x behalten: Wenn Sie entgegen jeder Empfehlung Ihre angepassten Diff-Handler und -Prozessoren aus V5.1.x behalten wollen, müssen Sie diese ändern, damit sie in V6.0 funktionieren, da die Schnittstelle 'DiffHandler' und die Klasse 'DiffInfo' geändert worden sind.
  • Die Schnittstelle 'DiffHandler' wurde wie folgt geändert:
    • Die Methode 'handle' löst jetzt neben 'DiffException' auch 'Exception' aus.
    • Die neue Methode 'find' wird vom Framework für die Suche nach Objekten verwendet.
    • Die neue Methode 'getId' wird für das Debug verwendet und ermöglicht es dem Framework, den Wert eines Objekts zu drucken.

    Die Methoden 'find' und 'getId' werden intern von den generierten Diff-Handlern verwendet. Sie können leere Methoden für Ihre angepassten Diff-Handler implementieren, damit diese mit der Schnittstelle funktionieren. Diese Methoden werden vom Framework nicht aufgerufen.

    Die neue Schnittstelle 'DiffHandler' sieht wie folgt aus:
    public interface DiffHandler
     {
       public void   handle(DiffInfo Diff) throws DiffException, Exception;
       public Object find  (DiffInfo Diff) throws DiffException, Exception;
       public String getId (DiffInfo Diff, boolean Original);
     }
  • Die Klasse 'DiffInfo' wurde wie folgt geändert:
    • Die Methode 'ArrayList getAncestors()' wurde ersetzt durch die Methode 'DiffInfo getParent()', die eine einfachere Möglichkeit bietet, auf die Informationen für die einzelnen Objekte in der Baumstruktur der Vorgänger rekursiv zuzugreifen.
    • Die Methoden 'getCurrent()' und 'getOriginal()' geben jetzt anstelle eines EObject-Objekts ein DataObject-Objekt zurück. Es ist nicht obligatorisch, den Code zu ändern und das Objekt 'DataObject' zu verwenden. Allerdings ist die Schnittstelle 'DataObject' viel einfacher und intuitiver zu verwenden als 'EObject'. Für Code, der aus früheren Versionen übernommen wurde, können Sie problemlos ein DataObject-Objekt in ein EObject-Objekt umsetzen.
    • Die Methode 'String getPropertyName()' wurde neu hinzugefügt, um den Eigenschaftsnamen, für den dieses Objekt gilt, zu ermitteln. Dies ist beispielsweise dann von Bedeutung, wenn eine bestimmte Klasse über zwei Eigenschaften desselben Typs verfügt. In der vorherigen Klasse 'DiffInfo' wäre der Code nicht in der Lage gewesen, zwischen den beiden Eigenschaften zu unterscheiden.
    Die neue Klasse 'DiffInfo' sieht wie folgt aus:
    public class DiffInfo
     {
       public char       getCrud()
       public DataObject getCurrent()
       public String     getEClassName()
       public DataObject getOriginal()
       public String     getPropertyName()
       public DiffInfo   getParent()
     }
    Anmerkung: Die Klasse 'DiffInfo' wird nicht länger für öffentliche Verwendung unterstützt, da Diff-Prozessoren und -Handler nun automatisch generiert werden. Die Beibehaltung der alten Handler ist nur eine vorläufige Lösung, und es wird dringend empfohlen, automatisierte Handler zu verwenden.
Änderungen an Faces Client-Komponenten in V6.0:
  • Unterstützung für WebSphere Application Server V6.0.
  • Unterstützung für Servicedatenobjekte (SDOs) unter WebSphere Application Server V6.0.
  • EGL-Daten werden jetzt als Clientdaten unterstützt.
  • Diff-Prozessoren und -Handler werden automatisch generiert.
  • Es gibt neue Ereignisse für die folgenden Client-Komponenten:
    • TabbedPanel: onInitialPageShow
    • Tree: onNodeExpand, onNodeCollapse, onExpand, onCollapse
    • DataGrid: onPage, onSort, onFilter

Übergeordnetes Thema: Migration aus WebSphere Studio V5.1, 5.1.1 oder 5.1.2

Zugehörige Tasks
Migration von JavaServer Faces-Ressourcen in einem Webprojekt
Migration von Faces-Ressourcen in einem Portletprojekt

(C) Copyright IBM Corporation 2000, 2004. All Rights Reserved. (C) Copyright IBM Deutschland GmbH und andere 2000, 2004. Alle Rechte vorbehalten.