Apache клиент CXF для динамических конечных точек

Я теперь использую 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();

Снова, нет никакого места, что я вижу в клиенте CXF API, который позволяет мне устанавливать сервисную конечную точку. Не то, чтобы я вижу так или иначе. В этом случае целью является http://localhost/integration/webservices/mywebservices.asmx, но я мог быть где угодно. Конечно, эта пешеходная проблема решена так или иначе?

27
задан Donal Fellows 21 November 2011 в 15:19
поделиться

1 ответ

Попробуйте следующее:

MyWebServicesSoap port = service.getMyWebServicesSoap12();
BindingProvider provider = (BindingProvider) port;
provider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpoint); 

В качестве альтернативы MyWebServices могут иметь другие методы getXXX, которые принимают URL-адрес расположения WSDL

45
ответ дан 28 November 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: