Saturday, August 31, 2013

In my project I have one EBS service which is getting invoked from Requester service. We put EBS abstract WSDL file in MDS and in requester service we are referring EBS WSDL from MDS. Since EBS WSDL is abstract so "port" and "location" attribute will remain empty when we create partner link using EBS abstract WSDL file.

<reference name="CustomerEBS" ui:wsdlLocation="oramds:/apps/EnterpriseServiceLibrary/Customer/CustomerEBS.wsdl">
    <interface.wsdl interface="http://xmlns.oracle.com/TestApplication/CustomerEBS/CustomerEBS/CustomerEBS#wsdl.interface(CustomerEBS)"/>
    <binding.ws port=""  location="" />
  </reference>

 We have to manually enter those values.

<reference name="CustomerEBS" ui:wsdlLocation="oramds:/apps/EnterpriseServiceLibrary/Customer/CustomerEBS.wsdl">
    <interface.wsdl interface="http://xmlns.oracle.com/TestApplication/CustomerEBS/CustomerEBS/CustomerEBS#wsdl.interface(CustomerEBS)"/>
    <binding.ws port="http://xmlns.oracle.com/TestApplication/CustomerEBS/CustomerEBS/CustomerEBS#wsdl.interface(customerebs_ep/execute_pt)"  location="http://localhost:8081/soa-infra/services/default/CustomerEBS/customerebs_ep" />
  </reference>


When we deploy our requester service which is calling EBS service , we may get below error.


Error:

"Cannot read WSDL "{http://xmlns.oracle.com/TestApplication/CustomerEBS/V1.0}customerebs_ep" from Metadata Manager.: WSDLException: faultCode=INVALID_WSDL: Invalid XML in document at: http://localhost:8081/soa-infra/services/default/CustomerEBS/customerebs_ep, line: {1}, column: {2}: oracle.xml.parser.v2.XMLParseException: Whitespace required.</summary>"

But when we try to open your EBS endpoint(http://localhost:8081/soa-infra/services/default/CustomerEBS/customerebs_ep) then we don't see any issue with it but still error is coming.


Solution: 

The reason for above error is very simple. Value in location attribute is not right. Location attribute always contain WSDL URL not endpoint URL.

Below is correct reference to Customer EBS.

<reference name="CustomerEBS" ui:wsdlLocation="oramds:/apps/EnterpriseServiceLibrary/Customer/CustomerEBS.wsdl">
    <interface.wsdl interface="http://xmlns.oracle.com/TestApplication/CustomerEBS/CustomerEBS/CustomerEBS#wsdl.interface(CustomerEBS)"/>
    <binding.ws port="http://xmlns.oracle.com/TestApplication/CustomerEBS/CustomerEBS/CustomerEBS#wsdl.interface(customerebs_ep/execute_pt)"  location="http://localhost:8081/soa-infra/services/default/CustomerEBS/customerebs_ep?wsdl" />
  </reference>


0 comments :

Post a Comment