Web Services Gateway サンプルについて

Web Services Gateway サンプルは、ゲートウェイ・モードで作動する SOAP ノードを使用して、Web サービスを呼び出して提供する方法を示しています。 このサンプルは、2 つの既存のサンプル (SOAP ノードおよび Address Book) 上に構築され、適切な Web サービス・プロバイダーに要求を送信する新規ゲートウェイ・フローを介してすべての要求が経路指定されるように、SOAPRequest ノード上の URL を変更します。

サンプルでは、操作が SOAP 要求メッセージから抽出され、Web サービス・プロバイダーの URL を取得するためにユーザー定義の構成可能サービスが使用されます。

サンプル・ウィザードは、コンシューマー・フローの bar ファイル内の SOAPRequest ノードの URL をオーバーライドします。 bar ファイルを再作成することを選択した場合、これらの設定はクリアされ、ゲートウェイ・フローが呼び出されないことがあります。

このサンプルの構成を示す図

Web Services Gateway サンプルでは、以下のタスクを示します。

始める前に

開始する前に、このサンプルが構築される基になった既存のサンプルに精通している必要があります。

メッセージ・フロー

下の図は、Web Services Gateway のメッセージ・フローを示しています。

Web ゲートウェイ・メッセージ・フローの画面取り

次の表は、メッセージ・フロー内のノードを示しています。

ノード・タイプ ノード名
SOAPInput GatewayInput
JavaCompute ComputeURL
SOAPRequest SOAP Request
SOAPReply GatewayReply

SOAPInput ノードは、ゲートウェイ・モードで作動し、Address Book サンプルまたは SOAP ノードのサンプルのコンシューマー・フローからの要求を受け入れます。

JavaCompute ノードは、着信要求メッセージから操作名を取得し、これを csName に格納します。 サンプル・セットアップ・ウィザードは、Gateway と呼ばれるユーザー定義の構成可能サービスを作成し、既存のサンプルから 2 つのコンシューマー・フローの操作名と一致するプロパティーを作成します。 BrokerProxy は、構成可能サービスの値を取得し、要求の URL をローカル環境で設定するために使用されます。

List nodeset = (List)message.getRootElement().evaluateXPath("SOAP/Body/*[1]");
String csName=((MbElement)(nodeset.get(0))).getName();
		
String URL = null;
	    
try {
	//Get the broker proxy
	BrokerProxy bp = BrokerProxy.getLocalInstance();
	//Find the URL from a configurable service
	URL = bp.getConfigurableServiceProperty("UserDefined/Gateway/"+csName);			
} catch (Exception e) {
	URL="/";
}
 
//Set the WebServiceURL creating the path if it doesn't exist
le.getRootElement().evaluateXPath("?Destination/?SOAP/?Request/?Transport/?HTTP/?WebServiceURL[set-value('"+URL+"')]");

SOAPRequest ノードは、適切なプロバイダー・フローに要求を送信します。

SOAPReply ノードは、呼び出し側のコンシューマー・フローに応答を返します。

メッセージ

SOAP メッセージは、既存のコンシューマー・フローおよびプロバイダー・フローによって生成されます。 ゲートウェイ・フローは、操作名を使用して、それを正しいプロバイダーに経路指定します。

サンプルの拡張

サンプルの実行後、別の Web サービス・プロバイダーを追加することによって、サンプルを拡張することもできます。 構成可能サービスを使用してプロバイダーの URL を保管しているので、必要なことは既存のサービス操作の名前を持つプロパティー、および URL に設定された値を追加することだけです。

サンプルのホームに戻る