具体描述
编辑推荐
1.学习REST式的服务和基于SOAP的Web服务之间的异同。
2.探索使用Java、Javascript和Perl编写REST式Web服务。
3.着重在应用层编写基于SOAP的Web服务
4.研究基于SOAP的消息的处理程序层和传输层。
5.学习在HTPP(S)上的线路层的安全,用户/角色安全,以及WS-Security。
6.使用Java应用程序服务器(JAS)来替代独立的Web服务器。
内容简介
《Java Web服务 构建与运行(第2版)》快速并详尽地介绍了如何开发REST式和基于SOAP的Web服务。这本动手实践型的书以清晰、务实的方法讲述Web服务相关技术,提供了架构性的概述、可以运行的完整代码示例,以及编译、部署和执行应用程序的一些短小精悍的指令。学习《Java Web服务:构建与运行(第2版)》,读者将掌握如何从头开始编写服务或将已有的服务整合到现有的Java应用程序中。
在突出强调REST式服务的同时,此第2版还涵盖了HttpServlet、Restlet、JAX-RS API,针对REST式服务的jQuery客户端,以及用于基于SOAP的服务的JAX-WS。
作者简介
卢涛,专业社区ITPUB Oracle开发版版主。1995年参加工作,2001年转到IT部门从事C/C++软件开发,2004年开始做系统分析和Oracle数据库方面工作。参加过多个全国性普查数据处理项目的开发和运维,目前主要从事统计报表联网填报系统的后台支持和优化。曾参与编写《剑破冰山—Oracle开发的艺术》一书,并翻译了数本Oracle管理、开发和性能优化;C/C++开发、Web开发等方面的书籍。
内页插图
精彩书评
★“Martin Kalin的这本深入的指南带有丰富的实际示例。它是一本尝试许多种不同Java Web技术及其提供的功能的优秀操作手册。”
——Edward Yue Shung Wong(@arkangelofkaos) 目录
前言
第1章 Web服务快速入门
1.1 Web服务杂项
1.2 Web服务有什么好处
1.3 Web服务和面向服务的架构
1.4 Web服务简史
1.4.1 从DCE/RPC到XML-RPC
1.4.2 分布式对象架构:Java示例
1.4.3 用Web服务来救援
1.5 什么是REST
1.5.1 动词和不透明名词
1.6 回顾HTTP请求和响应
1.7 HTTP作为API
1.7.1 用Java编写的两个HTTP客户端
1.8 第一个REST式的例子
1.8.1 Predictions Web服务的工作原理
1.8.2 针对Predictions Web服务的客户端
1.9 为什么REST式Web服务要使用servlet
1.10 下一步是什么
第2章 REST式的Web服务:服务端
2.1 REST式服务作为一个HttpServlet类
2.1.1 实现细节
2.1.2 针对predictions2服务的示例客户端调用
2.2 REST式 Web服务作为一个JAX-RS资源
2.2.1 第一个使用Jersey的JAX-RS Web服务
2.2.2 用Java应用程序发布JAX-RS资源
2.2.3 用Tomcat发布JAX-RS资源
2.2.4 Adage类
2.2.5 JAX-RS生成的XML和JSON响应
2.2.6 将Predictions Web服务移植到JAX -RS
2.3 REST式 Web服务作为Restlet的资源
2.3.1 对adages2服务的示例调用
2.3.2 在不使用Web服务器的情况下发布adages2 Restlet服务
2.3.3 REST式服务作为一个@WebServiceProvider
2.4 下一步是什么
第3章 REST式的Web服务:客户端
3.1 针对Java REST式Web服务的Perl客户端
3.2 针对亚马逊电子商务服务的客户端
3.3 一个独立的JAX -B示例
3.3.1 XStream选项
3.4 针对亚马逊电子商务服务的另一个客户端
3.5 CTA公共汽车跟踪服务
3.6 REST式客户端和WADL文档
3.7 JAX-RS客户端API
3.8 用于JavaScript客户端的JSON
3.8.1 JSONP和Web服务
3.8.2 使用jQuery编写的组合REST式服务
3.8.3 一个Ajax轮询的例子
3.9 下一步是什么
第4章 基于SOAP的Web服务
4.1 一个基于SOAP的Web服务
4.2 在两个文件中的RandService
4.3 针对RandService的客户端
4.3.1 针对RandService的Java客户端
4.3.2 针对RandService的C#客户端
4.3.3 针对RandService的Perl客户端
4.4 WSDL服务合同详解
4.4.1 types 部分
4.4.2 message部分
4.4.3 portType部分
4.4.4 binding 部分
4.4.5 service部分
4.4.6 Java和XML 模式的数据类型绑定
4.4.7 包装和解包的文档风格
4.4.8 用于服务端的wsimport构件
4.5 针对亚马逊的电子商务服务的基于SOAP的客户端
4.5.1 针对基于SOAP的服务的异步客户端
4.6 下一步是什么
第5章 SOAP处理程序和错误
5.1 基于SOAP的服务和客户端中的处理程序层
5.2 在predictionsSOAP服务中的处理程序和错误
5.2.1 后台支持类
5.2.2 从客户端到服务
5.2.3 签名验证
5.2.4 来自应用层和处理程序层的错误
5.2.5 链接服务端处理程序的服务
5.3 有两个处理程序的处理程序链
5.4 基于SOAP的Web服务和二进制数据
5.5 传输层
5.6 Axis2
5.7 下一步是什么
第6章 Web服务安全性
6.1 线路层安全
6.1.1 HTTPS基础
6.1.2 对称和非对称加密/解密
6.1.3 HTTPS如何提供三种安全服务
6.1.4 HTTPS握手
6.1.5 HttpsURLConnection类
6.2 一个非常轻量级的HTTPS服务器和客户端
6.3 在生产级Web服务器中的HTTPS
6.3.1 强制使用HTTPS访问Web服务
6.3.2 一个针对predictions2 服务的HTTPS客户端
6.4 容器管理的安全性
6.4.1 用Tomcat安全领域链接服务的web.xml
6.4.2 在用户/角色安全性中的客户端
6.4.3 使用curl实用程序用于HTTPS测试
6.4.4 在HTTPS与用户/角色的安全性下的@WebService
6.4.5 使用摘要的密码替代密码
6.5 WS-Security
6.5.1 使用WS-Security保护一个@WebService
6.6 下一步是什么
第7章 Web服务和Java应用程序服务器
7.1 Web容器
7.1.1 面向消息的中间件
7.1.2 企业Java Bean容器
7.1.3 命名和查找服务
7.1.4 安全提供者
7.1.5 客户端容器
7.1.6 数据库系统
7.2 通向一个轻量级的JAS
7.3 GlassFish基础
7.4 在GlassFish中基于Servlet的Web服务
7.4.1 具有混合API的例子
7.5 一个互动网站和基于SOAP的Web服务
7.6 一个作为@Stateless会话EJB的@WebService
7.6.1 包装和部署predictionsEJB服务
7.6.2 针对predictionsEJB服务的客户端
7.7 TomEE:带有Java EE扩展的Tomcat
7.7.1 将predictionsEJB Web服务移植到TomEE
7.7.2 将EJB部署在一个WAR文件中
7.8 Java Web服务最适合用在什么地方
7.8.1 回到手头的问题
索引
前言/序言
Java Web服务:构建与运行(第2版) 内容简介: 本书是一部系统深入探讨 Java Web 服务构建与运行的权威指南。它面向广大 Java 开发者,旨在帮助读者全面掌握现代 Web 服务的设计、开发、部署和维护等关键技能。无论是初学者希望建立扎实的 Web 服务基础,还是经验丰富的开发者寻求提升技术深度和广度,本书都将是您不可或缺的参考。 核心内容概览: 本书的核心围绕着 Java 语言在 Web 服务领域的应用展开,从基础概念到高级特性,层层递进,循序渐进。内容涵盖了构建健壮、高效、安全 Web 服务的全生命周期。 第一部分:Java Web服务基础 Web 服务概述与原理: 深入解析 Web 服务的定义、核心组件(客户端、服务器、消息格式、传输协议)以及其在分布式系统中的关键作用。 详细介绍 HTTP 协议的工作原理,包括请求/响应模型、HTTP 方法(GET, POST, PUT, DELETE 等)、状态码、头部信息等,为后续 Web 服务开发奠定坚实基础。 探讨 RESTful 架构风格的理念与实践,理解其无状态性、资源导向、统一接口等核心原则,并分析其在现代 Web 服务设计中的优势。 初步接触 SOA(面向服务的架构)和微服务架构的概念,理解它们与 Web 服务之间的联系和演进关系。 Java Web 开发基础回顾: 对于可能需要巩固基础的读者,本书会简要回顾 Java 核心概念,包括面向对象编程、集合框架、异常处理、IO 操作等,确保读者具备必要的 Java 编程能力。 介绍 Servlet API,这是 Java Web 开发的基石。详细讲解 Servlet 的生命周期、请求处理、响应生成、会话管理等关键技术。 讲解 JSP(JavaServer Pages)技术,如何将 Java 代码嵌入 HTML 中,实现动态内容生成,并对比其与 Servlet 的优劣。 介绍 JavaBean 组件及其在 Web 应用中的作用,理解其可重用性和数据封装能力。 第二部分:RESTful Web 服务开发 JAX-RS (Jersey) 实战: 本书将重点介绍 JAX-RS(Java API for RESTful Web Services)规范,这是 Java EE 标准中用于开发 RESTful Web 服务的核心 API。 深入讲解如何使用 JAX-RS 的注解(如 `@Path`, `@GET`, `@POST`, `@Produces`, `@Consumes`, `@PathParam`, `@QueryParam` 等)来定义资源类、HTTP 方法映射、请求参数处理和响应内容格式。 详细介绍 Jersey 框架,作为 JAX-RS 的一种流行实现,本书将以 Jersey 为例,通过大量实际代码示例,演示如何快速搭建和运行 RESTful Web 服务。 探讨资源类的设计模式,包括如何组织和管理资源,如何实现资源的CRUD(创建、读取、更新、删除)操作。 学习如何处理各种媒体类型,包括 JSON 和 XML,并利用 Jackson 或 JAXB 等库进行 Java 对象与这些格式之间的序列化与反序列化。 Spring MVC 在 RESTful 服务中的应用: 对于广泛使用的 Spring 生态系统,本书将深入讲解 Spring MVC 框架如何在 RESTful Web 服务开发中发挥作用。 讲解 Spring MVC 的核心组件,包括 DispatcherServlet、Controller、ModelAndView、ViewResolver 等。 重点介绍 Spring MVC 提供的 `@RestController`, `@RequestMapping`, `@GetMapping`, `@PostMapping`, `@RequestBody`, `@ResponseBody` 等注解,展示如何利用 Spring 轻松构建 RESTful API。 对比 JAX-RS 和 Spring MVC 在 RESTful 服务开发中的异同,帮助读者根据项目需求选择最合适的框架。 介绍 Spring Boot 的集成,如何利用 Spring Boot 快速启动和配置 RESTful Web 服务项目,简化开发流程。 API 设计与版本管理: 强调良好的 API 设计原则,包括一致性、易用性、可维护性等。 学习如何定义清晰的资源 URI,如何设计有意义的请求和响应体。 探讨 API 版本管理的策略,如 URI 版本控制、头部版本控制、查询参数版本控制等,以及如何在不破坏现有客户端的情况下演进 API。 第三部分:SOAP Web 服务开发 JAX-WS (Metro/CXF) 实战: 虽然 RESTful 服务日益流行,但 SOAP Web 服务在企业级应用和遗留系统中仍然扮演重要角色。本书将全面介绍 SOAP Web 服务的开发。 深入讲解 JAX-WS(Java API for XML Web Services)规范,这是 Java EE 标准中用于开发 SOAP Web 服务的核心 API。 介绍 WSDL(Web Services Description Language)的作用,如何生成和解析 WSDL 文件。 详细讲解如何使用 JAX-WS 的注解(如 `@WebService`, `@WebMethod`, `@WebParam`, `@WebResult` 等)来定义服务接口和实现。 演示如何使用 Apache CXF 或 Metro 等流行框架,作为 JAX-WS 的实现,快速构建 SOAP Web 服务。 讲解 RPC(远程过程调用)风格和 Document(文档)风格的 Web 服务。 SOAP 消息格式与协议: 深入解析 SOAP 消息结构,包括 Envelope, Header, Body, Fault 等元素。 讲解 HTTP、JMS 等传输协议在 SOAP Web 服务中的应用。 介绍 WS-Security 等安全协议,保障 SOAP Web 服务的安全性。 第四部分:Web 服务安全性 认证与授权: 讲解常见的 Web 服务安全威胁,如未经授权的访问、数据泄露、拒绝服务攻击等。 深入介绍用户认证机制,包括 Basic Authentication, Digest Authentication, Token-based Authentication (如 JWT)。 讲解 OAuth 2.0 协议,用于授权第三方应用程序访问用户数据,在现代 Web 服务中至关重要。 讨论 Spring Security 在 Web 服务安全中的应用,如何配置拦截器、过滤器来保护 API 端点。 数据加密与完整性: 介绍 HTTPS/SSL/TLS 的重要性,如何通过加密传输层来保护数据在传输过程中的安全。 讲解消息签名和加密技术,确保 SOAP Web 服务中消息的完整性和机密性。 讨论密钥管理和证书应用。 第五部分:Web 服务部署与运维 Web 服务器与应用服务器: 介绍常用的 Web 服务器(如 Nginx, Apache HTTP Server)和应用服务器(如 Tomcat, Jetty, WildFly, WebLogic)。 讲解如何将 Java Web 服务部署到这些服务器上,配置虚拟主机、连接池、日志等。 容器化部署 (Docker): 介绍 Docker 容器化技术,如何为 Web 服务创建 Docker 镜像,并进行部署和管理。 讲解 Docker Compose,用于定义和运行多容器 Docker 应用程序。 探讨容器化带来的可移植性、可伸缩性和环境一致性优势。 负载均衡与高可用: 讲解负载均衡的概念和常用策略,如轮询、最少连接等。 介绍 Nginx、HAProxy 等负载均衡器在 Web 服务中的应用。 探讨实现 Web 服务高可用性的方法,如集群部署、容灾备份。 监控与日志: 介绍 Web 服务监控的重要性,包括性能指标(响应时间、吞吐量、错误率)的收集。 讲解日志记录的最佳实践,如何配置有效的日志级别和格式。 介绍 Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana) 等监控和日志分析工具。 第六部分:高级主题与最佳实践 Web 服务性能优化: 探讨提升 Web 服务性能的各种技术,包括缓存策略、异步处理、数据库优化、连接池配置等。 分析性能瓶颈,并给出相应的解决方案。 API 网关: 介绍 API 网关的概念及其作用,如请求路由、认证、限流、监控、日志聚合等。 探讨 Spring Cloud Gateway, Kong, Apigee 等 API 网关解决方案。 微服务架构下的 Web 服务: 深入探讨微服务架构的理念,如何将大型应用拆分成小型、独立的服务。 讲解微服务之间的通信机制,如 REST, gRPC, 消息队列。 介绍服务注册与发现(Eureka, Consul, Zookeeper),配置中心(Spring Cloud Config, Nacos),断路器(Hystrix, Resilience4j)等微服务治理工具。 测试 Web 服务: 讲解单元测试、集成测试、端到端测试在 Web 服务开发中的重要性。 介绍 JUnit, Mockito, Spring Boot Test 等测试框架。 学习如何使用 Postman, Curl 等工具进行 API 手动测试。 API 文档: 介绍 Swagger/OpenAPI 规范,如何自动生成和管理 API 文档。 演示如何使用 Springfox, Knife4j 等工具集成 Swagger UI,提供交互式 API 文档。 本书的特点: 理论与实践相结合: 本书在讲解理论知识的同时,提供了大量贴近实际开发场景的代码示例,读者可以通过动手实践来加深理解。 技术选型全面: 涵盖了主流的 Java Web 服务开发技术栈,包括 JAX-RS, Spring MVC, Spring Boot,以及 SOAP 服务相关的 JAX-WS。 循序渐进,体系完整: 从基础概念到高级主题,内容组织逻辑清晰,结构完整,适合不同层次的读者。 关注现代开发趋势: 重点介绍 RESTful 服务、微服务、容器化等当前热门技术,帮助读者紧跟技术发展潮流。 强调安全性与可维护性: 深入探讨 Web 服务安全、部署运维、性能优化等关键环节,培养读者构建健壮、可维护系统的能力。 目标读者: Java 开发者,希望学习或深化 Web 服务开发技能。 后端工程师,需要构建和维护 Web API。 对微服务架构和分布式系统感兴趣的开发者。 需要了解和实现企业级 Web 服务的 IT 专业人士。 通过本书的学习,读者将能够独立设计、开发、测试、部署和维护高质量的 Java Web 服务,为构建现代化的、可扩展的、安全的分布式应用程序打下坚实的基础。