首页>参考读物>计算机科学与技术>软件与程序设计

Java RESTful Web Service实战(第2版)
作者 : 韩陆 著
出版日期 : 2016-07-29
ISBN : 978-7-111-54213-1
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 298
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

畅销书全新优化和升级,阿里云大数据产品架构师/Java技术专家撰写
深刻解读JAX-RS的标准和API设计;Jersey的使用要点和实现原理,以及基于REST的Web服务的设计思想和原则

封底:
自第1版发行后,Jersey的版本由2.9更新到了2.22.2,此间REST服务得到了更广泛的认可和使用。与此同时,Java 8、Spring Boot和Docker的爆发式发展,使得Java领域的RESTful开发有了新的发展。因此,本书第2版应运而生。
第2版部分章节在原有的基础上做了更新,新增了微服务和容器化等内容,同时删除了第1版中反馈不好的章节,旨在更精炼、更准确、更全面地阐述REST式服务,帮助读者更好地理解和应用实践。

韩陆兄是InfoQ非常优秀的社区编辑,他撰写和翻译了很多微服务、容器相关的文章,在InfoQ网站备受欢迎。从诞生到今天,REST已经有十多年的历史,并且经久不衰,被越来越多的技术团队所采用。本书是国内为数不多的系统讲解REST技术的书籍,推荐阅读。
—— 郭 蕾  InfoQ主编

多年前我在开发Sonatype Nexus的时候首次接触并熟悉了REST风格的Web服务,这种风格使得我们的设计简单、规范且易测,Nexus的大部分功能都可以通过一行简单的curl命令来验证,单凭这一点就足以让我喜爱上 REST风格。现如今,开发REST风格的Web服务可简单多啦,尤其是如果你遵循JAX-RS 2.0标准并借助Jersey优秀的实现,编写REST风格Web服务的难度就大大降低了。本书全面且生动地阐述了JAX-RS 2.0标准,不仅覆盖了 API、请求处理、安全等核心内容,更有异步通信、调优等高级主题,无疑是学习Java REST风格Web服务的绝佳参考。韩陆技术功底扎实,在写作过程中潜心阅读了大量的Jersey源码,这也让书的质量得到了进一步保障,相信本书定会助你在REST的道路上更快更稳地前行。
—— 许晓斌 《Maven实战》作者

前:
本书系统、深度讲解了如何基于Java标准规范实现REST风格的Web服务,由拥有10余年开发经验的阿里云大数据架构师撰写,第1版上市后广获赞誉,成为该领域的畅销书。第2版对全书进行了优化和重构,不仅根据最新的技术版本对原有过时内容进行了更新,而且还根据整个技术领域的发展增添了新的内容。除此之外,还对第1版中存在的不足进行了优化,使得内容更加与时俱进、更加有价值。不仅深刻解读了最新的JAX-RS标准和其API设计,以及Jersey的使用要点和实现原理,还系统讲解了REST的基本理论,更重要的是从实践角度深度讲解了如何基于Jersey实现完整的、安全的、高性能的REST式的Web服务,书中包含大量示例代码,实战性强。
全书共10章,包括JAX-RS2入门、REST API设计、REST请求处理、REST服务与异步、REST客户端、REST测试、微服务、容器化、JAX-RS调优、REST安全等内容。书中从基础概念开始,结合大量示例和实现代码,将REST理论与Java实现相结合,循序渐进地阐述Java REST式服务,为读者提供更精炼、更准确、更全面的参考。

后:
韩 陆
北京航空航天大学软件工程硕士,Java技术专家,曾在用友(总部)、新浪、Avaya和Technicolor等知名企业从事研发工作。目前负责阿里云大数据产品的技术架构工作,实践经验非常丰富。
他是InfoQ社区编辑,利用业余时间,翻译了大量的新闻和文章,主要集中在技术架构、大数据研发、微服务、容器化、敏捷工程等领域。其中MESOS系列被InfoQ收录为电子书——《深入浅出Mesos》。
同时,他也是《JSF和Richfaces使用指南》的作者,《Java EE 7 Essentials》的译者。

图书前言

