下载  >  开发技术  >  Java  > Java RESTful Web Service实战

Java RESTful Web Service实战 评分:

Java RESTful Web Service 实战
zcew推荐序 REST开发的理想与现实 REST是一种分布式应用的架构风格,也是一种大流量分布式应用的设计方法论。REST 是由(构成了Web基础架构的)HTTP、URI等规范的主要设计者RoyFileding博士在其 20年的博士论文(中文版名为《架构风格与基于网络应用软件的架构设计》)中提出的 到目前为止,关于REST最系统、最全面的论述,仍然是 Fielding的博士论文。 REST就是Web( World Wide Web,简称Web或者WWW)本身的架构风格,是设计、 开发Web相关规范、Web应用、Web服务的指导原则。不符合REST风格要求的架构和技术 很难在Web这个生态系统中得到繁荣发展。在我看来, Roy Fielding博士就是15年以来对于 分布式应用架构设计理论贡献最大的人。Fielding在HTTP规范的设计过程中,并没有采用当 时大行其道的Do( Distributed object,分布式对象)风格,而是自岀机杼、另辟蹊径,提出 了一整套新的设计方法论。 Fielding的开创性工作,极大地推动了分布式应用设计理论的发展 有趣的是,其实基于 SOAPWSDL的“大 Web service”(以下简称 Web service),几乎 是与REST同时发展起来的。虽然在 Web service中也使用了对象,但是 Web service其实是 RPC风格的,而不是DO风格的。 Web service在最初几年发展很快,很大原因是它解决了 DO风格难以解决的异构系统(不同的硬件系统、不冋操作系统、不同的编程语言,等等)之 间互操作性的问题。 然而遗憾的是,设计 Web service协议栈的核心人员,几乎都是来自于企业应用阵营的 尤其是来自于IBM和微软两家公司的人。这些企业应用的专家们没有充分认识到Web基础 架构的巨大优点,甚至可以说并没有理解HTTP协议究竟是用来做什么的、为何要如此设 计。在 Web service协议栈的设计之中,仍然有深深的企业应用痕迹。 Web service虽然宣称 能够很好地支持互操作,然而因为协议栈的复杂性很高,在实战中互操作性并不好(例如升 级过程困难而且复杂)。此外,Webservice仅仅将HTTP协议当做一种传输协议来使用,还 依赖XML这种冗余度很高的文本格式,这导致 Web service应用性能低下。很多开发团队 宁可使用 Hessian等轻量级的RPC协议,也不愿意使用 Web service。在面向互联网的大流 量web应用(包括web服务在內)这种运行环境中, Web Service在复杂性、互操作性、性 能、可伸缩性等方面的短板更加突出。因此,设计今日面向互联网的API,已经很少有人会 考虑 Web service。这使得 Web service的使用被局限在企业应用运行环境之中,其名称中的 Web”更像是一个笑话(除了都使用HTTP协议,基本上与Web没什么关系)。假如在2000 年,设计Webservice规范的专家们,能够认真读一下Fielding的博士论文,或者找HTTP、 URI等web基础架构规范的核心设计人员深λ交流一下, Web service很可能就不是现在这 个样子了。不过,历史是无法假设的。 在Java世界中,与大 Web service相对应的规范是JAX-WS。在大 Web service已经成 为明日黄花之后,Java世界急需一套新的规范来取代JAⅹ-WS。这套新的规范就是JAX-RS: Java世界开发 RESTful Web service(与 RESTful aPi含义相同,可混用)的规范。虽然起步 很晚,毕竟走上了正确的道路。 从 Java ee6开始,JAX-RS在 Java ee版图中,作为最重要的组成部分之一,逐步取代 了JAX-WS的地位。在所有 Java ee相关规范中,JAX-RS是优点很突出的一个。例如,完 全基于POJO、很容易做单元测试、将HTTP作为一种应用协议而不是可替代的传输协议 (因此提高了性能)、优秀的IDE集成,等等。可以说,在大多数场合,JAX-RS完全可以取 代JAⅩ-WS,作为 Java Web service开发的主要技术。JAX-RS同样也可以完全取代 Hessian 等基于HTTP协议的RPC风格远程调用协议。毕竞HTTP本身就是一种REST风格的应用协 议,以REST风格来使用HTTP,才是最高效的使用方式 Jersey、CXF等支持JAⅹ-RS规范的REST开发框架还支持输出WADL。WADL支持 客户端代码自动生成,还可以将WADL导入到 Soap等测试工具中,然后做自动化集成测 试。从开发Java企业应用、取代JAX-WS的角度来看,JAX-RS已经做得非常棒了。 尽管如此,不可不提的是,JAX-RS这套规范,仍然存在着很多遗憾。需要特别指出的 是,JAⅩ-RS规范并不等于REST架构风格本身,REST的内涵要比JAX-RS广泛得多。学会 了使用JAX-RS了,并不等于就完全理解了REST,开发者仍然需要下工夫认真学习一下本 源的REST究竞是什么。 例如,JAX-RS规范对于应该如何定义一个资源,以及应该如何使用HTTP作为一个统 接口来操作资源,显然缺乏必要的指导。有很多开发者只是简单地将以前JAⅩ-WS中的 个endpoint接口转换成一个资源接口。接口的方法太多,导致映射到的HTTP方法不够用, 这也难不倒他们,在URI路径中加一些字符串就能够解决(例如,三个接口方法都映射到 POST,但是其PATH不同)。这样的开发方式非常常见,虽然开发者使用了 JAX-RS规范 但是开发方式完全是RPC风格的,可以说与REST风格没有任何关系。 此外, JAX-RS规范目前尚不支持 HATEOAS(将超文本作为应用状态的引擎,REST 风格的核心特征之一),从著名的 Richardson成熟度模型(由《 RESTful Web apis》的作者 Richardson提出)来衡量,基于JAⅩ-RS规范实现的 RESTful api仅仅能够达到成熟度模型 的第二级,即支持资源抽象、统一接口的“CRUD式Web服务”。 可以这样说,JAⅹ-RS规范与真正的REST风格,覆盖的范围其实是不同的。JAX-RS覆 盖的是简单基于HTTP协议(没有使用SOAP/WSDL)的各种远程调用需求,很多需求对于 可伸缩性、松耦合的要求并不高,仅仅是希望使用HTTP本身来取代大Webservice作为 种轻量级、容易测试的远程调用协议。REST架构风格的严格要求,在这些场合并不是非常 重要。慵懒是人类的天性,大多数开发者写代码只是为了解决手头的问题,JAX-WS并不好 用,JAX-RS解救了他们。 如果按照 Roy Fielding博士的严格要求( REST APIS must be hyper-text driven),那么包括 JAⅹ-RS规范在内都不能算是真正的 RESTful然而,从实战角度,我认为革命不分先后,只 要能够达到 Richardson成熟度模型第一级,即有清晰的资源抽象,就可以认为是 RESTful aPI 了。如果连第一级都达不到,所设计的架构根本就不是面向资源的,那八成还是RPC风格 的,就没有必要非要往 RESTful aPI阵营里面挤了。从来没有人说过RPC就是万恶的,RPC 在企业应用的大多数场合其实都非常有效,只是不适合面向互联网的大流量Web应用而已。 因此,能够完美支持 HATEOAS,攀登到成熟度模型第三级,是一种理想情况(当然也 是值得追求的)。而通过部分拥抱REST风格的要求,来更好地解决手头的问题,是更多开发 者所面对的现实情况。JAX-RS反映的正是这种现实情况,从实战的角度,它是一套非常有 用也很好用的规范。 韩陆兄的新著《 Java resTful Web service实战》是JAX-RS规范方面的专著,也是国 内第一本REST开发的原创著作。这本书的实战性非常强,全面介绍了JAX-RS2.0的方方 面面,可以作为一线Java分布式应用开发者的案头必备书。如同我在前面所指出的,JAX RS规范并不等于REST架构风格本身,它们有着不同的覆盖范围。在本书中,作者也介绍 了很多设计 RESTful API的最佳实践,这些内容假如读者不理解REST,甚至在亲自阅读了 JAX-RS规范之后也未必能够总结岀来。读者在阅读本书的过程中,不应该仅仅满足于掌握 了JAX-RS开发的基本方法、解决了手头的问题、用其完全取代JAX-WS,更重要的是,读 者还应该就REST架构风格本身做更多的学习。幸运的是,除了本书之外,目前REST设计 和开发方面的图书资料已经非常多了。 本书的内容非常严谨,有非常好的系统性,对于设计开发大流量web服务会面临的各种 问题都有涉及。特别是在自动化测试方面着墨颇多,在我看来是本书的一大亮点。 RESTful API的自动化测试非常重要,需要在设计之初就充分考虑到。本书是一本难得的原创佳作 值得所有Java分布式应用的开发者购买 理想富丽丰满,现实贫瘠骨感,追求理想和注重解决现实冋题其实并不矛盾。JAX-RS 规范的发展,反映出了Java社区在更好地开发 RESTful Web service方面的求索。尽管存在 争议,在我看来,规范化是推动 RESTful Web service取得更大发展的必由之路。目前对于优 秀的 RESTful api有哪些判断标准,web开发者社区已经达成了高度共识,也积累了大量非 常有价值的成果。JAX-RS规范的发展,离不开Web开发者社区的这些成果。在未来的JAX RS3.0规范中,我们将会看到更多令人兴奋的成果被规范化。JAX-RS2.0已经做得不错了 但是在 RESTful Web service规范化的道路上,其实才刚刚起步,任重而道远。 李锟于上海 H/BOOKS cw推荐序二 半年前初识韩陆的时候,我们就聊到他正在写的这本书,当得知我从2006年就参与了 Apache CXF开发,他立即邀请我为他的新书写序,我也就欣然答应了。 Apache CXF作为 JAXWS以及JAX-RS规范的实现框架,已经成为很多Web服务开发 者必选的开发框架。作为这一框架的开发维护者之一,我的日常工作经常需要熟悉这些JSR 规范,并实现JSR所定义的API,解决最终用户的使用问题。 熟悉Java的人大多都听说过JSR( Java Specification Requests)、JCP( Java Community Process),通过JSR可以就Java某一方面的应用定义一组标准的API或者服务。对于最终用 户来说,他们的代码只需要调用JSR定义的标准API,不做任何修改就可以调用不同的JSR 实现。这里常见的例子就是 Java Servlet应用,用户开发的Web应用可以不做任何修改就部 署到 Tomcat、JBos等不同的Web容器中。 JAXRS是JCP为 Java restful Web service定义的一套API。由于web服务的描述模型 与Java类和接口有一定的差距,JAX-RS定义了很多 annotation,通过这些 annotation我们可 以很方便地将Java类描述成为相关的REST服务。由于 RESTful Web service通常需要部署 到web容器中,JAX-RS也定义了相关服务来发现部署到容器中的JAX-RS应用。 读过JSR规范的朋友或多或少都会有这样的体会,JSR作为规范文档,其目标是将API 定义以及实现功能描述清楚、完备,其目标读者是相关API的实现人员,或者是相关API的 高级使用人员。如果读者对相关的背景知识还不熟悉的话,JSR文档读起来会比较晦涩而且 难以理解。加之绝大部分JsR文档都没有相关的中文翻译,对于绝大多数初学者来说,通过 阅读JSR文档来学习相关的API的知识是一个艰难的过程。 如果我们想要对JAX-RS规范有一个比较快速并且全面的了解应该怎么办呢?一般来我 们可以通过JSR的相关参考实现入手,我们不但可以通过运行相关的参考实现的例子快速入 门,还可以通过跟踪相关的代码对实现细节有一个全面的了解。韩陆的这本新作以JAX-RS VII 的参考实现 Jersey为蓝本,由浅入深地向大家介绍了JAX-RS的由来,以及与 RESTful Web 服务开发的相关API,并结合实例分享了作者的实战经验。 好了,现在打开你熟悉的IDE工具,加载 Jersey代码库,沿着本书的指引去探索Java RESTful Web services开发世界吧 Redhat姜宁 H/BOOKS crece 从我启动本书到完稿,历时一年有余。 此间, Java ee7得到了更多服务器软件的支持, Jersey升级了9个小版本一我在动笔 开始文字和示例代码编写的时候, Jersey刚刚推出2.0版本,到本书完毕时,版本号是2.9, 这也是本书的最终版本。此后新版本带来的改变只有通过本书提供的源代码来同步更新。 此间,我积极参与和关注着 Jersey项目的动向,通过关注 Jersey官方文档、 Jersey在 Github托管系统的源代码、 Jersey的jira缺陷管理系统、 Jersey的 StackOverflow问答系统 对其修复缺陷、引入新功能和如何使用 Jersey等事宜不断跟进 我之所以这么做,目的只有一个,即希望为读者呈现的是一本Java领域REST开发的好书。 为什么要写这本书 REST式的web服务有多流行,相信每一位翻阅本书的读者都很清楚,冒昧地猜测,你 可能想要看到的是一本讲述如何使用Java语言和 Java ee平台,来实现这一风格的服务或者 应用的书。这也正是我这两年来努力写作的初心和原动力。我相信,读者希望看到的内容不 单单是追逐流行、风靡一时的“快餐”。作为开发者,我知道拥有对新技术、新标准的敏锐 嗅觉非常重要,但我认为更难能可贵的是把一个业内认可的标准学好和用好。 Java eE7中 包含了JAⅩ-RS2.0标准,是Java领域REST式的Web服务的规范; Glass Fish是 Java EE7 的参考实现项目集, Jersey是其子项目,是JAX-RS2.0的参考实现。本书的目的就是要把 JAX-RS2.0说清楚,把如何用 Jersey写好REST式的服务讲明白。 本书特色 口第一本完整讲述使用Java标准规范实现REST的书籍。 口第一本完整讲述以JAX-RS2.0参考实现实践 Jersey的书籍。 口给出深度学习和实践JAX-RS的线路图和解决方案 读者对象 本书从实践角度,完整地诠释了JAX-RS2.0(JSR339),即 Jersey2.0的核心元素和 REST开发过程。面向所有在Java领域学习和使用REST的读者。同样欢迎REST领域的其 他语言的使用者通过本书了解REST的实现 口技术路线:架构师、技术主管、研发工程师、REST小白(网络用语,本书指新手); 口管理路线:部门经理、项目经理、产品经理 口敏捷实践者。 如何阅读本书 本书收纳了笔者近三年的 RESTful实战经验,将REST理论与Java实现相结合,循序渐 进地将使用Java开发REST式的web服务中遇到的知识点和经验呈现给读者。每个章节中的 知识点都精心设计了相应的示例代码,便于读者更好地理解和更及时地进行实践。从第11章 开始,笔者从敏捷角度为读者呈现了一个完整和相对复杂的REST式的Web服务实例,相信 这个实例能让读者更好地理解相关内容,同时,可以对敏捷开发和自动化测试有新的认识。 全书分为3篇,共11章 第一篇共5章(第1~5章),讲述REST的基本理论和 Jersey的基本实践。完成第一篇 的阅读和示例代码的实践,读者可以学会使用Java开发REST式的Web服务的基本能力。 第1章分别阐述了REST、REST式的web服务、JAX-RS2.0和 Jersey2.x的基本情况。 第2章讲述了使用 Jersey2x开发一个基于JAX-RS2.0标准的应用的基本知识以及如 何使用 Jersey来集成 Spring和JPA以快速开发一个REST式的Web服务。本章包含10个示 例项目 第3章深入阐述了如何使用 Jersey设计和实现REST式的Web服务的API。本章包含 5个示例项目。 第4章深入阐述了 Jersey的 Providers对REST请求的处理。 第5章讲述了 Jersey的客户端开发的基本实践和常用配置。 第二篇共5章(第6~10章),讲述写好REST程序的必要知识点。完成第二篇的阅读 和实践,读者可以全面了解如何写好一个完整的REST式的Web服务。 第6章全面讲述了如何实现一个安全的REST式的Web服务 第7章讲述了 Jersey的测试框架及其使用。 第8章讲述了 Jersey对HTML5的SSE的支持和异步请求处理。

