ブローカーによる新規 Web サービス・インターフェースのインプリメント

この Web サービス・シナリオでは、ブローカーが既存の非 Web サービス・アプリケーションに Web サービス・インターフェースを提供します。

現在は Web サービスとしてアクセス可能ではない既存のアプリケーションのインターフェース定義 (たとえば、ヘッダー・ファイル) から作成されたメッセージ・セットを示す図。
WSDL ファイルは、メッセージ・セットから生成されて、Web サービス・クライアントが使用できるようにエクスポートされます。
メッセージ・セットおよび WSDL を使用するメッセージ・フローが作成されて、アプリケーションを起動します。
メッセージ・フローとメッセージ・セットは、ブローカーにデプロイされて、元のアプリケーションに対して Web サービス・インターフェースを提供します。

記号を理解する手掛かり:

この図には、他の図で使用される記号が示されています。
それらの記号にはそれぞれの記述があるために、ここでは説明されていません。

このシナリオは、Web サービス・ファサードと呼ばれることもあります。 Web サービス・インターフェースの設計は、通常いくらかの再グループ化や既存のインターフェースの制限または強化が含まれ、既存の WSDL 定義には制約されません。

可能な使用方法

設計のステップ

  1. 例えば C ヘッダー・ファイルまたは COBOL コピーブックなどの既存のインターフェース定義を インポートすることにより、ビジネス・メッセージ用のメッセージ・セットを作成します。
  2. メッセージ・セットから WSDL 定義を生成します。
  3. Rational® Application Developer などの SOAP ツールキットを使用して、WSDL に基づく適切な Web サービス・クライアントを作成します。
  4. Web サービスをインプリメントするためのメッセージ・フローを開発します。

実行時

メッセージ・フローは Web サービス要求を受け取り、それを既存のアプリケーションが予期する形式に変換して、既存のアプリケーションを呼び出します。既存のアプリケーションからの応答は、有効な Web サービス応答に変換されます。

例 1

既存の CICS® アプリケーションには、COBOL コピーブック・インターフェースがあります。

  1. COBOL コピーブックをインポートして、メッセージ・モデルを作成します。
  2. HTTPInputHTTPReply、および CICS ノードを使用して、メッセージ・フローを作成します。
  3. HTTPInput および HTTPReply ノードを使用して、Web サービス・ファサードを提供します。
  4. CICS ノードを使用して、元の CICS インプリメンテーションを呼び出します。

例 2

メッセージ・フローは、Web サービスとして起動される。
既存のメッセージ・フローの設計を変更して、HTTP を介して Web サービス・クライアントと対話します。 既存のメッセージ・フローは明確に定義された入力メッセージを取り込むので、クライアントは、メッセージ・フローの起動時に、WebSphere® Message Broker のツールからエクスポートされた WSDL を使用することができます。

入力または出力用に現在 WebSphere MQ を使用している ほとんどのメッセージ・フローは、置換または追加のプロトコルとして HTTP を使用するのに適しています。

これは、HTTPInput、Compute1、DataUpdate、Compute2、HTTPReply ノードを持つメッセージ・フローを表しています。

MRM ドメイン内で入力メッセージをモデル化し、モデルから WSDL を生成することができます。または汎用 XMLNS ドメイン・メッセージを処理することもできます。 MRM ドメイン内でメッセージを定義した場合、HTTPInput ノードを構成して入力メッセージを検証することができます。 メッセージがモデルに準拠しない場合、ノードは例外を生成します。

HTTPReply ノードを構成して、クライアントに送信する応答メッセージ用のデフォルトの HTTP ヘッダーのセットを生成することができます。 デフォルトの HTTP ヘッダー・セットを生成すれば、メッセージ・フローを WebSphere MQ メッセージの処理用から、HTTP メッセージの処理用のフローに変換するために行う必要のある変更数が減ります。

例 3

メッセージ・フローは WebSphere MQ アプリケーションへのアクセスを提供する
Web サービス・クライアントから要求を受け取り、返信を送る 2 つのメッセージ・フローを設計し、HTTP を介して通信するのに適していなかった既存の WebSphere MQ アプリケーションと対話します。

最初のメッセージ・フローは、HTTPInput ノードの Web サービス・クライアントから、インバウンド要求を受け取ります。 それには、何らかの方法で要求を変換するための Compute ノード、および変更後の要求を WebSphere MQ アプリケーションに送る MQOutput ノードが組み込まれています。

2 番目のメッセージ・フローは、MQInput ノード内でそのアプリケーションから応答を受け取ります。 メッセージは、Compute ノードに渡されます。このノードは、メッセージを変換し、元の Web サービス・クライアントへの返信としてそれを送る HTTPReply ノードにメッセージを伝搬します。

Compute ノードで行われる変換は些細 (ささい) なものですが、WebSphere MQ アプリケーションからの応答が、元の要求を送信したクライアントに必ず返送されるようにするには、最初の Compute ノードの ESQL コードは、2 番目の Compute ノードによって検索される HTTP 状態情報を保存していなければなりません。

これは 2 つのメッセージ・フローを表します。一方は、ノード HTTPInput、Compute1、および MQOutput を持っています。
もう一方は、MQInput、Compute2、および HTTPReply を持っています。
最初のフローを終了する MQOutput ノードは、既存アプリケーションからサービスを提供される WebSphere MQ キューにメッセージを入れます。このアプリケーションは、2 番目のフローを開始する MQInput ノードからサービスを提供される入力キューに応答を入れます。

最初のメッセージ・フローはメッセージを受け取り、何であれ必要な変換を行い、 アウトバウンド・メッセージにある HTTP 要求 ID をエンコードします。 (必要があれば、要求 ID をデータベースに保管することもできます。) HTTPInput ノードは、Destination.HTTP.RequestIdentifier という LocalEnvironment ツリー内のフィールドとして要求 ID を提供します。これにより、Compute1 ノードは、その値を読み取って保管することができます。

2 番目のメッセージ・フローは応答メッセージを受け取り、 クライアント・メッセージ形式にそれを変換します。 Compute2 ノードは、メッセージから HTTP 要求 ID を読み取り、この値を使用して LocalEnvironment.Destination.HTTP.RequestIdentifier を設定します。 HTTPReply ノードは、要求 ID を使用して、メッセージが正しい HTTP クライアントに必ず届くようにします。

このシナリオのインプリメンテーションは、MQMD の適切な処理を必要とします。 HTTP を介してメッセージ・フローに到達するメッセージは、MQOutput ノードへの送信の前に、MQMD を追加される必要があります。 また、WebSphere MQ を介して到達するすべてのメッセージは、HTTPReply または HTTPRequest ノードへの送信の前に、MQMD を除去される必要があります (HTTP ストリームへの MQMD の組み込みが望ましいのでない限り)。

Compute1 ノードの ESQL モジュールに、以下のステートメントのようなコード・ステートメントを組み入れます。

SET OutputRoot.XMLNS.A.MessageID =
			CAST(InputLocalEnvironment.Destination.HTTP.RequestIdentifier AS CHARACTER);

Compute2 ノードの ESQL モジュールに、以下のステートメントのようなコード・ステートメントを組み入れます。

SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier =
			CAST(InputRoot.XMLNS.A.MessageID AS BLOB);
関連概念
XML ドメインのメッセージ・フロー
ブローカーによる既存の Web サービスの呼び出し
ブローカーによる既存の Web サービス・インターフェースのインプリメント
ブローカーによる新規 Web サービスに対する Web サービス以外のインターフェースのインプリメント
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:43:03

ac34540_