Show TOC Anfang des Inhaltsbereichs

Vorgehensweisen SOAP-Adapter konfigurieren  Dokument im Navigationsbaum lokalisieren

Verwendung

Sie konfigurieren den SOAP-Adapter, um damit SOAP-Messages zwischen der Integration Engine und remote Clients bzw. Servers von Web-Services auszutauschen.

Der SOAP-Adapter bietet eine Laufzeitumgebung mit verschiedenen SOAP-Komponenten zur Verarbeitung von SOAP-Messages. Sie können diese SOAP-Komponenten nach Ihren Bedürfnissen mit eigenen Komponenten kombinieren.

Zur Instanziierung und Steuerung der SOAP-Komponenten verwendet der SOAP-Adapter eine Helper-Klasse. Möchten Sie Ihre eigene SOAP-Verarbeitungslogik verwenden, müssen Sie dem SOAP-Adapter Ihre eigene Helper-Klasse zur Verfügung stellen.

Die Konfiguration des SOAP-Adapters besteht im Wesentlichen aus der Angabe

      der Helper-Klasse, die die folgende Schnittstelle implementiert:

com.sap.aii.messaging.adapter.ModuleBubbleHelper

·        der Parameterwerte für die angegebene Helper-Klasse

Zum Beispiel müssen für die Helper-Klasse ModuleBubbleHelperXMBWSImpl die folgenden Parameter angegeben werden (diese Helper-Klasse instanziiert ein BubbleBag zur Integration von remote Web-Services mit der Integration Engine):

       Informationen zur Destination der Integration Engine (wenn die Integration Engine als Service-Provider agiert, also der SOAP-Adapter als Sender-Adapter konfiguriert werden soll).

¡        Informationen zur Destination des Web-Service-Provider (wenn die Integration Engine als Service-Client agiert, also der SOAP-Adapter als Empfänger-Adapter konfiguriert werden soll).

¡        Verschiedene Optionen zur Steuerung der Umwandlung von Multipart-SOAP-Messages der Integration Engine und SOAP-Messages des jeweiligen Web-Service.

Voraussetzungen

Sie haben

...

       1.      den entsprechenden Adapter installiert

       2.      den Adapter in der Konfigurationsoberfläche ausgewählt

       3.      über Konfigurieren die Konfiguration des Adapters aufgerufen

Vorgehensweise

Für den SOAP-Adapter besteht die Konfiguration aus zwei funktionalen Teilbereichen:

...

       1.      Die Versionsangabe für die Konfiguration.

version=30

Diese Angabe ist zwingend. Fehlt die Angabe, wird die Konfiguration als XI 2.0 Adapter-Konfiguration interpretiert. Andere Werte sind nicht zulässig und werden als Fehler ausgegeben.

       2.      Der Name der Java-Klasse für den SOAP-Adapter

Geben Sie den Namen der Klasse folgendermaßen an:

classname=com.sap.aii.messaging.adapter.ModuleBubble

Diese Angabe ist zwingend.

       3.      Die Konfigurationsparameter für die angegebene Helper-Klasse.

So müssen Sie zum Beispiel für die mitgelieferte Helper-Klasse ModuleBubbleHelperXMBWSImpl die folgenden Parameter spezifizieren:

¡        Angaben für die Integration Engine als Service-Provider bei Anfragen von Web-Service-Clients (SOAP-Sender-Adapter).

¡        Angaben für den Web-Service-Provider bei Anfragen der Integration Engine als Web-Service-Client (SOAP-Empfänger-Adapter).

Je nach Bedarf können Sie hierbei entweder einen Sender-Adapter oder einen Empfänger-Adapter oder auch alle beide konfigurieren.

Helper-Klasse für Senderverarbeitung konfigurieren

...

       1.      Geben Sie die vollständige Adresse (URL) der Integration Engine ein, an die die Message geschickt werden soll:

XI.TargetURL=http://IntegrationEngineHost:port/pipeline-arguments

Diese Angabe ist zwingend, wenn die Integration Engine als Service-Provider agiert.

Hinweis

Die Adresse der Integration Engine kann auch dynamisch aus dem System Landscape Directory (SLD) ermittelt werden. Hierzu wird in der Konfiguration folgender Eintrag hinzugefügt:

XI.SLDConfiguration=SLDaccessor

