我正在尝试为onvif开发一个客户端,其中包含wsdl,如下所示:
http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl
wsdl2java运行正常并生成代码。但是,因为wsdl中没有元素,所以它不会为我生成服务类。它只为元素生成一个接口。
对于提供服务的每个设备,webservice的端点URI将不同。我的问题是,鉴于URI,我应该如何获得portType接口的实例,以便我可以使用该接口与webservice进行交互?
由于
答案 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创建的带注释的接口。