WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Codepage konvertieren und Nachrichtenverschlüsselung

Mithilfe von ESQL in einem Compute-Knoten können Sie Daten für die Codepage und die Nachrichtenverschlüsselung konvertieren.

Falls in Ihrem Nachrichtenfluss WebSphere MQ-Nachrichten verarbeitet werden, können Sie für die Bereitstellung dieser Konvertierungen die Funktionen von WebSphere MQ verwenden (dazu gehören auch die GET- und PUT-Optionen sowie die Datenkonvertierungsexits von WebSphere MQ). Falls Sie keine WebSphere MQ-Nachrichten verarbeiten oder die Funktionen von WebSphere MQ nicht nutzen möchten, können Sie die Funktionen von WebSphere Message Broker verwenden, indem Sie den entsprechenden ESQL-Code in einem Compute-Knoten in Ihrem Nachrichtenfluss codieren.

Der Inhalt des MQMD, MQRFH2 und des Hauptteils einer Nachricht in der MRM-Domäne, die mit einem physischen CWF-Format modelliert wurde, kann einer Codepage- und Verschlüsselungskonvertierung unterliegen. Der Inhalt des Hauptteils einer Nachricht in den XML-, XMLNS- und JMS-Domänen sowie Nachrichten in der MRM-Domäne, die mit einem physischen XML- oder TDS-Format modelliert wurden, werden als Zeichenfolgen (strings) behandelt. Es kommt nur die Codepage-Konvertierung zur Anwendung; eine Verschlüsselungskonvertierung ist nicht erforderlich.

Bei Nachrichten in der MRM-Domäne, die mit einem physischen CWF-Format modelliert wurden, können Sie die Felder 'MQMD CCSID' und 'Encoding' (Verschlüsselung) der Ausgabenachricht, sowie die CCSID (die ID des codierten Zeichensatzes) und Verschlüsselung weiterer Header auf den erforderlichen Zielwert setzen.

Bei Nachrichten in der MRM-Domäne, die mit einem physischen XML- oder TDS-Format modelliert wurden, können Sie das Feld 'MQMD CCSID' der Ausgabenachricht, sowie die CCSID weiterer Header festlegen. XML- und TDS-Daten werden als Zeichenfolgen behandelt und unterliegen daher lediglich der CCSID-Konvertierung.

Angenommen, eine Nachricht von WebSphere MQ verfügt über einen MQMD-Header, einen MQRFH2-Header sowie einen Nachrichtenhauptteil. Wenn Sie diese Nachricht in Mainframe-CodedCharSetId und -Encoding konvertieren möchten, codieren Sie im Compute-Knoten folgenden ESQL-Code:

SET OutputRoot.MQMD.CodedCharSetId = 500; 
SET OutputRoot.MQMD.Encoding = 785; 
SET OutputRoot.MQRFH2.CodedCharSetId = 500; 
SET OutputRoot.MQRFH2.Encoding = 785;

