没有服务元素的Apache CXF wdsl2java代码生成

时间:2013-03-11 23:08:22

标签: java web-services cxf onvif

我正在尝试为onvif开发一个客户端,其中包含wsdl,如下所示:

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

wsdl2java运行正常并生成代码。但是,因为wsdl中没有元素,所以它不会为我生成服务类。它只为元素生成一个接口。

对于提供服务的每个设备,webservice的端点URI将不同。我的问题是,鉴于URI,我应该如何获得portType接口的实例,以便我可以使用该接口与webservice进行交互?

由于

1 个答案:

答案 0 :(得分:2)

您真的不需要它来创建服务类来利用生成的存根。可以使用类似于以下内容的东西:

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创建的带注释的接口。