apache-CXF是十分常用的web service实现组件。
前面,在《web service概念及CXF服务端的开发》文中,描述了CXF服务端的开发,本篇接着介绍CXF客户端的开发。
2>JAX-WS Proxy
3>JAX-WS Dispatch APIs
4>Simple Frontend Client Proxy
5>Dynamic Client
关于这几种方式的具体差异性,可以参考官网的资料,这里不详述,下面主要介绍实际开发中最常用的方式-JAX-WS Proxy。
这里,我们采用apache-cxf-2.3.1版本,jar包可到官网下载: http://cxf.apache.org/download.html
使用JAX-WS代理工厂方式开发客户端,首先需要使用wsdl2java工具生成web service在本地的代理接口。
wsdl2java -p ws.cxf -client http://localhost:8080/app/ws/UdpServiceWebService?wsdl
实例化一个代理工厂:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
接着使用代理工厂,获取需要调用的接口,如下步骤:
factory.setServiceClass(UdpService.class);//设置服务接口class
factory.setAddress("http://localhost:8080/app/ws/UdpServiceWebService");//设置接口url
Object obj = factory.create();
UdpService service = (UdpService)obj;//取得接口实例
前面,在《web service概念及CXF服务端的开发》文中,描述了CXF服务端的开发,本篇接着介绍CXF客户端的开发。
CXF客户端有好几种调用服务接口的方式,如:
2>JAX-WS Proxy
3>JAX-WS Dispatch APIs
4>Simple Frontend Client Proxy
5>Dynamic Client
关于这几种方式的具体差异性,可以参考官网的资料,这里不详述,下面主要介绍实际开发中最常用的方式-JAX-WS Proxy。
这里,我们采用apache-cxf-2.3.1版本,jar包可到官网下载: http://cxf.apache.org/download.html
使用JAX-WS代理工厂方式开发客户端,首先需要使用wsdl2java工具生成web service在本地的代理接口。
一 配置环境变量
wsdl2java.bat在CXF根目录\bin目录下,使用之前需要配置CXF环境变量,CXF_HOME变量值为CXF根目录,并在path中添加%CXF_HOME%\bin,如:
二 wsdl2java生成代理接口
配置好环境变量后,打开CMD命令行窗口,将当前目录切换到java工程src目录下,命令行输入如下格式命令,回车,即可根据wsdl生成服务端的代理接口。
wsdl2java -p ws.cxf -client http://localhost:8080/app/ws/UdpServiceWebService?wsdl
命令说明:
三 获取接口实例
实例化一个代理工厂:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
注意需要声明
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
接着使用代理工厂,获取需要调用的接口,如下步骤:
factory.setServiceClass(UdpService.class);//设置服务接口class
factory.setAddress("http://localhost:8080/app/ws/UdpServiceWebService");//设置接口url
Object obj = factory.create();
UdpService service = (UdpService)obj;//取得接口实例
下面就可以使用上面获取的接口实例进行操作,就像普通对象方法的使用,而实际已经调用了远程服务端的接口,进行远程操作,如下:
至此,完成CXF客户端的开发。