서비스 메시지 오브젝트

서비스 메시지 오브젝트(SMO)는 확장된 서비스 데이터 오브젝트(SDO)입니다. SMO는 서비스 간에 교환되는 메시지를 처리하고 조작하기 위한 추상 레이어를 제공합니다.

SMO 모델

SMO 모델은 메시지를 표시하기 위해 SDO DataObjects를 사용하기 위한 패턴입니다. SMO에는 다음 데이터 그룹의 표시가 들어 있습니다.
  • 메시지의 비즈니스 페이로드. 페이로드는 서비스 엔드포인트 간에 교환되는 응용프로그램 데이터입니다.
  • 메시지와 연관된 헤더 정보. 예를 들어, 메시지가 JMS API를 사용하여 전달된 경우 JMS(Java Message Service) 헤더 또는 메시지가 WebSphere MQ에서 온 경우 MQ 헤더.
  • 컨텍스트 정보(메시지 페이로드 이외의 데이터).

이 모든 정보는 SDO DataObjects로 액세스되며 SMO의 전체 구조를 지정하는 스키마 선언이 제공됩니다. 스키마는 WebSphere Integration Developer가 생성합니다.

모든 SMO는 동일한 기본 구조를 가집니다. 이 구조는 ServiceMessageObject라는 루트 데이터 오브젝트로 구성되며, 이 오브젝트에는 헤더, 본문 및 컨텍스트 데이터를 나타내는 다른 데이터 오브젝트가 있습니다. SMO 본문에는 메시지 페이로드가 있습니다. 헤더에는 특정 가져오기 또는 내보내기 바인딩에서 가져온 정보가 있습니다. 예: JMS 바인딩.

SMO는 메시지 헤더 및 메시지 페이로드를 액세스하고 수정하기 위한 인터페이스를 제공합니다. SMO는 여러 서로 다른 메시지 유형의 논리적 컨텐츠를 표시할 수 있습니다.

그림 1. SMO 구조 개요. ServiceMessageObject의 헤더, 컨텍스트 및 본문ServiceMessageObject는 컨텍스트(1), 헤더(1) 및 본문(0..1)을 포함합니다.
컨텍스트는 correlation (0..1), transient(0..1), failInfo(0..1) 및 primitiveContext(0..1)를 포함합니다.
헤더는 SMOheader(0..1), JMSheader(0..1), SOAPheader(0..unbounded), SOAPFaultInfo(0..1),
properties(0..unbounded), MQHeader(0..1)를 포함합니다.

WebSphere Process Server 및 SMO

WebSphere Process Server는 상호작용 엔드포인트 간에 전달되는 메시지에 대해 작동합니다. WebSphere Process Server에서 중개 플로우는 메시지를 SMO로서 처리합니다.

동적 라우팅을 제공하기 위해 WSRR(Websphere Service Registry and Repository)을 사용하여 상호작용 엔드포인트를 검색할 수 있습니다. WSRR 조회 결과는 SMO에 저장됩니다.

메시지는 여러 소스로부터 올 수 있으므로 SMO는 서로 다른 유형의 메시지 헤더를 전달할 수 있어야 합니다. WebSphere Process Server가 처리하는 메시지 헤더 유형은 다음과 같습니다.
  • 웹 서비스 메시지 헤더.
  • 서비스 구성요소 아키텍처(SCA) 메시지 헤더.
  • JMS(Java Message Service) 메시지 헤더.
  • WebSphere Adapter 메시지 헤더.
  • WebSphere MQ 메시지 헤더

WebSphere Process Server SMO 런타임

WebSphere Process Server는 SMO 오브젝트를 작성하고 이 오브젝트는 중개 플로우에 사용될 수 있습니다.

중개 플로우 작성 시 WebSphere Integration Developer는 각 터미널(입력, 출력 또는 실패)에 대한 메시지 본문 유형을 지정하며 컨텍스트 정보 유형을 지정할 수도 있습니다. WebSphere Process Server는 이 정보를 사용하여 메시지를 지정된 유형의 SMO 오브젝트로 변환합니다.

SMO의 MQ 헤더 데이터

SMO 구조는 MQ 헤더 정보를 /headers/MQHeader에 저장합니다. 여기에는 다음 세 가지 요소가 포함됩니다.
  • md - 메시지의 MQ 메시지 설명자(MQMD)를 표시
  • control - 메시지 본문에 관련된 형식 정보를 포함
  • header - WebSphere MQ 메시지에 포함된 헤더 구조를 선택적으로 반복하고 표시
