




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
REST,Web服务,REST-ful服务一个实现支持REST的JavaBusinessServices的简单方法REST,Web月艮务,REST-ful月艮务一个实现支持REST的JavaBusinessServices的简单方法VedeshDambal,产品技术架构师,InfosysTechnologiesLtd.简介:基于REST的Web服务日益成为后端企业服务集成的首选,因为它比SOAP更加简单。这篇文章介绍了一个简单的可扩展框架,将Java业务服务作为类REST服务。它详细描述了设计细节,并探讨了各种可扩展性方法。本文的标签:rest,web,服务,服务,rest-ful标记本文!发布日期:2011年3月07日级别:中级原创语言:英文访问情况:5328次浏览评论:1(查看|添加评论-登录)平均分(6个评分)为本文评分介绍REpresentationalStateTransfer(REST)是一种架构原则,其中将web服务视为资源,可以由其URL唯一标识。RESTfulWeb服务的关键特点是明确使用HTTP方法来表示不同的操作的调用。REST的基本设计原则对典型CRUD操作使用HTTP协议方法:POST-创建资源GET-检索资源PUT-更新资源DELETE-删除资源REST服务的主要优势在于:它们是跨平台(Java、.net、PHP等)高度可重用的,因为它们都依赖基本HTTP协议。它们使用基本的XML,而不是复杂的SOAPXML,使用非常方便。基于REST的web服务日益成为后端企业服务集成的首选方法。与基于SOAP的web服务相比,它的编程模型简单,而本机XML(而不是SOAP)的使用减少了序列化和反序列化过程的复杂性,并且不再需要其他作用相同的第三方库。当前用于构建RESTful服务,比如ApacheCXF、RESTlet、JAX-WSAPI和REST支持的基于Java的框架可从Spring3.0中获得,它在开发和XML配置方面非常复杂,通常需要长期的学习。止匕外,由于这些框架依赖特定版本的jar文件,它们很难跨应用程序服务器环境集成。另外,由于一些同时支持SOAP和REST服务的尝试(ApacheCXF、JAX-WS),它们软件包也往往很大,也可能会影响性能。因此本文建议使用更简单的可扩展框架将业务服务公开为类REST服务。该框架是轻量级的,采用标准的FrontController(前端控制器)模式,非常便于理解。它也是可扩展的,可以通过API或任何其他集成模式(如ESB)集成后端服务。通过使用自定义XML序列化程序、JAXB或任何其他对象到XML转换工具,可以方便地配置数据交换模型。本文将详细描述此框架。回页首架构概述在J2EE应用程序中,JavaAPI或服务公开为StatelessSessionBeanAPI(SessionFa?ade模式)或SOAPweb服务。在这些服务与使用非Java技术(如.net或PHP)的客户端应用程序集成时,处理SOAPWeb服务将变得非常麻烦,还涉及到大量的开发工作。这里提到的方法通常用于有很多服务、服务可以重复使用,但使用SOAP创建快速集成障碍的互操作性和开发成本很大的组织,帮助它们进行服务集成。止匕外,在内部治理组织不会在企业ESB或EAI上公开服务的情况下,很难以点到点的方式集成两种不同的技术服务。例如,在电信IT环境中:将一个SMS发送到特定圆的SMSC,公开为SOAPweb服务或EJBAPI;或在CRM应用程序中创建服务请求,使用MQ或JMS绑定通过ESB公开为一个数据库存储的过程(如OracleCRM);或者创建SalesOrder(销售订单)请求,用于使用SMSGateway的移动SMS的Distributor。如果以上服务是由一个非Java应用程序使用的,那么使用SOAPweb服务的集成会很麻烦,并需要更多的开发工作。这种新方法可以用一种框架的形式实现,使它可以在Java服务公开为一种类REST的资源的其他领域中重新使用。这种方法类似于Struts框架方法,由以下组件组成(如下图所示):图1.架构概述该架构包括FrontController,作为接收请求并向客户端提供响应的中心点。FrontController将请求处理委托给包含此框架处理逻辑的ActionController。ActionController执行验证,将请求映射到相应的Action,并调用生成响应的动作。为请求处理、日志记录和异常处理这些可以被单个Action以及ActionController使用的动作提供了各种HelperService。回页首框架组件下图展示了框架的各个组件以及彼此之间如何相互关联。图2.框架组件各种组件描述如下:服务客户端这是一个需要调用服务的客户端应用程序。此组件可以是基于Java的,也可以是任何其他客户端,只要它能够支持HTTP方法通用组件这些都是日志记录、异常处理和任何常见功能所需的实用程序服务或者实现所需的常量。在示例代码中使用ApacheCommons日志记录和Log4j实现。RESTServiceServlet框架使用FrontController模式进行集中请求处理,并使用此JavaServlet组件处理输入的请求。它支持常见的HTTP方法,如GET、PUT、POST和DELETE。RESTActionController此组件是核心框架控制器,管理加载服务和框架配置的核心功能,验证请求,映射请求与配置REST动作并执行动作。RESTConfiguration该组件负责在运行时加载和缓存框架配置,以及各种REST服务配置。此组件供RESTActionController用于确定请求要调用的正确动作,并验证输入请求。RESTMapping此组件存储在配置文件中指定的REST动作映射。映射主要包括客户端调用的URI和进行处理的动作类。ActionContext此组件封装执行REST动作所需的所有功能。它可以帮助开发人员提供请求和响应处理功能,因此开发人员只需要编写实际的业务逻辑实现代码。它向动作组件隐藏协议特定的请求和响应对象,因此允许独立测试POJO之类。它还提供一个指向XMLBindingService的句柄,让Java业务对象可以基于配置的XMLBindingAPI方便地转换为XML,反之亦然。RESTActionController动态配置此组件,并将其提供给Action组件。XMLBinding止匕组件封装JavaXMLBinding机制,提供了一个统一的界面用于将Java业务对象转换为XML,反之亦然。通过实现标准的框架接口,它支持任何XML绑定机制,如JAXB、SDO、Castor等。默认情况下,它为XMLEncoder和XMLDecoder提供了开箱即用功能。ConfigurationXML此组件包含框架和服务配置。当开发REST服务时,它们可以加入服务配置文件中。框架配置包含日志记录和XMLBinding服务,不需要定期更换。处理典型POST请求的这些组件之间的交互如下所示:图3.组件交互如上图所示,REST服务配置最初加载,并缓存到RESTConfiguration组件中。对于REST服务的每个HTTP请求,RESTServiceServlet组件将请求委托到RESTActionController,它又会检索相应的映射、验证请求、创建ActionContext组件以及路径和查询输入,并调用Action类(例如,createUserAction)。Action类调用后端Java业务服务进行处理。回页首让所有组件运作起来本节介绍了这篇文章提供的框架的示例实现。它展示了类关系图、各种配置文件和显示如何将上述设计付诸实行的代码片段。注意:示例代码可能没有遵循所有Java编码的最佳做法,因为它只是一个示例。示例实现下图显示了示例实现中的类。蓝色所示的类是框架外部的类,将它们放在这里是为了展示与框架的结构关系。图4.类图配置文件配置文件"rest-services-config.xml"包含REST服务表示形式和相应的JavaAction之间的映射,如下:清单1.REST服务配置<?xmlversion="1.0"?><rest-config><rest-apiid="CreateUserProfile”uri="/Registration/CreateUser"method="POST"><handlerid="RegAction”class="ws.registration.restactions.CreateProfile"/></rest-api>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 营销渠道管理
- 数字化技术对传统媒体的冲击
- 佳沃水果摊点合伙经营协议书模板
- 帕金森病疼痛患者的临床特点及对其生活质量的影响
- ZnO基纳米复合材料的制备及其光电性能的研究
- 2024年郑州市中牟县招聘中小学在职教师笔试真题
- 基于深度学习的肺部CT重建方法研究
- 二零二五年度墓园墓地购置与墓碑雕刻、墓园设施租赁及后期维护服务协议
- 二零二五年度运输车司机雇佣与车辆安全检查合同
- 二零二五年度消防安全宣传与教育培训合作合同
- 环境地质学第一讲-绪论课件
- DB6523-T 387-2023 苹果小吉丁虫监测调查技术规程
- 汽车维修工时收费标准(二类企业)
- (医学课件)腰椎穿刺术课件
- 参保人员转诊就医审核意见单
- 动物免疫接种技术课件
- 大班健康《换牙我不怕》课件
- 93年国际大专辩论赛经典辩词
- 冻猪肉储备投标方案
- 临床科室综合目标管理考核标准
- 幼儿园大班绘本故事-神奇的大蒜【幼儿教案】
评论
0/150
提交评论