Web Service Host 샘플 실행

웹 서비스 호스트 샘플을 실행할 경우, 브로커는 HTTP 프로토콜을 통해 SOAP/XML 메시지를 수신하고 다시 HTTP를 사용하여 SOAP/XML 응답 메시지를 송신합니다. 따라서 브로커는 웹 서비스 호스트 역할을 수행합니다.

브로커는 SOAP 메시지에서 데이터를 취하여 C 헤더 파일에 맵핑되는 새 메시지를 생성합니다. 이 메시지는 WebSphere MQ를 사용하여 레거시 응용프로그램에 송신됩니다. 레거시 응용프로그램이 응답하고 응답 데이터는 브로커가 생성하는 HTTP 응답에 넣어집니다. 그러므로 브로커는 웹 서비스로 레거시 응용프로그램에서 작동합니다.

Web Service Host 샘플을 실행하려면 다음을 수행하십시오.

  1. WSHOST.bar BAR 파일을 브로커로 전개하십시오. 이 파일은 메시지 플로우 프로젝트 WSHOST_MFP1에 있습니다.
  2. 레거시 응용프로그램을 시작하십시오.

    레거시 응용프로그램은 C로 작성되며 두 개의 입력 매개변수인 WebSphere MQ 큐 관리자 이름 및 큐 이름으로 시작됩니다. 응용프로그램은 이 큐 및 큐 관리자의 메시지를 읽고 입력 메시지의 응답 정보에 지정된 큐 및 큐 관리자에게 응답을 송신합니다.

    두 실행 파일 버전의 레거시 응용프로그램이 제공됩니다.

    샘플은 브로커와 같은 WebSphere MQ 큐 관리자를 사용하여 레거시 응용프로그램을 실행하도록 구성됩니다. 브로커가 레거시 응용프로그램에 대해 다른 큐 관리자를 사용할 경우 상호 통신을 위해 WebSphere MQ 큐 관리자(브로커 및 레거시)를 구성해야 합니다.

    또한 메시지 플로우 WSHOST_WSHOST1에서 레거시 노드로의 MQOutput을 변경해야 합니다. 기본 등록 정보 큐 관리자 이름을 레거시 응용프로그램 큐 관리자의 이름으로 설정하십시오.

    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 필드는 입력 시 공백으로 설정되고, 출력 시 입력 필드 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>

기본 페이지 아이콘   샘플 홈으로 돌아가기