Web Service Host サンプルの実行

Web Service Host サンプルを実行すると、ブローカーは HTTP プロトコルを使用して SOAP/XML メッセージを受信し、 再び HTTP を使用して SOAP/XML 応答メッセージを送信します。 このようにして、ブローカーは、Web Service Host として動作します。

ブローカーは、この SOAP メッセージからデータを取り出して、C ヘッダー・ファイルにマップされた新しいメッセージを 生成します。 これによって、WebSphere MQ を使用して、生成されたメッセージがレガシー・アプリケーションに送られます。 レガシー・アプリケーションが応答し、この応答からのデータが、ブローカーで生成された HTTP 応答に入れられます。 このようにして、ブローカーは、レガシー・アプリケーションを Web サービスのフロントとして使用します。

Web Service Host サンプルを実行するには、以下を行います。

  1. bar ファイル WSHOST.bar をブローカーにデプロイします。 このファイルは、メッセージ・フロー・プロジェクト WSHOST_MFP1 にあります。
  2. レガシー・アプリケーションを開始します。

    レガシー・アプリケーションは C で作成されており、2 つの入力パラメーター (WebSphere MQ キュー・マネージャー名および キュー名) を指定して開始します。 アプリケーションはこのキューおよびキュー・マネージャーからのメッセージを読み取り、入力メッセージの応答情報に指定された キューおよびキュー・マネージャーに応答を送ります。

    レガシー・アプリケーションの以下の 2 つの実行可能ファイル版が提供されています。

    このサンプルは、ブローカーと同じ WebSphere MQ キュー・マネージャーを使用してレガシー・アプリケーションを 実行するように構成されています。 ブローカーがレガシー・アプリケーションに対して別のキュー・マネージャーを使用するようになっている 場合は、WebSphere MQ キュー・マネージャー (ブローカーとレガシー) を、相互通信が可能になるように構成する必要があります。

    また、メッセージ・フロー WSHOST_WSHOST1 の MQOutput to legacy ノードに対して若干の変更を行う必要があります。 基本プロパティーであるキュー・マネージャー名を、レガシー・アプリケーションの キュー・マネージャーの名前に設定します。

    レガシー・アプリケーションを Windows または Linux 以外のプラットフォーム上で実行する場合、そのソース・ファイルが プロジェクト WSHOST_LEGACY で提供されます。 C ソース・ファイルは legacyservice.c で、ヘッダー・ファイル legacyservice.h および legacyservice2.h を持ちます。 選択したコンパイラーを使用してコンパイルを行ってから、上記の入力パラメーターのガイドラインに従ってアプリケーションを 実行します。

    入力メッセージおよび出力メッセージはどちらも、以下の C 構造体にマップされます。

    typedef struct tagIA81CONF {
       char MessageId[8];
       char OrderNumber[8];
       char ItemReference[12];
       char ItemQuantity[8];
       char CustomerNumber[12];
       char DeliveryRef[8];
       char Confirm[1];
       char filler1[3];
    } IA81CONF;
    

    これは、プロジェクト WSHOST_LEGACY のファイル legacyservice.h で提供されています。 このヘッダー・ファイルには、他の構造体も含まれていることに注意してください。

  3. SOAP メッセージを HTTPInput ノードで指定された URL に書き込みます。 これを実行するユーティリティーがない場合は、いくつかのフリーウェア・ツールが使用できます。

    このサンプルの実行に使用されるすべてのテスト・メッセージは、以下のフォーマットに基づいています。

    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope 	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:c="http://www.brokersamplewshost.ibm.com"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <soapenv:Body>
            <c:IA81CONFIN>
                <MessageId>IA81CONF</MessageId>
                <OrderNumber>ON4002</OrderNumber>
                <ItemReference>IY4003</ItemReference>
                <ItemQuantity>4</ItemQuantity>
                <CustomerNumber>CY4004</CustomerNumber>
            </c:IA81CONFIN>
        </soapenv:Body>
    </soapenv:Envelope>

結果を理解する

Web Service Host サンプルでは、msg_tagIA81CONF というメッセージを使用して レガシー・アプリケーションを起動します。 そのメッセージの DeliveryRef というフィールドは、入力についてはブランクに設定され、出力については JOHNCORP に設定されます。 また、Confirm というフィールドは、入力についてはブランクに設定され、出力については Y または N のいずれかに設定されます (入力フィールド ItemReference が文字 Y かどうかに依存)。

Nettool を使用している場合、右側ペインには HTTP 応答が含まれます。

上記の入力メッセージからの応答メッセージは、以下のとおりです。

<?xml version="1.0"?>
<tns:Envelope xmlns:tns="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:NS1="http://www.brokersamplewshost.ibm.com"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tns:Body>
        <NS1:IA81CONFOUT>
            <MessageId>IA81CONF</MessageId>
            <OrderNumber>ON4002</OrderNumber>
            <ItemReference>IY4003</ItemReference>
            <ItemQuantity>4</ItemQuantity>
            <CustomerNumber>CY4004</CustomerNumber>
            <DeliveryRef>JOHNCORP</DeliveryRef>
            <Confirm>Y</Confirm>
        </NS1:IA81CONFOUT>
    </tns:Body>
</tns:Envelope>

メインページのアイコン   サンプルのホームに戻る