In diesem Fall wird für das mit XI.SenderService angegebene System die URL des zugehörigen Server im SLD ausgelesen und anstelle des unter XI.TargetURLangegebenen Wertes verwendet. Daher sollte hier folgendes angegeben werden:

XI.TargetURL=<fromSLD>

Damit der Zugriff funktioniert, muss der Dienst SLDaccessor für den Zugriff ins SLD konfiguriert sein, und die entsprechenden Einträge müssen im SLD gepflegt sein.

Hinweis

Ist der Integration Server nicht direkt, sondern über einen HTTP-Proxy-Server zu erreichen, müssen folgende Parameter gesetzt werden:

XI.ProxyHost=<proxyHostname>

XI.ProxyPort=<proxyPortnumber>

Hierbei ist <proxyHostname> der Host-Name des Proxy und <proxyPortnumber>der Port, auf dem der Proxy HTTP-Requests annimmt (z.B. 8080).

Wurde für den angegebene HTTP-Proxy-Server eine Authentifizierung spezifiziert, verwenden Sie folgende Parameter:

XI.ProxyUser=<proxyUser>

XI.ProxyPassword=<proxyPassword>

Wurde für die angegebene URL (HTTP-Service) in der Integration Engine eine Authentifizierung spezifiziert, verwenden Sie folgende Adresse:

XI.TargetURL=http://<user-name>:<password>@IntegrationEngineHost:port/pipeline-arguments

Als Alternative hierzu, oder wenn die URL aus dem SLD ermittelt wurde, können Sie die Anmeldeparameter auch wie folgt spezifizieren:

¡        XI.User=<user-name>

¡        XI.Password=<password>

Hinweis

Die Angaben müssen mit denen übereinstimmen, die Sie in der Transaktion SICF in der Integration Engine gemacht haben. Falls Sie keine oder eine ungültige Kombination von Benutzer und Kennwort angeben, wird jeder Übertragungsversuch in die Integration Engine mit Transport Exception: http-Error 401 – Unauthorized scheitern.

Der Benutzer muss im Integration Server über die Berechtigungen der Gruppe SAP_XI_APPL_SERV_USER verfügen.

Informationen zur Konfiguration der SSL-Authentifizierung mit Zertifikat finden Sie unter: Zertifikatverwaltung, dort unter Adapter Engine als SSL-Client einrichten

Soll bei der Anmeldung ein anderer Mandant bzw. eine andere Sprache als die Default-Werte der Integration Engine verwendet werden, können Sie zusätzlich die folgenden Parameter setzen:

¡        XI.Client=<client-no>

¡        XI.Language=<language-id>

Die folgenden Adress-Argumente sind optional. Sind diese Informationen nicht in der Request-Message eines Web-Service-Client enthalten, dienen die Angaben der Identifikation der Adapter-Konfiguration beim Routing und Mapping in der Pipeline der Integration Engine. Dort ist auch die Bedeutung der einzelnen Argumente beschrieben.

¡        XI.SenderParty=<sender party name>

¡        XI.SenderService=<sender service name>

¡        XI.InterfaceNamespace=<namespace URI>

¡        XI.Interface=<name>

¡        XI.ReceiverParty=<receiver party name>

¡        XI.ReceiverService=<receiver service name>

Geben Sie diesen Parameter an, benötigen Sie keine Empfängerermittlung beim Routing.

Die folgenden Argumente sind zwingend:

¡        XI.QualityOfService=<QualityOfService>

Gibt an wie eine Message durch die Integration Engine verarbeitet werden soll. Erlaubte Werte sind:

       XI.QualityOfService=BE (Best Effort, bedeutet synchrone Verarbeitung)

§         XI.QualityOfService=EO (Exactly Once, bedeutet asynchrone Verarbeitung)

§         XI.QualityOfService=EOIO (Exactly Once in Order, bedeutet asynchrone Verarbeitung über Queues)

Bei EOIO muss zusätzlich ein Queue-Name definiert werden:

¡        XI.QueueId=<QueueName>

Dieser Queue-Name wird in der Integration Engine verwendet, um Messages in der Reihenfolge ihres Eingangs zu bearbeiten.

¡        XI.XMLEncoding=<encoding>

Gibt an welche XML-Kodierung für die Integration Engine verwendet werden soll. Vorschlagswert ist UTF-8.

       2.      Geben Sie Port-Nummer und Pfad für den Adapter-Port für Web-Service-Clients an:

¡        XMBWS.WSPort=<port_no>

