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

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

Web サービス・バインディング付きエクスポートは、外部 Web サービス・クライアントによる SCA コンポーネントの アクセスを可能にします。 Web サービス・バインディング付きエクスポートを作成するには、以下を行います。
  1. マイグレーション・ウィザードによって作成されたモジュールをアセンブリー・エディターで開きます。
  2. WebSphere Studio Application Developer Integration Edition で、 サービス・インターフェース用に生成された IBM® Web サービス (SOAP/JMS) バインディングを持つそれぞれのサービス・インターフェースごとに、 SCA バインディング付きエクスポートを作成します。
    1. アセンブリー・エディターで SCA コンポーネントを右クリックします。
    2. 「エクスポート…」を選択します。
    3. 「Web サービス・バインディング」を選択します。
    4. コンポーネントに複数のインターフェースがある場合は、このバインディング・タイプでエクスポートする インターフェースを選択します。
    5. トランスポート soap/jms を選択します。
  3. Web サービス・エクスポートが作成されたら、アセンブリー・エディターと「プロパティー」ビューでエクスポートを 選択し、「説明」コンテンツ・ペインを選択します。 エクスポートの名前と説明がリストされ、必要であれば変更できます。
  4. アセンブリー図を保管します。
  5. 「バインディング」コンテンツ・ペインを選択すると、IBM Web サービス WSDL バインディングおよびサービスが、 モジュールのプロジェクト・フォルダーに直接生成されているのが分かります。 これは、エクスポートされたコンポーネント Export WSDL ポート・タイプ名 Jms_Service.wsdl と命名されます。 このファイルを調べると、文書/リテラル・ラップ済みバインディングがデフォルトで使用されていることが分かります。 これは、6.0 の優先スタイルです。 これは、IBM Web サービス・クライアントが サービスの呼び出しに使用する WSDL です。
  6. クライアント・コードの保存を希望する場合、以下のステップに従って、 新規の Web サービス・バインディングとサービスを生成します。
    1. ejbModule/META-INF/wsdl/ビジネス・プロセス名/ビジネス・プロセス・インターフェース・ポート・タイプ名 JMS.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