本书第1版发行后,Jersey版本从2.9更新到了2.22.2,此间REST服务得到了更广泛的认可和使用。与此同时,Java 8、Spring Boot和Docker的爆发式发展,使得Java领域的RESTful开发有了新的发展。
第2版变更
迫不及待,这是我想为读者更新REST服务新发展的心情,遂有此第2版。首先,我们要拥抱Java 8。lambda表达式在大数据处理,尤其在Spark中是默认的语法表达;Java 8带给我们的不只是“语法糖”,而是开发和执行效率的提升。我从实践中得到了其中的好处,也希望读者能跟上时代的步伐。其次是Spring Boot,这是Java领域实现微服务的事实标准框架。我已经无法回去适应部署war到Tomcat的时代,请保守的读者原谅我的情不自禁。再次是Docker,我希望读者具备使用Docker完成开发自测阶段的一切,也希望读者能运用Docker实现微服务的部署和可伸缩实践。
从第1版第1次印刷至今,我始终关注着读者的反馈。邮件都做了认真的回复。根据读者的反馈,我在第2版中重新梳理了章节的结构,删除了第1版中反馈不好的第9章和第11章,调整后的章节与第1版的对应关系如下。
第1章合并了第1版的第1章和第2章。
第2章对应第1版第3章。
第3章对应第1版第4章。
第4章包含了第1版的第8章。
第5章在第1版的基础上做了更新。
第6章包含了第1版的第7章,并升级了第1版2.5节的示例。
第7章和第8章是新增章节。
第9章对应第1版第10章。
第10章包含了第1版的第6章。
与许多技术作者一样,写书的时间是挤出来的。如果精力尚可,每晚7点到9点、11点到凌晨2点是我动笔的时间,偶尔,早上6点到8点我也会赶赶。写书成为我梳理、总结和思考的最佳方式。
于此过程,我总结了3句话与读者共享。搞技术的人,是停不下来的。时而要开疆拓土,学习和研究新的知识点,弥补自己的技术债;时而要运筹帷幄,将知识点梳理成线,编织成网;时而要深耕细作,面对当下要攻坚的业务所对应的知识点,深入研究、反复实践、勤于思考、勇于交流。只有这样,我们才可以坦然地用手推一下眼镜,谦虚地告诉别人,“其实我是个程序员”。
源代码
本书提供源代码下载,地址是https://github.com/feuyeux/jax-rs2-guide-II。
勘误和交流
本书的勘误会在https://github.com/feuyeux/jax-rs2-guide-II/wiki发布,欢迎读者批评指正。
我的邮箱:feuyeux@163.com
我的新浪微博:六爷1_1
致谢
感谢我的妻子Caroline和女儿Doris一直以来的关心和陪伴。
感谢机械工业出版社华章分社的杨福川对我的专业指导。感谢机械工业出版社华章分社编辑高婧雅、李艺专业和耐心的审阅和指正。
感谢阿里巴巴速卖通中间件团队在微服务、容器化上对我的影响。感谢雷卷、许晓斌在DDD、Spring Boot和Docker上对我的帮助。感谢Technicolor的敏捷团队、阿里巴巴国际站测试架构团队,前者带我悟得Jersey,后者给我深入实践的机会。
最后我要感谢阿里巴巴阿里云事业群大安全的各位兄弟对我的支持。我正在这里,与大家一天天、一步步将微服务和容器化落地生花。

上架指导

计算机\网络

封底文字

自第1版发行后,Jersey的版本由2.9更新到了2.22.2,此间REST服务得到了更广泛的认可和使用。与此同时,Java 8、Spring Boot和Docker的爆发式发展,使得Java领域的RESTful开发有了新的发展。因此,本书第2版应运而生。
第2版部分章节在原有的基础上做了更新,新增了微服务和容器化等内容,同时删除了第1版中反馈不好的章节,旨在更精炼、更准确、更全面地阐述REST式服务,帮助读者更好地理解和应用实践。


韩陆兄是InfoQ非常优秀的社区编辑,他撰写和翻译了很多微服务、容器相关的文章,在InfoQ网站备受欢迎。从诞生到今天,REST已经有十多年的历史,并且经久不衰,被越来越多的技术团队所采用。本书是国内为数不多的系统讲解REST技术的书籍,推荐阅读。

——郭蕾 InfoQ主编

