张志刚
摘 要:REST(RepresentationalStateTransfer)表述性状态转移是目前比较流行的WebService架构风格,为软件设计定义了一组架构约束和原则。REST的Java实现框架众多,CXF集成了Celtix和XFire两个开源框架,使得开发Webservice的工作变得更加简单,灵活。文章介绍了CXF的基本概念,系统架构,并对CXF的功能模块和实现原理进行了较为详细的介绍。
关键词:REST;CXF;RESTfulWebService;SpringMVC
REST是Roy Thomas Fielding博士于2000年在他的博士毕业论文中首次提出,中文翻译为表述性状态转移,它是一种简单,灵活的架构风格,主要思想是基于Http构建数据访问接口。REST的所有操作均是无状态的,针对不同的访问请求,数据提供统一的接口,返回Json,XML等格式的数据。
目前,有多种基于Java的restful web servie实现方式,比较流行的包括Rails,Axis2,JAX-RS,Restlet,CXF等。其中CXF是一种轻量级的Restful实现框架,该框架已经成为Apache的顶级项目,它可以方便的与各种MVC框架结合使用,为企业级应用系统提供安全,可靠的数据支持。
一、CXF框架
1.概述
CXF是Apache下的一個顶级SOA简单架构,它实现了企业服务总线ESB框架和设计模式。CXF是两个开源项目Celtix和XFire结合的产物,极大的融合了二者的优点。CXF提供多种技术支持,包括web Servivce架构JAX-WS的支持,并支持Binding,DataBing等功能模块的实现,CXF可以与Spring mvc等系统开发架构实现无缝集成使用。
CXF支持SOAP1.1,1.2和XML/HTTP等多种协议规则,通常使用JAX-WS规范作为Apache CXF webservice的实现规范。采用代码优先(Code First)或者 WSDL 优先(WSDL First)可以非常轻松的实现 Web Services 的发布和使用。
2.CXF体系结构
CXF是基于REST架构风格实现的开源技术框架,提供了创建服务的编程模型。它包括七个主要的组成部分,分别是BUS,消息传递和拦截器(Messaging and Interceptors),前端(Front End),服务模型(Service Model), 数据绑定(Data Binding),端口绑定(Protocl Binding),传输(Transports)。其中,BUS是CXF的核心,它为资源的共享提供了可配置的环境。CXF通过消息处理中心,并通过建立拦截请求,方便开发人员进行消息传递,请求处理及错误处理。服务模型包括ServiceInfo和服务,数据通过前端创建,采用ServiceFactory来完成服务生成。数据绑定定义了传输层上数据的具体格式和协议,使开发者方便的进行消息的发送和接口。传输(Transports)层向绑定和前端屏蔽传输的具体细节。CXF的整体架构如下图所示:
二、CXF实现RESTful Web Service的原理
当前CXF已经全面基于REST实现,通过底层封装,使得开发人员只注重于业务逻辑开发,极大的简化了开发web service的难度。
访问服务提供方首先开发和调试Web service服务接口,调试通过后,web服务通过中介发布访问服务接口,并在UDDI注册中心进行信息注册,实现服务的发布过程。Web service调用者向服务中介发出资源请求,中介将根据请求信息查询UDDI注册中心,并提供满足请求条件的资源数据给服务请求者,实现数据绑定,返回的资源描述信息以WSDL形式显示,并且Web页面可以直接查询资源信息,具体原理如下图所示:
三、结语
针对Web service开发问题,本文介绍了一种比较新型的Java Restful实现架构CXF。从概念,体系结构和实现原理三个方面对CXF做了详细介绍。随着RPC,微服务等概念的兴起,基于RESTful的web service相关技术将不断完善和应用。
参考文献:
[1]Fensel D, Bussler C. The Web Service Modeling Framework WSMF[J]. Electronic Commerce Research & Applications, 2003, 1(2):113-137.
[2]孙磊. 基于Spring+CXF实现用户文件上传的WebService[J]. 电脑编程技巧与维护, 2012(3):16-22.
[3]潘冰. 基于Rails的RESTful Web Service研究与实现[J]. 计算机应用与软件, 2010, 27(10):188-190.
[4]文明瑶. 基于Jersey框架的RESTful Web Service的研究与实现[J]. 中国科技博览, 2016(2):361-363.