Details
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