Web Service Host サンプルを実行すると、ブローカーは HTTP プロトコルを使用して SOAP/XML メッセージを受信し、 再び HTTP を使用して SOAP/XML 応答メッセージを送信します。 このようにして、ブローカーは、Web Service Host として動作します。
ブローカーは、この SOAP メッセージからデータを取り出して、C ヘッダー・ファイルにマップされた新しいメッセージを 生成します。 これによって、WebSphere MQ を使用して、生成されたメッセージがレガシー・アプリケーションに送られます。 レガシー・アプリケーションが応答し、この応答からのデータが、ブローカーで生成された HTTP 応答に入れられます。 このようにして、ブローカーは、レガシー・アプリケーションを Web サービスのフロントとして使用します。
Web Service Host サンプルを実行するには、以下を行います。
レガシー・アプリケーションは C で作成されており、2 つの入力パラメーター (WebSphere MQ キュー・マネージャー名および キュー名) を指定して開始します。 アプリケーションはこのキューおよびキュー・マネージャーからのメッセージを読み取り、入力メッセージの応答情報に指定された キューおよびキュー・マネージャーに応答を送ります。
レガシー・アプリケーションの以下の 2 つの実行可能ファイル版が提供されています。
このサンプルは、ブローカーと同じ WebSphere MQ キュー・マネージャーを使用してレガシー・アプリケーションを 実行するように構成されています。 ブローカーがレガシー・アプリケーションに対して別のキュー・マネージャーを使用するようになっている 場合は、WebSphere MQ キュー・マネージャー (ブローカーとレガシー) を、相互通信が可能になるように構成する必要があります。
また、メッセージ・フロー WSHOST_WSHOST1 の MQOutput to legacy ノードに対して若干の変更を行う必要があります。 基本プロパティーであるキュー・マネージャー名を、レガシー・アプリケーションの キュー・マネージャーの名前に設定します。入力メッセージおよび出力メッセージはどちらも、以下の 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 で提供されています。 このヘッダー・ファイルには、他の構造体も含まれていることに注意してください。
このサンプルの実行に使用されるすべてのテスト・メッセージは、以下のフォーマットに基づいています。
<?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>