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

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

Rank to TopRank to BottomAttach filesAttach ScreenshotBulk Copy AttachmentsBulk Move AttachmentsVotersWatch issueWatchersCreate sub-taskConvert to sub-taskLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    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

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

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

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment