MessageTransformBean, Migration von
Dispatcher-Klassen
Die Plain-J2SE-Adapter-Engine bietet bei verschiedenen Adaptern die Möglichkeit, mit externen Java-Klassen die Payload einer XI-Message zu modifizieren. Hierzu müssen die Java-Klassen ein Java-Interface Transformimplementiert haben.
Um solche Klassen auch für die entsprechenden Adapter-Typen in der J2EE-Adapter-Engine verfügbar zu machen, wird mit dem Modul-Prozessor das Modul AF_Modules/MessageTransformBean ausgeliefert, das die für die Plain-J2SE-Adapter-Engine geschriebenen Klassen aufrufbar macht.
Die in der Plain-J2SE-Adapter-Engine enthaltenen Klassen com.sap.aii.messaging.adapter.Conversion und com.sap.aii.messaging.adapter.XSLTConversionsind mit diesem Modul ebenfalls direkt verfügbar.
Andere Klassen, die in XI 2.0 über die Erweiterung des Java-Classpaths in der Adapter-Engine bekannt gemacht wurden, müssen für die Adapter-Engine in einem speziellen Verfahren deployed werden.
Die Angaben zum Dispatcher werden im Modul-Prozessor vorgenommen.
Siehe: Modul-Prozessor
● Unter Beispiel für den Einsatz des Dispatcher wird exemplarisch die Konfiguration der nacheinander aufzurufenden Transform-Klassen com.sap.aii.messaging.adapter.Conversion und com.sap.aii.messaging.adapter.XSLTConversiongezeigt. Diese Konfiguration wird auf den Modul-Prozessor übertragen.
● In der Plain-J2SE-Adapter-Engine steht allen Parametern ein Namensraum – im Beispiel namespace1 – voran, der die konkrete Dispatcher-Implementierung beschreibt. Für diesen Dispatcher werden zwei Services definiert, deren Parameter wiederum durch einen weiteren Namensraum – im Beispiel Plain2XMLService und XSLTService identifiziert werden.
Diese beiden Angaben werden in der J2EE-Adapter-Engine bereits durch die Übertragung der Parameter in eine Modulkonfiguration erreicht und entfallen daher als Teil der Parameternamen.
Externe Java-Klassen werden analog wie die oben verwendeten Klassen über Transform.Classspezifiziert. Damit solche Java-Klassen vom Modul AF_Modules/MessageTransformBean geladen werden können, müssen sie den entsprechenden Java-Bibliotheken (jar-Dateien) der J2EE-Anwendung erst bekannt gemacht werden.
Die Bekanntmachung erfolgt, wie auch das Deployment von Treibern für den JMS- oder JDBC-Adapter, über die Installation mit der Archivdatei aii_af_jmsproviderlib.sda, die Sie zuvor modifizieren müssen.
Fügen Sie die jar-Datei dem Archiv archive aii_af_jmsproviderlib.sda mit einem Zip-Programm hinzu.
● Ändern Sie die Datei provider.xml aus aii_af_jmsproviderlib.sda.
○ Extrahieren Sie provider.xml und fügen Sie die Zeile <jar-name>thejarname</jar-name> jedem jar im Bereich <jars> hinzu.
○ Fügen Sie im Bereich <references> folgende Zeile ein:
<reference type="library" strength="weak">com.sap.aii.messaging.runtime</reference>
○ Fügen Sie die geänderte provider.xmlwieder dem Archiv hinzu.
Stellen Sie sicher, dass die ursprüngliche Pfadangabe server\ erhalten bleibt. Überprüfen Sie die letzte Pfadangabe.
● Fügen Sie alle jars (ohne Pfadangabe), die Sie in provider.xml definiert haben, dem aii_af_jmsproviderlib.sda hinzu.
● Verwenden Sie den Software Delivery Manager zum Deployment von aii_af_jmsproviderlib.sda.
○ Wenn das leere Archiv im Rahmen der Installation bereits deployed wurde, dann wählen Sie im ersten Schritt des Deployment Update deployed SDAs/SCAs that have any version.
○ Sonst wird das Deployment mit der Meldung Already been deployed. beendet.
Starten Sie erneut den J2EE Server. Die Bibliotheken sind dem Modul-Prozessor nun bekannt.

