第一部分 EJB概述
第1章 EJB 3是什麼
1.1 EJB概述
1.1.1 EJB作為組件
1.1.2 EJB作為框架
1.1.3 分層架構和EJB
1.1.4 為什麼選擇EJB 3
1.2 瞭解EJB類型
1.2.1 會話bean
1.2.2 消息驅動bean
1.2.3 實體和JPA
1.3 深入EJB
1.3.1 訪問EJB服務:EJB容器
1.3.2 訪問JPA服務:持久化提供器
1.3.3 使用EJB服務的功能
1.4 EJB的新生
1.4.1 HelloUser示例
1.4.2 簡化的程序設計模型
1.4.3 用注解,不用部署描述文件
1.4.4 依賴注入與JNDI查找
1.4.5 簡化的持久化API
1.4.6 可進行單元測試的POJO組件
1.4.7 EJB 3和Spring
1.5 小結
第2章 EJB 3初體驗
2.1 新特性:簡化EJB
2.1.1 使用注解替換部署描述文件
2.1.2 依賴注入簡介
2.2 ActionBazaar應用程序簡介
2.2.1 從構造的一個子集開始
2.2.2 基於EJB 3的解決方案
2.3 使用會話bean構造業務邏輯
2.3.1 使用無狀態bean
2.3.2 無狀態bean客戶端
2.3.3 使用有狀態bean
2.3.4 有狀態bean客戶端
2.4 消息和消息驅動bean
2.4.1 生成賬單消息
2.4.2 使用訂單賬單消息處理器MDB
2.5 使用EJB 3 JPA持久化數據
2.5.1 使用JPA
2.5.2 使用EntityManager
2.6 小結
第二部分 使用EJB 3構造業務邏輯
第3章 使用會話bean構造業務邏輯
3.1 會話bean簡介
3.1.1 為什麼使用會話bean
3.1.2 會話bean基礎
3.1.3 瞭解程序設計原則
3.1.4 會話狀態和會話bean類型
3.1.5 bean生命周期迴調
3.2 無狀態會話bean
3.2.1 BidManagerBean示例
3.2.2 使用@Stateless注解
3.2.3 指定業務接口
3.2.4 使用bean生命周期迴調
3.3 有狀態會話bean
3.3.1 附加程序設計原則
3.3.2 BidderAccountCreatorBean示例
3.3.3 有狀態bean的業務接口
3.3.4 有狀態bean的生命周期迴調
3.4 會話bean客戶端
3.4.1 使用@EJB注解
3.4.2 注入和有狀態會話bean
3.5 有狀態bean的性能注意事項
3.5.1 有效地使用有狀態會話bean
3.5.2 有狀態會話bean的替代方式
3.6 會話bean最佳實踐
3.7 小結
第4章 消息和開發MDB
4.1 消息概念
4.1.1 麵嚮消息的中間件
4.1.2 ActionBazaar中的消息
4.1.3 消息模型
4.2 Java消息服務簡介
4.2.1 開發JMS消息生産者
4.2.2 JMS消息接口
4.3 使用消息驅動bean
4.3.1 為什麼使用MDB
4.3.2 程序設計原則
4.3.3 使用MDB開發消息消費者
4.3.4 使用@MessageDriven注解
4.3.5 實現MessageListener
4.3.6 使用ActivationConfig-Property
4.3.7 使用bean生命周期迴調
4.3.8 從MDB發送JMS消息
4.3.9 管理MDB事務
4.4 MDB最佳實踐
4.5 小結
第5章 學習高級EJB概念
5.1 EJB內幕
5.1.1 幕後的EJB
5.1.2 EJB上下文:訪問運行時環境
5.2 使用依賴注入和JNDI訪問資源
5.2.1 使用@Resource注入資源
5.2.2 @Resource注解實際應用
5.2.3 查找資源和EJB
5.3 EJB中的AOP:攔截器
5.3.1 AOP是什麼
5.3.2 攔截器是什麼
5.3.3 指定攔截器
5.3.4 實現業務攔截器
5.3.5 攔截器類中的迴調方法
5.4 調度:EJB 3計時器服務
5.4.1 計時器是什麼
5.4.2 使用計時器服務
5.4.3 何時使用EJB計時器
5.5 小結
第6章 事務和安全
6.1 瞭解事務
6.1.1 ActionBazaar中的事務解決方案
6.1.2 ACID屬性
6.1.3 事務管理內幕
6.1.4 兩階段提交
6.1.5 EJB中的事務管理
6.2 容器管理的事務
6.2.1 使用CMT實現Snag-It訂購
6.2.2 @TransactionManagement注解
6.2.3 @TransactionAttribute注解
6.2.4 使CMT使用迴調
6.2.5 事務和異常處理
6.3 bean管理的事務
6.3.1 使用BMT實現Snag-It訂購
6.3.2 獲得UserTransaction
6.3.3 使用UserTransaction
6.3.4 BMT的優缺點
6.4 分析EJB安全
6.4.1 驗證和授權
6.4.2 用戶、組和角色
6.4.3 ActionBazaar中的安全問題
6.4.4 EJB 3和Java EE安全
6.4.5 聲明式安全
6.4.6 使用EJB程序式安全
6.5 小結
第三部分 研究JPA
第7章 實現域模型
7.1 域建模和JPA
7.1.1 介紹域模型
7.1.2 ActionBazaar問題域
7.1.3 域模型參與者
7.1.4 EJB 3 Java持久化API
7.1.5 域對象作為Java類
7.2 使用JPA實現域對象
7.2.1 @Entity注解
7.2.2 持久化實體數據
7.2.3 指定實體身份
7.2.4 @Embeddable注解
7.3 實體關係
7.3.1 @OneToOne
7.3.2 @OneToMany和@ManyToOne
7.3.3 @ManyToMany
7.4 小結
第8章 對象關係映射
8.1 阻抗失配
8.1.1 把對象映射到數據庫
8.1.2 介紹O/R映射
8.2 映射實體
8.2.1 指定錶
8.2.2 映射列
8.2.3 使用@Enumerated
8.2.4 映射CLOB和BLOB
8.2.5 映射臨時類型
8.2.6 把實體映射到多個錶
8.2.7 生成主鍵
8.2.8 映射可嵌入類
8.3 映射實體關係
8.3.1 映射一對一關係
8.3.2 一對多和多對一
8.3.3 多對多
8.4 映射繼承
8.4.1 單錶策略
8.4.2 聯結錶策略
8.4.3 每個類一個錶策略
8.4.4 映射多態關係
8.5 小結
第9章 使用EntityManager操作實體
9.1 介紹EntityManager
9.1.1 EntityManager接口
9.1.2 實體的生命周期
9.1.3 持久化上下文、作用域和EntityManager
9.1.4 在ActionBazaar中使用EntityManager
9.2 創建EntityManager實例
9.2.1 容器管理的EntityManager
9.2.2 應用程序管理的EntityManager
9.3 管理持久化操作
9.3.1 持久化實體
9.3.2 通過主鍵檢索實體
9.3.3 更新實體
9.3.4 刪除實體
9.3.5 通過轉儲清除控製更新
9.3.6 刷新實體
9.4 實體生命周期監聽器
9.4.1 使用實體監聽器
9.4.2 默認監聽器類
9.4.3 監聽器類的執行順序和排除
9.5 實體操作最佳實踐
9.6 小結
第10章 使用查詢API和JPQL檢索實體
10.1 介紹查詢API
10.1.1 背景
10.1.2 剖析查詢
10.1.3 定義命名查詢
10.2 執行查詢
10.2.1 創建查詢實例
10.2.2 使用Query接口
10.2.3 指定查詢提示
10.3 介紹JPQL
10.3.1 定義語句類型
10.3.2 使用FROM子句
10.3.3 條件錶達式和操作
10.3.4 使用JPQL函數
10.3.5 使用SELECT子句
10.3.6 使用聚閤
10.3.7 排序查詢結果
10.3.8 使用子查詢
10.3.9 聯結實體
10.3.10 批更新和批刪除
10.4 原生SQL查詢
10.4.1 使用原生SQL的動態查詢
10.4.2 使用命名原生SQL查詢
10.5 小結
第四部分 EJB 3的實際應用
第11章 打包EJB 3應用程序
11.1 給應用程序打包
11.1.1 剖析EAR文件
11.1.2 加載EAR模塊
11.2 分析類加載
11.2.1 類加載基礎
11.2.2 分析典型的父委托模型
11.2.3 Java EE應用程序中的類加載
11.2.4 Java EE模塊之間的相關性
11.3 打包會話bean和消息驅動bean
11.3.1 打包EJB-JAR
11.3.2 部署描述文件與注解
11.3.3 使用部署描述文件覆寫注解
11.3.4 指定默認攔截器設置
11.3.5 使用廠商專有的注解和描述文件
11.4 打包實體
11.4.1 暴露持久化模塊
11.4.2 使用persistence.xml描述持久化模塊
11.4.3 使用orm.xml執行O/R映射
11.5 最佳實踐和常見部署問題
11.5.1 打包和部署最佳實踐
11.5.2 診斷常見部署問題
11.6 小結
第12章 有效地跨越應用程序層集成EJB
12.1 設計模式和Web技術
12.1.1 錶現層
12.1.2 使用EAO模式
12.1.3 介紹Session Facade模式
12.2 從Web層訪問會話bean
12.2.1 使用依賴注入訪問會話bean
12.2.2 從幫助器類引用會話bean
12.2.3 處理事務
12.2.4 處理有狀態會話bean
12.3 從Web層使用JPA
12.3.1 使用容器管理的實體管理器
12.3.2 通過JTA事務使用應用程序管理的EntityManager
12.3.3 在容器外訪問應用程序管理的EntityManager
12.4 小結
第13章 馴服EJB:性能和可伸縮性
13.1 處理實體鎖定問題
13.1.1 瞭解鎖定類型
13.1.2 樂觀鎖定和實體版本
13.1.3 EntityManager和鎖定模式
13.2 提高實體性能
13.2.1 重新建模和重新設計計劃
13.2.2 優化JDBC層
13.2.3 減少數據庫操作
13.2.4 提高查詢性能
13.2.5 緩存
13.3 提高EJB 3組件的性能
13.3.1 會話bean性能
13.3.2 提高MDB性能
13.4 集群EJB應用程序
13.4.1 協同定位架構
13.4.2 無狀態會話bean的負載平衡
13.4.3 集群有狀態會話bean
13.4.4 實體和集群緩存
13.5 小結
第五部分 移植和互操作性
第14章 移植到EJB 3
14.1 與EJB 2的嚮後兼容性和互操作性
14.1.1 將EJB 2和EJB 3打包在一起
14.1.2 從EJB 3調用EJB 2
14.1.3 從EJB 2使用EJB 3
14.2 移植會話bean
14.2.1 轉換接口和bean類
14.2.2 資源使用
14.2.3 事務和安全設置
14.2.4 客戶端應用程序
14.3 移植消息驅動bean
14.4 把CMP 2實體移植到EJB 3 JPA
14.4.1 重新設計域模型
14.4.2 DTO用作實體
14.4.3 實體bean類和接口
14.4.4 客戶端應用程序
14.5 移植JDBC DAO使用EJB 3 JPA
14.5.1 標識實體
14.5.2 重新構造DAO實現類使用EntityManager API
14.5.3 SQL查詢轉換為JPQL
14.6 幫助O/R框架使用EJB 3 JPA
14.7 移植方法
14.7.1 策略
14.7.2 手工與自動
14.8 小結
第15章 把EJB暴露為Web服務
15.1 Web服務是什麼
15.1.1 認識Web服務組件
15.1.2 Web服務樣式
15.1.3 開發Web服務的方法
15.2 JAX-WS:Java EE 5 Web服務平颱
15.2.1 介紹Web服務平颱
15.2.2 與POJO相比,為什麼選擇EJB用於Web服務
15.3 使用JAX-WS 2.0開發EJB Web服務
15.3.1 使用@WebService注解
15.3.2 使用@SOAPBinding指定Web服務樣式
15.3.3 使用@WebMethod注解
15.3.4 使用@WebParam注解
15.3.5 使用@WebResult注解
15.3.6 使用@OneWay和@HandlerChain注解
15.4 從EJB訪問Web服務
15.4.1 訪問PlaceBid Web服務
15.4.2 EJB作為Web服務客戶
15.5 Web服務開發的最佳實踐
15.6 小結
第16章 EJB 3和Spring
16.1 Spring框架簡介
16.1.1 Spring框架的優勢
16.1.2 控製反轉原理
16.1.3 關注分離原理
16.2 通過Spring使用JPA
16.2.1 構造Spring的JPA EAO
16.2.2 配置Spring使用JPA
16.3 結閤EJB 3和Spring的功能
16.3.1 開發支持Spring的EJB
16.3.2 從Spring bean使用會話bean
16.4 小結
附錄A RMI和JNDI
附錄B 復習關係數據庫
附錄C 注解參考
附錄D 部署描述文件參考
附錄E 安裝和配置Java EE 5 SDK
資源
索引
· · · · · · (
收起)