Web Service 샘플 실행

Web Service 샘플에는 두 부분이 있습니다.

Web Service Host 샘플 실행

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

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

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

  1. 레거시 응용프로그램을 시작하십시오.

    레거시 응용프로그램은 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 파일에서 제공됩니다. 이 헤더 파일에는 기타 구조도 포함되어 있습니다.

  2. 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>
                <DeliveryRef> </DeliveryRef>
                <Confirm> </Confirm>
                <filler1> </filler1>
            </c:IA81CONFIN>
        </soapenv:Body>
    </soapenv:Envelope>

결과 이해

Web Service Host 샘플은 msg_tagIA81CONF 메시지와 함께 레거시 응용프로그램을 호출합니다. 해당 메시지에서 DeliveryRef 필드는 입력 시 공백으로 설정되고, 출력 시 JOHNCORP로 설정됩니다. 또한 Confirm 필드는 입력 시 공백으로 설정되고, 출력 시 입력 필드 ItemReference에 Y 문자가 포함되어 있는지에 따라 Y 또는 N으로 설정됩니다.

위 입력 메시지의 응답 메시지는 다음과 같습니다.

<?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>
            <filler1>   </filler1>
        </NS1:IA81CONFOUT>
    </tns:Body>
</tns:Envelope>

Web Service Client 샘플 실행

Web Service Client 샘플을 실행할 경우, 브로커는 WebSphere MQ 프로토콜을 통해 레거시 형식의 메시지를 수신합니다. 브로커는 HTTP 프로토콜을 사용하여 SOAP/XML 메시지를 보내는 방법으로 웹 서비스를 호출합니다. 그리고 다시 HTTP를 사용하여 SOAP/XML 메시지로서 웹 서비스 응답을 수신하고 MQ를 사용하여 레거시 응답 메시지를 송신합니다. 따라서 브로커는 웹 서비스 클라이언트 역할을 수행합니다.

브로커는 C 헤더 파일에 맵핑되는 레거시 메시지에서 데이터를 취합니다. 이 데이터는 WSDL 파일의 XML 스키마에 맵핑되는 SOAP/XML 메시지를 빌드하는 데 사용됩니다. WSDL 파일은 Web 서비스 호스트에서 제공되어 브로커의 메시지 세트에 반입됩니다. 여기서 Web 서비스 호스트는 Web Service Host 샘플입니다.

이 Web Service Client 샘플을 실행하기 위해서는 Web Service Host 샘플이 실행 중이어야 합니다.

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

  1. 메시지 플로우는 Web Service Host 샘플이 Web Service Client 샘플과 동일한 브로커에서 실행 중이며 브로커가 디폴트 HTTP 포트 번호 7080을 사용한다고 가정합니다. 그렇지 않은 경우, 메시지 플로우의 HTTPRequest 노드에서 로컬 호스트, 포트 번호 또는 둘 다를 수정하여 Web Service Host의 주소를 지정하십시오. 그런 후 브로커에 대해 WSCLIENT.bar BAR 파일을 재컴파일하여 전개해야 합니다. 이 파일은 메시지 플로우 프로젝트 WSCLIENT_MFP1에 있습니다. 이 파일을 전개하려면 도메인 프로젝트에 파일을 복사해야할 수도 있습니다.
  2. 그렇게 하지 않은 경우, WSHOST.bar BAR 파일을 브로커로 전개하십시오. 이 파일은 메시지 플로우 프로젝트 WSHOST_MFP1에 있습니다. 이 파일을 전개하려면 도메인 프로젝트에 파일을 복사해야 할 수도 있습니다.
  3. 그렇게 하지 않은 경우, Web Service Host 샘플에서 호출하는 레거시 응용프로그램을 시작하십시오(위 참조).
  4. MQInput 노드에서 정의된 WebSphere MQ 큐에 메시지를 넣으십시오. (큐 이름은 WSCLIENT1_IN1입니다.)

    이 샘플을 실행하는 데 사용된 입력 테스트 메시지는 다음 형식을 기본으로 합니다.

    typedef struct tagIA81BUY {
       char MessageId[8];
       char OrderNumber[8];
       char ItemReference[12];
       char ItemQuantity[8];
       char CustomerNumber[12];
       char DeliveryRef[8];
    } IA81BUY;
    

    Web Service Host 메시지 플로우에 송신된 메시지는 다음과 같습니다.

    
    <?xml version="1.0"?>
    <tns:Envelope xmlns:tns="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:NS1="http://schemas.xmlsoap.org/soap/encoding/"
        xmlns:NS2="http://www.brokersamplewshost.ibm.com"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:mrm="http://tempuri.org/"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <tns:Body>
            <NS2:IA81CONFIN>
                <MessageId>IA81CONF</MessageId>
                <OrderNumber>LAB51234</OrderNumber>
                <ItemReference>ITEM12345678</ItemReference>
                <ItemQuantity>qty00005</ItemQuantity>
                <CustomerNumber>CUST34567890</CustomerNumber>
                <DeliveryRef> </DeliveryRef>
                <Confirm> </Confirm>
                <filler1> </filler1>
            </NS2:IA81CONFIN>
        </tns:Body>
    </tns:Envelope>
    

결과 이해

Web Service Client 메시지 플로우에서 수신된 위 입력 메시지의 응답 메시지는 다음과 같습니다.

<?xml version="1.0"?>
<tns:Envelope xmlns:tns="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:NS1="http://www.brokersamplewshost.ibm.com"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tns:Body>
        <NS1:IA81CONFOUT>
            <MessageId>IA81CONF</MessageId>
            <OrderNumber>LAB51234</OrderNumber>
            <ItemReference>ITEM12345678</ItemReference>
            <ItemQuantity>qty00005</ItemQuantity>
            <CustomerNumber>CUST34567890</CustomerNumber>
            <DeliveryRef>JOHNCORP</DeliveryRef>
            <Confirm>N</Confirm>
            <filler1>   </filler1>
        </NS1:IA81CONFOUT>
    </tns:Body>
</tns:Envelope>

응답 메시지

Web Service Client 메시지 플로우는 위 메시지를 CWF 형식으로 출력합니다. 이는 위에서 정의된 C 구조 tagIA81CONF를 기반으로 합니다. 필드 및 값은 다음과 같습니다.

typedef struct tagIA81CONF {
   char MessageId[8];           IA81CONF
   char OrderNumber[8];         LAB5123
   char ItemReference[12];      ITEM12345678
   char ItemQuantity[8];        qty00005
   char CustomerNumber[12];     CUST34567890
   char DeliveryRef[8];         JOHNCORP
   char Confirm[1];             N
   char filler1[3];
} IA81CONF;

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