Monday, January 9, 2012

Synchronous composite service invocation issue with WS-Addressing enabled by default in Oracle SOA Suite 11g.

Synchronous composite service invocation issue with WS-Addressing enabled by default in Oracle SOA Suite 11g.

Issue: 

When the end system invokes the synchronous (input/output) composite service deployed in Oracle SOA Suite 11g fails to process the response.
The request reaches the SOA system and the response is sent to the end system, but the end system is not able to process the response. The same flow works fine in Oracle SOA Suite 10g without any issue.
After a little struggle we have identified that Oracle SOA Suite 11g by default adds the WS-Addressing details to the response even though the process is synchronous but in 10g the WS-Addressing details are not added by default.
Responses:
10g response without ws-addressing details:-


11g response with ws-addressing details:-




Tuesday, December 20, 2011

Invocation of One way webservice deployed in Oracle SOA Suite from SalesForce.com (SFDC)


Invocation of One way webservice deployed in Oracle SOA Suite from SalesForce.com (SFDC):

Whenever SFDC tries to consume the WSDL which has one-way operation (operation with only input) it fails with the following error –“Can’t find the output in the port type execute_ptt”.



As a solution we can specify a dummy output of type string, so that SFDC is able to consume the WSDL and create the classes related to the elements of the WSDL.



Invocation of webservices deployed in Oracle SOA Suite from SalesForce.com (SFDC)


Invocation of webservices deployed in Oracle SOA Suite from SalesForce.com (SFDC):

Whenever SFDC tries to consume the WSDL which has imports (another XSD or WSDL) it fails with the error - “The import is not recognized



How to Fix

As a solution we have to prepare a linear WSDL (wsdl without imports –coping the contents of the imported XSD/WSDL to the parent WSDL), so that SFDC is able to consume the WSDL and create the classes related to the elements of the WSDL.



Monday, December 19, 2011

Oracle SOA Suite 11g - Multiple partner link endpoint locations to enable failover in composite.

Oracle SOA Suite 11g - Multiple partner link endpoint locations to enable failover in composite

Oracle SOA Suite provides the support for specifying multiple partner link endpoint locations. This capability is useful for failover purposes if the first endpoint is down.


The endpointURI property of the Composite.xml will help us to override the endpoint location specified in the default WSDL as shown below.

<reference name="HelloworldService"
ui:wsdlLocation="http://localhost:8000/soa-infra/services/default/HelloWorld/Helloworld.wsdl">
<interface.wsdl interface="http://xmlns.oracle.com/Failover/HelloWorld/Helloworld#wsdl.interface(Helloworld)"
callbackInterface="http://xmlns.oracle.com/Failover/HelloWorld/Helloworld#wsdl.interface(HelloworldCallback)"/>
<binding.ws port="http://xmlns.oracle.com/Failover/HelloWorld/Helloworld#wsdl.endpoint(helloworld_client_ep/Helloworld_pt)"
location="http://localhost:8000/soa-infra/services/default/HelloWorld/helloworld_client_ep?WSDL"
soapVersion="1.1">
<property name="endpointURI">http://localhost:8002/soa-infra/services/MEDIATOR/HelloWorld/helloworld_client_ep</property>
<property name="endpointURI">http://localhost:8002/soa-infra/services/UTILITIES/HelloWorld/helloworld_client_ep</property>
<property name="weblogic.wsee.wsat.transaction.flowOption"
type="xs:string" many="false">WSDLDriven</property>
</binding.ws>
<callback>
<binding.ws port="http://xmlns.oracle.com/Failover/HelloWorld/Helloworld#wsdl.endpoint(helloworld_client_ep/HelloworldCallback_pt)"/>
</callback>
</reference>

In runtime the location specified in the endpointURI at the end will be invoked first and if it fails it will try to invoke the previous endpointURI specified and so on; if all the endpointURI invocations are failed, the location(default) specified in the WSDL file will be invoked.
endpointURI’s:



Default location: