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: