Configuring the SOAP Adapter
You need to
configure the SOAP adapter so that you can exchange SOAP messages between the
Integration
Engine and remote clients or servers of Web services.
The SOAP adapter provides a runtime environment that includes various SOAP components for the processing of SOAP messages. You can combine these SOAP components with separate components to meet your needs and requirements.
The SOAP adapter uses a helper class to instantiate and control SOAP components. If you want to use your own SOAP processing logic you must make your helper class known to the SOAP adapter.
To configure the SOAP adapter you must specify the following:
● The helper class that implements the following interface:
com.sap.aii.messaging.adapter.ModuleBubbleHelper
● The parameter values for the specified helper class
For example, you must specify the following parameters for the helper class ModuleBubbleHelperXMBWSImpl (instantiates a BubbleBag to integrate remote Web services with the Integration Engine):
○ Information about the Integration Engine destination (when the Integration Engine is acting as a service provider and therefore the SOAP adapter must be configured as a sender adapter).
○ Information about the Web service provider destination (when the Integration Engine is acting as a service client and therefore the SOAP adapter must be configured as a receiver adapter).
○ Various options for controlling the conversion of multi-part Integration Engine SOAP messages and Web service SOAP messages.
You have:
...
Installed the corresponding adapter.
Selected the adapter on the configuration screen.
1. Called the adapter configuration by choosing Configure.
The configuration of the SOAP adapter comprises two functional subareas:
...
1. The version specification for the configuration
version=30
This specification is mandatory. If no specification is entered, the configuration is interpreted as an XI 2.0 adapter configuration. Other values are not permitted and trigger an error.
2. The Java class name for the SOAP adapter
Specify the class name as follows:
classname=com.sap.aii.messaging.adapter.ModuleBubble
This specification is mandatory.
3. The configuration parameters for the specified helper class
For example, you must specify the following parameters for the shipped helper class ModuleBubbleHelperXMBWSImpl:
○ Specifications for the Integration Engine as a service provider for queries from Web service clients (sender SOAP adapter).
○ Specifications for the Web service provider for queries from the Integration Engine as a Web service client (receiver SOAP adapter).
You can configure a sender adapter, or a receiver adapter, or both, as required.
...
1. Enter the complete address (URL) of the Integration Engine that you want to send the message to:
XI.TargetURL=http://IntegrationEngineHost:port/pipeline-arguments
This specification is mandatory when the Integration Engine is acting as a service provider.

The Integration Engine address can also be accessed dynamically from the SAP System Landscape Directory (SLD). The following entry is added to the configuration for this purpose:
XI.SLDConfiguration=SLDaccessor
In this case the URL of the corresponding server for the system specified with XI.SenderService is read from the SLD and used instead of the value specified under XI.TargetURL. Therefore, specify the following:
XI.TargetURL=<fromSLD>
To be able to access the SLD, the SLDaccessor service must be configured correspondingly and the respective entries must be maintained in the SLD.

If the Integration Server is accessed by means of an HTTP proxy server rather than directly, the following parameters must be set:
XI.ProxyHost=<proxyHostname>
XI.ProxyPort=<proxyPortnumber>
<proxyHostname> is the host name of the proxy and <proxyPortnumber> is the port where the proxy receives HTTP requests (for example, 8080).
If an authentication was specified for the HTTP proxy server, use the following parameters:
XI.ProxyUser=<proxyUser>
XI.ProxyPassword=<proxyPassword>
If an authentication was specified for the URL (HTTP service) in the Integration Engine, use the following address:
XI.TargetURL=http://<user-name>:<password>@IntegrationEngineHost:port/pipeline-arguments
As an alternative, or if the URL is taken from the SLD, you can also specify the logon parameters as follows:
○ XI.User=<user-name>
○ XI.Password=<password>

