譯者序
前 言
第一部分 引言
第1章 概述 2
1.1 Java EE 7平颱新增特性 3
1.2 Java EE應用模型 3
1.3 分布式多層應用 4
1.3.1 安全 4
1.3.2 Java EE組件 5
1.3.3 Java EE客戶端 6
1.3.4 Web組件 7
1.3.5 業務組件 8
1.3.6 企業信息係統層 8
1.4 Java EE容器 9
1.4.1 容器服務 9
1.4.2 容器類型 10
1.5 Web服務支持 11
1.5.1 XML 11
1.5.2 SOAP傳輸協議 12
1.5.3 WSDL標準格式 12
1.6 Java EE應用裝配與部署 12
1.7 開發角色 13
1.7.1 Java EE産品提供商 13
1.7.2 工具提供商 13
1.7.3 應用組件提供商 13
1.7.4 應用裝配人員 14
1.7.5 應用部署人員和管理員 14
1.8 Java EE 7 API 14
1.8.1 EJB技術 16
1.8.2 Java servlet技術 17
1.8.3 JSF技術 18
1.8.4 JSP技術 18
1.8.5 JSP標準標記庫 19
1.8.6 Java持久化API 19
1.8.7 Java事務API 19
1.8.8 RESTful Web服務Java API 19
1.8.9 托管bean 20
1.8.10 Java EE 的上下文和依賴注入 20
1.8.11 Java的依賴注入 20
1.8.12 bean驗證 20
1.8.13 Java消息服務API 20
1.8.14 Java EE連接器架構 21
1.8.15 JavaMail API 21
1.8.16 Java容器授權契約 21
1.8.17 Java容器認證服務提供者接口 21
1.8.18 WebSocket Java API 22
1.8.19 JSON處理Java API 22
1.8.20 Java EE的並發工具 22
1.8.21 Java平颱的批處理應用 22
1.9 Java平颱標準版7的Java EE 7 API 23
1.9.1 Java數據庫互連API 23
1.9.2 Java命名和目錄接口API 23
1.9.3 JavaBeans激活框架 24
1.9.4 XML處理Java API 24
1.9.5 Java XML綁定架構 24
1.9.6 XML Web服務Java-API 24
1.9.7 帶附件SOAP Java API 25
1.9.8 Java認證和授權服務 25
1.9.9 Java平颱的公共注解 25
1.10 GlassFish服務器工具 25
第2章 使用教程示例 27
2.1 必要軟件 27
2.1.1 Java EE 7軟件開發包 28
2.1.2 Java平颱標準版 28
2.1.3 Java EE 7教程組件 28
2.1.4 NetBeans IDE 29
2.1.5 Apache Maven 30
2.2 啓動和停止GlassFish服務器 30
2.2.1 使用NetBeans IDE啓動GlassFish服務器 30
2.2.2 使用NetBeans IDE停止GlassFish服務器 30
2.2.3 使用命令行啓動GlassFish服務器 30
2.2.4 使用命令行停止GlassFish服務器 31
2.3 啓動管理控製颱 31
2.3.1 使用NetBeans IDE啓動管理控製颱 31
2.4 啓動和停止Java DB服務器 32
2.4.1 使用NetBeans IDE啓動數據庫服務器 32
2.5 構建示例 32
2.6 教程示例目錄結構 32
2.7 教程中的Java EE 7 Maven原型 33
2.7.1 安裝教程Maven原型 33
2.8 獲取教程最新更新 34
2.8.1 使用NetBeans IDE更新教程 34
2.8.2 使用命令行更新教程 34
2.9 調試Java EE應用 34
2.9.1 使用服務器日誌 34
2.9.2 使用調試器 35
第二部分 企業bean
第3章 企業bean 38
3.1 什麼是企業bean 38
3.1.1 企業bean的好處 39
3.1.2 何時使用企業bean 39
3.1.3 企業bean類型 39
3.2 什麼是會話bean 39
3.2.1 會話bean類型 40
3.2.2 何時使用會話bean 41
3.3 什麼是消息驅動bean 41
3.3.1 消息驅動bean與會話bean的區彆 41
3.3.2 何時使用消息驅動bean 42
3.4 訪問企業bean 42
3.4.1 在客戶端使用企業bean 43
3.4.2 確定遠程或本地訪問 44
3.4.3 本地客戶端 45
3.4.4 遠程客戶端 46
3.4.5 Web服務客戶端 47
3.4.6 方法參數和訪問 47
3.5 企業bean的內容 48
3.6 企業bean的命名約定 48
3.7 企業bean的生命周期 48
3.7.1 有狀態會話bean的生命周期 48
3.7.2 無狀態會話bean的生命周期 49
3.7.3 單例會話bean的生命周期 50
3.7.4 消息驅動bean的生命周期 50
3.8 有關企業bean的更多信息 51
第4章 企業bean入門 52
4.1 創建企業bean 52
4.1.1 編寫企業bean類 53
4.1.2 創建converter Web客戶端 53
4.1.3 運行converter示例 54
4.2 修改Java EE應用 55
4.2.1 修改類文件 55
第5章 運行企業bean示例 56
5.1 cart示例 56
5.1.1 業務接口 57
5.1.2 會話bean類 57
5.1.3 @Remove方法 61
5.1.4 輔助類 61
5.1.5 運行cart示例 61
5.2 一個單例會話bean示例:counter 62
5.2.1 創建一個單例會話bean 63
5.2.2 counter示例的架構 67
5.2.3 運行counter示例 69
5.3 一個Web服務示例:helloservice 69
5.3.1 Web服務端點實現類 69
5.3.2 無狀態會話bean實現類 70
5.3.3 運行helloservice示例 71
5.4 使用定時器服務 72
5.4.1 創建基於日曆的定時器錶達式 72
5.4.2 編程定時器 74
5.4.3 自動定時器 76
5.4.4 取消和保存定時器 76
5.4.5 獲得定時器信息 77
5.4.6 事務和定時器 77
5.4.7 timersession示例 77
5.4.8 運行timersession示例 80
5.5 處理異常 81
第6章 使用嵌入式企業bean容器 82
6.1 嵌入式企業bean容器概述 82
6.2 開發嵌入式企業bean應用 82
6.2.1 運行嵌入式應用 83
6.2.2 創建企業bean容器 83
6.2.3 查找會話bean引用 84
6.2.4 關閉企業bean容器 85
6.3 standalone示例應用 85
6.3.1 使用NetBeans IDE運行standalone示例應用 86
6.3.2 使用Maven運行standalone示例應用 87
第7章 在會話bean中使用異步方法調用 88
7.1 異步方法調用 88
7.1.1 創建異步業務方法 88
7.1.2 從企業bean客戶端調用異步方法 89
7.2 async示例應用 90
7.2.1 async-war模塊的架構 91
7.2.2 運行async示例 92
第三部分 持久化
第8章 Java持久化API介紹 96
8.1 實體 96
8.1.1 實體類的需求 97
8.1.2 實體類中的持久化字段和屬性 97
8.1.3 實體的主鍵 101
8.1.4 實體關係中的多重性 103
8.1.5 實體關係中的方嚮 103
8.1.6 實體中的可嵌入類 105
8.2 實體繼承 106
8.2.1 抽象實體 106
8.2.2 映射超類 106
8.2.3 非實體超類 107
8.2.4 實體繼承映射策略 107
8.3 管理實體 109
8.3.1 EntityManager接口 109
8.3.2 持久化單元 113
8.4 查詢實體 114
8.5 數據庫模式創建 114
8.5.1 配置應用以創建或刪除數據庫錶 115
8.5.2 使用SQL腳本加載數據 116
8.6 有關持久化的更多信息 116
第9章 運行持久化示例 118
9.1 order應用 118
9.1.1 order應用中的實體關係 119
9.1.2 order應用中的主鍵 121
9.1.3 實體映射到多個數據庫錶 125
9.1.4 order應用中的層疊操作 125
9.1.5 order應用中的BLOB和CLOB數據庫類型 126
9.1.6 order應用中的時態類型 126
9.1.7 管理order應用的實體 127
9.1.8 運行order示例 129
9.2 roster應用 129
9.2.1 roster應用中的關係 130
9.2.2 roster應用中的實體繼承 131
9.2.3 roster應用中的Criteria查詢 132
9.2.4 roster應用中的自動錶生成 134
9.2.5 運行roster示例 135
9.3 address-book應用 136
9.3.1 address-book中的bean驗證約束 136
9.3.2 在address-book中為約束指定錯誤消息 137
9.3.3 驗證JSF應用的聯係信息輸入 138
9.3.4 運行address-book示例 139
第10章 Java持久化查詢語言 140
10.1 查詢語言術語 140
10.2 使用Java持久化查詢語言創建查詢 141
10.2.1 查詢中的命名參數 142
10.2.2 查詢中的位置參數 142
10.3 簡化的查詢語言語法 142
10.3.1 選擇語句 142
10.3.2 更新和刪除語句 143
10.4 示例查詢 143
10.4.1 簡單查詢 143
10.4.2 導航到相關實體的查詢 144
10.4.3 包含其他條件錶達式的查詢 146
10.4.4 批處理更新和刪除 147
10.5 完整的查詢語言語法 148
10.5.1 BNF符號 148
10.5.2 Java持久化查詢語言的BNF文法 148
10.5.3 FROM子句 152
10.5.4 路徑錶達式 157
10.5.5 WHERE子句 158
10.5.6 SELECT子句 165
10.5.7 ORDER BY子句 167
10.5.8 GROUP BY和HAVING子句 167
第11章 使用Criteria API創建查詢 168
11.1 Criteria和Metamodel API概述 168
11.2 使用Metamodel API為實體類建模 170
11.2.1 使用元模型類 170
11.3 使用Criteria API和Metamodel API創建基本的類型安全查詢 171
11.3.1 創建Criteria查詢 171
11.3.2 查詢根 172
11.3.3 使用聯接查詢關係 172
11.3.4 Criteria查詢中的路徑導航 173
11.3.5 限製Criteria查詢結果 173
11.3.6 管理Criteria查詢結果 175
11.3.7 執行查詢 176
第12章 創建和使用基於字符串的Criteria查詢 178
12.1 基於字符串的Criteria API查詢概述 178
12.2 創建基於字符串的查詢 178
12.3 執行基於字符串的查詢 179
第13章 使用鎖定控製對實體數據的並發訪問 180
13.1 實體鎖定和並發概述 180
13.1.1 使用樂觀鎖定 181
13.2 鎖模式 181
13.2.1 設置鎖模式 182
13.2.2 使用悲觀鎖定 183
第14章 用實體圖創建獲取計劃 185
14.1 實體圖基礎 185
14.1.1 默認實體圖 186
14.1.2 在持久化操作中使用實體圖 186
14.2 使用命名實體圖 187
14.2.1 對實體類應用命名實體圖注解 187
14.2.2 從命名實體圖獲得EntityGraph實例 188
14.3 在查詢操作中使用實體圖 189
第15章 對Java持久化API應用使用二級緩存 190
15.1 二級緩存概述 190
15.1.1 控製實體是否可以緩存 191
15.2 指定緩存模式設置來提高性能 192
15.2.1 設置緩存獲取和存儲模式 192
15.2.2 通過編程方式控製二級緩存 194
第四部分 消息傳送
第16章 Java消息服務概念 198
16.1 JMS API概述 198
16.1.1 什麼是消息傳送 198
16.1.2 什麼是JMS API 199
16.1.3 何時使用JMS API 199
16.1.4 Java EE平颱如何使用JMS API 200
16.2 基本JMS API概念 201
16.2.1 JMS API架構 201
16.2.2 消息傳送方式 201
16.2.3 消息使用 203
16.3 JMS API編程模型 204
16.3.1 JMS受管理對象 205
16.3.2 連接 206
16.3.3 會話 206
16.3.4 JMSContext對象 207
16.3.5 JMS消息生産者 208
16.3.6 JMS消息消費者 208
16.3.7 JMS消息 213
16.3.8 JMS隊列瀏覽器 215
16.3.9 JMS異常處理 216
16.4 使用高級JMS特性 216
16.4.1 控製消息確認 217
16.4.2 為發送消息指定選項 218
16.4.3 創建臨時目的地 220
16.4.4 使用JMS本地事務 221
16.4.5 異步發送消息 223
16.5 在Java EE應用中使用JMS API 223
16.5.1 為Java EE應用創建資源 223
16.5.2 在企業bean或Web組件中使用資源注入 225
16.5.3 使用Java EE組件生成和同步接收消息 226
16.5.4 使用消息驅動bean異步接收消息 227
16.5.5 管理JTA事務 229
16.6 關於JMS的更多信息 231
第17章 Java消息服務示例 232
17.1 JMS示例概述 233
17.2 編寫簡單的JMS應用 233
17.2.1 啓動JMS提供者 234
17.2.2 創建JMS受管理對象 234
17.2.3 構建所有簡單示例 235
17.2.4 發送消息 235
17.2.5 同步接收消息 238
17.2.6 使用消息監聽器完成異步消息傳送 240
17.2.7 瀏覽隊列中的消息 242
17.2.8 在同一個目的地運行多個消費者 245
17.2.9 確認消息 245
17.3 編寫更高級的JMS應用 247
17.3.1 使用持久訂閱 247
17.3.2 使用本地事務 249
17.4 編寫高性能和可擴展的JMS應用 254
17.4.1 使用共享非持久訂閱 254
17.4.2 使用共享持久訂閱 256
17.5 使用一個簡單Web應用發送和接收消息 257
17.5.1 websimplemessage Facelets頁麵 257
17.5.2 websimplemessage托管bean 258
17.5.3 運行websimplemessage示例 259
17.6 使用消息驅動bean異步接收消息 261
17.6.1 simplemessage示例概述 261
17.6.2 simplemessage應用客戶端 261
17.6.3 simplemessage消息驅動bean類 262
17.6.4 運行simplemessage示例 263
17.7 從會話bean嚮MDB發送消息 264
17.7.1 為clientsessionmdb示例編寫應用組件 265
17.7.2 運行clientsessionmdb示例 267
17.8 使用實體聯接兩個MDB的消息 268
17.8.1 clientmdbentity示例應用概述 269
17.8.2 為clientmdbentity示例編寫應用組件 270
17.8.3 運行clientmdbentity示例 272
17.9 使用NetBeans IDE創建JMS資源 274
17.9.1 使用NetBeans IDE創建JMS資源 274
17.9.2 使用NetBeans IDE刪除JMS資源 275
第五部分 安全
第18章 Java EE平颱安全介紹 278
18.1 Java EE安全概述 278
18.1.1 簡單的應用安全演示 279
18.1.2 安全機製特性 281
18.1.3 應用安全特點 281
18.2 安全機製 282
18.2.1 Java SE安全機製 282
18.2.2 Java EE安全機製 283
18.3 保護容器安全 285
18.3.1 使用注解指定安全信息 285
18.3.2 使用部署描述文件提供聲明式安全 285
18.3.3 使用編程式安全 286
18.4 保護GlassFish服務器安全 286
18.5 使用安全域、用戶、組和角色 286
18.5.1 什麼是安全域、用戶、組和角色 287
18.5.2 在GlassFish服務器中管理用戶和組 289
18.5.3 建立安全角色 290
18.5.4 角色映射到用戶和組 291
18.6 使用SSL建立安全連接 292
18.6.1 驗證和配置SSL支持 293
18.7 有關安全的更多信息 293
第19章 Web應用安全入門 295
19.1 Web應用安全概述 295
19.2 保護Web應用安全 296
19.2.1 指定安全約束 297
19.2.2 指定認證機製 300
19.2.3 在部署描述文件中指定認證機製 302
19.2.4 聲明安全角色 303
19.3 Web應用使用編程式安全 304
19.3.1 通過編程方式認證用戶 304
19.3.2 通過編程方式檢查調用者身份 306
19.3.3 編程式安全的示例代碼 306
19.3.4 聲明和鏈接角色引用 308
19.4 示例:保護Web應用安全 309
19.4.1 設置係統來運行安全示例 309
19.4.2 hello2-basicauth示例:對servlet使用基本認證 310
19.4.3 hello1-formauth示例:對JSF應用使用基於錶單的認證 312
第20章 企業應用安全入門 316
20.1 企業應用的基本安全任務 316
20.2 保護企業bean安全 316
20.2.1 使用聲明式安全保護企業bean安全 318
20.2.2 通過編程方式保護企業bean安全 321
20.2.3 傳播安全身份(Run-As) 323
20.2.4 部署安全企業bean 324
20.3 示例:保護企業bean安全 324
20.3.1 cart-secure示例:使用聲明式安全保護企業bean安全 324
20.3.2 converter-secure示例:使用編程式安全保護企業bean安全 328
第21章 Java EE安全:高級主題 331
21.1 使用數字證書 331
21.1.1 創建服務器證書 332
21.1.2 嚮證書安全域增加用戶 334
21.1.3 為GlassFish服務器使用一個不同的服務器證書 334
21.2 認證機製 335
21.2.1 客戶端認證 335
21.2.2 相互認證 335
21.3 使用JDBC安全域完成用戶認證 338
21.3.1 配置JDBC認證安全域 339
21.4 保護HTTP資源安全 340
21.5 保護應用客戶端安全 343
21.5.1 使用登錄模塊 343
21.5.2 使用編程式登錄 344
21.6 保護企業信息係統應用安全 344
21.6.1 容器托管登錄 344
21.6.2 組件托管登錄 345
21.6.3 配置資源適配器安全 345
21.6.4 將應用主體映射到EIS主體 346
21.7 使用部署描述文件配置安全 347
21.7.1 在部署描述文件中指定基本認證安全 347
21.7.2 在部署描述文件中指定非默認主體-角色映射 348
21.8 關於高級安全主題的更多信息 348
第六部分 Java EE支持技術
第22章 事務 352
22.1 Java EE應用中的事務 352
22.2 什麼是事務 353
22.3 容器托管事務 353
22.3.1 事務屬性 354
22.3.2 迴滾容器托管事務 357
22.3.3 同步會話bean的實例變量 357
22.3.4 容器托管事務中不允許的方法 358
22.4 bean托管事務 358
22.4.1 JTA事務 358
22.4.2 不提交返迴 359
22.4.3 bean托管事務中不允許的方法 359
22.5 事務超時 359
22.5.1 設置事務超時 359
22.6 更新多個數據庫 360
22.7 Web組件中的事務 361
22.8 關於事務的更多信息 361
第23章 資源適配器和契約 362
23.1 什麼是資源適配器 362
23.1.1 管理契約 363
23.1.2 通用工作上下文契約 364
23.1.3 齣站和入站契約 364
23.2 元數據注解 365
23.3 公共客戶端接口 366
23.4 對Java EE上下文和依賴注入(CDI)使用資源適配器 367
23.5 關於資源適配器的更多信息 368
第24章 資源適配器示例 369
24.1 trading示例 369
24.1.1 使用齣站資源適配器 370
24.1.2 實現齣站資源適配器 372
24.1.3 運行trading示例 373
24.2 traffic示例 374
24.2.1 使用入站資源適配器 375
24.2.2 實現入站資源適配器 376
24.2.3 運行traffic示例 378
第25章 使用Java EE攔截器 380
25.1 攔截器概述 380
25.1.1 攔截器類 381
25.1.2 攔截器生命周期 381
25.1.3 攔截器和CDI 381
25.2 使用攔截器 381
25.2.1 攔截方法調用 382
25.2.2 攔截生命周期迴調事件 384
25.2.3 攔截超時事件 385
25.2.4 為組件綁定攔截器 386
25.2.5 攔截器排序 387
25.3 interceptor示例應用 388
25.3.1 運行interceptor示例 389
第26章 批處理 390
26.1 批處理介紹 391
26.1.1 批處理作業中的步驟 391
26.1.2 並行處理 392
26.1.3 狀態和判定元素 392
26.1.4 批處理框架功能 393
26.2 Java EE中的批處理 394
26.2.1 批處理框架 394
26.2.2 創建批處理應用 394
26.2.3 批處理作業的元素 395
26.2.4 屬性和參數 395
26.2.5 作業實例和作業執行 395
26.2.6 批處理和退齣狀態 395
26.3 簡單用例 396
26.3.1 塊步驟 397
26.3.2 任務步驟 399
26.4 使用作業規範語言 399
26.4.1 job元素 400
26.4.2 step元素 401
26.4.3 flow元素 406
26.4.4 split元素 406
26.4.5 decision元素 406
26.5 創建批處理工件 407
26.5.1 批處理工件接口 407
26.5.2 批處理工件中的依賴注入 409
26.5.3 從批處理運行時環境使用上下文對象 410
26.6 嚮批處理運行時環境提交作業 411
26.6.1 開始作業 411
26.6.2 檢查作業的狀態 411
26.6.3 在應用中調用批處理運行時環境 412
26.7 打包批處理應用 412
26.8 webserverlog示例應用 412
26.8.1 webserverlog示例應用架構 412
26.8.2 運行webserverlog示例應用 418
26.9 phonebilling示例應用 419
26.9.1 phonebilling示例應用架構 419
26.9.2 運行phonebilling示例應用 425
26.10 關於批處理的更多信息 426
第27章 Java EE的並發工具 427
27.1 並發基礎 427
27.1.1 綫程和進程 428
27.2 並發工具的主要組件 428
27.3 並發和事務 429
27.4 並發和安全 430
27.5 jobs並發示例 430
27.5.1 運行jobs示例 430
27.6 taskcreator並發示例 433
27.6.1 運行taskcreator示例 435
27.7 關於並發工具的更多信息 436
第七部分 案例研究
第28章 Duke書店案例研究示例 438
28.1 Duke書店的設計和架構 438
28.2 Duke書店接口 439
28.2.1 Book Java持久化API實體 439
28.2.2 Duke書店中使用的企業bean 440
28.2.3 Duke書店中使用的Facelets頁麵和托管bean 440
28.2.4 Duke書店中使用的定製組件和其他定製對象 441
28.2.5 Duke書店中使用的屬性文件 442
28.2.6 Duke書店中使用的部署描述文件 443
28.3 運行Duke書店案例研究應用 443
28.3.1 使用NetBeans IDE構建和部署Duke書店 443
28.3.2 使用Maven構建和部署Duke書店 443
28.3.3 運行Duke書店應用 444
第29章 Duke輔導案例研究示例 445
29.1 Duke輔導應用的設計和架構 445
29.2 主界麵 447
29.2.1 主界麵中使用的Java持久化API實體 447
29.2.2 主界麵中使用的企業bean 448
29.2.3 主界麵中使用的WebSocket端點 448
29.2.4 主界麵中使用的Facelets文件 448
29.2.5 主界麵中使用的輔助類 449
29.2.6 屬性文件 449
29.2.7 Duke輔導應用中使用的部署描述文件 450
29.3 管理界麵 450
29.3.1 管理界麵中使用的企業bean 450
29.3.2 管理界麵中使用的Facelets文件 451
29.3.3 管理界麵中使用的CDI托管bean 451
29.3.4 管理界麵中使用的輔助類 451
29.4 運行Duke輔導案例研究應用 452
29.4.1 運行Duke輔導應用 452
第30章 Duke綜閤案例研究示例 455
30.1 Duke綜閤應用的設計和架構 456
30.1.1 events工程 458
30.1.2 entities工程 459
30.1.3 dukes-payment工程 461
30.1.4 dukes-resources工程 461
30.1.5 Duke商店工程 461
30.1.6 Duke貨運工程 465
30.2 構建和部署Duke綜閤案例研究應用 467
30.2.1 使用NetBeans IDE構建和部署Duke綜閤應用 467
30.2.2 使用Maven構建和部署Duke綜閤應用 467
30.3 運行Duke綜閤應用 467
30.3.1 注冊為Duke商店顧客 468
30.3.2 購買産品 468
30.3.3 批準産品發貨 468
30.3.4 創建新産品 469
· · · · · · (
收起)