Web プロジェクトでの Faces Client ランタイム・リソースの更新

WebSphere® Studio Site Developer V5.1.x に元々付属 していた JavaServer Faces Client ランタイム・リソースは、 Rational® Web Developer V6.0.1 用に更新されました。 この旧製品バージョンで作成された Web プロジェクトでの開発を継続したい場合は、 Faces Client ランタイム・リソースを最新レベルに更新することをお勧めします。

Rational Web Developer V6.0.1 では、 Faces Client ランタイム・リソースの更新は、古いリソースが含まれた Web プロジェクトがイン ポートされるか、古いリソースが含まれたワークスペースが開かれたときに自動的に行われます。 WebSphere Studio Site Developer V5.1.x から Rational Web Developer V6.0.1 に Web プロジェクト をインポートするかワークスペースを開いた後で、Faces Client ランタイム・リソースを最新レベ ルに更新するように指示するプロンプトが表示されます。

ランタイム・リソースを自動的に更新する

Web プロジェクトに対して Faces Client ランタイム ・リソースを自動的に更新するには以下のようにします。
  1. Faces Client コンテンツが含まれた Web プロジェクト (またはワークスペース) を WebSphere Studio Site Developer V5.1.x からインポートする。 「プロジェクトのマイグレーション」ウィンドウが開きます。
    注: 「プロジェクトのマイグレーション」ウィンドウが開かない場合は、自動ビルドの設定がお そらく無効になっています。 プロジェクト・エクスプローラーで Web プロジェクトを右クリックして、 「ビルド」 > 「プロジェクト」を選択します。これにより、プロジェ クトの再ビルド・プロセスが実行されて、「プロジェクトのマイグレーション」ウィンドウが開き ます。
  2. Faces Client コンテンツが含まれた他の Web プロジェクトがワークスペース内にある場合 は、「アップグレードの必要がある他のプロジェクトにこの選択 を適用する」チェック・ボックスを選択すると、すべての Web プロジェクトが更新される。
  3. 次のいずれかをクリックする。
    • 更新を自動的に完了するには、「適用する」をクリックする。
    • 更新を延期するには、「後で適用する」をクリックする。 「後で適用する」の選択後にランタイム・リソースを自動的に更新 するには、Web プロジェクトを再ビルドする前に、Web プロジェクトを閉じてから再び開くかワークベンチを再始動 する必要があります。 自動ビルドを無効にしている場合は、Web プロジェクトを右クリックして 「プロジェクトのビルド」を選択します。
    • ランタイム・リソースをバックレベルのままにするには、「 適用しない」をクリックする。 「適用しない」を選択してバックレベルのランタ イム・リソースを意図的に保持した場合は、これらのランタイム・リソースを更新するように指示するプロンプトは再表 示されません。 今後は、これらのランタイム・リソースが必要な場合は、これらを手動で更新する必要があります。
  4. Web プロジェクト内の「Java Resources」 > 「JavaSource」フォルダーから、 com.ibm.dynwdo4jsmediators.<client-data-name> という命名規則に従ったすべてのクライ アント・データ・メディエーター・クラス・パッケージを削除する。 com.ibm.dynwdo4jsmediators という名前のパッケージは削除しないでください。 このパッケージには、メディエーターを再生 成するのに使用される、プロジェクト内のクライアント・データのメタデータ (ecore ファイルと emap ファイル) が含まれています。
  5. Web プロジェクト内の「Java Resources」 > 「JavaSource」フォルダーから、 OdysseyBrowserFramework.properties ファイルを開いて、EMAP_FILESECORE_FILES のエントリーを削除する。
  6. 「クライアント・データ」ビュー内のデータ・オブジェクトごとに以下を実行する。
    1. 右クリックして「構成」を選択する。
    2. 拡張」タブで、「サーバー・ サイド・データから再生成する (Regenerate from server-side data)」をクリックして、そのデータ・オブジェクトのすべての メディエーターを再生成する。

ランタイム・リソースを手動で更新する

Web プロジェクトに対して Faces Client ランタイム・リソースを手動で更新するには、以下のようにします。
  1. Web プロジェクトでの Faces ランタイム・リソースの更新』の『ランタイム・リソースを手動で更新 する』のステップを実行する。
  2. 上記の『ランタイム・リソースを自動的に更新する』セクショ ンのステップ 4 から 6 を実行する。