Das folgende Beispiel veranschaulicht die erforderlichen Schritte zur Änderung einer CWF-Nachricht (CWF = Custom Wire Format), damit diese von WebSphere Message Broker an IMS unter z/OS übergeben werden kann.

  1. Sie haben die Eingabenachricht in XML definiert und verwenden einen MQRFH2-Header. Entfernen Sie den Header, bevor Sie die Nachricht an IMS übergeben.
  2. Die an IMS übergebene Nachricht muss über einen MQIIH-Header verfügen und muss in der z/OS-Codepage geschrieben sein. Diese Nachricht wird im MRM modelliert und hat den Namen 'IMS1'. Definieren Sie die PIC X-Felder in dieser Nachricht als den logischen Typ 'Zeichenfolge' (string), damit Konvertierungen zwischen EBCDIC und ASCII stattfinden können. Falls die Felder den logischen Typ 'Binär' (binary) haben, findet keine Datenkonvertierung statt; die binären Daten werden ignoriert, wenn eine CWF-Nachricht vom MRM-Parser syntaktisch analysiert wird.
  3. Die vom IMS empfangene Nachricht wird im MRM ebenfalls definiert und trägt den Namen 'IMS2'. Definieren Sie die PIC X-Felder in dieser Nachricht als den logischen Typ 'Zeichenfolge' (string), damit Konvertierungen zwischen EBCDIC und ASCII stattfinden können. Falls die Felder den logischen Typ 'Binär' (binary) haben, findet keine Datenkonvertierung statt; die binären Daten werden ignoriert, wenn eine CWF-Nachricht vom MRM-Parser syntaktisch analysiert wird.
  4. Konvertieren Sie die Antwortnachricht in die Windows-Codepage. Der MQIIH-Header verbleibt in dieser Nachricht.
  5. Sie haben einen Nachrichtenfluss erstellt, der folgende Knoten enthält: :
    1. Der abgehende Nachrichtenfluss MQInput-Knoten1 --> Rechenknoten1 --> MQOutput-Knoten1.
    2. Der ankommende Nachrichtenfluss MQInput-Knoten2 --> Rechenknoten2 --> MQOutput-Knoten2.
  6. Codieren Sie den ESQL-Code im (abgehenden) Rechenknoten1 wie folgt, wobei Sie die relevante Nachrichtengruppen-ID angeben. Dieser Code demonstriert die Verwendung des Standardnamens der physischen CWF-Schicht. Sie müssen den Namen verwenden, der Ihren Modelldefinitionen entspricht. Falls Sie einen falschen Wert angeben, schlägt der Broker mit der Nachricht BIP5431 fehl.
    -- Schleife für das Kopieren von Nachrichtenheadern
    DECLARE I INTEGER 1;
    DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
    
    WHILE I < J - 1 DO
      SET OutputRoot.*[I] = InputRoot.*[I];
      SET I=I+1;
    END WHILE;
    
    SET OutputRoot.MQMD.CodedCharSetId = 500;
    SET OutputRoot.MQMD.Encoding = 785;
    SET OutputRoot.MQMD.Format = 'MQIMS   ';
    SET OutputRoot.MQIIH.Version = 1;
    SET OutputRoot.MQIIH.StrucLength = 84;
    SET OutputRoot.MQIIH.Encoding = 785;
    SET OutputRoot.MQIIH.CodedCharSetId = 500;
    SET OutputRoot.MQIIH.Format = 'MQIMSVS ';
    SET OutputRoot.MQIIH.Flags = 0;
    SET OutputRoot.MQIIH.LTermOverride = '        ';
    SET OutputRoot.MQIIH.MFSMapName = '        ';
    SET OutputRoot.MQIIH.ReplyToFormat = 'MQIMSVS ';
    SET OutputRoot.MQIIH.Authenticator = '        ';
    SET OutputRoot.MQIIH.TranInstanceId = X'00000000000000000000000000000000';
    SET OutputRoot.MQIIH.TranState = ' ';
    SET OutputRoot.MQIIH.CommitMode = '0';
    SET OutputRoot.MQIIH.SecurityScope = 'C';
    SET OutputRoot.MQIIH.Reserved = ' ';
    SET OutputRoot.MRM.e_elen08 = 30;
    SET OutputRoot.MRM.e_elen09 = 0;
    SET OutputRoot.MRM.e_string08 = InputBody.e_string01;
    SET OutputRoot.MRM.e_binary02 = X'31323334353637383940';
    SET OutputRoot.Properties.MessageSet = 'DHCJOEG072001';
    SET OutputRoot.Properties.MessageType = 'IMS1';
    SET OutputRoot.Properties.MessageFormat = 'Binary1';

    Die Verwendung der Variablen J, die mit dem Wert der Kardinalität der vorhandenen Nachrichtenheader initialisiert wird, ist effizienter als die Berechnung der Kardinalität in jeder einzelnen Iteration der Schleife; dies ist der Fall, wenn Sie die folgende WHILE-Anweisung codieren:

    WHILE I < CARDINALITY(InputRoot.*[]) DO
  7. Erstellen Sie den ESQL-Code im (eingehenden) Rechenknoten2 wie folgt, wobei Sie die relevante Nachrichtengruppen-ID angeben. Dieser Code demonstriert die Verwendung des Standardnamens der physischen CWF-Schicht. Sie müssen den Namen verwenden, der Ihrer Modelldefinition entspricht. Falls Sie einen falschen Wert angeben, schlägt der Broker mit der Nachricht BIP5431 fehl.
    -- Schleife für das Kopieren von Nachrichtenheadern
    DECLARE I INTEGER 1;
    DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
    
    WHILE I < J DO
      SET OutputRoot.*[I] = InputRoot.*[I];
      SET I=I+1;
    END WHILE;
    
    SET OutputRoot.MQMD.CodedCharSetId = 437;
    SET OutputRoot.MQMD.Encoding = 546;
    SET OutputRoot.MQMD.Format = 'MQIMS   ';
    SET OutputRoot.MQIIH.CodedCharSetId = 437;
    SET OutputRoot.MQIIH.Encoding = 546;
    SET OutputRoot.MQIIH.Format = '        ';
    SET OutputRoot.MRM = InputBody;
    SET OutputRoot.Properties.MessageSet = 'DHCJOEG072001';
    SET OutputRoot.Properties.MessageType = 'IMS2';
    SET OutputRoot.Properties.MessageFormat = 'Binary1';

Sie müssen für die Eigenschaften des Knotens 'MQEmpfang1' keine bestimmten Werte eingeben, da die Nachricht und die Nachrichtengruppe im MQRFH2-Header identifiziert werden und keine Konvertierung erforderlich ist.

Sie müssen im MQInput-Knoten für den eingehenden Nachrichtenfluss (MQEmpfang2) Werte für Nachrichtendomäne, -gruppe, -typ und -format festlegen. Sie müssen keine Konvertierungsparameter festlegen.

Es gibt eine spezifische Situation, in der Sie möglicherweise Daten einer Codepage in eine andere Codepage konvertieren müssen: Wenn Nachrichten Zeilenvorschubzeichen enthalten und zwischen EBCDIC- und ASCII-Systemen übergeben werden. Die erforderliche Konvertierung in dieser Situation wird im Abschnitt EBCDIC NL in ASCII CR LF konvertieren beschrieben.

Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:19:57


TaskthemaTaskthema | Version 8.0.0.5 | ac11620_