內容簡介
本書快速並詳盡地介紹了如何開發REST式和基於SOAP的Web服務。這本動手實踐型的書以清晰、務實的方法講述Web服務相關技術,提供了架構性的概述、可以運行的完整代碼示例,以及編譯、部署和執行應用程式的一些短小精悍的指令。學習本書,讀者將掌握如何從頭開始編寫服務或將已有的服務整合到現有的Java應用程式中。 在突出強調REST式服務的同時,此第2版還涵蓋了HttpServlet、Restlet、JAX-RS API,針對REST式服務的jQuery客戶端,以及用於基於SOAP的服務的JAX-WS。
圖書目錄
目錄
前言 v
第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作為API19
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客戶端API132
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