Search This Blog

Adding Header in Service and Reference in BPEL 2.0 and BPEL 1.1 SOA - SOAP


simple test case with soapUI which adds an username and a message as HTTP header to the  service invocation.  In a second testcase I will mock this service in soapUI and BPEL will invoke this service and set an extra HTTP header property.



SOAP - BPEL



First step is to add a property to the binding.ws element of the service in the composite.xml. Add a property with name oracle.webservices.http.headers and as value the HTTP headers you want to use in BPEL
<property name="oracle.webservices.http.headers">username,message</property>


Next step is to define some BPEL variables for those HTTP Headers


In the receive activity of the BPEL process we can use fromProperty to copy the HTTP header property value to the BPEL variable. 

Do this in the BPEL source mode. 

BPEL 2.0


BPEL 1.1

  <receive>
  <bpelx:outputProperty name="username"    variable="usernameVar"/>
  <bpelx:inputProperty name="message"    variable="messageVar"/>
  </receive>


Now you can use these variables in BPEL, I will use these vars in the return message.

Let's invoke the service from soapUI, we need to set the HTTP header properties with their values.


















When we want to invoke a reference service and we also want to set some HTTP header properties.

We need also need to set the http.headers property on the binding.ws element on the reference in the composite.xml

<property name="oracle.webservices.http.headers">username,message,message2</property>


On the invoke of the reference service we need to use the toProperty and set the BPEL vars to these HTTP header properties.

BPEL 2.0

















BPEL 1.1 

  <invoke>
    <bpelx:inputProperty name="username"    variable="usernameVar"/>
  <bpelx:inputProperty name="message"    variable="messageVar"/>
  <bpelx:inputProperty name="message2"    variable="messageVar2"/>
</invoke>

When we test it again in soapUI we can see the invoke request of the soapUI mockservice,
 this contains the HTTP headers which we set in the BPEL process.