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