웹 서비스 호스트 샘플을 실행할 경우, 브로커는 HTTP 프로토콜을 통해 SOAP/XML 메시지를 수신하고 다시 HTTP를 사용하여 SOAP/XML 응답 메시지를 송신합니다. 따라서 브로커는 웹 서비스 호스트 역할을 수행합니다.
브로커는 SOAP 메시지에서 데이터를 취하여 C 헤더 파일에 맵핑되는 새 메시지를 생성합니다. 이 메시지는 WebSphere MQ를 사용하여 레거시 응용프로그램에 송신됩니다. 레거시 응용프로그램이 응답하고 응답 데이터는 브로커가 생성하는 HTTP 응답에 넣어집니다. 그러므로 브로커는 웹 서비스로 레거시 응용프로그램에서 작동합니다.
Web Service Host 샘플을 실행하려면 다음을 수행하십시오.
레거시 응용프로그램은 C로 작성되며 두 개의 입력 매개변수인 WebSphere MQ 큐 관리자 이름 및 큐 이름으로 시작됩니다. 응용프로그램은 이 큐 및 큐 관리자의 메시지를 읽고 입력 메시지의 응답 정보에 지정된 큐 및 큐 관리자에게 응답을 송신합니다.
두 실행 파일 버전의 레거시 응용프로그램이 제공됩니다.
샘플은 브로커와 같은 WebSphere MQ 큐 관리자를 사용하여 레거시 응용프로그램을 실행하도록 구성됩니다. 브로커가 레거시 응용프로그램에 대해 다른 큐 관리자를 사용할 경우 상호 통신을 위해 WebSphere MQ 큐 관리자(브로커 및 레거시)를 구성해야 합니다.
또한 메시지 플로우 WSHOST_WSHOST1에서 레거시 노드로의 MQOutput을 변경해야 합니다. 기본 등록 정보 큐 관리자 이름을 레거시 응용프로그램 큐 관리자의 이름으로 설정하십시오.입력 및 출력 메시지는 모두 다음 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 필드는 입력 시 공백으로 설정되고, 출력 시 입력 필드 ItemReference에 Y 문자가 포함되어 있는지에 따라 Y 또는 N으로 설정됩니다.
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>