Petals-BC-SOAP 4.4.x

compared with
Version 8 by Victor NOËL
on Sep 17, 2015 10:48.

Key
This line was removed.
This word was removed. This word was added.
This line was added.

Changes (5)

View Page History

When a SOAP message is handled by the component, it is transformed into a JBI Message and sent to the JBI service endpoint configured in the Service Unit. The JBI message is created like this:
* The JBI operation is created from the SOAP action.
* The JBI operation is resolved (see [Operation Resolving|#op-resolving]).
* Copy the SOAP body into the JBI one.
* Put the SOAP attachments into JBI ones.

When a SOAP message is handled by the component, it is transformed into a JBI Message and sent to the JBI service endpoint configured in the Service Unit. The JBI message is created like this:
* The JBI operation is created from the SOAP action.
* The JBI operation is resolved (see [Operation Resolving|#op-resolving]).
* Copy the SOAP body into the JBI one.
* Put the SOAP attachments into JBI ones.
{show-to}

h1. Operation resolving: Mapping from URI, SOAP/WSA Action, Document/Literal-wrapped pattern and RPC/Literal pattern
{anchor:op-resolving}

The SOAP BC serves many SOAP services to the exterior (defined by JBI Consumes in the deployed SU) at the same time.
While it is not difficult for it to know which service is concerned by a request (because its name is in the called URI), determining the concerned operation is more complex.

There exists many ways to approach this question (see for example http://www.ibm.com/developerworks/library/ws-whichwsdl/).

In Petals we support the most common ones (those that are provided by Axis2) in that order:
- URI: if the service call's URI has the form: .../services/MyService/myOperation then the operation will be myOperation.
- SOAP/WSA Action: if the http header contains a SOAP Action or the SOAP message header contains a WSA Action, then it will be used to resolve the operation as defined in the WSDL.
- Document/Literal wrapping: from the first element's QName of the body, the operation that contains the message that contains the part that refers to this element is used.
- RPC/Literal: from the first element's localName (and not full QName) of the body, the operation that has the same name will be used.

For the last two, in case of ambiguity, the call will fails.

h1. Advanced usages