IBM BPM, V8.0.1, All platforms > Programming IBM BPM > Enterprise Service Bus programming > Web service binding

Protocol headers

When handling SOAP messages you can access information from certain transport protocol headers in messages that are received, ensure that messages with transport headers are sent with specific values, and allow transport headers to pass across a module by configuring the web service binding to propagate transport headers.

If a request is received at an export or a response is received at an import, you can access the transport header information, so that logic in the module is based on header values, and those headers can be modified. If a response is sent from an export or a request is sent from an import, transport headers can be included in those messages.

If you enable transport header propagation for received messages, all transport headers (including customer-defined headers) are visible in the service message object (SMO). You can set the headers to different values, or create new ones. You cannot check or validate the values you set, and any improper or incorrect headers might cause web service runtime problems.

Transport header propagation is disabled by default, and can be deployed only to a WebSphere ESB 7.0.0.3 (or later) environment. For Version 7.0.0.3, transport header propagation is limited to HTTP transport headers only. If you enable propagation of transport headers, the headers are propagated across a module from received messages and, if you do not explicitly remove the headers, the headers are used in subsequent web services invocations.


SOAPAction

The SOAPAction header is a transport protocol header (either HTTP or JMS). It is transmitted with SOAP messages, and provides information about the intention of the web service request, to the service. The WSDL interface for a web service defines the SOAPAction header value used for each operation. Some web service implementations use the SOAPAction header to determine behavior.

If a SOAPAction header is set in the inbound SOAP request (through a web service export), its value is placed in the /headers/SMOHeader/Action field of the Service Message Object (SMO). Otherwise, the value in /headers/SMOHeader/Action is not set.

When you make a web service invocation from WebSphere ESB, the SOAPAction header is set in the outgoing SOAP message. The value of the SOAPAction header is determined from the module that makes the invocation, and the SOAPAction information provided in the target service WSDL, as shown in the following table.

Method of web service invocation from the module SOAPAction value in the target service WSDL SOAPAction header value set in the outgoing SOAP message
Standard web service import (including dynamic invocation of a web service using an import) Valid SOAPAction value defined in the target service WSDL SOAPAction value as defined in the target service WSDL
No SOAPAction or an invalid SOAPAction value defined in the target service WSDL Default SOAPAction value is generated
'Pure' dynamic web service invocation (without an import) Valid SOAPAction value defined in the target service WSDL SOAPAction value as defined in the target service WSDL
No SOAPAction or an invalid SOAPAction value defined in the target service WSDL Value from the /headers/SMOHeader/Action field of the SMO
From a Dynamic Service Gateway or Proxy Service Gateway module All cases Value from the /headers/SMOHeader/Action field of the SMO

An invalid SOAPAction value in the target service WSDL is not defined in the empty string. A valid SOAPAction value in the target service WSDL is any standard URI.

When a default SOAPAction value is set in the outgoing SOAP message, the value is generated from the target service WSDL using the following pattern: [WSDL target namespace]/[WSDL port type name]/[WSDL input or output name].

If the target service WSDL defines:

The default SOAPAction header value is generated: "http://MyCompany.com/MyService/operation1Request".

Web service binding