具體描述
編輯推薦
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 服務,為構建現代化的、可擴展的、安全的分布式應用程序打下堅實的基礎。