Die Port-Nummer <port_no> gibt den HTTP-Server-Port des Adapters an, der Web-Service-Messages erhält.

¡        XMBWS.WSPath=<path>

Der Pfad <path> beschreibt den Service-Teil der Adapter-URL, der Web-Service-Messages erhält.

       3.      Machen Sie die Angaben zur Steuerung des Formats von Web-Service-Messages

¡        XMBWS.KeepHeaders=<boolean>

Bei true werden die Header von Messages übernommen. Andernfalls werden alle Header entfernt.

¡        XMBWS.KeepAttachments=<boolean>

Bei true werden die Attachments von Messages übernommen.

¡        XMBWS.UseEncoded=<boolean>

Bei true werden die Header von Messages der Integration Engine in HTTP-Header X-XMB_WS_ENCODED kodiert.

¡        XMBWS.UseQueryString=<boolean>

Bei true erfolgt eine Angabe im Query-String.

Es wird die Request-Message berücksichtigt.

Helper-Klasse für Empfängerverarbeitung konfigurieren

...

       1.      Geben Sie die vollständige Adresse (URL) des Web-Service-Provider ein, an den die Message geschickt werden soll:

XMBWS.TargetURL=http://WebServiceHost:port/service-arguments

Diese Angabe ist zwingend, wenn der Web-Service-Provider als Service-Provider agiert.

Wurde für die angegebene URL (HTTP-Service) im Web-Service-Provider eine Authentifizierung spezifiziert, verwenden Sie folgende Adresse:

XMBWS.TargetURL=http://<user-name>:<password>@WebServiceHost:port/service–arguments

Als Alternative hierzu können Sie die Anmeldeparameter auch wie folgt spezifizieren:

¡        XMBWS.User=<user-name>

¡        XMBWS.Password=<password>

Ist der Web-Service-Provider nicht direkt, sondern über einen HTTP-Proxy-Server zu erreichen, müssen folgende Parameter gesetzt werden:

       XMBWS.ProxyHost=<proxyHostname>

       XMBWS.ProxyPort=<proxyPortnumber>

Hierbei ist <proxyHostname> der Host-Name des Proxy und <proxyPortnumber> der Port, auf dem der Proxy HTTP-Requests annimmt (z.B. 8080).

Wurde für den angegebene HTTP-Proxy-Server eine Authentifizierung spezifiziert, verwenden Sie folgende Parameter:

¡        XMBWS.ProxyUser=<user-name>

¡        XMBWS.ProxyPassword=<password>

       2.      Geben Sie den Wert der SOAPAction an:

¡        XMBWS.DefaultSOAPAction=<default_soap_action>

Die Angabe <default_soap_action> gibt den Standardwert für die SOAPAction in Web-Service-Messages an.

       3.      Machen Sie die Angaben zur Steuerung des Formats von Web-Service-Messages

¡        XMBWS.KeepHeaders=<boolean>

Bei true werden die Header von Messages der Integration Engine in die Web-Service-Messages übernommen. Andernfalls werden alle Header entfernt.

Hinweis

Header von Web-Service-Messages werden immer in die Messages der Integration Engine übernommen.

¡        XMBWS.KeepAttachments=<boolean>

Bei true werden die Attachments von Messages der Integration Engine in die Web-Service-Messages übernommen.

¡        XMBWS.UseEncoded=<boolean>

Bei true werden die Header von Messages der Integration Engine in HTTP-Header X-XMB_WS_ENCODED kodiert.

                                                  i.       XMBWS.EncodingVersion=<2|3>

Gibt an welche Version des XI Message-Formats bei der Kodierung der Message-Header in HTTP-Header verwenden werden soll (siehe XMBWS.UseEncoded). Hierbei steht der Wert 2 für das Message-Format von XI 2.0 und der Wert 3 für das Message-Format von XI 3.0. Vorschlagswert ist 3.

                                                ii.       XMBWS.UseQueryString=<boolean>

Bei true können Query-Strings angegeben werden.

Es wird die Response-Message berücksichtigt.

       4.      Geben Sie Port-Nummer und Pfad für den Adapter-Port für die Integration Engine an:

¡        XMBWS.XMBPort=<port_no>

Die Port-Nummer <port_no> gibt den HTTP-Server-Port des Adapters an, der Messages von der Integration Engine erhält.

¡        XMBWS.XMBPath=<path>

Der Pfad <path> beschreibt den Service-Teil der Adapter-URL, der Messages von der Integration Engine erhält.

       5.      Geben Sie die Kodierung für den Web-Service-Provider an:

       XMBWS.XMLEncoding=<encoding>

Gibt an welche XML-Kodierung für den Web-Service-Provider verwendet werden soll. Vorschlagswert ist UTF-8.

       6.      Der Adapter kann ein synchrones System-Acknowledgment zurücksenden, wenn es vom Sender angefordert wird. Das Acknowledgment bestätigt, dass die Nachricht an den Empfänger ausgeliefert wurde.

       Wollen Sie ein synchrones System-Acknowledgment zurücksenden, setzten Sie XI.AckFinal=true. Dies ist der Vorgabewert.

       Wollen Sie vermeiden, dass ein synchrones System-Acknowledgment zurückgesendet wird, auch wenn es vom Sender angefordert wird, setzen Sie XI.AckFinal=false.

Encoded String-Syntax

Die Struktur ist folgendermaßen aufgebaut:

      encheader  ::=  version ‘&’ token ( ‘&’ token ) *

      token  ::=  name ‘=’ value

      name  ::=  fieldname

      value  ::=  urlencoded fieldvalue

      version  ::=  version number

 

Für XI 3.0 stehen folgenden Feldnamen zur Verfügung:

Feldnamen XI 3.0

Name

Bedeutung

MessageClass

Message-Klasse:

      ApplicationMessage

      ApplicationResponse

      SystemAck

      ApplicationAck

      SystemError

      ApplicationError

ProcessingMode

      synchronous

      asynchronous

MessageId

Message-Id als GUID mit Format:

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

RefToMessageId

Referenz auf Message-id, als GUID mit Format:

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

ConversationId

Als String mit 60 max. Länge

TimeSent

Zeitstempel (dargestellt als ISO8601 UTC datetime YYYY-MM-DDThh:mm:ssZ)

Sender.Party

Name des Senderpartners (dargestellt als agency:scheme:name)

Sender.Service

Service des Senders

Receiver.Party

Name des Empfängerpartners (dargestellt als agency:scheme:name)

Receiver.Service

Service des Empfängers

Interface

Als nsuri ^lcname angegeben

QualityOfService

      BestEffort

      ExactlyOnce

      ExactlyOnceInOrder

QueueId

Bei ExactlyOnceInOrder

 

Beispiel

version=3.0&MessageClass=ApplicationMessage&ProcessingMode=synchronous&MessageId=13490851-9aae-11d8-9e93-f28d0a12631c&TimeSent=2004-04-30T13%3A55%3A44Z&Sender.Party=016%3Apattern_33%3AAEG_837654&Sender.Service=SRM1&Receiver.Party=12_55%3A017%3ABASF&Receiver.Service=SALES&Interface=http%3A%2F%2Fsap.com%2Fexample%2Fsrm%5ESRM1

 

 

Für XI 2.0 stehen folgenden Feldnamen zur Verfügung:

Feldnamen XI 2.0

Name

Bedeutung

From.Name

Name des Sender-Business-Systems

From.Interface

Interface-Name des Senders

To.Name

Name des Empfänger-Business-Systems

To.Interface

Interface-Name des Empfängers

Fault

Fault-Name (angegeben als nsuri ^lcname)

MessageId

Message-Id als GUID mit Format:

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

RefToMessageId

Referenz auf Message-id, als GUID mit Format:

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

QualityOfService

      BestEffort

      ExactlyOnce

      ExactlyOnceInOrder

QueueId

Bei ExactlyOnceInOrder

TimeSent

Zeitstempel (dargestellt als ISO8601 UTC datetime YYYY-MM-DDThh:mm:ssZ)

Direction

Richtung der Message (Request oder Response)

Document

Name des Hauptdokuments

 

Beispiel

version=1.0&From.Name=TravelAgency&From.Interface=http%3A%2F%2FSAP.com%2Fcomponent%2FAgency%5EFlightCheckAvailability&To.Name=Airline&To.Interface=http%3A%2F%2FSAP.com%2Fcomponent%2FAirline%5EFlightAvailability&MessageId=a10cd770-9aae-11d8-9cfa-c4670a12631c&QualityOfService=BestEffort&TimeSent=2004-04-30T13%3A59%3A42Z&Direction=Request

 

Ende des Inhaltsbereichs