Faces Client コンポーネントが含まれたプロジェクトのターゲット・サーバーを WebSphere Application Server V5.1 から V6.0 に 変更するときには問題が発生する可能性があります。

Faces Client コンポーネントが含まれたプロジェクトのタ ーゲット・サーバーを WebSphere Application Server V5.1 から V6.0 に変更すると、次の 2 つの問題が発生する可能性があります。
  • すでに生成されているクライアント・データのメディエーター・クラスがコンパイルされなくな る。これらのメディエーター・クラスは、以下のステップに従って JSP ごとに再生成する必要があり ます。
    1. ルートの Java™ ソース・フォルダーにある OdysseyBrowserFramework.properties ファイルを開く。 将来の利用のために内容を保管します。
    2. OdysseyBrowserFramework.properties ファイルで、Web プロジェクト内の Faces クライアン ト・データが含まれた JSP ごとに、EMAP_FILES プロパティーと ECORE_FILES プロパティーに対する <client-data-name>.ecore エントリーと <client-data-name>.emap エントリーを検索する。
    3. JSP 上のクライアント・データの一致するエントリーのみを保持し、他のすべてのエントリーを削除する。
      例えば、現行ページに ACCOUNT というクライアント・データ があり、プロパティー・ファイルに次のような項目がある場合:
      EMAP_FILES=com¥¥ibm¥¥dynwdo4jsmediators/account.emap com¥¥ibm¥¥dynwdo4jsmediators/orders.emap
      項目から com¥¥ibm¥¥dynwdo4jsmediators/orders.emap を削除します。すると、 この項目は次のように表示されます。
      EMAP_FILES=com¥¥ibm¥¥dynwdo4jsmediators/account.emap
    4. プロパティー・ファイルを保管する。
    5. JSP 内のクライアント・データ・オブジェクトを選択して右クリック し、「構成」を選択する。
    6. 拡張」タブで「すべて再生成」をクリックする。 これにより、現行の JSP 上のすべてのクライアント・データに必要なすべての成果物が再生成されま す。
    7. Web プロジェクト内のクライアント・データが含まれた JSP ごとにステップ 2 から 6 を繰り返す。
    8. クライアント・データ・メディエーター・クラスを再生成した後でも、コンパイルされ ないメディエーター・クラスがまだいくつか残ります。これらは、V6.x の Service Data Object (SDO) で使用されなくなったスキ ーマ・エレメントのメディエーターであり、*_DataGraphSchema_wdo4js_*.java および *_RootDataObject_wdo4js_*.java という命名規則に従っています。 これらのコンパイル・エラーを回避するためには、Web プロジェクトからこれらのメディエーター・クラス を削除してください。
    9. 更新が正常に完了した後、OdysseyBrowserFramework.properties ファイルのオ リジナルの内容を復元します。
  • プロジェクトのターゲット・サーバーを WebSphere Application Server V6.0 に変更した後、 WDO にバインドされたツリー・ビューの Faces Client コンポーネントをサーバー上で実行できない。 この問題の回避策は、すべての className タグが WDO DataObject クラスではなく SDO DataObject クラスを使用するように、JSP のソース・ビューを変更することです。 例えば、account という名前の WDO については次のようにします。
    1. ルート・オブジェクトについて、className タグを className="com.ibm.etools.wdo.DataObject(DynWDO`account`RootDataObject)" から className="commonj.sdo.DataObject(DynWDO`account`DataGraphRoot)" に変更する。
    2. すべての下位ノードについて、className タグを className="com.ibm.etools.wdo.DataObject(DynWDO`account`ACCOUNT)" から className="commonj.sdo.DataObject(DynWDO`account`ACCOUNT)" に変更する。 ここで、ACCOUNT はデータ・ノードの名前です。

自動化された Diff ハンドラーおよびプロセッサーにアップグレードする