多年前我在开发 Sonatype Nexus 的时候首次接触并熟悉了 REST 风格的 Web 服务,这种风格使得我们的设计简单、规范且易测,Nexus 的大部分功能都可以通过一行简单的 curl 命令来验证,单凭这一点就足以让我喜爱上 REST 风格。现如今,开发 REST 风格的 Web 服务可简单多啦,尤其是如果你遵循 JAX-RS 2.0 标准并借助 Jersey 优秀的实现,编写 REST 风格 Web 服务的难度就大大降低了。本书全面且生动地阐述了 JAX-RS 2.0 标准,不仅覆盖了 API、请求处理、安全等核心内容,更有异步通信、调优等高级主题,无疑是学习 Java REST风格 Web 服务的绝佳参考。韩陆技术功底扎实,在写作过程中潜心阅读了大量的 Jersey 源码,这也让书的质量得到了进一步保障,相信本书定会助你在 REST 的道路上更快更稳地前行。
——许晓斌 《Maven实战》作者

作者简介

韩陆 著:暂无简介

图书目录

第2版序一
第2版序二
第1版序一
第1版序二
前言
第1章 JAX-RS2入门 1
1.1 解读REST 1
1.1.1 一种架构风格 2
1.1.2 基本实现形式 2
1.2 解读REST服务 3
1.2.1 REST式的Web服务 3
1.2.2 对比RPC风格 3
1.2.3 对比MVC风格 4
1.3 解读JAX-RS标准 5
1.3.1 JAX-RS2标准 5
1.3.2 JAX-RS2的目标 5
1.3.3 非JAX-RS2的目标 6
1.3.4 解读JAX-RS元素 7
1.4 Jersey项目概要 7
1.4.1 获得Jersey 8
1.4.2 Jersey问答 8
1.4.3 Jersey项目管理 8
1.4.4 Jersey许可 9
1.4.5 Jersey的模块 10
1.4.6 GlashFish项目 10
1.5 快速实现Java REST服务 12
1.5.1 第一个REST服务 13
1.5.2 第一个Servlet容器服务 17
1.6 快速了解Java REST服务 19
1.6.1 REST工程类型 19
1.6.2 REST应用描述 24
1.7 Java领域的其他REST实现 27
1.7.1 JAX-RS的其他实现 27
1.7.2 其他的REST实现 31
1.8 REST调试工具 33
1.8.1 命令行调试工具 33
1.8.2 基于浏览器的图形化调试插件 34
1.9 本章小结 37
第2章 REST API设计 38
2.1 统一接口 38
2.1.1 GET方法 39
2.1.2 PUT方法 41
2.1.3 DELETE方法 43
2.1.4 POST方法 44
2.1.5 WebDAV扩展方法 45
2.2 资源定位 47
2.2.1 资源地址设计 48
2.2.2 @QueryParam注解 50
2.2.3 @PathParam注解 52
2.2.4 @FormParam注解 55
2.2.5 @BeanParam注解 57
2.2.6 @CookieParam注解 58
2.2.7 @Context注解 58
2.3 传输格式 59
2.3.1 基本类型 59
2.3.2 文件类型 60
2.3.3 InputStream类型 61
2.3.4 Reader类型 62
2.3.5 XML类型 62
2.3.6 JSON类型 66
2.4 连通性 82
2.4.1 过渡型链接 82
2.4.2 结构型链接 83
2.5 处理响应 84
2.5.1 返回类型 85
2.5.2 处理异常 86
2.6 内容协商 89
2.6.1 @Produces注解 89
2.6.2 @Consumes注解 91
2.7 本章小结 92
第3章 REST请求处理 93
3.1 Jersey的AOP机制 93
3.2 Providers详解 94
3.2.1 实体Providers 94
3.2.2 上下文Providers 100
3.3 REST请求流程 100
3.4 REST过滤器 102
3.4.1 ClientRequestFilter 102
3.4.2 ContainerRequestFilter 103
3.4.3 ContainerResponseFilter 104
3.4.4 ClientResponseFilter 105
3.4.5 访问日志 107
3.5 REST拦截器 109
3.6 绑定机制 111
3.6.1 名称绑定 111
3.6.2 动态绑定 113
3.7 优先级 115
3.8 本章小结 116
第4章 REST服务与异步 117
4.1 为什么使用异步机制 117
4.1.1 服务器异步机制 117
4.1.2 客户端异步机制 118
4.2 JAX-RS2的异步机制 119
4.2.1 服务端实现 119
4.2.2 客户端实现和测试 122
4.3 基于HTTP1.1的异步通信 124
4.3.1 Polling技术 124
4.3.2 Comet技术 126
4.3.3 Web Hook异步通信 127
4.3.4 SSE技术 128
4.4 基于HTML5的异步通信 129
4.4.1 SSE的原理 129
4.4.2 发布—订阅模式的实现 131
4.4.3 广播模式的实现 135
4.4.4 WebSocket技术 137
4.5 本章小节 138
第5章 REST客户端 139
5.1 客户端接口 140
5.1.1 Client接口 140
5.1.2 WebTarget接口 141
5.1.3 Invocation接口 142
5.2 连接池 142
5.2.1 资源释放 142
5.2.2 连接器 144
5.2.3 HTTP连接池 146
5.3 封装Client 147
5.4 请求Spring Boot微服务 148
5.4.1 不同的JSON解析方式 148
5.4.2 完整示例 150
5.5 JavaScript客户端 150
5.5.1 jQuery客户端 151
5.5.2 AngularJs客户端 152
5.6 本章小结 152
第6章 REST测试 153
6.1 Jersey测试框架 153
6.2 单元测试 156
6.2.1 集成Spring的单元测试 156
6.2.2 异步测试 158
6.3 集成测试 158
6.4 日志增强 159
6.5 本章小结 160
第7章 微服务 161
7.1 微服务技术栈 162
7.1.1 服务发现 163
7.1.2 可伸缩性 163
7.1.3 回到起点 164
7.2 REST服务与Spring Boot 165
7.2.1 Bootiful 165
7.2.2 RESTful 167
7.2.3 Actuator 168
7.3 REST服务与Spring Cloud 172
7.3.1 Spring Cloud Zookeeper 172
7.3.2 Spring Cloud Consul 182
7.3.3 Spring Cloud Etcd 187
7.4 本章小结 193
第8章 容器化 195
8.1 容器技术 195
8.1.1 容器 195
8.1.2 Docker技术栈 197
8.1.3 容器文化 199
8.2 REST服务与容器 201
8.2.1 开始容器化之路 201
8.2.2 开发自测容器化 204
8.3 容器化微服务 206
8.3.1 Zookeeper 207
8.3.2 Kafka 212
8.3.3 微服务 214
8.3.4 Nginx 217
8.4 本章小结 220
第9章 JAX-RS调优 223
9.1 使用缓存优化负载 223
9.1.1 缓存协商 223
9.1.2 条件GET 225
9.1.3 REST缓存实践 227
9.1.4 ab测试 229
9.2 使用版本号优化服务 229
9.2.1 何时使用版本号 230
9.2.2 如何使用版本号 230
9.3 使用参数配置优化服务 232
9.3.1 通用配置 232
9.3.2 服务器端和客户端配置类 233
9.4 Java虚拟机调优 234
9.4.1 虚拟机概述 234
9.4.2 内存溢出与内存泄漏 236
9.5 本章小结 238
第10章 REST安全 239
10.1 身份认证 240
10.1.1 基本认证 241
10.1.2 摘要认证 241
10.1.3 表单认证 242
10.1.4 证书认证 242
10.2 资源授权 244
10.2.1 容器管理权限 244
10.2.2 应用管理权限 246
10.3 认证与授权实现 247
10.3.1 基本认证与JDBCRealm 247
10.3.2 摘要认证与UserDatabase-Realm 255
10.3.3 表单认证与DataSource-Realm 258
10.3.4 Form认证和JAASRealm 263
10.3.5 证书认证与UserDatabase-Realm 266
10.4 JAX-RS2实现 270
10.4.1 Application类 270
10.4.2 资源类 271
10.4.3 资源测试类 271
10.5 REST服务与OAuth2 273
10.5.1 OAuth2概述 274
10.5.2 OAuth2流程 275
10.5.3 OAuth2实现 276
10.6 本章小结 280
参考资料 282

教学资源推荐
作者: [英]克里斯?布里顿(Chris Britton) 著
作者: 高屹 沙俊星
参考读物推荐
作者: (美)Jennifer Campbell; Paul Gries; Jason Montojo; Greg Wilson 著
作者: 刘文志 著
作者: [美]艾德里安·奥斯特洛夫斯基(Adrian Ostrowski),[波]彼得亚雷·加奇科夫斯基(Piotr Gaczkowski) 著