具体描述
《Java Web服务:构建与运行(第2版)》快速并详尽地介绍了如何开发REST式和基于SOAP的Web服务。这本动手实践型的书以清晰、务实的方法讲述Web服务相关技术,提供了架构性的概述、可以运行的完整代码示例,以及编译、部署和执行应用程序的一些短小精悍的指令。学习《Java Web服务:构建与运行(第2版)》,读者将掌握如何从头开始编写服务或将已有的服务整合到现有的Java应用程序中。
在突出强调REST式服务的同时,此第2版还涵盖了HttpServlet、Restlet、JAX-RS API,针对REST式服务的jQuery客户端,以及用于基于SOAP的服务的JAX-WS。
作者简介
目录信息
第1 章 Web 服务快速入门 ............................................. 1
1.1 Web 服务杂项 .................................................................................................3
1.2 Web 服务有什么好处 ......................................................................................4
1.3 Web 服务和面向服务的架构 ...........................................................................6
1.4 Web 服务简史 .................................................................................................8
1.4.1 从DCE/RPC 到XML-RPC ....................................................................8
1.4.2 分布式对象架构:Java 示例 ...............................................................10
1.4.3 用Web 服务来救援 .............................................................................12
1.5 什么是REST .................................................................................................13
1.5.1 动词和不透明名词 ...............................................................................16
1.6 回顾HTTP 请求和响应 .................................................................................17
1.7 HTTP 作为API .............................................................................................19
1.7.1 用Java 编写的两个HTTP 客户端 .......................................................20
1.8 第一个REST 式的例子 .................................................................................23
1.8.1 Predictions Web 服务的工作原理 .......................................................24
1.8.2 针对Predictions Web 服务的客户端 ....................................................32
1.9 为什么REST 式Web 服务要使用servlet ................................................... 33
1.10 下一步是什么 ..............................................................................................35
第2 章 REST 式的Web 服务:服务端 ......................... 39
2.1 REST 式服务作为一个HttpServlet 类 ..........................................................40
2.1.1 实现细节 .............................................................................................41
2.1.2 针对predictions2 服务的示例客户端调用 ...........................................52
2.2 REST 式 Web 服务作为一个JAX-RS 资源 ...................................................53
2.2.1 第一个使用Jersey 的JAX-RS Web 服务 .............................................54
2.2.2 用Java 应用程序发布JAX-RS 资源....................................................55
2.2.3 用Tomcat 发布JAX-RS 资源 ..............................................................56
2.2.4 Adage 类 ..............................................................................................58
2.2.5 JAX-RS 生成的XML 和JSON 响应 ...................................................62
2.2.6 将Predictions Web 服务移植到JAX -RS ............................................66
2.3 REST 式 Web 服务作为Restlet 的资源 .........................................................75
2.3.1 对adages2 服务的示例调用 ................................................................83
2.3.2 在不使用Web 服务器的情况下发布adages2 Restlet 服务 ..................84
2.3.3 REST 式服务作为一个@WebServiceProvider ....................................85
2.4 下一步是什么 ................................................................................................94
第3 章 REST 式的Web 服务:客户端 ......................... 95
3.1 针对Java REST 式Web 服务的Perl 客户端 .................................................96
3.2 针对亚马逊电子商务服务的客户端 ............................................................ 101
3.3 一个独立的JAX -B 示例 ............................................................................ 110
3.3.1 XStream 选项 .................................................................................... 114
3.4 针对亚马逊电子商务服务的另一个客户端 ................................................. 119
3.5 CTA 公共汽车跟踪服务 .............................................................................. 123
3.6 REST 式客户端和WADL 文档 ................................................................... 126
3.7 JAX-RS 客户端API .................................................................................... 132
3.8 用于JavaScript 客户端的JSON .................................................................. 134
3.8.1 JSONP 和Web 服务 .......................................................................... 135
3.8.2 使用jQuery 编写的组合REST 式服务 .............................................. 136
3.8.3 一个Ajax 轮询的例子 ....................................................................... 139
3.9 下一步是什么 .............................................................................................. 142
第4 章 基于SOAP 的Web 服务 ................................ 145
4.1 一个基于SOAP 的Web 服务 ...................................................................... 146
4.2 在两个文件中的RandService ..................................................................... 151
4.3 针对RandService 的客户端 ........................................................................ 152
4.3.1 针对RandService 的Java 客户端 ...................................................... 153
4.3.2 针对RandService 的C# 客户端 ........................................................ 156
4.3.3 针对RandService 的Perl 客户端 ....................................................... 157
4.4 WSDL 服务合同详解 .................................................................................. 159
4.4.1 types 部分 .......................................................................................... 162
4.4.2 message 部分 ..................................................................................... 163
4.4.3 portType 部分 .................................................................................... 163
4.4.4 binding 部分 ...................................................................................... 164
4.4.5 service 部分 ....................................................................................... 165
4.4.6 Java 和XML 模式的数据类型绑定 ................................................... 165
4.4.7 包装和解包的文档风格 ..................................................................... 168
4.4.8 用于服务端的wsimport 构件 ............................................................ 170
4.5 针对亚马逊的电子商务服务的基于SOAP 的客户端 .................................. 172
4.5.1 针对基于SOAP 的服务的异步客户端 .............................................. 178
4.6 下一步是什么 .............................................................................................. 181
第5 章 SOAP 处理程序和错误 ................................... 183
5.1 基于SOAP 的服务和客户端中的处理程序层 ............................................. 184
5.2 在predictionsSOAP 服务中的处理程序和错误 ........................................... 192
5.2.1 后台支持类 ........................................................................................ 196
5.2.2 从客户端到服务 ................................................................................ 199
5.2.3 签名验证 ........................................................................................... 208
5.2.4 来自应用层和处理程序层的错误 ...................................................... 208
5.2.5 链接服务端处理程序的服务 .............................................................. 209
5.3 有两个处理程序的处理程序链 .................................................................... 210
5.4 基于SOAP 的Web 服务和二进制数据 ....................................................... 215
5.5 传输层 ......................................................................................................... 221
5.6 Axis2 ........................................................................................................... 224
5.7 下一步是什么 .............................................................................................. 227
第6 章 Web 服务安全性 ............................................ 229
6.1 线路层安全 ................................................................................................. 230
6.1.1 HTTPS 基础 ...................................................................................... 231
6.1.2 对称和非对称加密/ 解密 .................................................................. 232
6.1.3 HTTPS 如何提供三种安全服务 ......................................................... 233
6.1.4 HTTPS 握手 ...................................................................................... 234
6.1.5 HttpsURLConnection 类 .................................................................... 236
6.2 一个非常轻量级的HTTPS 服务器和客户端 ............................................... 241
6.3 在生产级Web 服务器中的HTTPS ............................................................. 250
6.3.1 强制使用HTTPS 访问Web 服务 ....................................................... 252
6.3.2 一个针对predictions2 服务的HTTPS 客户端 ................................... 254
6.4 容器管理的安全性 ...................................................................................... 257
6.4.1 用Tomcat 安全领域链接服务的web.xml .......................................... 259
6.4.2 在用户/ 角色安全性中的客户端 ....................................................... 261
6.4.3 使用curl 实用程序用于HTTPS 测试 ................................................ 264
6.4.4 在HTTPS 与用户/ 角色的安全性下的@WebService ....................... 266
6.4.5 使用摘要的密码替代密码 ................................................................. 269
6.5 WS-Security ................................................................................................ 271
6.5.1 使用WS-Security 保护一个@WebService ........................................ 273
6.6 下一步是什么 .............................................................................................. 285
第7 章 Web 服务和Java 应用程序服务器................... 287
7.1 Web 容器 ..................................................................................................... 288
7.1.1 面向消息的中间件 ............................................................................. 289
7.1.2 企业Java Bean 容器 .......................................................................... 289
7.1.3 命名和查找服务 ................................................................................ 291
7.1.4 安全提供者 ........................................................................................ 291
7.1.5 客户端容器 ........................................................................................ 292
7.1.6 数据库系统 ........................................................................................ 292
7.2 通向一个轻量级的JAS ............................................................................... 292
7.3 GlassFish 基础 ............................................................................................ 292
7.4 在GlassFish 中基于Servlet 的Web 服务.................................................... 295
7.4.1 具有混合API 的例子 ........................................................................ 298
7.5 一个互动网站和基于SOAP 的Web 服务 ................................................... 303
7.6 一个作为@Stateless 会话EJB 的@WebService ........................................ 308
7.6.1 包装和部署predictionsEJB 服务 ....................................................... 313
7.6.2 针对predictionsEJB 服务的客户端 ................................................... 315
7.7 TomEE :带有Java EE 扩展的Tomcat ........................................................ 317
7.7.1 将predictionsEJB Web 服务移植到TomEE....................................... 318
7.7.2 将EJB 部署在一个WAR 文件中 ....................................................... 319
7.8 Java Web 服务最适合用在什么地方............................................................ 320
7.8.1 回到手头的问题 ................................................................................ 323
索引 ........................................................................... 325
· · · · · · (收起)
读后感
书还没有看完,但是看后的心情很差,给三星是看在博文视点的面子上,以前读过两本博文视点的书,不论国内的还是国外的,都还不错。本以为老外写的书多少都还不错的,看来以后也要小心了。 首先,本书的翻译有很大的问题,很多句子翻译得很奇怪,一眼看过去不知道...
书还没有看完,但是看后的心情很差,给三星是看在博文视点的面子上,以前读过两本博文视点的书,不论国内的还是国外的,都还不错。本以为老外写的书多少都还不错的,看来以后也要小心了。 首先,本书的翻译有很大的问题,很多句子翻译得很奇怪,一眼看过去不知道...
这本书还挺好的。讲了很多其他书籍从未讲过的东西, 可以解答以前的诸多困惑。 但是Web服务开发手段太多,概念也多。 仅仅这一本书是不够的。很好但是不够完美。
书还没有看完,但是看后的心情很差,给三星是看在博文视点的面子上,以前读过两本博文视点的书,不论国内的还是国外的,都还不错。本以为老外写的书多少都还不错的,看来以后也要小心了。 首先,本书的翻译有很大的问题,很多句子翻译得很奇怪,一眼看过去不知道...
这本书还挺好的。讲了很多其他书籍从未讲过的东西, 可以解答以前的诸多困惑。 但是Web服务开发手段太多,概念也多。 仅仅这一本书是不够的。很好但是不够完美。
用户评价
说实话,当我拿到这本书时,我对它抱持着一丝怀疑的态度,毕竟市面上关于Web服务技术的书籍汗牛充 বুকে,能真正做到与时俱进且深入浅出的凤毛麟角。然而,阅读深入后,我发现作者的知识深度和广度令人惊叹。它不仅仅停留在对API设计规范的罗列上,而是花了大量篇幅去剖析不同认证授权机制(OAuth 2.0、JWT)在不同安全场景下的权衡取舍。我尤其欣赏作者对“非功能性需求”的重视,书中有一整块内容专门讨论了可观测性(Monitoring, Logging, Tracing)在现代分布式系统中的核心地位,这在很多同类书籍中是被轻描淡写的。作者显然是从一线实战中提炼出了这些经验,用近乎教科书式的严谨性,将这些“血泪教训”转化为清晰的指导方针。读完后,我感觉自己对构建高可用、高可靠的后端服务有了一种脱胎换骨的认识,不再是东拼西凑的知识点,而是形成了一个完整的知识体系框架。
我必须承认,这本书在对新技术引入的把握上展现了极高的前瞻性。在当前的软件开发环境中,谁能更好地处理异步通信和事件驱动的架构,谁就能在竞争中占据优势。这本书没有回避这些复杂的话题,反而以一种令人信服的方式,将消息队列(如Kafka/RabbitMQ)的选型标准、消息传递保证(Exactly-Once vs. At-Least-Once)的底层原理阐述得清清楚楚。我过去对这些异步机制的理解总是停留在“会用”的层面,但阅读此书后,我明白了为什么在特定场景下必须选择某种交付语义,以及如何设计出幂等的消费者来应对重复消息。这种对“为什么”的深度挖掘,使得这本书的生命力远超那些只停留在API说明层面的手册。它教会我们如何构建能够适应未来变化的弹性系统。
这本书的行文风格简直是工程师写给工程师的“武林秘籍”,没有太多花哨的辞藻,直奔主题,节奏感把握得极其到位。我最喜欢的是它对故障排除和调试技巧的详尽描述。很多技术书只告诉你“你应该怎么做正确的事”,但这本书却花心思讲解了“当事情出错时,你该如何高效地找到问题的根源”。比如,关于网络延迟和超时设置的微妙关系,作者通过几个经典的案例分析,展示了如何通过日志分析和网络抓包工具来定位隐藏在微服务调用链深处的性能瓶颈。这种实战导向的叙述方式,极大地提高了阅读的效率和趣味性。每次我遇到一个棘手的线上问题,都会习惯性地翻阅书中的相关章节,往往能从中找到新的排查思路。它更像是一位经验丰富的前辈,在你身边手把手地指导你度过每一次技术难关。
从一个初级开发者的角度来看,这本书的难度曲线设置得非常合理。开篇部分对基础概念的梳理扎实而又不冗长,为后续深入的复杂主题打下了坚实的地基。特别是对于RESTful原则的重新审视和版本管理的策略讨论,清晰地指明了如何设计出经得起时间考验的API接口。它没有采取那种“一上来就抛出高深莫测的术语”的教条主义写法,而是循序渐进,每深入一个层次,都会用一个具体的代码片段来佐证理论的有效性。这使得即便是对某些组件接触不多的读者,也能很快跟上作者的思路。对我个人而言,这本书极大地提升了我对整个服务交互生态的宏观理解,不再是只见树木不见森林,而是真正看到了如何将各个技术组件有机地整合在一起,形成一个稳定、高效的整体解决方案。
这本技术书籍的排版着实让人眼前一亮,那种布局的考究,仿佛开发者对细节的执着延伸到了文字的呈现上。我特地翻阅了关于企业级应用架构的那几个章节,发现作者在阐述复杂的设计模式时,采取了一种非常直观的“问题-解决方案-最佳实践”的讲解路径,这对于我们这种在实际项目中摸爬滚打,却总觉得理论知识不够扎实的人来说,简直是雪中送炭。尤其是当涉及到微服务治理和容器化部署的最新趋势时,书中没有停留在过时的技术栈上,而是深入探讨了如何利用现代工具链来提升系统的弹性和可维护性。我记得有一段关于性能调优的描述,用到了非常生动的比喻来解释并发控制的锁粒度问题,一下子就让原本枯燥的并发理论变得清晰易懂。而且,书中的代码示例非常贴合工业界的标准,不是那种为了展示某个功能点而堆砌的“玩具代码”,而是可以直接复制粘贴到生产环境的基石。这本书的价值,不仅仅在于教授“怎么做”,更在于启示“为什么这么做”,培养读者的架构思维。