Monday, January 3, 2011

"Unable to find a WSDL that has a definition for service" in SOA Suite 11g

Problem:

A composite called MEMBER calls a composite called RAISEEVENT. Both are deployed to our SOA Suite 11g server.

However, when we restart the soa_server1 managed server and click on the MEMBER composite from the EM console, we get the following error:
The composite Member (1.0) is not available. This could happen because either the composite has been undeployed or soa-infra has not yet loaded this composite.
Unable to find a WSDL that has a definition for service {http://ns.a.com/Member}Member and port Member. Please make sure that the port attribute for the binding defined in the composite file is correct by checking the namespace, service name, and port name. In addition, check that the WSDL associated with the binding namespace is imported and currently reachable (check the import nodes at the top of the composite file). Finally, validate the HTTP proxy settings for the server.

+
oracle.sysman.emSDK.app.exception.EMSystemException at oracle.sysman.emai.model.sca.composite.core.impl.EMCompositeModel.handleErrorDetails(EMCompositeModel.java:83) at oracle.sysman.emai.model.sca.share.composite.CompositeCoreModel.initialize(CompositeCoreModel.java:120) at oracle.sysman.emai.model.sca.composite.core.impl.CompositeModel.initialize(CompositeModel.java:47) at oracle.sysman.emai.model.sca.EMEntityModel._initializeEntityData(EMEntityModel.java:28) at oracle.sysman.emai.model.sca.common.SCAEntityObject.initializeSCAData(SCAEntityObject.java:124) at
.
.
.
Here's a screenshot of how the error would appear on the EM console:
The soa_server1.out log file shows:
<Jan 3, 2011 5:50:29 PM EST> <Error> <oracle.integration.platform> <SOA-20020> <Deployment of composite "Member" failed: Unable to find a WSDL that has a definition for service {http://ns.a.com/Member}Member and port Member.  Please make sure that the port attribute for the binding defined in the composite file is correct by checking the namespace, service name, and port name.  In addition, check that the WSDL associated with the binding namespace is imported and currently reachable (check the import nodes at the top of the composite file). Finally, validate the HTTP proxy settings for the server..>

Solution:

1. Since RAISEEVENT is the composite that is being invoked, log in to the EM console and get it's wsdl. This will look as follows from the console:
This is the concrete wsdl.

2. Open that concrete wsdl in your browser, and from it obtain the abstract wsdl:

You will be using the abstract wsdl in your project instead of the concrete wsdl.

The screenshot above shows a version specific abstract wsdl, which is:
http://soasandbox:8001/soa-infra/services/default/raiseEvent!1.0/raiseEvent.wsdl
The default version can be referenced as follows:
http://soasandbox:8001/soa-infra/services/default/raiseEvent/raiseEvent.wsdl
Choose whether you want to use the version specific abstract wsdl or the default abstract wsdl.

3. Open the MEMBER project (this is the composite that calls the other composite)

4. In composite.xml, double-click on the external reference for RAISEEVENT and change the concrete wsdl to the abstract wsdl obtained in step 2.

5. View the source of composite.xml and you will find two attributes for your external reference that must be changed. Make sure it is using the abstract wsdl:
<import namespace="http://xmlns.oracle.com/raiseEvent"
        location="http://soasandbox:8001/soa-infra/services/default/raiseEvent/raiseEvent.wsdl"
        importType="wsdl"/>

<reference ui:wsdlLocation="http://soasandbox:8001/soa-infra/services/default/raiseEvent/raiseEvent.wsdl" name="raiseEvent">
  <interface.wsdl interface="http://xmlns.oracle.com/raiseEvent#wsdl.interface(raiseEvent)"/>
  <binding.ws port="http://xmlns.oracle.com/raiseEvent#wsdl.endpoint(raiseEvent/raiseEvent)"
              location="http://soasandbox:8001/soa-infra/services/default/raiseEvent/raiseEvent.wsdl"
              soapVersion="1.1">
    <property name="weblogic.wsee.wsat.transaction.flowOption"
              type="xs:string" many="false">WSDLDriven</property>
  </binding.ws>
</reference>

Applicable Versions:
  • Oracle SOA Suite 11g (11.1.1.3)


References:
  • http://forums.oracle.com/forums/thread.jspa?threadID=1093854

6 comments:

Ahmed said...

"AIA advocates always using abstract WSDLs when composites refer to others."

This is from The Official AIA Blog:
http://blogs.oracle.com/aia/2010/11/aia_11g_best_practices_for_dec.html

SOA Technology for beginners and learners said...

Hi Ahmed,

I am getting the follwing error..

There was an error deploying the composite on Managed_soa_server01: Operation failed - Member(Id=1, Timestamp=2012-02-23 21:06:23.15, Address=173.37.166.229:8088, MachineId=12005, Location=site:cisco.com,machine:plcmbp-app-1,process:24078, Role=WeblogicServer):Unable to find a WSDL that has a definition for service {http://service.tandberg.com/software/v1.1/SoftwareUpgrade}Service1 and port SoftwareUpgrade_v2_0_port_RS_pt. Please make sure that the port attribute for the binding defined in the composite file is correct by checking the namespace, service name, and port name. In addition, check that the WSDL associated with the binding namespace is imported and currently reachable (check the import nodes at the top of the composite file). Finally, validate the HTTP proxy settings for the server.; . Please see the server diagnostic logs on Managed_soa_server01 for details.

can you please guide me

omsis said...

Hi,

I think you might have solved you problem by now. Could you please guide me in this because I am also getting the same error while deploying the jar file to the BPEL server.

Kotresh said...

Hi Ahmed,
while deploying Provider ABCS i am getting the following error
"Error deploying archive sca_CreateBankAccountCCVProvABCSImpl_rev1.0.jar to partition "default" on server AdminServer [http://soabpm-vm:7001]
HTTP error code returned [500]
Error message from server:
There was an error deploying the composite on AdminServer: Deployment Failed: Unable to find a WSDL that has a definition for service {http://xmlns.oracle.com/ABCSImpl/CCV/Core/CreateBankAccountCCVProvABCSImpl/V1.0}CreateBankAccountCCVProvABCSImpl and port CreateBankAccountCCVProvABCSImpl_pt. Please make sure that the port attribute for the binding defined in the composite file is correct by checking the namespace, service name, and port name. In addition, check that the WSDL associated with the binding namespace is imported and currently reachable (check the import nodes at the top of the composite file). Finally, validate the HTTP proxy settings for the server..

Check server log for more details.
Error deploying archive sca_CreateBankAccountCCVProvABCSImpl_rev1.0.jar to partition "default" on server AdminServer [http://soabpm-vm:7001]
#### Deployment incomplete. ####
Error deploying archive file:/G:/OAF/jdevhome/jdev/mywork/CreditCardValidation/CreateBankAccountCCVProvABCSImpl/deploy/sca_CreateBankAccountCCVProvABCSImpl_rev1.0.jar
(oracle.tip.tools.ide.fabric.deploy.common.SOARemoteDeployer)"

please help me out in this regard also if you have How to create AIA flow please share on this blog. It woud be great help to all of us. Thank you in advance.

DACM145 said...

Hi..! very nice blog,
This error it has many scenarios, in my case i solved this , changing the following code in my composite:

Change this: "binding.ws with out Location="wsdl/process.wsdl" SOAPVersion="2.0"

To This solution:"binding.ws with Location="wsdl/process.wsdl" SOAPVersion="2.0"


And searching the web I found this other solution : https://iseedeadbpel.wordpress.com/2013/04/26/unable-to-find-a-wsdl-soa-builds-but-wont-deploy/

Regards.

Ahmed Aboulnaga said...

Thanks!