How Integration Server Determines which Operation to Invoke

Determining the Operation for an HTTP/S Request

About this task

When Integration Server receives a web service request sent over HTTP/S, Integration Server uses the following process to identify the SOAP action and determine which operation (IS service) to invoke:

Procedure

  1. Integration Server uses the endpoint URL to determine which web service descriptor and which binder in that web service descriptor contain the operation to invoke. The endpoint URL for an operation in a WSDL document generated by Integration Server has the following format:

    transport://host:port/ws/wsdName/portName

    Where

    • transport is http or https
    • host:port is the host and port on which the web service resides
    • ws is the directive that Integration Server uses for web services
    • wsdName is the fully qualified name of the provider web service descriptor that contains the operation
    • portName is the name of the port in the WSDL document that contains the operation. In a WSDL document generated by Integration Server, each port name corresponds to a binder in the web service descriptor.
  2. Integration Server determines the SOAP action value:
    • For a SOAP 1.1 message, Integration Server obtains the SOAP action value from the SOAPAction HTTP header in the SOAP message
    • For a SOAP 1.2 message, Integration Server obtains the SOAP action value from the action attribute in the Content-Type header.
  3. Integration Server determines which operation is associated with that SOAP action value.
    • If the SOAP action value is unique within the selected binder, Integration Server invokes the service that corresponds to the operation with the assigned SOAP action value.
    • If Integration Server cannot determine the operation to invoke using SOAP Action and WS-Addressing action, Integration Server determines the operation to invoke by examining the fully qualified name (namespace name and local name) of the first element in the SOAP body. For more information about how Integration Server resolves duplicate SOAP action values, see #id418e8534-bbde-4b6f-b567-5de7b0fdd1c9.

Determining the Operation for a SOAP/JMS Request

About this task

When Integration Server receives a web service request sent over SOAP/JMS, Integration Server uses the following process to identify the SOAP action and determine which operation (IS service) to invoke:

Procedure

  1. Integration Server retrieves the following JMS message properties from the JMS message:
    This JMS Message property... Indicates...
    soapJMS:targetService The fully qualified name of the provider web service descriptor that contains the operation and the name of the port in the WSDL document that contains the operation. In a WSDL document generated by Integration Server, each port name corresponds to a binder in the web service descriptor.
    soapJMS:soapAction The SOAP action value.
  2. Integration Server determines which operation is associated with the SOAP action value contained in soapJMS:soapAction.
    • If the SOAP action value is unique within the selected binder, Integration Server invokes the service that corresponds to the operation with the assigned SOAP action value.
    • If the SOAP action value is not unique (more than one operation in a binder share the same SOAP action value), Integration Server cannot use the SOAP action to determine the operation to invoke. Instead, Integration Server determines the operation to invoke by examining the fully qualified name (namespace name and local name) of the first element in the SOAP body. For more information about how Integration Server resolves duplicate SOAP action values, see #id418e8534-bbde-4b6f-b567-5de7b0fdd1c9.

Fallback Mechanisms for Determining the Operation

If the endpoint URL and SOAP header do not contain enough information for Integration Server to determine which IS service to invoke, Integration Server employs fallback mechanisms. The approach Integration Server takes to determine the operation depends on what information is missing from the endpoint URL or SOAP message.

Port Name Is Not Specified

If the endpoint URL does not specify a port name (for messages sent over HTTP/S) or the port name is missing from the soapJMS:targetService property (for messages sent via SOAP/JMS), Integration Server attempts to determine the operation by first identifying the SOAP version. Integration Server also obtains the SOAP action value from the SOAP message. Integration Server then looks in the web service descriptor for a binder that uses the specified SOAP version and contains an operation with the specified SOAP action value. Integration Server invokes the IS service that corresponds to this operation.

If Integration Server cannot find an operation with that SOAP action value or there are multiple operations with that SOAP action value, Integration Server compares the fully qualified name of the first element in the SOAP body to the expected first element for an operation. For operations with a Document style, the expected first element is the first part element declared for the operation’s input message in the WSDL document. For operations with an RPC style, the expected first element will have the same name as the operation in the WSDL document. Integration Server then invokes the IS service that corresponds to this operation.

If, after searching for the fully qualified name of the first element in the SOAP body, Integration Server cannot determine which operation to invoke, Integration Server returns a SOAP fault to the web service client.

Duplicate SOAP Action

If multiple operations share the same SOAP action value, Integration Server determines the operation to invoke by examining the fully qualified name (namespace name and local name) of the first element in the SOAP body.

Integration Server compares the element name to the expected first element for an operation. For operations with a Document style, the expected first element is the first part element declared for the operation’s input message in the WSDL document. For operations with an RPC style, the expected first element will have the same name as the operation in the WSDL document. Integration Server then invokes the IS service that corresponds to this operation.

If, after searching for the fully qualified name of the first element in the SOAP body, Integration Server cannot determine the operation to invoke, Integration Server returns a SOAP fault to the web service client.

SOAP Action Value Is Empty, Absent or Cannot Be Resolved

If the SOAP message has an empty SOAP action, does not contain a SOAP action, or the SOAP action value cannot be resolved (i.e., no operation in the binder has the specified SOAP action value), Integration Server searches the binder for an operation with no defined SOAP action value or an empty SOAP action. If the binder contains a single operation that does not have a SOAP action value, Integration Server executes the IS service that corresponds to this operation. If the binder contains multiple operations without an assigned SOAP action value, Integration Server treats the absent SOAP action values as duplicate SOAP action values. For information about how Integration Server determines which operation to invoke when there are duplicate SOAP action values in a binder, see #id418e8534-bbde-4b6f-b567-5de7b0fdd1c9.

If the binder does not contain an operation with an empty SOAP action, Integration Server compares the fully qualified name of the first element in the SOAP body to the expected first element for an operation. For operations with a Document style, the expected first element is the first part element declared for the operation’s input message in the WSDL document. For operations with an RPC style, the expected first element will have the same name as the operation in the WSDL document. Integration Server then invokes the IS service that corresponds to this operation.

If, after searching for the fully qualified name of the first element in the SOAP body, Integration Server cannot determine which operation to invoke, Integration Server returns a SOAP fault to the web service client.