Transcodificación entre formatos de mensaje

Una mediación puede convertir un mensaje de un formato en otro sin cambiar el significado semántico del mensaje. Esta operación se denomina transcodificación de un mensaje.

El código siguiente es un manejador de mediación de ejemplo que transcodifica un mensaje en un nuevo formato de mensaje, siempre que el mensaje se pueda transcodificar:
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)
  {
    // Redireccione el mensaje original al destino de excepciones
    MessageContextException mce = 
      new MessageContextException("Unable to transcode to "+NEW_FORMAT",e);
    throw mce;
  }
}
En la tabla siguiente se describe qué mensajes se pueden transcodificar y proporciona la salida para cada par de formatos. Tenga en cuenta que la abreviatura DG representa "gráfico de datos". Los números indicados entre delimitadores en la tabla se describen así:
  • (1) Un mensaje con JMS de formato: no puede tener una carga. No puede transportar ningún dato de mensaje que no sean las propiedades del mensaje. Si una mediación llama a getDataGraph() en un mensaje con formato JMS: siempre se devuelve null. Todos los demás formatos de mensajes deben tener una carga del mensaje. Esto significa que un mensaje con formato JMS: no se puede transcodificar en otro formato. Si una mediación necesita convertir un mensaje con formato JMS: en un mensaje con cualquier otro formato, la mediación debe llamar a los métodos SIDataGraphFactory.getInstance().createDataGraph(newFormat) y setDataGraph en el objeto SIMessage para cambiar el contenido del mensaje.
  • (2) siempre se devuelve null si una mediación llama a getDataGraph() en un mensaje con formato JMS:
  • (3) Una mediación puede llamar al método getNewDataGraph() en un mensaje para devolver un gráfico de datos de copia con el mismo formato que el mensaje. La copia se puede editar, dejando el mensaje original sin cambiar. Para SOAP y Beans, puede modificar el modelo del mensaje editando la serie de formato para cambiar el valor que sigue a “:”.
Tabla 1. Transcodificación de mensajes. La tabla contiene los diferentes formatos que pueden utilizarse para convertir los mensajes de un formato a otro. La tabla muestra las opciones de transcodificación que son posibles entre los distintos formatos y también proporciona el efecto que la conversión tiene sobre los mensajes.
  A JMS: A JMS:text A JMS:bytes A JMS:stream A JMS:object A SOAP: A Bean:
Desde JMS: DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1)
Desde JMS:text DG=null (2) Sí (3) Sí, los bytes contienen UTF-8 Sí, si el texto contiene XML que sea conforme al esquema correcto. No Sí, si el contenido del mensaje es SOAP válido. Sí, si el contenido del mensaje es SOAP válido.
Desde JMS:bytes DG=null (2) Sí, pero sólo cuando los bytes pueden interpretarse correctamente como una serie UTF-8. Sí (3) Sí, si los bytes contienen XML que sea conforme al esquema correcto. Sí, se supone que los bytes son un objeto serializado. Sí, si el contenido del mensaje es SOAP válido. Sí, si el contenido del mensaje es SOAP válido.
Desde JMS:stream DG=null (2) Sí, el texto es transcodificación de XML. Sí, los bytes contienen transcodificación de XML. Sí (3) No No No
Desde JMS:object DG=null (2) No Sí, los bytes contienen la serialización de objeto. No Sí (3) No No
Desde SOAP: DG=null (2) No No Sí (3) - si el contenido del mensaje coincide con el nuevo WSDL.
Desde Bean: DG=null (2) No No Sí (3) - si el contenido del mensaje coincide con el nuevo WSDL.

Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=transcode_msg_formats
File name: transcode_msg_formats.html