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

WSDL port address is not correctly generated for machines having multiple network interfaces

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.3, 1.4
    • 1.5.4, 1.6.0
    • kernel
    • None
    • Windows XP Pro, Java 5, Tomcat 6, Axis2 1.4 (release)

    Description

      WSDL portAddress is filled with one of the machine's IP addresses. The code to get the IP address seems to be org.apache.axis2.transport.http.sever.HTTPUtils.getIpAddress() which always takes the first available network interface's ip address.

      For example http://localhost:8080/axis2/services/Version?wsdl returns a WSDL containing
      ...
      <wsdl:service name="Version">
      <wsdl:port name="VersionHttpSoap11Endpoint" binding="ns:VersionSoap11Binding">
      <soap:address location="http://10.20.125.14:8080/axis2/services/Version.VersionHttpSoap11Endpoint"/>
      </wsdl:port>
      <wsdl:port name="VersionHttpSoap12Endpoint" binding="ns:VersionSoap12Binding">
      <soap12:address location="http://10.20.125.14:8080/axis2/services/Version.VersionHttpSoap12Endpoint"/>
      </wsdl:port>
      <wsdl:port name="VersionHttpEndpoint" binding="ns:VersionHttpBinding">
      <http:address location="http://10.20.125.14:8080/axis2/services/Version.VersionHttpEndpoint"/>
      </wsdl:port>
      </wsdl:service>
      ...

      This may not work on machines which have vmvare installed, or machines having multiple network interfaces or just a laptop which has wireless and wired lan.

      I think the correct way is to use the hostName instead of the ipAddress in the WSDL port address, for example
      ...
      <wsdl:service name="Version">
      <wsdl:port name="VersionHttpSoap11Endpoint" binding="ns:VersionSoap11Binding">
      <soap:address location="http://myhostname.company.com:8080/axis2/services/Version.VersionHttpSoap11Endpoint"/>
      </wsdl:port>
      <wsdl:port name="VersionHttpSoap12Endpoint" binding="ns:VersionSoap12Binding">
      <soap12:address location="http://myhostname.company.com:8080/axis2/services/Version.VersionHttpSoap12Endpoint"/>
      </wsdl:port>
      <wsdl:port name="VersionHttpEndpoint" binding="ns:VersionHttpBinding">
      <http:address location="http://myhostname.company.com:8080/axis2/services/Version.VersionHttpEndpoint"/>
      </wsdl:port>
      </wsdl:service>
      ...

      Regards, Dietmar

      Attachments

        1. AXIS2-3784.patch
          5 kB
          Boris Milanov

        Activity

          People

            veithen Andreas Veithen
            dgaertner Dietmar Gaertner
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: