Теперь я использую Apache CXF в качестве клиента веб-служб для службы .NET, чтобы обойти проверку подлинности NTLM. Он отлично работает, но мне интересно, почему я не могу установить целевую конечную точку веб-службы. Похоже, что CXF хочет WSDL во время выполнения по какой-то странной причине - не уверен. Он берет физическую конечную точку из WSDL, которая отлично работает в тестовых средах, я думаю, но во время развертывания она обязательно изменится.
Вот какой код для демонстрации:
MyWebServices service = new MyWebServices ();
MyWebServicesSoap port = service.getMyWebServicesSoap12();
// Turn off chunking so that NTLM can occur
Client client = ClientProxy.getClient(port);
HTTPConduit http = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(36000);
httpClientPolicy.setAllowChunking(false);
http.setClient(httpClientPolicy);
port.doSomethingUseful();
Опять же, в API-интерфейсе CXF я не вижу места, которое позволяет мне установить конечную точку службы. Не то чтобы я все равно мог видеть. В этом случае цель http://localhost/integration/webservices/mywebservices.asmx, но я могу быть где угодно. Неужели эта пешеходная проблема каким-то образом решена?