《Java EE 6開發手冊·高級篇(第4版)》是一本面向實戰、以示例為驅動、在Java平台企業版6(Java EE 6)上開發企業級套用的指南。該指南基於The Java EE 6 Tutorial: Basic Concepts,Fourth Edition中的基礎概念,涵蓋了一些更高級的內容,其中包括對一些更複雜的平台特性的詳細介紹,以及如何使用最新版NetBeans IDE和GlassFish Server開源版的說明。在本書的最後部分,提供了三個新的案例研究,展示了多種Java EE API的使用方法。
基本介紹
- 書名:Java EE 6開發手冊·高級篇
- 作者:珍兆科 (Eric Jendrock) Ricardo Cervera-Navarro
- 出版日期:2014年5月1日
- 語種:簡體中文
- ISBN:7121229110
- 外文名:The Java EE6 Tutorial Advanced Topics Fourth Edition
- 出版社:電子工業出版社
- 頁數:452頁
- 開本:16
- 品牌:電子工業出版社
基本介紹,內容簡介,作者簡介,圖書目錄,序言,
基本介紹
內容簡介
《Java EE6開發手冊(高級篇第4版)》是使用GlassFish Server開源版開發Java平台企業版6(簡稱Java EE 6)企業級應用程式系列指南的第二卷。
珍兆科編寫的《Java EE6開發手冊(高級篇第4版)》是一本面向實戰、以示例為驅動、在Java平台企業版6(Java EE 6)上開發企業級套用的指南。
珍兆科編寫的《Java EE6開發手冊(高級篇第4版)》是一本面向實戰、以示例為驅動、在Java平台企業版6(Java EE 6)上開發企業級套用的指南。
作者簡介
作者:Eric Jendrock(埃里克 珍兆科)等 譯者:張若飛
本書是一本面向實戰、以示例為驅動、在Java平台企業版6(Java EE 6)上開發企業級套用的指南。該指南基於The Java EE 6 Tutorial: Basic Concepts,Fourth Edition中的基礎概念,涵蓋了一些更高級的內容,其中包括對一些更複雜的平台特性的詳細介紹,以及如何使用最新版NetBeans IDE和GlassFish Server開源版的說明。在本書的最後部分,提供了三個新的案例研究,展示了多種Java EE API的使用方法。
本書是一本面向實戰、以示例為驅動、在Java平台企業版6(Java EE 6)上開發企業級套用的指南。該指南基於The Java EE 6 Tutorial: Basic Concepts,Fourth Edition中的基礎概念,涵蓋了一些更高級的內容,其中包括對一些更複雜的平台特性的詳細介紹,以及如何使用最新版NetBeans IDE和GlassFish Server開源版的說明。在本書的最後部分,提供了三個新的案例研究,展示了多種Java EE API的使用方法。
圖書目錄
第Ⅰ部分 簡介
第1章 概述 2
Java EE 6平台的亮點 3
Java EE應用程式模型 4
分散式多層應用程式 4
安全 5
Java EE組件 5
Java EE客戶端 6
Web組件 8
業務組件 8
企業信息系統層 9
Java EE容器 9
容器服務 9
容器類型 10
Web Service支持 11
XML 12
SOAP傳輸協定 12
WSDL標準格式 12
Java EE應用程式的裝配和部署 12
打包應用程式 13
開發角色 14
Java EE產品提供方 14
工具提供方 15
應用程式組件提供方 15
應用程式裝配方 15
應用程式部署方和管理方 16
Java EE 6 API 16
Enterprise JavaBean技術 19
Java Servlet技術 19
JavaServer Faces 技術 20
JavaServer Pages技術 20
JavaServer Pages標準標籤庫 21
Java持久化API 21
Java事務API 21
支持RESTful Web Service的Java API 21
Managed Beans 22
Java EE平台上下文和依賴注入(JSR 299) 22
Java依賴注入(JSR 330) 22
Bean Validation 22
Java訊息服務API 23
Java EE連線器架構 23
JavaMail API 23
Java Authorization Contract for Containers 23
Java Authentication Service Provider Interface for Containers 24
在Java 平台標準版6和7中的Java EE 6 API 24
Java資料庫連線API 24
Java 命名和目錄接口API 24
JavaBeans Activation Framework 25
Java XML處理API 25
Java XML綁定架構 25
SOAP with Attachments API for Java 26
Java API for XML Web Services 26
Java認證和授權服務 26
GlassFish Server工具 26
第2章 使用本教程的示例程式 28
所需軟體 28
Java平台標準版本 28
Java EE 6軟體開發工具集 29
Java EE 6 教程組件 29
NetBeans IDE 30
Apache Ant 31
啟動及停止GlassFish Server 32
啟動管理控制台 33
啟動和停止Java DB服務 33
構建示例程式 34
本教程示例程式的目錄結構 34
獲取示例程式的最新更新 35
調試Java EE應用程式 35
使用伺服器日誌 35
使用調試器 36
第Ⅱ部分 Web層
第3章 JavaServer Faces技術:高級概念 38
JavaServer Faces應用程式的生命周期 38
JavaServer Faces生命周期概述 39
恢復視圖階段 41
套用請求值階段 42
處理校驗階段 42
更新模型值階段 43
調用應用程式階段 43
渲染回響階段 43
局部處理和局部渲染 44
Facelets應用程式的生命周期 44
用戶界面組件模型 45
用戶界面組件類 45
組件渲染模型 47
轉換模型 48
事件和監聽器模型 49
校驗模型 50
導航模型 51
第4章 在JavaServer Faces技術中使用Ajax 54
Ajax概述 55
在JavaServer Faces技術中使用Ajax功能 55
在Facelets中使用Ajax 56
使用f:ajax標籤 56
傳送一個Ajax請求 58
使用event屬性 58
使用execute屬性 59
使用immediate屬性 59
使用listener屬性 59
監視客戶端事件 60
處理錯誤 60
接收Ajax回響 61
Ajax請求生命周期 62
對組件進行分組 62
以資源形式載入JavaScript 63
在Facelets應用程式中使用JavaScript API 63
在Bean類中使用@ResourceDependency註解 64
ajaxguessnumber示例應用程式 65
ajaxguessnumber源檔案 65
運行ajaxguessnumber示例程式 67
更多有關JavaServer Faces技術中Ajax的信息 68
第5章 複合組件:高級主題及示例程式 69
複合組件的屬性 69
調用Managed Bean 70
校驗複合組件的值 70
compositecomponentlogin示例程式 71
複合組件檔案 71
用到的頁面 72
Managed Bean 72
運行compositecomponentlogin示例程式 74
第6章 創建自定義UI組件以及其他自定義對象 76
決定你是否需要一個自定義組件或者渲染器 78
何時使用自定義組件 78
何時使用自定義渲染器 79
組件、渲染器和標籤的組合 80
理解圖像映射示例程式 80
為什麼使用JavaServer Faces技術來實現圖像映射 81
理解渲染的HTML 81
理解Facelets頁面 82
配置模型數據 83
Image Map應用程式類總結 85
創建自定義組件的步驟 85
創建自定義組件類 86
指定組件類族 88
執行編碼 89
執行解碼 91
允許組件屬性接受表達式 91
保存及恢復狀態 93
將渲染工作委託給渲染器 94
創建渲染器類 94
標識渲染器類型 96
實現事件監聽器 96
實現值改變監聽器 97
實現動作監聽器 98
處理自定義組件的事件 98
在標籤庫描述符中定義自定義組件標籤 100
使用自定義組件 101
創建和使用自定義轉換器 102
創建自定義轉換器 103
使用自定義轉換器 105
創建和使用自定義校驗器 107
實現校驗器接口 108
指定自定義標籤 110
使用自定義校驗器 111
將組件值和實例與Managed Bean屬性綁定 112
將組件值與bean屬性綁定 113
將組件值與隱式對象綁定 114
將組件實例與bean屬性綁定 115
將轉換器、監聽器以及校驗器與Managed Bean屬性綁定 116
第7章 配置JavaServer Faces應用程式 118
使用註解來配置Managed Bean 119
使用Managed Bean作用域 119
應用程式配置資源檔案 120
應用程式配置資源檔案的順序 121
配置Managed Bean 123
使用managed-bean元素 123
使用managed-property元素來初始化屬性 126
初始化Map和List 131
註冊應用程式訊息 132
使用FacesMessage來創建訊息 133
引用錯誤訊息 133
使用默認校驗器 134
註冊自定義校驗器 135
註冊自定義轉換器 135
配置導航規則 136
隱式的導航規則 139
使用渲染套件來註冊自定義渲染器 139
註冊自定義組件 141
JavaServer Faces應用程式的基本要求 142
使用web部署描述符來配置應用程式 143
配置項目階段 146
包含類、頁面和其他資源 147
第8章 使用Java Servlet技術上傳檔案 148
@MultipartConfig註解 148
getParts和getPart方法 149
fileupload示例程式 150
fileupload示例程式的架構 150
運行fileupload示例 153
第9章 國際化和本地化Web應用程式 155
Java平台本地化類 155
提供本地化的訊息和標籤(label) 156
建立語言環境 157
設定資源綁定 157
獲取本地化訊息 158
日期和數字格式化 159
字元集和編碼 159
字元集 159
字元編碼 160
第Ⅲ部分 Web Service
第10章 JAX-RS:高級主題和示例 162
用於資源類欄位和Bean屬性的註解 162
提取路徑參數 163
提取查詢參數 164
提取表單數據 164
提取請求或回響中的Java類型 165
子資源和運行時資源解決方案 165
子資源方法 165
子資源定位符 166
整合JAX-RS、EJB技術和CDI 167
條件性HTTP請求 168
運行時內容協商 169
在JAX-RS中使用JAXB 171
使用Java對象為數據建模 172
從已有的XML schema定義開始 174
在JAX-RS和JAXB中使用JSON 176
customer示例程式 177
customer示例程式概述 177
Customer和Address實體類 178
CustomerService類 181
CustomerClientXML和CustomerClientJSON類 184
修改示例,根據已有的schema生成實體類 186
運行customer示例 188
第Ⅳ部分 Enterprise Beans
第11章 Message-Driven Bean示例 196
simplemessage示例概述 196
simplemessage應用程式客戶端 197
Message-Driven Bean類 197
onMessage方法 199
運行simplemessage示例程式 200
simplemessage示例的被管理對象 200
刪除simplemessage示例的被管理對象 202
第12章 使用嵌入式Enterprise Bean容器 203
嵌入式enterprise bean容器概述 203
開發嵌入式enterprise bean應用程式 203
運行嵌入式應用程式 204
創建enterprise bean容器 204
查找session bean引用 205
關閉enterprise bean容器 206
standalone示例程式 206
第13章 在Session Bean中使用異步方法調用 208
異步方法調用 208
創建異步的業務方法 209
從enterprise bean客戶端調用異步方法 210
async示例程式 211
async示例程式的架構 211
運行async示例 212
第Ⅴ部分 Java EE平台上下文和依賴注入
第14章 Java EE平台上下文和依賴注入:高級篇 218
在CDI應用程式中使用替代類 218
使用特例 219
在CDI應用程式中使用生產者方法、生產者欄位以及清理方法 220
使用生產者方法 221
使用生產者欄位來生成資源 222
使用清理方法 222
在CDI應用程式中使用預定義的Bean 223
在CDI應用程式中使用事件 224
定義事件 224
使用觀察者方法來處理事件 224
觸發事件 225
在CDI應用程式中使用攔截器 226
在CDI應用程式中使用裝飾器 228
在CDI應用程式中使用模板 229
第15章 運行上下文和依賴注入的高級示例程式 231
encoder示例:使用替代類 231
Coder接口和實現 232
encoder示例中的Facelets頁面和managed bean 232
運行encoder示例 234
producermethods示例:使用生產者方法來選擇bean實現 236
producermethods示例的組件 237
運行producermethods示例 238
producerfields示例:使用生產者欄位來生成資源 239
producerfields示例的生產者欄位 239
producerfields實體和session bean 241
producerfields示例的Facelets頁面和managed bean 242
運行producerfields示例 244
billpayment示例:使用事件和攔截器 246
PaymentEvent事件類 246
PaymentHandler事件監聽器 247
billpayment示例的Facelets 頁面和managed bean 247
LoggedInterceptor攔截器類 250
運行billpayment示例 251
decorators示例:裝飾bean 252
decorators示例的組件 253
運行decorators示例 254
第Ⅵ部分 持久化
第16章 創建並使用基於字元串的條件(Criteria)查詢 258
基於字元串的Criteria API查詢概述 258
創建基於字元串的查詢 259
執行基於字元串的查詢 260
第17章 使用鎖來控制對實體數據的並發訪問 261
實體鎖和並發概述 261
使用樂觀鎖 262
鎖模式 262
設定鎖模式 263
使用悲觀鎖 264
第18章 在Java 持久化 API應用程式中使用二級快取 266
二級快取概述 266
控制實體是否可能被快取 267
指定快取模式設定以提高性能 268
設定快取讀取和存儲模式 268
用編程方式控制二級快取 270
第Ⅶ部分 安全
第19章 Java EE安全:高級篇 274
使用數字簽名 274
創建伺服器證書 275
將用戶添加到證書域中 277
在GlassFish Server中使用不同的伺服器證書 277
認證機制 278
客戶端認證 279
雙向認證 279
在JavaServer Faces Web應用程式中使用基於表單的登錄 283
在JavaServer Faces表單中使用j_security_check 283
在JavaServer Faces應用程式中使用managed bean進行認證 284
使用JDBC域進行用戶認證 286
保護HTTP資源的安全 290
保護應用程式客戶端的安全 293
使用登錄模組 294
使用編程式登錄 294
保護企業信息系統應用程式的安全 295
由容器管理的登錄 295
由組件管理的登錄 295
配置資源適配器安全 296
使用部署描述符來配置安全選項 298
在部署描述符中指定基本認證 298
在部署描述符中覆蓋默認的用戶-角色映射 299
關於安全的更多信息 299
第Ⅷ部分 Java EE的其他技術
第20章 Java訊息服務概念 302
JMS API概述 302
什麼是訊息傳遞 302
什麼是JMS API 303
什麼時候可以使用JMS API 303
JMS API如何與Java EE平台一起工作 304
JMS API基礎概念 305
JMS API架構 305
訊息傳遞域 306
訊息接收 308
JMS API編程模型 308
JMS管理對象 309
JMS連線 310
JMS會話 311
JMS訊息生產者 311
JMS訊息消費者 312
JMS訊息 314
JMS佇列瀏覽器 316
JMS異常處理 316
創建健壯的JMS應用程式 317
使用基礎的可靠性機制 318
使用高級的可靠性機制 321
在Java EE應用程式中使用JMS API 325
在enterprise bean或web容器中使用@Resource註解 325
使用session bean來生產和同步接收訊息 326
使用Message-Driven Bean來異步接收訊息 326
管理分散式事務 329
在應用程式客戶端和web組件中使用JMS API 330
關於JMS的更多信息 331
第21章 Java訊息服務示例 332
編寫簡單的JMS應用程式 333
同步訊息接收的簡單示例 333
異步訊息接收的簡單示例 343
瀏覽佇列中訊息的簡單示例 348
在多個系統上運行JMS客戶端 353
取消部署並清理JMS示例 359
編寫健壯的JMS應用程式 359
訊息應答示例 359
可持續訂閱示例 362
本地事務示例 364
使用JMS API和Session Bean的應用程式 370
為clientsessionmdb示例編寫應用程式組件 370
為clientsessionmdb示例創建資源 372
運行 clientsessionmdb示例 372
使用JMS API和實體的應用程式 374
clientmdbentity示例程式概述 374
為clientmdbentity示例編寫應用程式組件 375
為clientmdbentity示例創建資源 378
運行 clientmdbentity示例 378
從遠程伺服器接收訊息的應用程式示例 381
consumeremote示例模組概述 382
為consumeremote示例編寫模組組件 383
為consumeremote示例創建資源 383
為consumeremote示例使用兩個應用程式伺服器 383
運行consumeremote示例 384
在兩個伺服器上部署Message-Driven Bean的應用程式示例 387
sendremote示例模組概述 388
編寫sendremote示例的模組組件 389
為sendremote示例創建資源 390
運行sendremote示例 392
第22章 Bean Validation:高級主題 398
創建自定義約束 398
使用內置約束來創建新的約束 398
自定義校驗器訊息 399
ValidationMessages資源綁定 399
約束分組 400
自定義組校驗順序 400
第23章 使用Java EE攔截器 402
攔截器概述 402
攔截器類 403
攔截器的生命周期 403
攔截器和CDI 403
使用攔截器 403
攔截方法調用 404
攔截生命周期回調事件 406
攔截逾時事件 407
interceptor示例程式 408
運行interceptor示例 409
第24章 資源適配器示例 410
資源適配器 410
Message-Driven Bean 411
Web應用程式 411
運行mailconnector示例 411
第Ⅸ部分 案例研究
第25章 Duke’s Bookstore案例研究示例 416
Duke’s Bookstore的設計和架構 416
Duke’s Bookstore的接口 417
Java持久化API實體Book 417
Duke’s Bookstore中使用的Enterprise beans 418
Duke’s Bookstore 中使用的Facelets頁面和Managed Beans 418
Duke’s Bookstore中使用的自定義組件和其他自定義對象 420
Duke’s Bookstore中使用的屬性檔案 420
Duke’s Bookstore中使用的部署描述符 421
運行 Duke’s Bookstore案例研究應用程式 422
第26章 Duke’s Tutoring案例研究示例 424
Duke’s Tutoring的設計和架構 424
主界面 426
主界面中使用的Java持久化API實體 426
主界面中使用的enterprise bean 426
主界面中使用的Facelets檔案 427
主界面中使用的輔助類 428
屬性檔案 429
Duke’s Tutoring中使用的部署描述符 429
管理界面 430
管理界面中使用的enterprise bean 430
管理界面中使用的Facelets檔案 430
運行Duke’s Tutoring案例研究應用程式 431
設定GlassFish Server 431
運行Duke’s Tutoring 432
第27章 Duke’s Forest案例研究示例 434
Duke’s Forest的設計和架構 435
events項目 437
entities項目 438
dukes-payment項目 440
dukes-resource項目 440
Duke’s Store項目 440
Duke’s Shipment項目 445
構建並部署Duke’s Forest案例研究應用程式 447
前提條件 447
運行Duke’s Forest應用程式 450
第1章 概述 2
Java EE 6平台的亮點 3
Java EE應用程式模型 4
分散式多層應用程式 4
安全 5
Java EE組件 5
Java EE客戶端 6
Web組件 8
業務組件 8
企業信息系統層 9
Java EE容器 9
容器服務 9
容器類型 10
Web Service支持 11
XML 12
SOAP傳輸協定 12
WSDL標準格式 12
Java EE應用程式的裝配和部署 12
打包應用程式 13
開發角色 14
Java EE產品提供方 14
工具提供方 15
應用程式組件提供方 15
應用程式裝配方 15
應用程式部署方和管理方 16
Java EE 6 API 16
Enterprise JavaBean技術 19
Java Servlet技術 19
JavaServer Faces 技術 20
JavaServer Pages技術 20
JavaServer Pages標準標籤庫 21
Java持久化API 21
Java事務API 21
支持RESTful Web Service的Java API 21
Managed Beans 22
Java EE平台上下文和依賴注入(JSR 299) 22
Java依賴注入(JSR 330) 22
Bean Validation 22
Java訊息服務API 23
Java EE連線器架構 23
JavaMail API 23
Java Authorization Contract for Containers 23
Java Authentication Service Provider Interface for Containers 24
在Java 平台標準版6和7中的Java EE 6 API 24
Java資料庫連線API 24
Java 命名和目錄接口API 24
JavaBeans Activation Framework 25
Java XML處理API 25
Java XML綁定架構 25
SOAP with Attachments API for Java 26
Java API for XML Web Services 26
Java認證和授權服務 26
GlassFish Server工具 26
第2章 使用本教程的示例程式 28
所需軟體 28
Java平台標準版本 28
Java EE 6軟體開發工具集 29
Java EE 6 教程組件 29
NetBeans IDE 30
Apache Ant 31
啟動及停止GlassFish Server 32
啟動管理控制台 33
啟動和停止Java DB服務 33
構建示例程式 34
本教程示例程式的目錄結構 34
獲取示例程式的最新更新 35
調試Java EE應用程式 35
使用伺服器日誌 35
使用調試器 36
第Ⅱ部分 Web層
第3章 JavaServer Faces技術:高級概念 38
JavaServer Faces應用程式的生命周期 38
JavaServer Faces生命周期概述 39
恢復視圖階段 41
套用請求值階段 42
處理校驗階段 42
更新模型值階段 43
調用應用程式階段 43
渲染回響階段 43
局部處理和局部渲染 44
Facelets應用程式的生命周期 44
用戶界面組件模型 45
用戶界面組件類 45
組件渲染模型 47
轉換模型 48
事件和監聽器模型 49
校驗模型 50
導航模型 51
第4章 在JavaServer Faces技術中使用Ajax 54
Ajax概述 55
在JavaServer Faces技術中使用Ajax功能 55
在Facelets中使用Ajax 56
使用f:ajax標籤 56
傳送一個Ajax請求 58
使用event屬性 58
使用execute屬性 59
使用immediate屬性 59
使用listener屬性 59
監視客戶端事件 60
處理錯誤 60
接收Ajax回響 61
Ajax請求生命周期 62
對組件進行分組 62
以資源形式載入JavaScript 63
在Facelets應用程式中使用JavaScript API 63
在Bean類中使用@ResourceDependency註解 64
ajaxguessnumber示例應用程式 65
ajaxguessnumber源檔案 65
運行ajaxguessnumber示例程式 67
更多有關JavaServer Faces技術中Ajax的信息 68
第5章 複合組件:高級主題及示例程式 69
複合組件的屬性 69
調用Managed Bean 70
校驗複合組件的值 70
compositecomponentlogin示例程式 71
複合組件檔案 71
用到的頁面 72
Managed Bean 72
運行compositecomponentlogin示例程式 74
第6章 創建自定義UI組件以及其他自定義對象 76
決定你是否需要一個自定義組件或者渲染器 78
何時使用自定義組件 78
何時使用自定義渲染器 79
組件、渲染器和標籤的組合 80
理解圖像映射示例程式 80
為什麼使用JavaServer Faces技術來實現圖像映射 81
理解渲染的HTML 81
理解Facelets頁面 82
配置模型數據 83
Image Map應用程式類總結 85
創建自定義組件的步驟 85
創建自定義組件類 86
指定組件類族 88
執行編碼 89
執行解碼 91
允許組件屬性接受表達式 91
保存及恢復狀態 93
將渲染工作委託給渲染器 94
創建渲染器類 94
標識渲染器類型 96
實現事件監聽器 96
實現值改變監聽器 97
實現動作監聽器 98
處理自定義組件的事件 98
在標籤庫描述符中定義自定義組件標籤 100
使用自定義組件 101
創建和使用自定義轉換器 102
創建自定義轉換器 103
使用自定義轉換器 105
創建和使用自定義校驗器 107
實現校驗器接口 108
指定自定義標籤 110
使用自定義校驗器 111
將組件值和實例與Managed Bean屬性綁定 112
將組件值與bean屬性綁定 113
將組件值與隱式對象綁定 114
將組件實例與bean屬性綁定 115
將轉換器、監聽器以及校驗器與Managed Bean屬性綁定 116
第7章 配置JavaServer Faces應用程式 118
使用註解來配置Managed Bean 119
使用Managed Bean作用域 119
應用程式配置資源檔案 120
應用程式配置資源檔案的順序 121
配置Managed Bean 123
使用managed-bean元素 123
使用managed-property元素來初始化屬性 126
初始化Map和List 131
註冊應用程式訊息 132
使用FacesMessage來創建訊息 133
引用錯誤訊息 133
使用默認校驗器 134
註冊自定義校驗器 135
註冊自定義轉換器 135
配置導航規則 136
隱式的導航規則 139
使用渲染套件來註冊自定義渲染器 139
註冊自定義組件 141
JavaServer Faces應用程式的基本要求 142
使用web部署描述符來配置應用程式 143
配置項目階段 146
包含類、頁面和其他資源 147
第8章 使用Java Servlet技術上傳檔案 148
@MultipartConfig註解 148
getParts和getPart方法 149
fileupload示例程式 150
fileupload示例程式的架構 150
運行fileupload示例 153
第9章 國際化和本地化Web應用程式 155
Java平台本地化類 155
提供本地化的訊息和標籤(label) 156
建立語言環境 157
設定資源綁定 157
獲取本地化訊息 158
日期和數字格式化 159
字元集和編碼 159
字元集 159
字元編碼 160
第Ⅲ部分 Web Service
第10章 JAX-RS:高級主題和示例 162
用於資源類欄位和Bean屬性的註解 162
提取路徑參數 163
提取查詢參數 164
提取表單數據 164
提取請求或回響中的Java類型 165
子資源和運行時資源解決方案 165
子資源方法 165
子資源定位符 166
整合JAX-RS、EJB技術和CDI 167
條件性HTTP請求 168
運行時內容協商 169
在JAX-RS中使用JAXB 171
使用Java對象為數據建模 172
從已有的XML schema定義開始 174
在JAX-RS和JAXB中使用JSON 176
customer示例程式 177
customer示例程式概述 177
Customer和Address實體類 178
CustomerService類 181
CustomerClientXML和CustomerClientJSON類 184
修改示例,根據已有的schema生成實體類 186
運行customer示例 188
第Ⅳ部分 Enterprise Beans
第11章 Message-Driven Bean示例 196
simplemessage示例概述 196
simplemessage應用程式客戶端 197
Message-Driven Bean類 197
onMessage方法 199
運行simplemessage示例程式 200
simplemessage示例的被管理對象 200
刪除simplemessage示例的被管理對象 202
第12章 使用嵌入式Enterprise Bean容器 203
嵌入式enterprise bean容器概述 203
開發嵌入式enterprise bean應用程式 203
運行嵌入式應用程式 204
創建enterprise bean容器 204
查找session bean引用 205
關閉enterprise bean容器 206
standalone示例程式 206
第13章 在Session Bean中使用異步方法調用 208
異步方法調用 208
創建異步的業務方法 209
從enterprise bean客戶端調用異步方法 210
async示例程式 211
async示例程式的架構 211
運行async示例 212
第Ⅴ部分 Java EE平台上下文和依賴注入
第14章 Java EE平台上下文和依賴注入:高級篇 218
在CDI應用程式中使用替代類 218
使用特例 219
在CDI應用程式中使用生產者方法、生產者欄位以及清理方法 220
使用生產者方法 221
使用生產者欄位來生成資源 222
使用清理方法 222
在CDI應用程式中使用預定義的Bean 223
在CDI應用程式中使用事件 224
定義事件 224
使用觀察者方法來處理事件 224
觸發事件 225
在CDI應用程式中使用攔截器 226
在CDI應用程式中使用裝飾器 228
在CDI應用程式中使用模板 229
第15章 運行上下文和依賴注入的高級示例程式 231
encoder示例:使用替代類 231
Coder接口和實現 232
encoder示例中的Facelets頁面和managed bean 232
運行encoder示例 234
producermethods示例:使用生產者方法來選擇bean實現 236
producermethods示例的組件 237
運行producermethods示例 238
producerfields示例:使用生產者欄位來生成資源 239
producerfields示例的生產者欄位 239
producerfields實體和session bean 241
producerfields示例的Facelets頁面和managed bean 242
運行producerfields示例 244
billpayment示例:使用事件和攔截器 246
PaymentEvent事件類 246
PaymentHandler事件監聽器 247
billpayment示例的Facelets 頁面和managed bean 247
LoggedInterceptor攔截器類 250
運行billpayment示例 251
decorators示例:裝飾bean 252
decorators示例的組件 253
運行decorators示例 254
第Ⅵ部分 持久化
第16章 創建並使用基於字元串的條件(Criteria)查詢 258
基於字元串的Criteria API查詢概述 258
創建基於字元串的查詢 259
執行基於字元串的查詢 260
第17章 使用鎖來控制對實體數據的並發訪問 261
實體鎖和並發概述 261
使用樂觀鎖 262
鎖模式 262
設定鎖模式 263
使用悲觀鎖 264
第18章 在Java 持久化 API應用程式中使用二級快取 266
二級快取概述 266
控制實體是否可能被快取 267
指定快取模式設定以提高性能 268
設定快取讀取和存儲模式 268
用編程方式控制二級快取 270
第Ⅶ部分 安全
第19章 Java EE安全:高級篇 274
使用數字簽名 274
創建伺服器證書 275
將用戶添加到證書域中 277
在GlassFish Server中使用不同的伺服器證書 277
認證機制 278
客戶端認證 279
雙向認證 279
在JavaServer Faces Web應用程式中使用基於表單的登錄 283
在JavaServer Faces表單中使用j_security_check 283
在JavaServer Faces應用程式中使用managed bean進行認證 284
使用JDBC域進行用戶認證 286
保護HTTP資源的安全 290
保護應用程式客戶端的安全 293
使用登錄模組 294
使用編程式登錄 294
保護企業信息系統應用程式的安全 295
由容器管理的登錄 295
由組件管理的登錄 295
配置資源適配器安全 296
使用部署描述符來配置安全選項 298
在部署描述符中指定基本認證 298
在部署描述符中覆蓋默認的用戶-角色映射 299
關於安全的更多信息 299
第Ⅷ部分 Java EE的其他技術
第20章 Java訊息服務概念 302
JMS API概述 302
什麼是訊息傳遞 302
什麼是JMS API 303
什麼時候可以使用JMS API 303
JMS API如何與Java EE平台一起工作 304
JMS API基礎概念 305
JMS API架構 305
訊息傳遞域 306
訊息接收 308
JMS API編程模型 308
JMS管理對象 309
JMS連線 310
JMS會話 311
JMS訊息生產者 311
JMS訊息消費者 312
JMS訊息 314
JMS佇列瀏覽器 316
JMS異常處理 316
創建健壯的JMS應用程式 317
使用基礎的可靠性機制 318
使用高級的可靠性機制 321
在Java EE應用程式中使用JMS API 325
在enterprise bean或web容器中使用@Resource註解 325
使用session bean來生產和同步接收訊息 326
使用Message-Driven Bean來異步接收訊息 326
管理分散式事務 329
在應用程式客戶端和web組件中使用JMS API 330
關於JMS的更多信息 331
第21章 Java訊息服務示例 332
編寫簡單的JMS應用程式 333
同步訊息接收的簡單示例 333
異步訊息接收的簡單示例 343
瀏覽佇列中訊息的簡單示例 348
在多個系統上運行JMS客戶端 353
取消部署並清理JMS示例 359
編寫健壯的JMS應用程式 359
訊息應答示例 359
可持續訂閱示例 362
本地事務示例 364
使用JMS API和Session Bean的應用程式 370
為clientsessionmdb示例編寫應用程式組件 370
為clientsessionmdb示例創建資源 372
運行 clientsessionmdb示例 372
使用JMS API和實體的應用程式 374
clientmdbentity示例程式概述 374
為clientmdbentity示例編寫應用程式組件 375
為clientmdbentity示例創建資源 378
運行 clientmdbentity示例 378
從遠程伺服器接收訊息的應用程式示例 381
consumeremote示例模組概述 382
為consumeremote示例編寫模組組件 383
為consumeremote示例創建資源 383
為consumeremote示例使用兩個應用程式伺服器 383
運行consumeremote示例 384
在兩個伺服器上部署Message-Driven Bean的應用程式示例 387
sendremote示例模組概述 388
編寫sendremote示例的模組組件 389
為sendremote示例創建資源 390
運行sendremote示例 392
第22章 Bean Validation:高級主題 398
創建自定義約束 398
使用內置約束來創建新的約束 398
自定義校驗器訊息 399
ValidationMessages資源綁定 399
約束分組 400
自定義組校驗順序 400
第23章 使用Java EE攔截器 402
攔截器概述 402
攔截器類 403
攔截器的生命周期 403
攔截器和CDI 403
使用攔截器 403
攔截方法調用 404
攔截生命周期回調事件 406
攔截逾時事件 407
interceptor示例程式 408
運行interceptor示例 409
第24章 資源適配器示例 410
資源適配器 410
Message-Driven Bean 411
Web應用程式 411
運行mailconnector示例 411
第Ⅸ部分 案例研究
第25章 Duke’s Bookstore案例研究示例 416
Duke’s Bookstore的設計和架構 416
Duke’s Bookstore的接口 417
Java持久化API實體Book 417
Duke’s Bookstore中使用的Enterprise beans 418
Duke’s Bookstore 中使用的Facelets頁面和Managed Beans 418
Duke’s Bookstore中使用的自定義組件和其他自定義對象 420
Duke’s Bookstore中使用的屬性檔案 420
Duke’s Bookstore中使用的部署描述符 421
運行 Duke’s Bookstore案例研究應用程式 422
第26章 Duke’s Tutoring案例研究示例 424
Duke’s Tutoring的設計和架構 424
主界面 426
主界面中使用的Java持久化API實體 426
主界面中使用的enterprise bean 426
主界面中使用的Facelets檔案 427
主界面中使用的輔助類 428
屬性檔案 429
Duke’s Tutoring中使用的部署描述符 429
管理界面 430
管理界面中使用的enterprise bean 430
管理界面中使用的Facelets檔案 430
運行Duke’s Tutoring案例研究應用程式 431
設定GlassFish Server 431
運行Duke’s Tutoring 432
第27章 Duke’s Forest案例研究示例 434
Duke’s Forest的設計和架構 435
events項目 437
entities項目 438
dukes-payment項目 440
dukes-resource項目 440
Duke’s Store項目 440
Duke’s Shipment項目 445
構建並部署Duke’s Forest案例研究應用程式 447
前提條件 447
運行Duke’s Forest應用程式 450
序言
本書是使用GlassFish Server 開源版開發Java 平台企業版6(簡稱Java EE 6)企業級應用程式系列指南的第二卷。
Oracle GlassFish Server 是一個兼容Java EE 的應用程式伺服器,基於GlassFish Server 開源版(一個領先的開源和開放社區平台)開發,用來構建和部署下一代應用程式和服務。GlassFish Server 開源版由GlassFish 項目開源社區開發,是第一個兼容Java EE 6 平台規範的實現。GlassFish Server 開源版以其輕量、靈活以及開源的特點,不僅使企業能夠使用Java EE 6 規範引入的新特性,而且能夠通過更快、更流水線化的開發和部署周期,來擴展企業已有的功能。不管是Oracle GlassFish Server(企業版)還是GlassFish Server 開源版,在本書之後的章節中都統一稱為GlassFish Server。
在閱讀本書之前
在閱讀本書之前,你應該閱讀本教程的第一卷Java EE 6 Tutorial:Basic Concepts①。這兩卷都假設你對Java 程式語言已經有了一定的了解。如果你尚不了解Java 語言,請閱讀Java 教程。
排版約定
表P-1 列舉了本書中使用的排版約定
表P-1 排版約定
字型 意義 示例
AaBbCc123 命令、檔案和目錄的名字,以及顯示在計算機上的輸出
編輯你的.login 檔案
使用ls –a 來列出所有的檔案machine_name%你有郵件
AaBbCc123 你輸入的內容,相對於顯示在計算機上的輸出而言
machine_name% suPassword:
AaBbCc123 占位符,會被實際的名字或值替代;書名、新的術語,或者是需要被強調的術語(注意一些被強調的數據會以粗體顯示) 刪除檔案的命令是rm filename
默認路徑和檔案名稱
表P-2 列舉了本書中使用的默認路徑和檔案名稱。
表P-2 默認路徑和檔案名稱
占位符 描述 默認值
as-install 表示GlassFish Server 或其所屬SDK 的基本安裝目錄
在Solaris、Linux 或者Mac 作業系統上的安裝路徑為:
用戶home 目錄/glassfish3/glassfish
在Windows 作業系統上的安裝路徑為:
SystemDrive:\glassfish3\glassfish
as-install-parent 表示GlassFish Server 基本安裝目錄的父目錄
在Solaris、Linux 或者Mac 作業系統上的安裝路徑為:
用戶home 目錄/glassfish3
在Windows 作業系統上的安裝路徑為:
SystemDrive:\glassfish3
tut-install 表示安裝完GlassFish Server 或者SDK 並運行Update Tool 之後,Java EE 教程所安裝的基本目錄
as-install/docs/javaee-tutorial
domain-root-dir 表示創建默認域的目錄 as-install/domains/
domain-dir 表示存儲域配置的目錄 domain-root-dir/domain-name
第三方網站參考
本書會引用第三方的URL 地址來提供額外的相關信息。
注意:Oracle 並不對本文中提到的第三方網站的可用性負責。Oracle 不會認可、也不
會為這些網站或資源所提供以及通過這些網站或資源可以訪問到的任何內容、廣告、
產品承擔任何責任和義務。Oracle 不會為由這些網站或資源所提供以及通過這些網站
或資源可以訪問到的任何內容、物品或者服務所造成的直接、間接或相關損失承擔任
何負責。
感謝
Java EE 教程團隊感謝Java EE 規範的領導者們:Roberto Chinnici、Bill Shannon、Kenneth
Saks、Linda DeMichiel、Ed Burns、Roger Kitain、Ron Monzillo、Binod PG、Sivakumar Thyagarajan、Kin-Man Chung、Jitendra Kotamraju、Marc Hadley、Paul Sandoz、Gavin King、Emmanuel Bernard、Rod Johnson、Bob Lee 以及 Rajiv Mordani。還要感謝Alejandro Murillo 為連線器示例提供了最初的版本。
我們還要感謝Java EE 6 SDK 團隊,尤其是Carla Carlson、Snjezana Sevo-Zenzerovic、Adam
Leftik 和John Clingan。
關於介紹JavaServer Faces 技術的幾章,我們從 Manfred Riem 以及規範領導者們的建議中受益良多。
EJB 技術、Java 持久化 API 以及Criteria API 等章節,離不開EJB 和Persistence 團隊的巨大投入,其中包括Marina Vatkina 和Mitesh Meswani。
我們還要感謝Sivakumar Thyagarajan 對CDI 章節的審查,以及Tim Quinn 對應用程式客戶端容器的幫助。同時感謝NetBeans 的工程師和文檔團隊, 尤其是Petr Jiricka 、JohnJullion-Ceccarelli 和 Troy Giunipero,他們為本書的代碼示例提供了NetBeans IDE 方面的支持。
感謝Chang Feng、Alejandro Murillo 和 Scott Fordin,他們幫助我們將Duke’s Tutoring 案例研究進行了國際化。
我們要感謝我們的經理——Alan Sommerer 的幫助,他穩定了我們的軍心。
我們還要感謝Jordan Douglas 和 Dawn Tyler 開發並更新了示例程式。Sheila Cepero 為我們解決了許多難題。Steve Cogorno 為我們的工具提供了寶貴的幫助。
最後,我們想要表達對Greg Doench、John Fuller、Elizabeth Ryan、Steve Freedkin 和Addison-Wesley 產品團隊深切的感激之情,他們終於看到我們的手稿出版了。
Oracle GlassFish Server 是一個兼容Java EE 的應用程式伺服器,基於GlassFish Server 開源版(一個領先的開源和開放社區平台)開發,用來構建和部署下一代應用程式和服務。GlassFish Server 開源版由GlassFish 項目開源社區開發,是第一個兼容Java EE 6 平台規範的實現。GlassFish Server 開源版以其輕量、靈活以及開源的特點,不僅使企業能夠使用Java EE 6 規範引入的新特性,而且能夠通過更快、更流水線化的開發和部署周期,來擴展企業已有的功能。不管是Oracle GlassFish Server(企業版)還是GlassFish Server 開源版,在本書之後的章節中都統一稱為GlassFish Server。
在閱讀本書之前
在閱讀本書之前,你應該閱讀本教程的第一卷Java EE 6 Tutorial:Basic Concepts①。這兩卷都假設你對Java 程式語言已經有了一定的了解。如果你尚不了解Java 語言,請閱讀Java 教程。
排版約定
表P-1 列舉了本書中使用的排版約定
表P-1 排版約定
字型 意義 示例
AaBbCc123 命令、檔案和目錄的名字,以及顯示在計算機上的輸出
編輯你的.login 檔案
使用ls –a 來列出所有的檔案machine_name%你有郵件
AaBbCc123 你輸入的內容,相對於顯示在計算機上的輸出而言
machine_name% suPassword:
AaBbCc123 占位符,會被實際的名字或值替代;書名、新的術語,或者是需要被強調的術語(注意一些被強調的數據會以粗體顯示) 刪除檔案的命令是rm filename
默認路徑和檔案名稱
表P-2 列舉了本書中使用的默認路徑和檔案名稱。
表P-2 默認路徑和檔案名稱
占位符 描述 默認值
as-install 表示GlassFish Server 或其所屬SDK 的基本安裝目錄
在Solaris、Linux 或者Mac 作業系統上的安裝路徑為:
用戶home 目錄/glassfish3/glassfish
在Windows 作業系統上的安裝路徑為:
SystemDrive:\glassfish3\glassfish
as-install-parent 表示GlassFish Server 基本安裝目錄的父目錄
在Solaris、Linux 或者Mac 作業系統上的安裝路徑為:
用戶home 目錄/glassfish3
在Windows 作業系統上的安裝路徑為:
SystemDrive:\glassfish3
tut-install 表示安裝完GlassFish Server 或者SDK 並運行Update Tool 之後,Java EE 教程所安裝的基本目錄
as-install/docs/javaee-tutorial
domain-root-dir 表示創建默認域的目錄 as-install/domains/
domain-dir 表示存儲域配置的目錄 domain-root-dir/domain-name
第三方網站參考
本書會引用第三方的URL 地址來提供額外的相關信息。
注意:Oracle 並不對本文中提到的第三方網站的可用性負責。Oracle 不會認可、也不
會為這些網站或資源所提供以及通過這些網站或資源可以訪問到的任何內容、廣告、
產品承擔任何責任和義務。Oracle 不會為由這些網站或資源所提供以及通過這些網站
或資源可以訪問到的任何內容、物品或者服務所造成的直接、間接或相關損失承擔任
何負責。
感謝
Java EE 教程團隊感謝Java EE 規範的領導者們:Roberto Chinnici、Bill Shannon、Kenneth
Saks、Linda DeMichiel、Ed Burns、Roger Kitain、Ron Monzillo、Binod PG、Sivakumar Thyagarajan、Kin-Man Chung、Jitendra Kotamraju、Marc Hadley、Paul Sandoz、Gavin King、Emmanuel Bernard、Rod Johnson、Bob Lee 以及 Rajiv Mordani。還要感謝Alejandro Murillo 為連線器示例提供了最初的版本。
我們還要感謝Java EE 6 SDK 團隊,尤其是Carla Carlson、Snjezana Sevo-Zenzerovic、Adam
Leftik 和John Clingan。
關於介紹JavaServer Faces 技術的幾章,我們從 Manfred Riem 以及規範領導者們的建議中受益良多。
EJB 技術、Java 持久化 API 以及Criteria API 等章節,離不開EJB 和Persistence 團隊的巨大投入,其中包括Marina Vatkina 和Mitesh Meswani。
我們還要感謝Sivakumar Thyagarajan 對CDI 章節的審查,以及Tim Quinn 對應用程式客戶端容器的幫助。同時感謝NetBeans 的工程師和文檔團隊, 尤其是Petr Jiricka 、JohnJullion-Ceccarelli 和 Troy Giunipero,他們為本書的代碼示例提供了NetBeans IDE 方面的支持。
感謝Chang Feng、Alejandro Murillo 和 Scott Fordin,他們幫助我們將Duke’s Tutoring 案例研究進行了國際化。
我們要感謝我們的經理——Alan Sommerer 的幫助,他穩定了我們的軍心。
我們還要感謝Jordan Douglas 和 Dawn Tyler 開發並更新了示例程式。Sheila Cepero 為我們解決了許多難題。Steve Cogorno 為我們的工具提供了寶貴的幫助。
最後,我們想要表達對Greg Doench、John Fuller、Elizabeth Ryan、Steve Freedkin 和Addison-Wesley 產品團隊深切的感激之情,他們終於看到我們的手稿出版了。