...展开详情
2015-03-26 上传 大小:3.08MB
版权受限,无法下载
举报 收藏
分享

评论 下载该资源后可以进行评论 共9条

woaini1314baobei 你值得拥有!
2016-08-25
回复
xue0zhi1qiang3 试读版,值得阅读
2016-08-13
回复
luckyruruguo 试读版,谢谢分享!
2015-08-14
回复
iamsyt 公司正要开发REST服务,急需这方面的资料,看了不错,谢谢。
2015-07-07
回复
zqingjianmoxie 对RESTful Web Service编程方式有很好的借鉴
2015-06-08
回复
Java RESTful WEB Service实战 第2版

REST是一种分布式应用的架构风格,也是一种大流量分布式应用设计的方法论。 本书为第2版

立即下载
Java RESTful Web Service实战

国内首本完整、深度地讲解如何基于Java标准规范实现REST风格的Web服务的专著,阿里巴巴Java技术专家12年开发经验结晶,3位业内著名技术专家联袂推荐!不仅深刻解读了最新的JAX-RS标准和其API设计,以及Jersey的使用要点和实现原理,而且系统讲解了REST的基本理论,更重要的是从实践角度深度讲解了如何基于Jersey实现完整的、安全的、高性能的REST式的Web服务。 《Java RESTful Web Service实战》共11章,分为三篇。第一篇(第1~5章)系统讲解了REST的基本理论和Jersey的基本实践,旨在帮助读者具备使用Java开发REST式的Web服务的基本能