The specifications must match those that you made in transaction SICF in the Integration Engine. If you do not specify a user and password combination, or the combination is invalid, the system will terminate each attempt to access the Integration Engine with the message Transport Exception: http-Error 401 – Unauthorized.
The user must have the authorizations of group SAP_XI_APPL_SERV_USER on the Integration Server.
For more information about configuring SSL authentication with a certificate, see Certificate Management → Setting Up Adapter Engine as SSL Client.
If you want to use a different client or language to the default setting in the Integration Engine when logging on, you can also set the following parameters:
○ XI.Client=<client-no>
○ XI.Language=<language-id>
The following
address arguments are optional. If this information is not contained in the
request message of a Web service client, the specifications made here are used
to identify the adapter configuration in
routing and
mapping in
the Integration Engine pipeline. You can
also find an explanation about each argument there.
○ 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>
If you specify this parameter, you do not need to determine a receiver in routing.
The following arguments are mandatory:
○ XI.QualityOfService=<QualityOfService>
Specifies how the Integration Engine should process a message. The following values are permitted:
■ XI.QualityOfService=BE (Best Effort, means synchronous processing)
■ XI.QualityOfService=EO (Exactly Once, means asynchronous processing)
■ XI.QualityOfService=EOIO (Exactly Once in Order, means asynchronous processing using queues)
You must also define a queue name for EOIO:
○ XI.QueueId=<QueueName>
This queue name is used in the Integration Engine to process messages in the same sequence that they arrived in.
○ XI.XMLEncoding=<encoding>
Specifies which XML code to use for the Integration Engine. The default value is UTF-8.
2. Specify the port number and the path for the adapter port for Web service clients:
○ XMBWS.WSPort=<port_no>
The port number (<port_no>) specifies the HTTP server port of the adapter that receives Web service messages.
○ XMBWS.WSPath=<path>
The path <path> describes the service part of the adapter URL that receives Web service messages.
3. Specify how the format of Web service messages is to be controlled
○ XMBWS.KeepHeaders=<boolean>
If you specify true here, the message headers are copied. Otherwise, all headers are deleted.
○ XMBWS.KeepAttachments=<boolean>
If you specify true here, the message attachments are copied.
○ XMBWS.UseEncoded=<boolean>
If you specify true here, all Integration Engine message headers are encoded in the HTTP header X-XMB_WS_ENCODED.
○ XMBWS.UseQueryString=<boolean>
If you specify true here, a specification is made in the query string.
The request message is taken into account.
...
1. Enter the complete address (URL) of the Web service provider that you want to send the message to:
XMBWS.TargetURL=http://WebServiceHost:port/service-arguments
This specification is mandatory when the Web Service provider is acting as a service provider.
If an authentication was specified for the URL (HTTP service) entered in the Web service provider, use the following address:
XMBWS.TargetURL=http://<user-name>:<password>@WebServiceHost:port/ service–arguments
Alternatively, you can also specify the logon parameters as follows:
○ XMBWS.User=<user-name>
○ XMBWS.Password=<password>
If the Web service provider is accessed by means of an HTTP proxy server rather than directly, the following parameters must be set:
○ XMBWS.ProxyHost=<proxyHostname>
○ XMBWS.ProxyPort=<proxyPortnumber>
<proxyHostname> is the host name of the proxy and <proxyPortnumber> is the port where the proxy receives HTTP requests (for example, 8080).
If an authentication was specified for the HTTP proxy server, use the following parameters:
○ XMBWS.ProxyUser=<user-name>
○ XMBWS.ProxyPassword=<password>
2. Specify the value for SOAPAction:
○ XMBWS.DefaultSOAPAction=<default_soap_action>
<default_soap_action> species the default value for the SOAPAction in Web service messages.
3. Specify how the format of Web service messages is to be controlled
○ XMBWS.KeepHeaders=<boolean>
If you specify true here, all Integration Engine message headers are copied to Web service messages. Otherwise, all headers are deleted.

Web service message headers are always copied to Integration Engine messages.
○ XMBWS.KeepAttachments=<boolean>
If you specify true here, all Integration Engine message attachments are copied to Web service messages.
○ XMBWS.UseEncoded=<boolean>
If you specify true here, all Integration Engine message headers are encoded in the HTTP header X-XMB_WS_ENCODED.
i. XMBWS.EncodingVersion=<2|3>
Specifies which version of the XI message format to use to code the message header in the HTTP header (see XMBWS.UseEncoded). The value 2 stands for the XI 2.0 message format and the value 3stands for the XI 3.0 message format. The default value is 3.
ii. XMBWS.UseQueryString=<boolean>
If you specify true here, you can specify query strings.
The response message is taken into account.
4. Specify the port number and the path for the adapter port for the Integration Engine:
○ XMBWS.XMBPort=<port_no>
The port number (<port_no>) specifies the HTTP server port of the adapter that receives messages from the Integration Engine.
○ XMBWS.XMBPath=<path>
The path <path> describes the service part of the adapter URL that receives messages from the Integration Engine.
5. Enter the code for the Web service provider:
○ XMBWS.XMLEncoding=<encoding>
Specifies which XML code to use for the Web service provider. The default value is UTF-8.
6. The adapter can send back a synchronous system acknowledgement if the sender requests it. The acknowledgment confirms that the message was delivered to the receiver.
○ If you want to send back a synchronous system acknowledgment, set XI.AckFinal=true. This is the default.
○ If you want to prevent a synchronous system acknowledgement from being sent back, even if the sender requests it, set XI.AckFinal=false.
The structure is as follows:
● encheader ::= version ‘&’ token ( ‘&’ token ) *
● token ::= name ‘=’ value
● name ::= fieldname
● value ::= urlencoded fieldvalue
● version ::= version number
In XI 3.0, you can use the following field names:
Field Names XI 3.0
Name |
Meaning |
MessageClass |
Message class: ● ApplicationMessage ● ApplicationResponse ● SystemAck ● ApplicationAck ● SystemError ● ApplicationError |
ProcessingMode |
● synchronous ● asynchronous |
MessageId |
Message ID as GUID with format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
RefToMessageId |
Reference to message ID, as GUID with format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
ConversationId |
As string with maximum length of 60 |
TimeSent |
Time stamp (displayed as ISO8601 UTC datetime YYYY-MM-DDThh:mm:ssZ) |
Sender.Party |
Name of the sender party (displayed as agency:scheme:name) |
Sender.Service |
Service of the sender |
Receiver.Party |
Name of the receiver party (displayed as agency:scheme:name) |
Receiver.Service |
Service of the receiver |
Interface |
Specified as nsuri ^lcname |
QualityOfService |
● BestEffort ● ExactlyOnce ● ExactlyOnceInOrder |
QueueId |
For ExactlyOnceInOrder |
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
In XI 2.0, you can use the following field names:
Field Names XI 2.0
Name |
Meaning |
From.Name |
Name of the sender business system |
From.Interface |
Interface name of the sender |
To.Name |
Name of the receiver business system |
To.Interface |
Interface name of the receiver |
Fault |
Fault name (specified as nsuri ^lcname) |
MessageId |
Message ID as GUID with format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
RefToMessageId |
Reference to message ID, as GUID with format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
QualityOfService |
● BestEffort ● ExactlyOnce ● ExactlyOnceInOrder |
QueueId |
For ExactlyOnceInOrder |
TimeSent |
Time stamp (displayed as ISO8601 UTC datetime YYYY-MM-DDThh:mm:ssZ) |
Direction |
Direction of message (request or response) |
Document |
Name of the main document |
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