現在は Diff プロセッサーおよびハンドラーは自動生成されます。Faces Client コンポーネントの Diff ハンドラーおよびプロセッサーを WebSphere Studio V5.1.x で作成した場合は、そのコードを廃棄して、次のように自動的に生成されるプロセッ サーとハンドラーを使用することをお勧めします。
  1. Web プロジェクト内の各クライアント・データ・オブジェクトで新しい Diff ハンドラーと プロセッサーを生成する。
    1. クライアント・データ・オブジェクトを選択して右クリックし、「構成」を選択する。
    2. 拡張」タブで「すべて再生成」をクリックする。
  2. 生成されたプロセッサーとハンドラーは自動的に呼び出されるため、Diff プロセッ サーとハンドラーを呼び出すために作成したコードを除去する。このコードが使用されていた場所の 典型的な例は、次のような「コマンド・ボタン」コンポーネントの「コマンド」イベントです。
    String Diff = getClientData1().getDiffStr();
    if (DiffProcessor.Synch(getRoot(), Diff) == true)
     return "";
    return "failure";
  3. 作成した古いカスタム・ハンドラーおよびプロセッサーに対応するファイルを Web プロジェクトから除去する。

V5.1.x 用に作成されたカスタム Diff ハンドラーおよびプロセッサーを保持する

これは推奨されませんが、 V5.1.x のカスタム Diff ハンドラーおよびプロセッサーを保持する必要があると判断した場合は、これらを V6.0 で機能させるためには変更が必要になります。その理由は、DiffHandler インターフェースと DiffInfo クラスが変更されているためです。
  • DiffHandler インターフェースは以下のように変更されました。
    • ハンドル・メソッドは DiffException に加え、Exception を throw するようになった。
    • フレームワークはオブジェクトを検索するために新しい find メソッドを使用する。
    • デバッグに新規 getId メソッドが使用され、フレームワークが オブジェクトの値を印刷することができる。

    生成された DiffHandler により find および getId メソッドが内部で使用される。 カスタム DiffHandler については、このインターフェースに準拠させるためだけに 空のメソッドをインプリメントすることができます。それらのメソッドは、 フレームワークによって呼び出されません。

    DiffHandler インターフェースは、 以下のようになりました。
    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);
     }
  • DiffInfo クラスが以下のように変更されました。
    • ArrayList getAncestors() メソッドは DiffInfo getParent() メソッドに置換されました。このメソッドは再帰的方法で 祖先ツリーの各オブジェクトの情報に容易にアクセスする方法を提供します。
    • getCurrent() および getOriginal() メソッドは、EObject オブジェクトではなく DataObject オブジェクトを戻すようになりました。DataObject オブジェクトを使用するように コードを変更することは必須ではありません。しかし、DataObject インターフェースの方が EObject よりもより簡単で直感的に使用できます。既存のコードに対して、容易に DataObject オブジェクトを EObject オブジェクトに cast することができます。
    • このオブジェクトが適用されるプロパティー名を識別するために、 新規メソッド String getPropertyName() が追加されました。これは、例えば特定のクラスに 同じ型の 2 つのプロパティーがある場合に重要です。以前の DiffInfo クラスでは、 コードは 2 つのプロパティー間を区別することができませんでした。
    DiffInfo クラスは以下のように変更されました。
    public class DiffInfo
     {
       public char       getCrud()
       public DataObject getCurrent()
       public String     getEClassName()
       public DataObject getOriginal()
       public String     getPropertyName()
       public DiffInfo   getParent()
     }
    注: DiffInfo クラスは公用の使用ではサポートされなくなりました。 その理由は Diff プロセッサーとハンドラーが自動的に生成されるようになったためです。古い ハンドラーを保持するのは一時的なソリューションでしかなく、 自動化されたハンドラーを使用するよう強くお勧めします。
V6.0 での Faces Client コンポーネントの変更点
  • WebSphere Application Server V6.0 のサポート。
  • WebSphere Application Server V6.0 での Service Data Object (SDO) のサポート。
  • EGL データがクライアント・データとしてサポートされるようになりました。
  • Diff プロセッサーとハンドラーが自動生成されます。
  • 次のコンポーネントに対する新規イベントが追加されました。
    • TabbedPanel: onInitialPageShow
    • Tree: onNodeExpand、onNodeCollapse、onExpand、onCollapse
    • DataGrid: onPage、onSort、onFilter

親トピック: WebSphere Studio V5.1、5.1.1、または 5.1.2 からのマイグレーション

関連タスク
Rational Web Developer V6.0 の Web プロ ジェクトに対する Faces ランタイム・リソースの更新
Web プロジェクトでの Faces ランタイム・リソースの更新