设为首页 收藏本站
查看: 644|回复: 0

[经验分享] Apache CXF2+Spring2.5轻松实现WebService[附源码]

[复制链接]

尚未签到

发表于 2017-1-11 09:51:09 | 显示全部楼层 |阅读模式
Apache CXF2+Spring2.5轻松实现WebService[附源码]


提示:下面有代码请耐心阅读,代码以图片形式展现,个别图片由于尺寸的原因显示不清,可以点击图片在新窗口中打开以进行查看.

推荐文章:

简历群发器设计以及代码实现JDK6HTTP+DOM4j

Spring2.5注释语法(上)——Spring2.5注释驱动的IoC

Spring 2.5:Spring MVC中的新特性

注意:源码已经提供下载,解压缩之后先看readme.

1.概述

CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。
Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。

 

 

 

2.功能特性
CXF 包含了大量的功能特性,但是主要集中在以下几个方面:
1.支持 Web Services 标准:CXF 支持多种 Web Services 标准,包含 SOAP、Basic Profile、WS-Addressing、WS-Policy、WS-ReliableMessaging 和 WS-Security。
2.Frontends:
CXF 支持多种“Frontend”编程模型,CXF 实现了 JAX-WS API (遵循 JAX-WS 2.0 TCK 版本),它也包含一个“simple frontend”允许客户端和 EndPoint 的创建,而不需要 Annotation 注解。CXF 既支持 WSDL 优先开发,也支持从 Java 的代码优先开发模式。
3.容易使用: CXF 设计得更加直观与容易使用。有大量简单的 API 用来快速地构建代码优先的 Services,各种 Maven 的插件也使集成更加容易,支持 JAX-WS API ,支持 Spring 2.0 更加简化的 XML 配置方式,等等。
4.支持二进制和遗留协议:CXF 的设计是一种可插拨的架构,既可以支持 XML ,也可以支持非 XML 的类型绑定,比如:JSON 和 CORBA。
5.支持多种标准:
 a.支持 JAX-WS、 JAX-WSA、JSR-181 和 SAAJ;
 b.支持 SOAP 1.1、1.2、WS-I BasicProfile、WS-Security、WS-Addressing、WS-RM 和 WS-Policy;
 c.支持 WSDL 1.1 、2.0;
 d.支持 MTOM;
6.多种传输方式、Bindings、Data Bindings 和 Format: 
 a.Bindings:SOAP、REST/HTTP;
 b.Data Bndings:目前支持 JAXB 2.0、Aegis 两种,默认是 JAXB 2.0。XMLBeans、Castor 和 JiBX 数据绑定方式将在 CXF 2.1 版本中得到支持;
 c.格式(Format):XML、JSON;
 d.传输方式:HTTP、Servlet、JMS 和 Jabber;
 e.可扩展的 API 允许为 CXF 增加其它的 Bindings,以能够支持其它的消息格式,比如:CSV 和固定记录长度。
7.灵活部署
 a.轻量级容器:可在 Tomcat 或基于 Spring 的容器中部署 Services;
 b.集成 JBI:可以在如 ServiceMix, OpenESB or Petals 等等的 JBI 容器中将它部署为一个服务引擎;
 c.集成 SCA:可以部署在如 Tuscany 之类的 SCA 容器中;
 d.集成 J2EE:可以在 J2EE 应用服务器中部署 Services,比如:Geronimo、JOnAS、JBoss、WebSphere Application Server 和 WebLogic Application Server,以及 Jetty 和 Tomcat;
 e.独立的 Java 客户端/服务器。
8.支持多种编程语言
 a.全面支持 JAX-WS 2.0 客户端/服务器编程模型;
 b.支持 JAX-WS 2.0 synchronous、asynchronous 和 one-way API's;
 c.支持 JAX-WS 2.0 Dynamic Invocation Interface (DII) API;
 d.支持 wrapped and non-wrapped 风格;
 e.支持 XML messaging API;
 f.支持 JavaScript 和 ECMAScript 4 XML (E4X) ,客户端与服务端均支持;
 g通过 Yoko 支持 CORBA;
 h.通过 Tuscany 支持 SCA;
 i.通过 ServiceMix 支持 JBI ;
9.代码生成
 a.Java to WSDL;
 b.WSDL to Java;
 c.XSD to WSDL;
 d.WSDL to XML;
 e.WSDL to SOAP;
 f.WSDL to Service;

3.轻松与Spring集成

3.1服务端

1.定义WebService所需暴露的接口:接口中只有一个方法public String vote,只需在接口定义处添加@WebService注明此接口将要提供服务.

 

 

DSC0000.jpg

 

 

2.编写接口实现类:vote方法中判断username入参是否为Michael,如果是将返回重复投票

 

DSC0001.jpg

 

3.服务器端配置文件:需要注意两个地方,将CXF所需的配置文件import到Spring容器中,但所需的3个配置文件并不在工程里,而是在Spring容器初始化时自动创建,这里需要显示的将其import进来;
 定义了一个Webservice的端点,其中id是其存放在Spring容器中的标识, implementor用于标注实现类, address提供服务的地址.

 

DSC0002.jpg

 

 

 4.web.xml配置:在web.xml中只需定义Spring容器的监听器,CXFServlet和CXFServlet mapping

 

DSC0003.jpg

 

3.2客户端

1.客户端配置文件(仅供客户端使用Spring框架):和服务器端得配置一样,也需要import相关CXF配置文件到Spring容器;同时还要使用定义客户端的bean,其中id为其存在Spring容器中的标识, serviceClass为WebService暴露接口的完全限定名, address为提供服务的地址.

 

 

DSC0004.jpg

 

2.客户端调用(使用Spring容器):只需创建Sping容器根据ID获取ISurveyService并调用所需方法

 

DSC0005.jpg

 

3. 客户端调用(java语言客户端):初始化代理工厂并将接口类型和服务地址设置近工厂类,就可获得所需服务

 

DSC0006.jpg

 

3.3WSDL

DSC0007.jpg

 

 

DSC0008.jpg

下面将包结构和运行环境贴出来

DSC0009.jpg

 

DSC00010.jpg

其实最庞大的是他依赖的包

 

DSC00011.jpg

DSC00012.jpg

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-326858-1-1.html 上篇帖子: Apache 枚举工具类的源码的分析 下篇帖子: tomcat和apache配置gzip(HTTP压缩)功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表