October 1, 2016

Primer: Passing the SOAP Headers

How to pass SOAP headers to and from backend service in parallel calls.

gthX9jm

In an ideal world, a split-join service would pass any SOAP headers to the backend service and back without any effort.

In the real world, the headers inevitably get lost along the way.

There is apparently a predefined set of conditions that both the WSDL and the request must comply with for the headers to travel through safely; however, most services I see in the real world simply do not comply.

Making sure the headers reach their destination then becomes an exercise in hacking - unless you’re using GenericParallel.

Passing SOAP Headers to the Backend

To pass SOAP headers with the requests via GenericParallel, the caller just needs to include the whole SOAP envelope under the element. Every SOAP header defined there will be passed to the target service.

<typ:GPS xmlns:typ="http://genericparallel/types">
  <typ:Requests>
   <typ:Request gpstarget="Profile/RetrieveProfile">

     <soap-env:Envelope>
      <soap-env:Header>
         <pro:LOB xmlns:pro="http://profile">Internet</pro:LOB>
       </soap-env:Header>

       <soap-env:Body>
         <RetrieveProfile>
           <AccountNo>12345678</AccountNo>
         </RetrieveProfile> 
       </soap-env:Body>
     </soap-env:Envelope>

   </typ:Request> 

   ... more requests here ...

  </typ:Requests> 
</typ:GPS>

Passing SOAP Headers from the Backend

If a response contains SOAP headers, those headers will be provided in the GenericParallel response as well.

<types:GPSResponse xmlns:types="http://genericparallel/types">
  <types:Responses>

    <types:Response GPSIndex="1" GPSBatchIndex="1">
      <soap-env:Envelope>
        <soap-env:Header>
          <pro:LOB xmlns:pro="http://profile">Internet</pro:LOB>
        </soap-env:Header>
        <soap-env:Body>
          <RetrieveProfileResponse>
            ... profile here ...
          </RetrieveProfileResponse>
        </soap-env:Body>
      </soap-env:Envelope>
    </types:Response>

    ... more responses here ...

  </types:Responses>
</types:GPSResponse>

If you would like to learn more, feel free to try GenericParallel.

Vladimir Dyuzhev, author of GenericParallel

About Me

My name is Vladimir Dyuzhev, and I'm the author of GenericParallel, an OSB proxy service for making parallel calls effortlessly and MockMotor, a powerful mock service.

I'm building SOA enterprise systems for clients large and small for almost 20 years. Most of that time I've been working with BEA (later Oracle) Weblogic platform, including OSB and other SOA systems.

Feel free to contact me if you have a SOA project to design and implement. See my profile on LinkedIn.

I live in Toronto, Ontario, Canada.  canada   Email me at info@genericparallel.com