CXF客户端开发

来源:互联网 发布:红旗22和红旗9 知乎 编辑:程序博客网 时间:2024/06/03 21:32
apache-CXF是十分常用的web service实现组件。


前面,在《web service概念及CXF服务端的开发》文中,描述了CXF服务端的开发,本篇接着介绍CXF客户端的开发。


CXF客户端有好几种调用服务接口的方式,如:


1>WSDL2Java generated Client
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


命令说明:


-p 指定代理接口所在包名,-client(生成客户端)  后面的字符串声明了服务接口的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;//取得接口实例


下面就可以使用上面获取的接口实例进行操作,就像普通对象方法的使用,而实际已经调用了远程服务端的接口,进行远程操作,如下:


service.sayHi("hello world");


至此,完成CXF客户端的开发。











0 0
原创粉丝点击