메시지 형식 간 트랜스코딩

중개는 메시지의 시맨틱 의미를 변경하지 않고 하나의 형식에서 다른 형식으로 메시지를 변환할 수 있습니다. 이 조작은 메시지를 트랜스코딩하는 것으로 간주됩니다.

다음 코드는 트랜스코딩할 수 있는 메시지를 제공하여 메시지를 새로운 메시지 형식으로 트랜스코딩하는 중개 핸들러의 예입니다.
private static final String NEW_FORMAT = "JMS:text";

public boolean(MessageContext context) throws MessageContextException
{
  try 
  {
    SIMessageContext   msgCtx  = (SIMessageContext)context;
    SIMessage          msg     = msgCtx.getMessage();
    DataGraph        newDg   = msg.getNewDataGraph(NEW_FORMAT);

    msg.setDataGraph(newDg,NEW_FORMAT);
    return true;
  }
  catch (Exception e)
  {
    // Reroute the original message to the exception destination
    MessageContextException mce = 
      new MessageContextException("Unable to transcode to "+NEW_FORMAT",e);
    throw mce;
  }
}
다음 테이블은 트랜스코딩할 수 있는 메시지를 설명하고 각 형식 쌍에 결과를 제공합니다. 약어 DG는 "데이터 그래프"를 나타냅니다. 테이블에 있는 대괄호 안의 숫자는 다음과 같이 설명됩니다.
  • (1) JMS 형식의 메시지: 페이로드를 가질 수 없습니다. 이 메시지에는 메시지 특성이 아닌 다른 메시지 데이터가 없습니다. 중개가 JMS 형식으로 메시지에서 getDataGraph()를 호출하는 경우, 이 항상 리턴됩니다. 기타 모든 메시지 형식에는 메시지 페이로드가 있어야 합니다. 이는 JMS 형식을 가지는 메시지가 다른 형식으로 트랜스코딩될 수 없다는 것을 의미합니다. 중개가 JMS 형식을 가지는 메시지를 기타 형식을 가지는 메시지로 변경해야 하는 경우, 중개는 메시지 컨텐츠를 변경하기 위해 SIMessage 오브젝트에서 메소드 SIDataGraphFactory.getInstance().createDataGraph(newFormat)setDataGraph를 호출해야 합니다.
  • (2) 은 형식 JMS를 가지는 메시지에서 중개가 getDataGraph()를 호출하는 경우 항상 리턴됩니다.
  • (3) 메시지와 동일한 형식을 가지는 사본 데이터 그래프를 리턴하기 위해 중개는 메시지에서 메소드 getNewDataGraph()를 호출할 수 있습니다. 사본은 원본 메시지 변경 없이 편집할 수 있습니다. SOAP 및 Bean의 경우 형식 문자열을 편집하여 ":" 뒤에 오는 값을 변경함으로써 메시지 모델을 변경할 수 있습니다.
표 1. 메시지 트랜스코딩. 테이블은 하나의 형식에서 다른 형식으로 메시지를 변환하기 위해 사용될 수 있는 다른 형식을 포함합니다. 테이블은 다양한 형식 사이에 가능한 트랜스코딩 옵션을 표시하고 또한 변환이 메시지에 가지고 있는 영향을 제공합니다.
  JMS에: JMS:text에 JMS:bytes에 JMS:stream에 JMS:object에 SOAP에: Bean에:
JMS:로부터 DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1)
JMS:text로부터 DG=null (2) 예(3) 예, 바이트에 UTF-8 포함 예, 텍스트에 올바른 스키마를 준수하는 XML이 포함된 경우 아니오 예, 메시지 컨텐츠가 유효한 SOAP인 경우 예, 메시지 컨텐츠가 유효한 SOAP인 경우
JMS:bytes로부터 DG=null (2) 예, 그러나 바이트를 UTF-8 문자열로 올바르게 해석할 수 있는 경우에만 예(3) 예, 바이트에 올바른 스키마를 준수하는 XML이 포함된 경우 예, 바이트가 일련화된 오브젝트라 가정 예, 메시지 컨텐츠가 유효한 SOAP인 경우 예, 메시지 컨텐츠가 유효한 SOAP인 경우
JMS:stream로부터 DG=null (2) 예, 텍스트는 XML 트랜스코딩입니다. 예, 바이트는 XML 트랜스코딩을 포함합니다. 예(3) 아니오 아니오 아니오
JMS:object로부터 DG=null (2) 아니오 예, 바이트는 오브젝트 직렬화를 포함합니다. 아니오 예(3) 아니오 아니오
SOAP:로부터 DG=null (2) 아니오 아니오 예(3) - 메시지 컨텐츠가 새 WSDL과 일치합니다.
Bean:로부터 DG=null (2) 아니오 아니오 예(3) - 메시지 컨텐츠가 새 WSDL과 일치합니다.

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=transcode_msg_formats
파일 이름:transcode_msg_formats.html