Conversion entre les formats de message

Une médiation peut convertir un message d'un format dans un autre sans en modifier la signification sémantique. Cette opération est appelée conversion de message.

Le code suivant est un exemple de gestionnaire de médiations qui convertit un message dans un nouveau format, lorsque cela est possible :
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;
  }
}
Le tableau ci-dessous présente les messages qui peuvent être convertis et fournit la sortie pour chaque appariement de format. L'abréviation DG correspond au "graphique de données". La signification des chiffres entre parenthèses est la suivante :
  • (1) Un message au format JMS: ne peut pas avoir de charge utile. Le message contient uniquement des données de propriété. Si une médiation appelle getDataGraph() sur un message au format JMS:, la valeur null est toujours renvoyé. Tous les autres formats de message doivent avoir une charge utile de message. Cela signifie qu'un message au format JMS: ne peut pas être converti dans un autre format. Si une médiation doit convertir un message au format JMS: dans un autre format, elle doit appeler les méthodes SIDataGraphFactory.getInstance().createDataGraph(newFormat) et setDataGraph sur l'objet SIMessage pour modifier le contenu du message.
  • (2) La valeur null est toujours renvoyée si une médiation appelle la méthode getDataGraph() sur un message au format JMS :
  • (3) Une médiation peut appeler la méthode getNewDataGraph() sur un message pour renvoyer une copie sous forme de graphique de données de même format que le message. La copie peut être modifiée, ce qui permet de conserver le message initial inchangé. Pour SOAP et Beans, vous pouvez modifier le modèle du message en modifiant la chaîne de format afin de changer la valeur qui suit le caractère ":".
Tableau 1. Transcodage des messages. Le tableau contient les différents formats que vous pouvez utiliser pour la conversion des messages. Le tableau recense les options de transcodage possibles entre les différents formats, et indique l'effet de la conversion sur les messages.
  Vers JMS: Vers JMS:text Vers JMS:bytes Vers JMS:stream Vers JMS:object Vers SOAP: Vers Bean:
A partir de JMS: DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1)
A partir de JMS:text DG=null (2) Oui (3) Oui, les octets contiennent UTF-8 Oui, si le texte contient des éléments XML conformes au schéma correct. Non Oui, si le contenu du message est à un format SOAP valide. Oui, si le contenu du message est à un format SOAP valide.
A partir de JMS:bytes DG=null (2) Oui mais uniquement lorsque les octets peuvent correctement être interprétés en tant que chaîne UTF-8. Oui (3) Oui, si les octets contiennent un élément XML conforme au schéma correct. Oui, il est supposé que les octets sont des objets sérialisés. Oui, si le contenu du message est à un format SOAP valide. Oui, si le contenu du message est à un format SOAP valide.
A partir de JMS:stream DG=null (2) Oui, le texte est Conversion XML. Oui, les octets contiennent Conversion XML. Oui (3) Non Non Non
A partir de JMS:object DG=null (2) Non Oui, les octets contiennent une sérialisation d'objet. Non Oui (3) Non Non
A partir de SOAP: DG=null (2) Yes Yes Non Non Oui (3) - si le contenu du message correspond au nouvel élément WSDL. Yes
A partir de Bean: DG=null (2) Yes Yes Non Non Yes Oui (3) - si le contenu du message correspond au nouvel élément WSDL.

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=transcode_msg_formats
Nom du fichier : transcode_msg_formats.html