Web Service Host 샘플 빌드

다음 단계를 수행하지 않으려는 경우, 완성된 메시지 세트 프로젝트 및 메시지 플로우 프로젝트가 이 샘플과 함께 제공됩니다.

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

  1. 메시지 세트를 작성하십시오. 이 메시지 세트는 웹 서비스 형식 메시지(XML) 및 레거시 형식(CWF) 모두에서 사용할 수 있습니다.
    1. Message Brokers Toolkit을 시작하십시오.
    2. 브로커 응용프로그램 개발 perspective에 있는지 확인하십시오.
    3. 파일 > 새로 작성 > 메시지 세트 프로젝트를 누르십시오.
    4. 프로젝트 이름WSHOST_MSP1로 설정한 후 다음을 누르십시오.
    5. 메시지 세트 이름WSHOST_MS1로 설정하십시오.
    6. 네임스페이스 사용을 선택한 후 다음을 누르십시오.
    7. 사용자 정의 Wire 형식 이름XML Wire 형식 이름을 선택한 후 완료를 누르십시오.
    8. 컨텐츠를 저장하고 messageset.mset를 닫으십시오.
  2. C 헤더 파일을 들여옵니다. 이것은 레거시 응용프로그램의 입력 및 출력 메시지로 맵핑됩니다.
    1. 파일 > 가져오기 > 파일 시스템 > 다음을 누르십시오.
    2. WSHOST_LEGACY 프로젝트에서 legacyservice.h를 선택하기 위해 찾아보십시오.
    3. Into 폴더WSHOST_MSP1로 설정한 후 완료를 누르십시오.
    4. C 헤더 파일에서 브로커 메시지 정의 파일을 작성하십시오.
      1. 자원 네비게이터에서 legacyservice.h를 마우스 오른쪽 단추로 누른 후 새로 작성 > 메시지 정의 파일을 누르십시오.
      2. C 헤더 파일의 단일 선택 단추가 미리 선택되어 있어야 합니다. 그렇지 않으면, 이를 선택한 후 다음을 누르십시오.
      3. WSHOST_MSP1 프로젝트 내에서, legacyservice.h가 미리 선택되어 있어야 합니다. 그렇지 않으면, 이를 선택한 후 다음을 누르십시오.
      4. 메시지 세트 분할창에서 WSHOST_MSP1을 펼치고 WSHOST_MS1을 선택하십시오.
      5. 대상 네임스페이스 사용을 선택하고 http://www.brokersamplewshost.ibm.com을 URL에 입력한 후 다음을 누르십시오.
      6. 소스 구조 분할창에서 tagIA81CONF를 누르고 > 단추를 누른 후 모두 선택 > 완료를 누르십시오.
    5. 컨텐츠를 저장하고 legacyservice.mxsd를 닫으십시오.
  3. SOAP 메시지 정의를 빌드하십시오.
    1. 자원 네비게이터에서 메시지 세트 WSHOST_MS1을 마우스 오른쪽 단추로 누른 후 새로 작성 > 메시지 정의 파일을 누르십시오.
    2. 단일 선택 단추인 IBM 제공 메시지를 누른 후 다음을 누르십시오.
    3. IBM 제공 메시지 분할창에서 메시지 ibm\soap\envelope\soapenv11.xsd를 선택한 후 다음을 누르십시오.
    4. WSHOST_MSP1을 펼치고 WSHOST_MS1을 선택한 후 다음을 누르십시오.
    5. 메시지를 작성하려는 전역 요소 선택에서 선택한 요소가 없는지 확인한 후 완료를 누르십시오.
    6. 컨텐츠를 저장하고 soapenv11.mxsd를 닫으십시오.
    7. 인벨로프가 자동으로 메시지로서 작성되었음에 유의하십시오.

      Message Brokers Toolkit 보기에 문제가 있으면 몇 개의 경고가 표시됩니다. 이는 주로 SOAP 메시지 정의에 대해 CWF를 정의할 경우 발생하며 이는 무시할 수 있습니다.

  4. 메시지 범주를 작성하십시오(WSDL 생성을 위한 필수조건).

    WSDL에서 모든 조작 이름은 닫혀 있는 포트 유형 내에서 고유해야 합니다. 그러므로 메시지 범주에 정의된 요청 및 응답 메시지는 달라야 합니다. 이를 규명하기 위해 두 개의 새 메시지가 메시지 세트에 정의됩니다. 하나는 웹 서비스 입력용이고, 다른 하나는 웹 서비스 출력용입니다. 이것은 C 헤더 파일에 있는 mxsd 파일에서 작성됩니다.

    1. legacyservice.mxsd를 여십시오.
    2. 아웃라인 보기에서 메시지를 마우스 오른쪽 단추로 누르고 메시지 추가를 누르십시오.
    3. 메시지 이름을 IA81CONFIN으로 변경하고 Enter를 누르십시오.
    4. 메시지 정의 편집기에서 IA81CONFIN을 누르고 등록 정보 탭을 누르십시오.
    5. 등록 정보 페이지에서 선언 찾아가기를 누르십시오.
    6. 유형 목록에서 (계속...)을 선택하고 tagIA81CONF를 선택한 후 확인을 누르십시오.
    7. 아웃라인 탭에서 메시지를 마우스 오른쪽 단추로 누르고 메시지 추가를 누르십시오.
    8. 메시지 이름을 IA81CONFOUT으로 변경하고 Enter를 누르십시오.
    9. 기본 편집기에서 선언 찾아가기를 누르십시오.
    10. 유형 목록에서 (계속...)을 선택하고 tagIA81CONF를 선택한 후 확인을 누르십시오.
    11. 컨텐츠를 저장하고 legacyservice.mxsd를 닫으십시오.
    12. 파일 > 새로 작성 > 메시지 범주 파일을 누르십시오.
    13. 범주 종류wsdl로 설정하십시오.
    14. 범주 사용wsdl:requestresponse로 설정한 후 다음을 누르십시오.
    15. 메시지 세트 프로젝트 WSHOST_MSP1 내에서 메시지 세트 WSHOST_MS1을 선택하십시오.
    16. 파일 이름 필드에 cat1을 입력한 후 다음을 누르십시오.
    17. IA81CONFINIA81CONFOUT을 선택한 후 완료를 누르십시오.
    18. 등록 정보 계층 분할창에서 IA81CONFIN을 선택하십시오.
    19. 역할 이름IA81CONFIN으로 설정하고 역할 유형wsdl:input으로 설정하십시오.
    20. 등록 정보 계층 분할창에서 IA81CONFOUT을 선택하십시오.
    21. 역할 이름IA81CONFOUT으로 설정하고 역할 유형wsdl:output으로 설정하십시오.
    22. 컨텐츠를 저장하고 cat1.category를 닫으십시오.
  5. WSDL을 생성하십시오.
    1. 파일 > 새로 작성 > WSDL 정의 > 다음을 누르십시오.
    2. 메시지 세트 프로젝트 WSHOST_MSP1 내에서 메시지 세트 WSHOST_MS1을 선택한 후 다음을 선택하십시오.
    3. WSHOST_MSP1을 선택한 후 새 폴더 작성을 누르십시오.
    4. wsdl을 폴더 이름으로 입력한 후 확인을 누르십시오.
    5. 단일을 선택했는지 확인하고 다음을 누르십시오.
    6. "WSDL 세부사항 지정" 분할창에서 양식문서로 설정했는지 확인한 후 다음을 누르십시오.
    7. "범주 선택" 분할창에서 모두 선택 > 다음을 누르십시오.
    8. 바인딩 분할창에서 SOAP/HTTP > 다음을 누르십시오.
    9. "서비스 등록 정보" 분할창에서 포트 주소http://localhost:7080/samplebrokerwshost로 설정한 후 완료를 누르십시오.
  6. 메시지 플로우를 작성하십시오. 플로우는 HTTP Request를 수신하고 MQ를 사용하여 레거시 응용프로그램을 호출한 다음, 레거시 응용프로그램의 응답 정보를 HTTP 요청자에게 라우트합니다.
    1. 파일 > 새로 작성 > 메시지 플로우 프로젝트를 누르십시오.
    2. 프로젝트 이름WSHOST_MFP1으로 설정한 후 다음을 누르십시오.
    3. "참조 프로젝트" 분할창에서 WSHOST_MSP1을 선택한 후 완료를 누르십시오.
    4. 자원 네비게이터에서 WSHOST_MFP1을 마우스 오른쪽 단추로 누른 후 새로 작성 > 메시지 플로우를 누르십시오.
    5. 스키마WSHOST_MFP1로 설정하십시오.
    6. 이름WSHOST_WSHOST1로 설정한 후 완료를 누르십시오.
    7. 팔레트(숨겨진 경우)를 표시한 후 메시지 플로우 캔버스에 있는 다음 노드에 넣으십시오.
      • 1 HTTP Input 노드
      • 3 Compute 노드
      • 2 MQOutput 노드
      • 1 MQGet 노드
      • 1 MQInput 노드
      • 1 HTTPReply 노드
    8. 팔레트에서 연결을 누른 후 다음 노드 및 터미널에 연결하십시오.
      • HTTPInput (out) - Compute (in)
      • Compute (out) - MQOutput (in)
      • MQOutput (out) - Compute1 (in)
      • Compute1 (out) - MQOutput1 (in)
      • MQInput (out) - MQGet (in)
      • MQGet (out) - Compute2 (in)
      • Compute2 (out) - HTTPReply (in)
  7. 나머지 노드의 이름을 바꾸는 것도 도움이 될 수 있습니다. 노드의 이름을 바꾸려면, 노드를 마우스 오른쪽 단추로 누른 후 이름 바꾸기를 누르십시오. 제시하는 이름은 다음과 같습니다.
  8. HTTPInput 노드를 사용자 정의하십시오.
    1. HTTPInput 노드를 마우스 오른쪽 단추로 누르고 등록 정보를 누르십시오.
    2. 기본을 선택한 후 URL 선택자/samplebrokerwshost로 설정하십시오.
    3. 디폴트를 선택하십시오.
      • 메시지 도메인의 경우, 드롭다운 목록에서 MRM을 선택하십시오.
      • 메시지 세트의 경우, 드롭다운 목록에서 WSHOST_MS1을 선택하십시오.
      • 메시지 유형의 경우 Envelope을 입력하십시오.
      • 메시지 형식의 경우, 드롭다운 목록에서 XML1을 선택하십시오.
    4. 확인을 누르십시오.
  9. Compute 노드를 사용자 정의하십시오.
    1. Compute 노드를 마우스 오른쪽 단추로 누르고 ESQL 열기를 누르십시오.
    2. 이 모듈에 대한 BEGIN문과 END문 사이에 다음 ESQL을 코딩하십시오. 컨텐츠 보조(Ctrl + space)를 사용하여 키워드를 선택하십시오. 처음 컨텐츠 보조를 사용하여 SOAP 본문 요소와 기타 IA81CONFIN 요소를 선택할 경우 처음 두 행에 있는 주석과 유사한 DECLARE NAMESPACE문이 생성되어야 합니다. 이 코드를 복사하여 붙여넣는 경우, DECLARE NAMESPACE문을 주석 해제했는지 확인하십시오.
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';CALL CopyMessageHeaders();
      
      -- Output is MQ, so remove HTTP headers
      	SET OutputRoot.HTTPInputHeader = null;
      
      -- Output is legacy, so set wire format and message name
      	SET OutputRoot.Properties.MessageType = 'msg_tagIA81CONF';
      	SET OutputRoot.Properties.MessageFormat = 'CWF1';
      
      -- Add an MQMD
      	CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
      
      -- Build message to be sent to legacy
      	SET OutputRoot.MRM.MessageId
      	    = InputBody.tns:Body.ns:IA81CONFIN.MessageId;
      	SET OutputRoot.MRM.OrderNumber
          	= InputBody.tns:Body.ns:IA81CONFIN.OrderNumber;
      	SET OutputRoot.MRM.ItemReference
          	= InputBody.tns:Body.ns:IA81CONFIN.ItemReference;
      	SET OutputRoot.MRM.ItemQuantity
          	= InputBody.tns:Body.ns:IA81CONFIN.ItemQuantity;
      	SET OutputRoot.MRM.CustomerNumber
          	= InputBody.tns:Body.ns:IA81CONFIN.CustomerNumber;
      	SET OutputRoot.MRM.DeliveryRef = ' ';
      	SET OutputRoot.MRM.Confirm = ' ';
      	SET OutputRoot.MRM.filler1 = ' ';
      
      	RETURN TRUE;
  10. MQOutput (레거시에 대한 MQOutput) 노드를 사용자 정의하십시오.
    1. MQOutput 노드를 마우스 오른쪽 단추로 누르고 등록 정보를 누르십시오.
    2. 브로커의 다른 WebSphere MQ 큐 관리자에서 레거시 응용프로그램을 실행하려면 기본을 선택하고 큐 관리자 이름을 레거시 응용프로그램의 큐 관리자 이름으로 설정하십시오. 그렇지 않으면, 공백으로 두십시오.
    3. 큐 이름WSHOST1_OUT1로 설정하십시오.
    4. 고급을 선택하고 트랜잭션 모드로 설정하십시오.
    5. 메시지 컨텍스트디폴트로 설정하십시오.
    6. 요청을 선택하고 요청의 선택란을 선택하십시오.
    7. 리플라이-투 큐WSHOST1_IN1로 설정한 후 확인을 누르십시오.
  11. Compute1 노드를 사용자 정의하십시오.
  12. MQOutput1(HTTP 상태를 저장하는 MQOutput) 노드를 사용자 정의하십시오.
    1. MQOutput1 노드를 마우스 오른쪽 단추로 누르고 등록 정보를 누르십시오.
    2. 기본을 선택하고 큐 이름WSHOST1_STATE1로 설정하십시오.
    3. 고급을 선택하고 트랜잭션 모드로 설정하십시오.
    4. 메시지 컨텍스트디폴트로 설정하십시오.
    5. 확인을 누르십시오.
  13. MQInput (레거시로부터의 MQInput) 노드를 사용자 정의하십시오.
    1. MQInput 노드를 마우스 오른쪽 단추로 누르고 등록 정보를 누르십시오.
    2. 기본을 선택하고 큐 이름WSHOST1_IN1로 설정하십시오.
    3. 디폴트를 선택하십시오.
      • 메시지 도메인의 경우, 드롭다운 목록에서 MRM을 선택하십시오.
      • 메시지 세트의 경우, 드롭다운 목록에서 WSHOST_MS1을 선택하십시오.
      • 메시지 유형으로 msg_tagIA81CONF를 입력하십시오.
      • 메시지 형식의 경우, 드롭다운 목록에서 CWF1을 선택하십시오.
    4. 확인을 누르십시오.
  14. MQGet (HTTP 상태를 저장하는 MQGet) 노드를 사용자 정의하십시오.
    1. MQGet 노드를 마우스 오른쪽 단추로 누르고 등록 정보를 누르십시오.
    2. 기본을 선택하고 큐 이름WSHOST1_STATE1로 설정하십시오.
    3. 디폴트를 선택하십시오.
      • 메시지 도메인의 경우, 드롭다운 목록에서 MRM을 선택하십시오.
      • 메시지 세트의 경우, 드롭다운 목록에서 WSHOST_MS1을 선택하십시오.
      • 메시지 유형의 경우 Envelope을 입력하십시오.
      • 메시지 형식의 경우, 드롭다운 목록에서 XML1을 선택하십시오.
    4. 고급을 선택하십시오.
      • 생성 모드에 대해 드롭다운 목록에서 Message 및 LocalEnvironment을 선택하십시오.
      • 메시지 복사에 대해 드롭다운 목록에서 전체 메시지 복사를 선택하십시오.
    5. 요청을 선택하고 상관 ID 가져오기의 선택란을 선택하십시오.
    6. 결과를 선택하고 출력 데이터 위치OutputLocalEnvironment로 설정하십시오.
    7. 확인을 누르십시오.
  15. Compute2 노드를 사용자 정의하십시오.
    1. Compute2 노드를 마우스 오른쪽 단추로 누르고 등록 정보를 누르십시오.
    2. 기본을 선택하고 처리 모드LocalEnvironment 및 Message로 설정하십시오.
    3. 확인을 누르십시오(HTTP 컨텍스트가 HTTPReply 노드로 전달됨).
    4. 노드를 마우스 오른쪽 단추로 누르고 ESQL 열기를 선택하십시오.
    5. 이 모듈에 대한 BEGIN문과 END문 사이에 다음 ESQL을 코딩하십시오.
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      -- Input is CWF, output is SOAP/XML
      	SET OutputRoot.Properties.MessageSet = InputRoot.Properties.MessageSet;
      	SET OutputRoot.Properties.MessageType = 'Envelope';
      	SET OutputRoot.Properties.MessageFormat = 'XML1';
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFOUT = InputRoot.MRM;
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFOUT.filler1 = NULL;
      
      -- Set the http reply identifier
      	SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier =
       CAST(InputLocalEnvironment.MRM.tns:Header.HTTP.RequestIdentifier AS BLOB);
      	
      	RETURN TRUE;
  16. 컨텐츠를 저장하고 WSHOST_WSHOST1.esql을 닫으십시오.
  17. 컨텐츠를 저장하고 WSHOST_WSHOST1.msgflow를 닫으십시오.
  18. 브로커의 다른 WebSphere MQ 큐 관리자에서 레거시 응용프로그램을 실행하려면 레거시 응용프로그램의 큐 관리자에 레거시 응용프로그램의 입력 큐를 정의해야 합니다. 적절한 WebSphere MQ 유틸리티를 사용하여 다음의 큐 정의를 입력하십시오.

    DEFINE QLOCAL(WSHOST1_OUT1) REPLACE

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