md 요소에 MQMD 정의의 모든 필드가 포함되지만(WebSphere MQ 문서 참조), 유용하지 않은 데이터(예: StrucIdVersion) 및 메시지 형식 필드(Encoding, CodedCharSetIdFormat)를 전달하는 특정 제어 필드는 제외됩니다.

control 요소는 메시지 본문을 설명하는 Encoding, CodedCharSetIdFormat 필드를 전달합니다. WebSphere MQ 메시지에 메시지 헤더(예: MQRFH2)가 있는 경우, 해당 헤더를 설명하는 Encoding, CodedCharSetIdFormat 필드가 header 요소 내에서 전달됩니다.

header 요소는 메시지 헤더(예: MQRFH2)를 표시합니다. 각 헤더는 다음 중 하나입니다.
  • 헤더가 SMO에서 명시적으로 모델화되어 있습니다(RFH 버전 1 또는 2).
  • 헤더가 표준 MQ 헤더 구조를 따르고 있지만 명시적으로 모델화되어 있지 않습니다. 이러한 헤더는 MQH로 시작하는 MQ 형식 ID를 가집니다. 이 헤더들은 SMO에서 구조화되지 않은 2진 데이터로 표시됩니다.
  • 헤더가 사용자가 제공한 MQ 헤더 데이터 바인딩으로 처리됩니다.

header 요소가 헤더를 설명하는 Encoding, CodedCharSetIdFormat 필드를 포함합니다. 특히 Format 필드를 정확하게 설정해야 하며(예: MQRFH2 헤더의 경우 MQHRF2) CodedCharSetIdEncoding 필드는 분명하지 않은 데이터의 경우에 중요합니다. WebSphere MQ 메시지로 렌더링될 때 이 형식 정보는 이전 MQ 헤더로 작성됩니다(또는 이전 헤더가 없는 경우 MQMD로 작성됨).

헤더 부속 요소

header 요소는 또한 각 모델화된 헤더에 대한 부속 요소(rfhrfh2)와 모델화되지 않은 표준 MQ 헤더에 대한 부속 요소(opaque), 그리고 사용자가 제공한 MQ 헤더에 대한 부속 요소(value)를 포함합니다. 이 네 가지 요소 중 하나는 반드시 설정해야 합니다. 헤더 요소에 이 요소들 중 두 개 이상을 설정하면 오류가 발생합니다. value 부속 요소는 사용자가 제공한 헤더 데이터 바인딩에서 사용되는 구조를 저장합니다. 나머지 다른 세 요소(rfh, rfh2opaque)는 다음 섹션에서 설명됩니다.

RFH 헤더

WebSphere MQ RFH 헤더는 이름-값 쌍의 문자열을 포함하는데, 여기서 각 이름과 값은 텍스트 문자열입니다. 이는 이름 및 값 요소를 포함하는 반복되는 특성 요소로서 SMO로 표시됩니다.

RFH2 헤더

WebSphere MQ RFH2 헤더는 0개 이상의 이름 지정된 폴더를 포함하며, 각 폴더는 일련의 특성과 그룹을 포함합니다. 특성에는 이름, 선택적 유형 및 값(모두 문자열로 표시됨)이 있습니다. 그룹은 이름을 가지며 일련의 특성과 그룹을 포함합니다. RFH2 헤더의 SMO 표시에는 NameValueCCSID 요소가 포함되는데, 이 요소는 WebSphere MQ 메시지에서 폴더를 인코드하는 데 사용되는 CCSID를 판별합니다.

모델화되지 않은 표준 WebSphere MQ 헤더

opaque 요소는 표준 구조의 모든 WebSphere MQ header를 표시합니다. 이러한 모든 헤더에 공통적인 필드(StrucId, VersionFlags)는 요소로서 표시됩니다. data라는 요소도 있는데 이 요소는 hexBinary 데이터와 같이 헤더의 모델화되지 않은 부분을 포함합니다. opaque 요소를 사용할 때, 보통 올바른 EncodingCodedCharSetId 값을 헤더와 연관시켜 놓으면 데이터 손상을 방지할 수 있습니다.

WebSphere MQ 헤더 정보에 대한 유형

WebSphere MQ 헤더 필드는 WebSphere MQ 자체에서 사용되는 것과 동일한 세트의 유형을 사용하여 정의합니다. MQLONG 필드는 int로 표시되고 MQBYTEnn 필드는 hexBinary 데이터(nn 길이로 제한됨)로 표시되며, MQCHARnn 필드는 string 데이터(nn 문자로 제한됨)로 표시됩니다.


ⓒ Copyright IBM Corporation 2005, 2006.
이 Information Center는 Eclipse 기술을 기반으로 합니다. (http://www.eclipse.org)