立即下载
Java RESTful Web Service实战.pdf

Java RESTful Web Service实战.pdf Java RESTful Web Service实战.pdf

立即下载
三步轻松实现java restful web services

NULL 博文链接:https://coolzhi.iteye.com/blog/588543

立即下载
使用Java创建RESTful Web Service

使用Java创建RESTful Web Service

立即下载
分享一个Android和java调用RESTful Web服务的利器Resting

分享一个Android和java调用RESTful Web服务的利器Resting 当我们调用Web服务,往往是最终目标是取HTTP响应,将其转化为将在应用中呈现的值对象。Resting可以用来实现这一功能。 Resting,在Java的一个轻量级的REST框架,可用于调用一个RESTful Web服务,并转换成响应来自客户端应用程序定制的Java对象。由于它的简单,resting是适合Android等手持设备。

立即下载
[RESTful Web] RESTful Web APIs 英文版

☆ 资源说明:☆ [奥莱理] RESTful Web APIs 英文版 [奥莱理] RESTful Web APIs E Book ☆ 图书概要:☆ The popularity of REST in recent years has led to tremendous growth in almost RESTful APIs that don’t include many of the architecture’s benefits With this practical guide you’ll learn what it takes to design usable

立即下载
RESTful Java Web Services

RESTful Java Web Services, Master core REST concepts and create RESTful web services in Java, Jose Sandoval, Copyright 2009 Packt Publishing

