Forum Stats

  • 3,814,861 Users
  • 2,258,920 Discussions
  • 7,892,879 Comments

Discussions

Unable to Deploy SOA Composite

user576827
user576827 Member Posts: 18
edited Sep 2, 2019 10:09AM in SOA Suite Discusssions

I want two deploy two SOA composites, Composite 1 and Composite 2 from the development environment to production environment. I have configuration files for both composites for the production environment to replace the development URLs with production URLs. Note that Composite 1 invokes Composite 2 as one its steps.

Composite 1 has a SOAP call to http://<mydevhost>/composite2_ep?WSDL

The config file for production has a replaced for service URL to be replaced with

http://<myprodhost>/composite2_ep?WSDL

Steps would be to deploy Composite 2 first, then deploy composite 1.

The issue I have is that the client has a firewall that separates production environment from the test and development environments. As I mentioned composite 1 has a reference call to composite 2 using the development URL in the composite, which should be replaced when deploying the production configuration files.

The problem is that when deploying Composite 1, it fails stating that it can’t resolve the development URL “http://<mydevhost>/composite2_ep?WSDL”.

When I deploy the composites to the test environment, I do not encounter this issue since they are not firewalled off from one another.

Question, how can I specify the WSDL URL for the SOAP webservice in the external service in my composite, so that Weblogic will not complain during deployment so it can actually perform the replacement with the WSDL URL in the config file. 

Tagged:

Answers

  • NaliniN-Oracle
    NaliniN-Oracle Member Posts: 6 Employee
    edited Aug 31, 2019 1:13AM

    Hi ,

    Did you try to deploy the SOA composite 1 first and then Composite 2?Does it through the same issue ?

  • Martien van den Akker
    Martien van den Akker Member Posts: 2,776 Bronze Crown
    edited Sep 2, 2019 10:09AM

    Hi,

    If you open the composite.xml and search for the reference, then you'll find a ui wsdl location and a binding ws.location. And probably both are referencing the dev wsdl.

    What we usually do is to store the referenced wsdl in the MDS. See https://blogs.oracle.com/soacommunity/get-started-with-mds-by-vivek-garg

    Then the WSDL would get a reference in the form of oramds:/apps/yourApplication/WSDLs/yourWsdl. Depending on the folder structure and naming of your artifacts in your MDS.

    The ui wsdl location is then adapted to reference the wsdl in the MDS. And the binding ws location is changed by the config plan.

    At deployment the UI wsdl location is used to verify the structure, operations and port-bindings of the wsdl. So it must exist at deployment. The binding ws wsdl is used at runtime.

    So, at deploy time, the ui wsdl location should refer to an existing abstract wsdl. I think that there lies your problem, since on production it cannot refer to the development wsdl, as it shouldn't.

    For these kinds of problems and also to be independent of the order in which SOA Suite loads its composites, the MDS is introduced in 11g.

    Regards,
    Martien