Как создать клиент веб-сервиса CXF с динамической конечной точкой? - PullRequest
5 голосов
/ 16 сентября 2011

У нас есть центральный файл WSDL, который описывает веб-сервис. Мы используем CXF для генерации клиентского кода, но этот код, похоже, привязан к 1 конечной точке. Как я могу создать клиент CXF, который использует WSDL, но где я могу указать конечную точку? Есть ли способ изменить конечную точку на URL, который реализует тот же WSD:?

Ответы [ 4 ]

9 голосов
/ 16 сентября 2011

Если служба other реализует тот же WSDL, когда вы создаете объект MyClientService, вы можете передать URL-адрес WSDL новой службы прямо в конструктор, и он будет использовать его.Большинство сервисов выставляет свой wsdl на? Wsdl, поэтому использование может "просто работать".

В качестве альтернативы, вы можете переопределить URL-адрес конечной точки через:

((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_URL, "http://my.service.url.com/...")

, где proxy - это MyClientService объект.

4 голосов
/ 15 июня 2012

Работа в cxf 2.6.1

Client client = ClientProxy.getClient(port);
client.getRequestContext().put(Message.ENDPOINT_ADDRESS, "http://some-valid-endpoint") ;
1 голос
/ 28 июля 2015

javax.xml.ws.WebServiceException: Не удалось найти информацию об операции связывания wsdl: для веб-метода XXXX.
в org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:125)
at com.sun.proxy. $ Proxy82.getUser (Неизвестный источник)

Если произошла эта ошибка, добавьте Web-сервис аннотаций к интерфейсу на стороне клиента, который уже разработан на стороне обслуживания.

Я столкнулся с этой проблемой, я настроил Spring с CXF.Я уже разработал службу и звоню ей с клиента.

Надеюсь, это поможет.

1 голос
/ 04 мая 2012

вы можете использовать JaxWsProxyFactoryBean для динамического вызова службы

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

factory.setServiceClass(ChangeStudentDetails.class);
factory.setAddress("http://localhost:8081/CXFTutorial/ChangeStudent");
...