Сейчас я использую 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,, но я могу быть где угодно. Наверняка эта пешеходная проблема решается как-то?