IBM Web サービス (SOAP/HTTP) バインディングのマイグレーション・オプション 1

WebSphere® Studio Application Developer Integration Edition SOAP/HTTP プロセス・バインディングの最初の マイグレーション・オプションは、Web サービス・クライアントによるビジネス・プロセスのアクセスを可能にします。

Web サービス・バインディング付きエクスポートは、外部 Web サービス・クライアントによる SCA コンポーネントの アクセスを可能にします。 Web サービス・バインディング付きエクスポートを作成するには、以下を行います。
  1. マイグレーション・ウィザードによって作成されたモジュールをアセンブリー・エディターで開きます。
  2. アセンブリー・エディターで BPEL コンポーネントを右クリックして、WebSphere Studio Application Developer Integration Edition で生成された IBM® Web Service (SOAP/HTTP) バインディングのある BPEL プロセスのインターフェースごとに「SCA バインディング付きエクスポート (Export with SCA Binding)」を 作成します。
  3. 「エクスポート…」を選択します。
  4. 「Web サービス・バインディング」を選択します。
  5. コンポーネントに複数のインターフェースがある場合は、このバインディング・タイプでエクスポートする インターフェースを選択します。
  6. トランスポート soap/http を選択します。
  7. Web サービス・エクスポートが作成されたら、アセンブリー・エディターと「プロパティー」ビューでエクスポートを 選択し、「説明」コンテンツ・ペインを選択します。 エクスポートの名前と説明がリストされ、必要であれば変更できます。
  8. アセンブリー図を保管します。
  9. クライアント・コードの保存を希望する場合、以下のステップに従って、 新規の Web サービス・バインディングとサービスを生成します。
    1. ejbModule/META-INF/wsdl/ビジネス・プロセス名/ビジネス・プロセス・インターフェース・ポート・タイプ名_HTTP.wsdl にある 5.1 で生成された EJB プロジェクトから、 5.1 の WSDL ファイルをビジネス・インテグレーション・モジュール・プロジェクトにコピーします。
    2. ファイルをコピーして、モジュールを再ビルドした後、 Web サービスによって使用される XML スキーマ・タイプ、WSDL メッセージ、および WSDL ポート・タイプが、 5.1 の IBM Web サービス WSDL ファイルで重複するために、 エラー・メッセージが表示されることがあります。 このエラーを修正するには、これらの重複する定義を IBM Web サービスのバインディング/サービス WSDL から削除して、 その場所に、実際のインターフェース WSDL 用の WSDL インポートを追加します。 : WebSphere Studio Application Developer Integration Edition が IBM Web サービスのデプロイメント・コードを生成したときに、 一部のケースでスキーマ定義を変更することに注意することが重要です。 これにより、IBM Web サービス WSDL を使用する既存のクライアントで、 不整合が発生する可能性があります。 例えば、「elementFormDefault」スキーマ属性は、オリジナルのスキーマ定義が qualified ではなくても、 IBM Web サービス WSDL で生成されたインライン・スキーマでは「qualified」に設定されます。 これによって、実行時に「WSWS3047E: エラー: エレメントをデシリアライズできません (WSWS3047E: Error: Cannot deserialize element)」というエラーが生成されます。
    3. ビジネス・インテグレーション・モジュールにコピーしたばかりのこの WSDL ファイルを右クリックして、 「アプリケーションから開く」を選択し、 次に「WSDL エディター」を選択します。
    4. 「ソース」タブに進みます。このファイルの WSDL ポート・タイプおよび定義されたメッセージをすべて削除します。
    5. これで、'<binding>' バインディングに指定した '<portType> ポート・タイプが未定義です (The '<portType>' port type specified for the '<binding>' binding is undefined)」というエラーが表示されます。 エラーを修正するには、「グラフ」タブの WSDL エディターで「インポート」セクションを 右クリックし、「インポートの追加」を選択します。
    6. 「一般」タブの「プロパティー」ビューで、「ロケーション」フィールドの右側にある「…」ボタンを クリックします。 WSDL メッセージとポート・タイプ定義があるインターフェース WSDL を参照し、 「OK」をクリックして、 インターフェース WSDL をサービス/バインディング WSDL にインポートします。
    7. WSDL ファイルを保管します。
    8. プロジェクトの更新/再ビルドを行います。ビジネス・インテグレーション・パースペクティブに切り替えます。 モジュールのアセンブリー図をアセンブリー・エディターで開きます。
    9. プロジェクト・エクスプローラー・ビューで、 マイグレーションするモジュールを展開して、 「Web サービス・ポート」論理カテゴリーを展開します。 これで、バインディング/サービス WSDL に存在するポートがリスト表示されます。 これをアセンブリー・エディターにドラッグ・アンド・ドロップします。
    10. Web サービス・バインディング付きエクスポートを作成することを選択して、 該当するポート名を選択します。 これにより、古いバインディング/サービスを使用するエクスポートが作成され、 既存の Web サービス・クライアントを変更する必要はありません。 アセンブリー・エディターで作成したばかりのエクスポートを選択して「プロパティー」ビューに進んだ場合、 「バインディング」タブには、5.1 のポートとサービスの名前がすでに入力されていることが分かります。
    11. 変更をすべて保管します。
    12. アプリケーションをデプロイする直前に、 生成された Web プロジェクトの構成を、 5.1 のサービス・アドレスに一致するように変更できます (これらの変更は、 このファイルが再生成される原因となった SCA モジュールの変更を行うたびに実行する必要があります)。5.1 から再使用している IBM Web サービス WSDL サービス定義を調べている場合は、 5.1 のクライアントで <wsdlsoap:address location="http://localhost:9080/MyServiceWeb/services/MyServicePort"/> とコーディングされたサービス・アドレスが表示されます。
    13. 6.0 で生成された Web プロジェクト成果物がこの古いサービス・アドレスと一致するようにするには、 生成された Web プロジェクトのデプロイメント記述子を変更する必要があります。WebSphere Integration Developer でデプロイメント記述子を開き、「サーブレット (Servlets)」タブで、 そのエクスポート用の既存の URL マッピングと非常に良く似た追加の URL マッピングを、 同じサーブレット名で異なる URL パターンを指定して追加します。
    14. また、オリジナルのサービス・アドレスのコンテキスト・ルート (この例では、 コンテキスト・ルートは「MyServiceWeb」です) と一致するように、 この Web プロジェクトのコンテキスト・ルートを変更する必要がある場合は、 この Web プロジェクトが入っている J2EE エンタープライズ・アプリケーションのデプロイメント記述子を開いて、 古いサービス・アドレスのコンテキスト・ルートと一致するように、 その Web モジュールのコンテキスト・ルートを変更します。 「CHKJ3017E: Web プロジェクト: <WEB PROJ NAME> が、EAR プロジェクト: <APP NAME> 内の無効なコンテキスト・ルート: <NEW CONTEXT ROOT> にマップされています。(CHKJ3017E: Web Project: <WEB PROJ NAME> is mapped to an invalid Context root: <NEW CONTEXT ROOT> in EAR Project: <APP NAME>.)」 というエラーが表示されますが、 無視できます。

Feedback
(C) Copyright IBM Corporation 2005, 2006. All Rights Reserved.
(C) Copyright IBM Japan 2006