Теперь проблема решена.
Клиент CXF без проблем обращался к WSDL, но в WSDL адрес порта службы был установлен на localhost
вместо IP-адреса сервера:
<wsdl:service name="serviceName">
<wsdl:port binding="tns:servicePortBinding" name="servicePort">
<soap:address location="http://localhost:7001/app/services/service/" />
</wsdl:port>
</wsdl:service>
мое приложение пыталось отправить запросы на localhost
и, конечно, результатом было SocketException
.
Адрес мыла установлен на localhost
в исходном WSDLоднако, когда я создал веб-сервис Axis2 и развернул его в тестовой среде, адрес обновлялся до IP-адреса компьютера (чего не было в UAT).
Я не уверен, как икогда мыльный адрес обновляется, но я предполагаю, что когда у машины более одного сетевого интерфейса, Axis оставляет адрес как есть или, возможно, обновляет его до localhost
.
Теперь, чтобы исправить эту проблему, мне пришлось переопределить адрес службы следующим образом:
port = service.getMyServicePort();
BindingProvider provider = (BindingProvider) port;
String endpointAddress = "http://<ip address>:7001/app/services/service/";
provider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointAddress);