Transcodificação entre Formatos de Mensagens

Uma mediação pode converter uma mensagem de um formato para outro, sem alterar o significado semântico da mensagem. Essa operação é chamada de transcodificação da mensagem.

O código a seguir é um manipulador de mediação de exemplo, que transcodifica uma mensagem em um novo formato de mensagem, desde que a mensagem possa ser transcodificada:
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;
  }
}
A tabela a seguir descreve as mensagens que podem ser transcodificadas e fornece o resultado de cada pareamento de formato. Observe que a abreviação DG representa "gráfico de dados". Os números entre parênteses na tabela são explicados da seguinte forma:
  • (1) Uma mensagem com formato JMS: não pode ter carga útil. Ela não transporta nenhum dado da mensagem, além das propriedades da mensagem. Se uma mediação chamar getDataGraph() em uma mensagem com formato JMS:, o valor null será sempre retornado. Todos os outros formatos de mensagens deve ter uma carga útil da mensagem. Isso significa que uma mensagem com formato JMS: não pode ser transcodificada para outro formato. Se uma mediação precisar mudar uma mensagem com formato JMS: para uma mensagem com qualquer outro formato, essa mediação precisará chamar os métodos SIDataGraphFactory.getInstance().createDataGraph(newFormat) e setDataGraph no objeto SIMessage para alterar o conteúdo da mensagem.
  • (2) O valor null será retornado sempre que uma mediação chamar getDataGraph() em uma mensagem com formato JMS:
  • (3) Uma mediação pode chamar o método getNewDataGraph() em uma mensagem para retornar um gráfico de dados de cópia com o mesmo formato da mensagem. A cópia pode ser editada, mantendo a mensagem original inalterada. Para SOAP e Beans, é possível alterar o modelo de mensagem, editando a sequência de formatações, para alterar o valor mostrado depois de ":".
Tabela 1. Transcodificação da Mensagem. A tabela contém os diferentes formatos que podem ser usados para converter as mensagens de um formato para outro. A tabela mostra as opções de transcodificação possíveis entre os diferentes formatos e também fornece o efeito da conversão nessas mensagens.
  Para JMS: Para JMS:text Para JMS:bytes Para JMS:stream Para JMS:object Para SOAP: Para Bean:
De JMS: DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1)
De JMS:text DG=null (2) Sim (3) Sim, os bytes contêm UTF-8 Sim, se XML do texto for adequado ao esquema correto. No Sim, se o conteúdo da mensagem for um SOAP válido. Sim, se o conteúdo da mensagem for um SOAP válido.
De JMS:bytes DG=null (2) Sim, mas apenas quando os bytes puderem ser corretamente interpretados como uma sequência UTF-8. Sim (3) Sim, se XML dos bytes for adequado ao esquema correto. Sim, considerar bytes como um objeto serializado. Sim, se o conteúdo da mensagem for um SOAP válido. Sim, se o conteúdo da mensagem for um SOAP válido.
De JMS:stream DG=null (2) Sim, o texto é uma transcodificação de XML. Sim, os bytes contém transcodificação de XML. Sim (3) Nenhum No No
De JMS:object DG=null (2) No Sim, os bytes podem conter a serialização do objeto. Nenhum Sim (3) Nenhum Nenhum
De SOAP: DG=null (2) Sim Sim No Nenhum Sim (3) - se o conteúdo da mensagem for correspondente ao novo WSDL. Sim
De Bean: DG=null (2) Sim Sim No Nenhum Sim Sim (3) - se o conteúdo da mensagem for correspondente ao novo WSDL.

Ícone que indica o tipo de tópico Tópico de Referência



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=transcode_msg_formats
Nome do arquivo: transcode_msg_formats.html