Das Archiv aii_af_jmsproviderlib.sda wird von mehreren Komponenten und Adaptern der Adapter-Engine benutzt. Stellen sie sicher, dass sie keine Komponenten aus dem Archiv löschen, da sonst der JDBC-Adapter oder der JMS-Adapter nicht mehr funktionstüchtig sein könnten.
Erweitern sie daher immer nur die zuletzt deployte Version von aii_af_jmsproviderlib.sda um die von ihnen benötigten Klassen.
● Folgende MIME-Content-Felder können Sie zur Beschreibung der Payload setzen:
Weitere Informationen zu den Feldern finden Sie in RFC1806, RFC2045 und RFC2378.
Parameter |
Wert |
Transform.ContentDisposition |
attachment oder inline z.B. attachement;filename=“abc.txt“ |
Transform.ContentDescription |
Beschreibung |
Transform.ContentType |
Gibt den Typ der Payload an, z.B. text/plain |
Transform.PermanentErrors |
true oder false Sie können festlegen, ob Fehler des Moduls als temporär oder permanent gewertet werden sollen. Im File-/FTP-Sender-Adapter kann eine Auswertung vorgenommen werden, wenn die Fehlerarchivierung eingeschaltet ist. Siehe: Konfiguration des File/FTP-Sender-Adapters, dort unter Verarbeitungsparameter, Fehlerhafte Dateien archivieren |
● Geben Sie als Parameter für das Modul unter dem Parameternamen TransformClass den Name der Dispatcher-Klasse an.
● Dann geben Sie außerdem alle Parameter an, die an die Dispatcher-Klasse durchgereicht werden sollen. Siehe unten unter Beispiel.
Rufen Sie MessageTransformBean auf, ohne eine Dispatcher-Klasse anzugeben, werden nur die Werte für die MIME-Content-Felder gesetzt.
Folgendes Beispiel zeigt die Konfiguration für die Plain-J2SE-Adapter-Engine und die migrierte Konfiguration im Modul-Prozessor.
Parameterangaben in der Adapterkonfiguration (Plain-J2SE-Adapter-Engine)
Parameter |
Wert |
namespace1.Service.1 |
Plain2XMLService (Plain2XMLService ist ein frei vorgegebener Name.) |
namespace1.Plain2XMLService.class |
com.sap.aii.messaging.adapter.Conversion |
namespace1.Plain2XMLService.xml.conversionType |
SimplePlain2XML |
namespace1.Plain2XMLService.xml.processFieldNames |
fromConfiguration |
namespace1.Plain2XMLService.xml.fieldNames |
a,b,c |
namespace1.Plain2XMLService.xml.fieldSeparator |
; |
namespace1.Plain2XMLService.xml.documentNamespace |
<Dokument-Namensraum> |
namespace1.Plain2XMLService.xml.documentName |
<Dokumentname> |
Die nachgelagerte XSLT-Konvertierung wird durch folgende Einträge in der Konfigurationsdatei veranlasst:
Parameterangaben für die XSLT-Konvertierung in der Adapterkonfiguration (Plain-J2SE-Adapter-Engine)
Parameter |
Wert |
namespace1.Service.2 |
XSLTService (XSLTService ist ein frei vorgegebener Name.) |
namespace1.XSLTService.class |
com.sap.aii.messaging.adapter.XSLTConversion |
namespace1.XSLTService.XSLTConversion.XSLTFileName |
Data/DemoConversion.xsl |
Diese Angaben führen zu:
Angaben in der Verarbeitungssequenz des Modul-Prozessors
Nr |
Modulname |
Typ |
1 |
AF_Modules/MessageTransformBean |
L |
2 |
AF_Modules/MessageTransformBean |
L |
3 |
<Adapter-spezifischer Modulname> |
L |

Wenn Sie die Modulkette wie hier explizit konfigurieren, dann müssen Sie das letzte Modul in dieser Kette wie im Modul-Prozessor unter Integration beschrieben setzten.
Angaben in der Modulkonfiguration des Modul-Prozessors
Parametername |
Parameterwert |
Bemerkung |
Transform.Class |
com.sap.aii.messaging.adapter.Conversion |
Parameter für den ersten Aufruf des Moduls MessageTransformBean |
xml.conversionType |
SimplePlain2XML |
|
xml.processFieldNames |
fromConfiguration |
|
xml.field.Names |
a,b,c |
|
xml.fieldSeparator |
; |
|
xml.documentNamespace |
<Dokument-Namensraum> |
|
xml.documentName |
<Dokumentname> |
|
Transform.Class |
com.sap.aii.messaging.adapter.XSLTConversion |
Parameter für den zweiten Aufruf des Moduls MessageTransformBean |
XSLTConversion.XSLTFileName |
Data/DemoConversion.xsl |

Die Angabe der auszuführenden Java-Klasse wird immer über den Parameter Transform.Classfür das Modul gesetzt. Dieser entspricht dem Parameter <namespace>.class in der Konfiguration der Plain-J2SE-Adapter-Engine.
Die Angabe des Dokumentnamens und den Namesraums ist nur zwingend erforderlich, wenn die Payload der Message im Message-Mapping bearbeitet wird.