第1章 EJB 3架構簡介 1
1.1 EJB簡介 1
1.1.1 EJB是什麼 2
1.1.2 EJB組件模型 2
1.1.3 EJB框架 2
1.1.4 EJB核心特性 2
1.1.5 EJB規範的發展 3
1.1.6 EJB 3簡化開發模型 4
1.1.7 分布式計算模型 6
1.1.8 EJB角色 6
1.2 本書結構 6
1.3 準備 8
1.3.1 安裝GlassFish應用程序服務器的先決條件 8
1.3.2 安裝GlassFish應用程序服務器 9
1.3.3 環境變量設置 10
1.3.4 密碼文件的創建 12
1.3.5 啓動和測試GlassFish安裝 12
1.4 小結 15
第2章 EJB 3會話bean 16
2.1 簡介 16
2.2 會話bean簡介 16
2.2.1 會話bean類型 16
2.2.2 何時使用會話bean 16
2.3 無狀態會話bean 18
2.3.1 bean類 18
2.3.2 業務接口 19
2.3.3 業務方法 21
2.3.4 依賴注入 22
2.3.5 迴調方法 22
2.3.6 攔截器 23
2.4 有狀態會話bean 25
2.4.1 bean類 25
2.4.2 業務接口 26
2.4.3 業務方法 27
2.4.4 迴調方法 28
2.4.5 攔截器 29
2.4.6 異常處理 29
2.5 會話bean的客戶視圖 29
2.6 會話bean的打包、部署和測試 32
2.6.1 先決條件 32
2.6.2 編譯會話bean 32
2.6.3 打包會話bean 33
2.6.4 部署會話bean 34
2.6.5 編譯客戶程序 34
2.6.6 運行客戶程序 35
2.7 小結 36
第3章 實體和JPA 37
3.1 實體示例 38
3.1.1 簡單JavaBean Customer.java 38
3.1.2 簡單實體Customer.java 38
3.1.3 顯示瞭默認設置的實體Customer.java 39
3.1.4 代碼要求 41
3.1.5 示例:注解實例變量 42
3.1.6 示例:注解屬性訪問方法 43
3.1.7 聲明主鍵 44
3.1.8 簡單主鍵 44
3.1.9 復閤主鍵 45
3.1.10 實體示例小結 47
3.2 持久化檔案 47
3.3 EntityManager 48
3.3.1 持久化上下文 48
3.3.2 獲得EntityManager實例 49
3.3.3 事務支持 50
3.4 實體生存周期 50
3.5 O/R映射 52
3.5.1 再談@Table注解 52
3.5.2 再談@Column注解 53
3.5.3 復雜映射 54
3.6 實體關係 54
3.6.1 @OneToOne 54
3.6.2 @OneToMany和@ManyToOne 55
3.6.3 @ManyToMany 55
3.6.4 延遲和預先字段綁定 56
3.6.5 層疊操作 56
3.7 JPQL 57
3.7.1 @NamedQuery和@NamedQueries 57
3.7.2 綁定查詢參數 58
3.7.3 動態查詢 59
3.7.4 批更新和刪除操作 59
3.7.5 復雜查詢 60
3.8 嚮前生成與反嚮工程 60
3.8.1 嚮前生成産生持久性 60
3.8.2 反嚮工程産生適應性 60
3.8.3 哪種方式適用於你的工程 60
3.9 示例應用程序CustomerOrderManager 60
3.9.1 Customer.java 60
3.9.2 CustomerOrder.java 62
3.9.3 Address.java 65
3.9.4 CustomerOrderManager.java 67
3.9.5 CustomerOrderClient.java 68
3.9.6 persistence.xml 69
3.10 小結 70
第4章 高級持久化特性 71
4.1 映射實體繼承層次結構 71
4.1.1 準備 72
4.1.2 實體繼承映射策略 72
4.1.3 每個類單一錶的繼承層次結構(InheritanceType.SINGLE_TABLE) 74
4.1.4 帶有連接子類錶的通用基錶(InheritanceType.JOINED) 82
4.1.5 每個最外層一個錶的具體實體類(InheritanceType.TABLE_PER_CLASS) 85
4.1.6 O/R實現方式的比較 87
4.2 在繼承層次結構中使用抽象實體、映射的超類和非實體類 88
4.2.1 抽象實體類 88
4.2.2 映射的超類(@MappedSuper-class) 89
4.2.3 非實體類 90
4.2.4 使用嵌入非實體類(@Embeddable和@Embedded) 90
4.3 多態關係 92
4.4 多態JPQL查詢 93
4.5 使用原生SQL查詢 93
4.6 復閤主鍵和嵌套外鍵 94
4.6.1 使用嵌套復閤鍵(@EmbeddedId) 95
4.6.2 在實體類上直接暴露復閤鍵類字段(@IdClass) 96
4.6.3 使用復閤鍵的映射關係 97
4.7 樂觀鎖定的支持(@Version) 98
4.8 自動生成的主鍵值的支持 99
4.9 攔截器:實體迴調方法 100
4.10 小結 101
第5章 EJB 3消息驅動bean 103
5.1 簡介 103
5.2 麵嚮消息的架構 103
5.2.1 JMS是什麼 103
5.2.2 消息應用程序架構 104
5.3 使用MDB 105
5.3.1 何時使用MDB 105
5.3.2 MDB類 106
5.3.3 配置屬性 108
5.3.4 MDB中的依賴注入 111
5.3.5 迴調方法 112
5.3.6 攔截器 113
5.3.7 異常處理 113
5.3.8 客戶視圖 114
5.4 MDB的打包、部署和測試 117
5.4.1 先決條件 117
5.4.2 編譯會話bean和MDB 117
5.4.3 打包會話bean和MDB 118
5.4.4 創建JMS和JavaMail資源 118
5.4.5 部署會話bean和MDB 120
5.4.6 編譯客戶程序 121
5.4.7 運行客戶程序 121
5.5 小結 122
第6章 EJB 3和Web服務 123
6.1 簡介 123
6.2 Web服務是什麼 123
6.2.1 UDDI 123
6.2.2 WSDL 124
6.2.3 SOAP 127
6.2.4 何時使用Web服務 128
6.3 Java EE和Web服務 128
6.3.1 JAX-WS 129
6.3.2 JAXB 129
6.3.3 JAXR 129
6.3.4 SAAJ 129
6.3.5 JSR 181 129
6.4 EJB 3無狀態會話bean作為Web服務 129
6.5 Web服務的打包、部署和測試 132
6.5.1 先決條件 133
6.5.2 編譯會話bean 133
6.5.3 打包會話bean 133
6.5.4 部署會話bean 134
6.5.5 使用GlassFish控製颱測試信用卡服務 135
6.6 Web服務客戶視圖 137
6.6.1 開發訪問Web服務的Java客戶程序 137
6.6.2 會話bean作為Web服務客戶程序 140
6.7 小結 141
第7章 集成會話bean、實體、消息驅動bean和Web服務 142
7.1 簡介 142
7.2 應用程序概述 142
7.3 應用程序組件和服務 142
7.3.1 購物車組件 142
7.3.2 搜索外觀組件 143
7.3.3 顧客外觀組件 143
7.3.4 訂單處理外觀組件 143
7.3.5 持久化服務 143
7.3.6 電子郵件服務 143
7.3.7 信用卡服務 143
7.3.8 訂單處理服務 144
7.4 酒類在綫應用程序業務處理 144
7.5 深入講解組件/服務 145
7.5.1 持久化服務 145
7.5.2 顧客外觀組件 145
7.5.3 搜索外觀組件 148
7.5.4 購物車組件 149
7.5.5 訂單處理外觀組件 154
7.5.6 訂單處理服務 161
7.5.7 電子郵件服務 166
7.5.8 信用卡服務 168
7.5.9 數據庫schema 168
7.6 打包、部署和測試應用程序 168
7.6.1 先決條件 169
7.6.2 部署信用卡服務 169
7.6.3 編譯持久化單元 170
7.6.4 打包持久化單元 171
7.6.5 編譯業務服務(會話bean和MDB) 171
7.6.6 打包業務服務 172
7.6.7 匯編應用程序 173
7.6.8 創建數據庫schema 173
7.6.9 創建數據源、JMS資源和Mail資源 173
7.6.10 部署應用程序 177
7.7 應用程序的簡單測試客戶程序 177
7.8 小結 180
第8章 EJB 3中的事務支持 181
8.1 事務是什麼 181
8.1.1 分布式事務 182
8.1.2 事務的ACID屬性 182
8.1.3 JTA 182
8.1.4 兩階段提交協議 183
8.2 EJB中的事務支持 183
8.3 服務模型中的會話bean事務行為 184
8.3.1 容器管理的事務分界 184
8.3.2 bean管理的事務分界 186
8.4 持久化模型中的實體事務行為 187
8.4.1 實體如何與事務上下文相關聯 187
8.4.2 容器管理與應用程序管理的持久化上下文 187
8.4.3 事務範圍的持久化上下文與擴展的持久化上下文 188
8.4.4 JTA與資源本地的Entity-Manager 188
8.5 酒類在綫應用程序的事務場景 188
8.5.1 設置示例 188
8.5.2 使用CMT分界的無狀態會話bean 189
8.5.3 使用BMT分界的有狀態會話bean和擴展的持久化上下文 197
8.6 小結 204
第9章 EJB 3性能和測試 205
9.1 測試方法論 206
9.1.1 性能標準 206
9.1.2 模擬應用程序使用 208
9.1.3 定義測試尺度 208
9.2 Grinder 209
9.3 測試應用程序 211
9.4 性能測試 212
9.4.1 測試環境 214
9.4.2 測試腳本 215
9.4.3 設置 215
9.4.4 初步測試 219
9.4.5 樣本大小 220
9.4.6 校準 221
9.4.7 實際測試運行 221
9.4.8 分析結果 222
9.5 小結 225
第10 章 把EJB 2.x應用程序遷移到EJB 3 226
10.1 準備 227
10.2 會話bean遷移 227
10.2.1 EJB 2.1會話bean 227
10.2.2 EJB 2.1的ejb-jar.xml文件 228
10.2.3 EJB 3會話bean類 229
10.2.4 遷移EJB 2.1會話bean類 229
10.2.5 遷移EJB 2.1會話bean接口 230
10.2.6 遷移EJB 2.1會話bean的ejb-jar.xml屬性 231
10.2.7 遷移EJB 2.1的Web服務端點接口 232
10.2.8 會話bean遷移包裝 232
10.3 MDB遷移 232
10.4 實體bean遷移 233
10.5 EJB客戶程序遷移 235
10.6 完整的應用程序遷移示例 235
10.6.1 EJB 2.1應用程序源文件 235
10.6.2 EJB 3應用程序源文件 246
10.7 把我們的應用程序遷移在Java EE容器之外運行 251
10.7.1 EJB 3會話bean類運行在EJB容器之外 251
10.7.2 容器外部持久化單元的EJB 3的persistence.xml文件 253
10.7.3 EJB 3應用程序管理的EntityManager客戶程序 253
10.8 小結 254
第11章 EJB 3部署 255
11.1 部署工具簡介 255
11.2 部署過程概述 256
11.2.1 提供者 256
11.2.2 裝配者 256
11.2.3 部署者 258
11.3 Java EE部署基礎結構 259
11.3.1 Java EE服務器 259
11.3.2 Java EE容器 259
11.4 Java EE部署組件 260
11.4.1 Java EE應用程序 260
11.4.2 Java EE模塊類型 260
11.4.3 庫組件 262
11.5 應用服務器和平颱無關性 264
11.5.1 部署工具 264
11.5.2 部署計劃 265
11.6 部署角色 265
11.6.1 應用程序裝配者 265
11.6.2 應用程序部署者 267
11.7 匯編EJB JAR模塊 268
11.8 匯編持久化單元 268
11.9 小結 269
第12章 EJB 3客戶應用程序 270
12.1 應用程序架構 270
12.2 JSF 274
12.2.1 Java EE Web技術的發展 274
12.2.2 JSF架構 275
12.2.3 JSF工具和組件 277
12.3 使用JSF和EJB開發Web應用程序 277
12.3.1 登錄頁麵 279
12.3.2 新用戶注冊頁麵 282
12.3.3 鏈接頁麵 288
12.3.4 搜索頁麵 291
12.3.5 酒類清單頁麵 297
12.3.6 顯示選定的酒類詳細信息頁麵 300
12.3.7 顯示購物車項目頁麵 304
12.3.8 通知頁麵 307
12.4 打包、部署和測試應用程序 308
12.4.1 先決條件 308
12.4.2 編譯和打包JSF應用程序 308
12.4.3 匯編酒類商店應用程序 309
12.4.4 部署酒類商店應用程序 309
12.4.5 運行酒類商店應用程序 310
12.5 應用程序客戶容器 314
12.6 小結 314
附錄 315
· · · · · · (
收起)