Codeumsetzung zwischen Nachrichtenformaten

Eine Mediation kann eine Nachricht von einem Format in ein anderes konvertieren, ohne die semantische Bedeutung der Nachricht zu ändern. Diese Operation wird als Codeumsetzung einer Nachricht bezeichnet.

Der folgende Code ist ein Beispielmediationshandler, der die Codeumsetzung einer Nachricht in ein neues Nachrichtenformat durchführt, sofern die Nachricht dies unterstützt:
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;
  }
}
In der folgenden Tabelle wird beschrieben, für welche Nachrichten eine Codeumsetzung durchgeführt werden kann. Außerdem wird das Ergebnis jeder Formatpaarung angegeben. Die Abkürzung DG steht für "Datengraph". Die Zahlen in eckigen Klammern, die in der Tabelle verwendet werden, sind im Folgenden erläutert:
  • (1) Eine Nachricht mit dem Format JMS: kann keine Nutzdaten haben. Sie enthält abgesehen von den Nachrichteneigenschaften keine weiteren Nachrichtendaten. Wenn eine Mediation getDataGraph() für eine Nachricht mit dem Format JMS: aufruft, wird immer null zurückgegeben. Alle anderen Nachrichtenformate müssen Nachrichtennutzdaten haben. Das bedeutet, dass für eine Nachricht mit dem Format JMS: keine Codeumsetzung in ein anderes Format durchgeführt werden kann. Wenn eine Mediation eine Nachricht mit dem Format JMS: in eine Nachricht mit einem anderen Format ändern muss, muss die Mediation die Methoden SIDataGraphFactory.getInstance().createDataGraph(newFormat) und setDataGraph für das SIMessage-Objekt aufrufen, um den Nachrichteninhalt zu ändern.
  • (2) Es wird immer null zurückgegeben, wenn eine Mediation getDataGraph() für eine Nachricht mit dem Format JMS: aufruft.
  • (3) Eine Mediation kann die Methode "getNewDataGraph()" für eine Nachricht aufrufen, um eine Datengraphkopie zurückzugeben, die dasselbe Format wie die Nachricht hat. Die Kopie kann bearbeitet werden, womit die ursprüngliche Nachricht unverändert bleibt. Für SOAP und Beans können Sie das Nachrichtenmodell ändern, indem Sie die Formatierzeichenfolge editieren und den Wert ändern, der dem Doppelpunkt (":") folgt.
Tabelle 1. Codeumsetzung bei Nachrichten. Die Tabelle enthält die verschiedenen Formate, die zum Konvertieren der Nachrichten aus einem Format in ein anderes verwendet werden können. Die Tabelle enthält die Codeumsetzungsoptionen, die zwischen verschiedenen Formaten möglich sind und stellt außerdem die Auswirkungen der Konvertierung auf die Nachrichten bereit.
  In JMS: In JMS:text In JMS:bytes In JMS:stream In JMS:object In SOAP: In Bean:
Von JMS: DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1) DG=null (1)
Von JMS:text DG=null (2) Ja (3) Ja, Bytes enthalten UTF-8 Ja, sofern der Text gemäß Schema gültige XML enthält Nein Ja, sofern der Nachrichteninhalt für SOAP gültig ist Ja, sofern der Nachrichteninhalt für SOAP gültig ist
Von JMS:bytes DG=null (2) Ja, aber nur, wenn die Bytes problemlos als UTF-8-Zeichenfolge interpretiert werden können Ja (3) Ja, sofern die Bytes gemäß Schema gültige XML enthalten Ja, sofern die Bytes ein serialisiertes Objekt sind Ja, sofern der Nachrichteninhalt für SOAP gültig ist Ja, sofern der Nachrichteninhalt für SOAP gültig ist
Von JMS:stream DG=null (2) Ja, Text ist eine XML-Codeumsetzung Ja, Bytes enthalten XML-Codeumsetzung Ja (3) Nein Nein Nein
Von JMS:object DG=null (2) Nein Ja, Bytes enthalten serialisiertes Objekt Nein Ja (3) Nein Nein
Von SOAP: DG=null (2) Ja Ja Nein Nein Ja (3), sofern der Nachrichteninhalt der neuen WSDL entspricht Ja
Von Bean: DG=null (2) Ja Ja Nein Nein Ja Ja (3), sofern der Nachrichteninhalt der neuen WSDL entspricht

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=transcode_msg_formats
Dateiname:transcode_msg_formats.html