立即下载
Building RESTful Web Services with Java EE 8

Learn the fundamentals of Java EE 8 APIs to build effective web services Java Enterprise Edition is one of the leading application programming platforms for enterprise Java development. With Java EE 8 finally released and the first application servers now available, it is time to take a closer look

立即下载
restful web例子

restful web,restful web,restful web

立即下载
Java RESTful WebService实战

Java restful和webservice接口, WebService有两种方式,一是SOAP方式,二是REST方式。SOAP是基于XML的交互,WSDL也是一个XML文档,可以使用WSDL作为SOAP的描述文件;REST是基于HTTP协议的交互,支持JSON、XML等交互,不需要WSDL。

立即下载
RESTful Web Service

RESTful Web ServiceRESTful Web ServiceRESTful Web Service

立即下载
restful web services

restful web services

立即下载
RESTful Web Services

RESTful Web Services

立即下载
RESTFul Web Services

RESTful Web Services介绍

立即下载
RESTful web service

building a restful web service

立即下载
restful web service

restful web service for jboss

立即下载
html+css+js制作的一个动态的新年贺卡

该代码是http://blog.csdn.net/qq_29656961/article/details/78155792博客里面的代码,代码里面有要用到的图片资源和音乐资源。

立即下载
qBittorrent插件集合(22个)

btetree.py cpasbien.py divxtotal.py ilcorsaronero.py kickass.py leetx.py limetorrents.py linuxtracker.py nyaa.py nyaapantsu.py nyaasi.py pantsu.py psychocydd.py rarbg.py rutor.py skytorrents.py sukebei.py sumotorrent.py tntvillage.py torrent9.py torrentfunk.py zooqle.py

立即下载
万能BIOS刷新工具Universal Flash Utility V8.95

近期在网搜刷新工具时,寻得这组万能刷新工具类型的希缺资源[正宗正版工具软件],特上传bios之家论坛,对号最需要它的爱好者群!软件版权归属原作品发布方,提供与本网站各界爱好者试用,以便交流刷新比较困难的 bios 实际使用经验![[ 其中的895工具是在本论坛首次亮像,=本论坛335469299用户曾在2011年6月29日发表过848的使用资料=各位可划文搜链接[ ==http://bbs.bios.net.cn/?8024== ]看 用户 awb 空间 所存载主题=求万能bios刷写工具flash849.exe-=之=-335469299 -=所回帖发布软件介绍使用参数 参考试用万能 bio

立即下载