Генерация кода Apache CXF wdsl2java без сервисного элемента

Я пытаюсь разработать клиент для onvif с wsdl, как в:

http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl

Wsdl2java работает нормально, и код создается. Однако, поскольку в wsdl нет элемента, он не создает для меня класс обслуживания. Он только создает интерфейс для элемента.

URI конечной точки веб-службы будет отличаться для каждого устройства, на котором предоставляется служба. У меня вопрос, учитывая этот URI, как мне получить экземпляр интерфейса portType, чтобы я мог использовать интерфейс для взаимодействия с веб-сервисом?

Спасибо


person Wudong    schedule 11.03.2013    source источник


Ответы (1)


Вам действительно не нужно создавать класс обслуживания для использования сгенерированной заглушки. Можно использовать что-то похожее на следующее:

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

...

protected <T> T getService(final Class<T> serviceClass, final boolean useSoap12) {
    final JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
    factory.setServiceClass(serviceClass);
    factory.setAddress(endpoint);
    if (useSoap12) {
        factory.setBindingId("http://schemas.xmlsoap.org/wsdl/soap12/");
    }
    return serviceClass.cast(factory.create());
}

Где serviceClass - это созданный аннотированный интерфейс CXF.

person laz    schedule 11.03.2013