Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-4362

If WSDL has multiple services, DeploymentEngine uses incorrect one

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Cannot Reproduce
    • Affects Version/s: 1.4
    • Fix Version/s: None
    • Component/s: deployment
    • Labels:
      None

      Description

      We have a WSDL file that defines multiple services. Each service is deployed within a War as a seperate *.aar file, but they share the same WSDL file.

      In DeploymentEngine.populateService(), it calls:

      WSDL11ToAxisServiceBuilder wsdl2AxisServiceBuilder = new WSDL11ToAxisServiceBuilder(wsdlStream, null, null);.

      It passes in null for the service QName, even though it has the value of serviceName and it could get the target namespace from the services.xml or the WSDL definition. If you pass in null, this causes the WSDL11ToAxisServiceBuilder.findService() to just pick the first <wsdl:service> that has a Port. If you have multiple services defined in your WSDL file, this results in the incorrect AxisService objects being put into the AxisConfiguration since it's always just using the information from the first one that it finds with a port.

      The DeploymentEngine should determine the correct service QName in this case and pass that into the WSDL11ToAxisServiceBuilder.

        Attachments

        1. HelloTwo.aar
          2 kB
          Pradeep Fernando
        2. HelloOne.aar
          1.0 kB
          Pradeep Fernando

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              breif Ben Reif
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: