Wednesday, April 24, 2013

JDeveloper SOA Deployment Error: Unable to find a WSDL that has a definition for service

This is one of the strange errors that I encountered recently. While trying to deploy a SOA project, JDeveloper reported the following error;


Received HTTP response from the server, response code=500
Error deploying archive sca_CreditCardProcess_rev1.0.jar to partition "default" on server soa_server1 [http://bpmsrv.example.com:8001] 
HTTP error code returned [500]
Error message from server:
There was an error deploying the composite on soa_server1: Deployment Failed: Unable to find a WSDL that has a definition for service {http://xmlns.oracle.com/bpmn/bpmnProcess/CreditCardProcess}CreditCardProcess.service and port CreditCardProcessPort.  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_CreditCardProcess_rev1.0.jar to partition "default" on server soa_server1 [http://bpmsrv.example.com:8001] 
####  Deployment incomplete.  ####

The error reported in JDeveloper is very misleading and it took me significant amount of time & effort to figure out the actual root cause. This was particularly strange in my case because the code was deployed multiple times successfully without errors in my dev environment.

Root Cause:

On closer observation into the soa server logs, I noted that a webservice reference was not "reachable" by the SOA composite and hence this error. This had nothing to do with the "exposed" service, its port or definitions whatsoever.

Fix:

In my case, the referenced webservice's hostname mapping was missing in my "new" environment because of which the SOA composite was unable to find the WSDL during deployment. It is fair for JDeveloper not to complain because it usually runs on client machine/laptop where the hostname mappings might exist. The deployment error is thrown at the server side and hence the key is to analyze the SOA server logs to figure the actual issue for a fix.

Hope this will help users with similar issues.

7 comments:

  1. Hostname mappings? Do you mean DNS?

    ReplyDelete
    Replies
    1. Hi Keiran, What I meant by "hostname mapping" is to ensure proper IP address to hostname mapping on the client machine - ie, creating an entry in the hosts file.

      Windows: C:\Windows\System32\drivers\etc\hosts
      Linux: /etc/hosts
      Mac: /private/etc/hosts

      Hope this helps.

      Delete
  2. Hi Satya,

    I have this issue, as per your suggestion i did do host mapping on server/client but i still dont have this solved.

    ReplyDelete
  3. Hi,
    I am facing an error while creating new SOA Application in Jdeveloper Windows 7 OS
    Error is:" An error occrred creating the application.Check file system permissions"., and earlier created SOA App projects are also unable to open in Jdeveloper, please reply me how to rectify these errors.
    Thank you...

    ReplyDelete
  4. Hi ..! very nice blog,
    This mistake it has many scenarios, in my case i solved esta, changing the following code in my composite,secction "binding.ws port":
    Add the following code Location="wsdl/Process.wsdl" SOAPVersion="2.0".

    Regards.

    ReplyDelete
  5. Mightiest thanks to you. Your suggestion resolved my problem

    ReplyDelete
    Replies
    1. Thanks for your comments. Glad it helped.

      Delete