Die JavaServer Faces Client-Laufzeitressourcen, die ursprünglich mit
WebSphere Studio
Site Developer V5.1.x bereitgestellt wurden,
wurden für Rational Web Developer V6.0.1 aktualisiert.
Wenn Sie die Entwicklung der mit dieser früheren Produktversion erstellten Projekte
fortsetzen wollen, wird empfohlen, dass Sie die Ressourcen für die Faces
Client-Laufzeit auf die jeweils neueste Stufe aktualisieren.
In Rational Web Developer V6.0.1 werden
die Faces Client-Laufzeitressourcen automatisch aktualisiert, wenn ein Webprojekt importiert
oder ein Arbeitsbereich geöffnet wird, das bzw. der Ressourcen enthält, die nicht
auf dem neuesten Stand sind.
Nachdem Sie ein Webprojekt oder einen Arbeitsbereich aus WebSphere Studio
Site Developer V5.1.x in Rational Web Developer V6.0.1 importiert bzw. geöffnet haben,
werden Sie aufgefordert, die Faces Client-Laufzeitressourcen auf den neuesten Stand zu bringen.
Laufzeitressourcen automatisch aktualisieren
Führen Sie folgende Schritte aus, um
die Faces Client-Laufzeitressourcen für ein Webprojekt
automatisch zu aktualisieren:
- Importieren Sie ein Webprojekt (oder einen Arbeitsbereich) mit Faces Client-Inhalt aus
WebSphere Studio
Site Developer V5.1.x. Das Fenster Projektmigration
wird geöffnet.
Anmerkung: Wenn das Fenster Projektmigration nicht geöffnet wird,
ist möglicherweise Ihre Einstellung für automatische Erstellung inaktiviert. Klicken Sie im
Projektexplorer mit der rechten Maustaste auf Ihr Webprojekt, und wählen Sie aus; der Prozess zum erneuten Erstellen eines Projekts
öffnet das Fenster Projektmigration.
- Wenn in Ihrem Arbeitsbereich noch andere Webprojekte mit Faces Client-Inhalt vorhanden sind, können Sie
Diese Auswahl auf alle anderen Projekte anwenden, für die ein Upgrade ausgeführt werden muss auswählen, damit
alle diese Projekte aktualisiert werden.
- Klicken Sie auf eine der folgenden Optionen:
- Klicken Sie auf Ja, um die Aktualisierung automatisch auszuführen.
- Klicken Sie auf Später, um die Aktualisierung auf einen späteren Zeitpunkt
zu verschieben. Wenn Sie die Laufzeitressourcen automatisch aktualisieren wollen, nachdem Sie
Später ausgewählt haben, müssen Sie das Webprojekt schließen und erneut starten oder
die Workbench neu starten, bevor Sie Ihr Webprojekt erneut erstellen. Wenn Sie die automatische Erstellung
inaktiviert haben, klicken Sie mit der rechten Maustaste auf Ihr Webprojekt, und wählen Sie Projekt
erstellen aus.
- Klicken Sie auf Nie, um Ihre Laufzeitressourcen auf dem Stand der früheren Version beizubehalten.
Wenn Sie Nie auswählen und absichtlich die Laufzeitressourcen der früheren Version
beibehalten, werden Sie nicht mehr zur Aktualisierung der Ressourcen aufgefordert.
Sollte dann zukünftig eine Aktualisierung der Laufzeitressourcen erforderlich werden, müssen Sie dies manuell ausführen.
- Löschen Sie in Ihrem Webprojekt im Ordner alle Clientdatenmediatorklassenpakete, die der Namenskonvention
com.ibm.dynwdo4jsmediators.<clientdatenname> entsprechen.
Löschen Sie NICHT das Paket mit dem Namen com.ibm.dynwdo4jsmediators. Dieses Paket
enthält Metadaten (ecore- und emap-Dateien) für die Clientdaten in Ihrem Projekt, die
zur erneuten Generierung der Mediatoren verwendet werden.
- Öffnen Sie in Ihrem Webprojekt im Ordner die Datei OdysseyBrowserFramework.properties, und löschen Sie die Einträge für
EMAP_FILES und ECORE_FILES.
- Führen Sie für jedes Datenobjekt in Der Clientdatensicht Folgendes aus:
- Klicken Sie mit der rechten Maustaste, und wählen Sie Konfigurieren aus.
- Klicken Sie auf der Registerkarte Erweitert auf Von
serverseitigen Daten neu generieren, um alle Mediatoren für das Datenobjekt erneut zu generieren.
Laufzeitressourcen
manuell aktualisieren
Führen Sie folgende Schritte aus, um
die Faces Client-Laufzeitressourcen für ein Webprojekt
manuell zu aktualisieren:
- Führen Sie die in Faces-Laufzeitressourcen in einem Webprojekt aktualisieren unter Laufzeitressourcen
manuell aktualisieren aufgeführten Schritte aus.
- Führen Sie die Schritte 4-6 des oben aufgeführten Abschnitts Laufzeitressourcen automatisch
aktualisieren aus.
Es können Probleme auftreten, wenn Sie den Zielserver eines Projekts, das
Faces Client-Komponenten enthält, von WebSphere Application Server V5.1
in V6.0 ändern.
Wenn Sie den Zielserver eines Projekts, das
Faces Client-Komponenten enthält, von WebSphere Application
Server V5.1 in V6.0 ändern, können die folgenden beiden Probleme auftreten:
- Bereits erstellte Mediatorklassen von Clientdaten können nicht mehr kompiliert werden. Sie müssen nacheinander für jeweils eine JSP erneut generiert werden.
- Öffnen Sie die Datei OdysseyBrowserFramework.properties, die sich im Stammverzeichnis des Java-Quellenordners
befindet. Speichern
Sie den Inhalt für zukünftige Verwendung.
- Suchen Sie in der Datei OdysseyBrowserFramework.properties für jede JSP in Ihrem Webprojekt, die Faces Client-Daten
enthält, die Einträge <clientdatenname>.ecore und <clientdatenname>.emap für die Eigenschaften EMAP_FILES und
ECORE_FILES.
- Behalten Sie nur 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
- Sichern Sie die Eigenschaftsdatei.
- Wählen Sie ein Clientdatenobjekt in einer JSP aus, klicken Sie mit der rechten Maustaste, und wählen Sie Konfigurieren aus.
- Klicken Sie auf der Registerkarte Erweitert auf die Option Alle erneut generieren. Dadurch werden alle Artefakte erneut generiert, die für sämtliche Clientdaten auf der aktuellen JSP benötigt werden.
- Wiederholen Sie die Schritte 2-6 für jede JSP in Ihrem Webprojekt, die Clientdaten enthält.
- Nachdem Sie die Mediatorklassen der Clientdaten erneut generiert haben, werden immer noch
einige Mediatorklassen vorhanden sein, die nicht kompiliert werden können. Hierbei handelt es sich
um Mediatoren für Schemaelemente, die in V6.x nicht mehr in SDOs (Service Data Objects) verwendet werden
und die der Namenskonvention *_DataGraphSchema_wdo4js_*.java und *_RootDataObject_wdo4js_*.java entsprechen.
Löschen Sie diese Mediatorklassen aus Ihrem Webprojekt, um diese Kompilierungsfehler zu vermeiden.
- Stellen Sie nach erfolgreichem Abschluss der Aktualisierung 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 mit dem Namen account:
- Ä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)".
- Ä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-Prozessoren
und -Handler werden 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:
- Generieren Sie die neuen Diff-Handler und -Prozessoren für jedes Clientdatenobjekt in Ihrem Webprojekt.
- Wählen Sie das Clientdatenobjekt aus, klicken Sie mit der rechten Maustaste, und wählen Sie Konfigurieren aus.
- Klicken Sie auf der Registerkarte Erweitert auf die Option Alle erneut generieren.
- 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, z. B. wie folgt:
String Diff = getClientData1().getDiffStr();
if (DiffProcessor.Synch(getRoot(), Diff) == true)
return "";
return "failure";
- Entfernen Sie aus Ihrem Projekt die Dateien, die den alten angepassten Handlern und Prozessoren entsprechen, die Sie
erstellt haben.
Angepasste, für V5.1.x geschriebene Diff-Handler und -Prozessoren beibehalten
Wenn Sie entgegen jeder Empfehlung
Ihre angepassten Diff-Handler und -Prozessoren aus V5.1.x beibehalten wollen, müssen Sie diese ändern, damit sie in V6.0
funktionieren, da die Schnittstelle 'DiffHandler' und die Klasse 'DiffInfo' geändert wurden.
- 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 vorhandenen Code
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.
- Für die folgenden Komponenten sind neue Ereignisse vorhanden:
- TabbedPanel: onInitialPageShow
- Tree: onNodeExpand, onNodeCollapse, onExpand, onCollapse
- DataGrid: onPage, onSort, onFilter