WebService技术详解(二): CXF
CXF
CXF简介
CXF是一个开源的WebService框架。Apache CXF = Celtix + XFire,开始叫Apache CeltiXfire, 后来更名为Apache CXF 了,以下简称为CXF。CXF 继承了Celtix 和XFire两大开源项目的精华,提供了对JAX-WS全面的支持,并且提供了多种Binding、DataBinding、Tranesport以及各种Format的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者WSDL优先(WSDL First)来轻松地实现Web Services 的发布和使用。
支持多种标准
- 支持JAX-WS、JAX-WSA、JSR-181和SAAJ
- 支持SOAP1.1、1.2、WS-I BasicProfile、WS-Security、WS-Addressing、WS-RM 和 WS-Policy
- 支持WSDL1.1、2.0
- 支持MTOM
它支持多种协议,比如:SOAP1.1,1.2、XML/HTTP、RESTful HTTP或者CORBA。CORBA(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的WS。C,c++,C#)
Cxf是基于SOA总线结构,依靠spring完成模块的集成,实现SOA方式。
灵活的部署:可以运行Tomcat,Jboss,Jetty(内置),Weblogic上面。
CXF入门案例
服务端实现
创建一个SEI接口,需要在接口上添加@WebService注解
1 |
|
创建SEI接口实现类
1 | public class WeatherInterfaceImpl implements WeatherInterface { |
发布服务
1 | public class WeatherServer { |
访问服务的wsdl文件地址,查看服务是否发布成功
http://localhost:23335/weather?wsdl
客户端实现
Wsdl2java命令是CXF提供的生成客户端的工具,他和wsimport类似,可以根据WSDL生成客户端代码
Wsdl2java常用参数:
-d, 指定输出目录
-p, 指定包名,如果不指定该参数,默认包名是WSDL的命名空间的倒叙
wsdl2java支持SOAP1.1和SOAP1.2
1我们先创建一个客户端项目,然后引入jar包,和上面一样,是用Add JARS选择cxf-manifest.jar即可
然后使用工具生成客户端
wsdl2java -p com.cad.cxf -d . http://127.0.0.1:23335/weather?wsdl