內容提要
《EJB3基礎教程》介紹了EJB 3的基本知識、EJB 3應用程式開發和EJB 3規範等方面,並將許多實踐經驗融入整個EJB架構,提供了對EJB 3架構和EJB 3編程全面的實戰性指導。
本書從EJB3最基本的內容講起,接著逐步講解了EJB3應用程式開發的整個過程,涉及EJB3規範的各個方面,並將許多實踐經驗融入整個EJB架構,提供了對EJB3架構和EJB3編程全面的實戰性指導,充分體現了EJB3強大的功能和易於使用的特點。
本書主要面向Java和J2EE開發人員。
編輯推薦
世界級EJB專家全力以赴 ,透徹易讀,覆蓋全面,Amazon四星圖書。
“EJB3終於滿足了開發人員的需要,現在正是閱讀本書的大好時機。”
——FloydMarinescu,InfoQ.com創始人,TheServerSide.om創始人,EJBDesignPatterns一書作者
“我發現這是一本極有價值的書。本書易懂且內容全面,是從事EJB3開發一個很好的起點。”
——-Javalobby
EJB3是EJB技術的里程碑,也是JavaEE平台歷史上最重大的進展之一。它吸取了Spring使用POJO和依賴注入的思想,並以Hibernate為基礎引入JPA。取代了此前EJB中最為人詬病的實體Bean。與此同時,它保留了EJB原有的強大功能。通過這樣的兼容並蓄,EJB3實現了涅檠,如今,它不僅獲得了各主流廠商的普遍支持。而且贏得開源Java社區的廣泛歡迎,再次成為Java企業級開發的明星。
本書由Oracle和BEA公司的EJB產品核心開發人員撰寫,權威性毋庸置疑。書中全面而細緻地講解了EJB3架構,包括會話Bean、訊息驅動Bean、事務支持、性能、測試和部署等等,並著重討論了EJB3中的新特性一lPA,通過實例展示了如何使用EJB來開發功能強大的企業級應用程式。作者在講述中融入了其他地方很難找到的許多實踐經驗和實際技巧。而本書的通俗易讀更是得到了各大技術媒體和眾多讀者廣泛認可。
作者簡介
RaghuR.Kodali,是世界級的EJB專家,OASISSOABlueprints規範技術委員會成員。他是Oracle公司資深工程師,領導開發Oracle公司EJB產品多年,目前擔任OracleApplicationServer顧問產品經理和SOA技術推廣官。Kodali在JavaEE社區非常活躍,除了經常在各種世界性技術大會上演講之外,還是JavaDeveloper'sJournal等雜誌的專欄作家。
目錄
第1章 EJB3架構簡介
1.1 EJB簡介
1.1.1 EJB是什麼
1.1.2 EJB組件模型
1.1.3 EJB框架
1.1.4 EJB核心特性
1.1.5 EJB規範的發展
1.1.6 EJB3簡化開發模型
1.1.7 分散式計算模型
1.1.8 EJB角色
1.2 本書結構
1.3 準備
1.3.1 安裝GlassFish應用程式伺服器的先決條件
1.3.2 安裝GlassFish應用程式伺服器
1.3.3 環境變數設定
1.3.4 密碼檔案的創建
1.3.5 啟動和測試GlassFish安裝
1.4 小結
第2章 EJB3會話bean
2.1 簡介
2.2 會話bean簡介
2.2.1 會話bean類型
2.2.2 何時使用會話bean
2.3 無狀態會話bean
2.3.1 bean類
2.3.2 業務接口
2.3.3 業務方法
2.3.4 依賴注入
2.3.5 回調方法
2.3.6 攔截器
2.4 有狀態會話bean
2.4.1 bean類
2.4.2 業務接口
2.4.3 業務方法
2.4.4 回調方法
2.4.5 攔截器
2.4.6 異常處理
2.5 會話bean的客戶視圖
2.6 會話bean的打包、部署和測試
2.6.1 先決條件
2.6.2 編譯會話bean
2.6.3 打包會話bean
2.6.4 部署會話bean
2.6.5 編譯客戶程式
2.6.6 運行客戶程式
2.7 小結
第3章 實體和JPA
3.1 實體示例
3.1.1 簡單JavaBeanCustomer.java
3.1.2 簡單實體Customer.java
3.1.3 顯示了默認設定的實體Customer.java
3.1.4 代碼要求
3.1.5 示例:註解實例變數
3.1.6 示例:註解屬性訪問方法
3.1.7 聲明主鍵
3.1.8 簡單主鍵
3.1.9 複合主鍵
3.1.10 實體示例小結
3.2 持久化檔案
3.3 EntityManager
3.3.1 持久化上下文
3.3.2 獲得EntityManager實例
3.3.3 事務支持
3.4 實體生存周期
3.5 O/R映射
3.5.1 再談@Table註解
3.5.2 再談@Column註解
3.5.3 複雜映射
3.6 實體關係
3.6.1 @OneToOne
3.6.2 @OneToMany和@ManyToOne
3.6.3 @ManyToMany
3.6.4 延遲和預先欄位綁定
3.6.5 層疊操作
3.7 JPQL
3.7.1 @NamedQuery和@NamedQueries
3.7.2 綁定查詢參數
3.7.3 動態查詢
3.7.4 批更新和刪除操作
3.7.5 複雜查詢
3.8 向前生成與反向工程
3.8.1 向前生成產生持久性
3.8.2 反向工程產生適應性
3.8.3 哪種方式適用於你的工程
3.9 示例應用程式CustomerOrderManager
3.9.1 Customer.java
3.9.2 CustomerOrder.java
3.9.3 Address.java
3.9.4 CustomerOrderManager.java
3.9.5 CustomerOrderClient.java
3.9.6 persistence.xml
3.10 小結
第4章 高級持久化特性
4.1 映射實體繼承層次結構
4.1.1 準備
4.1.2 實體繼承映射策略
4.1.3 每個類單一表的繼承層次結構(InheritanceType.SINGLE_TABLE)
4.1.4 帶有連線子類表的通用基表(InheritanceType.JOINED)
4.1.5 每個最外層一個表的具體實體類(InheritanceType.TABLE_PER_CLASS)
4.1.6 O/R實現方式的比較
4.2 在繼承層次結構中使用抽象實體、映射的超類和非實體類
4.2.1 抽象實體類
4.2.2 映射的超類(@MappedSuper-class)
4.2.3 非實體類
4.2.4 使用嵌入非實體類(@Embeddable和@Embedded)
4.3 多態關係
4.4 多態JPQL查詢
4.5 使用原生SQL查詢
4.6 複合主鍵和嵌套外鍵
4.6.1 使用嵌套複合鍵(@EmbeddedId)
4.6.2 在實體類上直接暴露複合鍵類欄位(@IdClass)
4.6.3 使用複合鍵的映射關係
4.7 樂觀鎖定的支持(@Version)
4.8 自動生成的主鍵值的支持
4.9 攔截器:實體回調方法
4.10 小結
第5章 EJB3訊息驅動bean
5.1 簡介
5.2 面向訊息的架構
5.2.1 JMS是什麼
5.2.2 訊息應用程式架構
5.3 使用MDB
5.3.1 何時使用MDB
5.3.2 MDB類
5.3.3 配置屬性
5.3.4 MDB中的依賴注入
5.3.5 回調方法
5.3.6 攔截器
5.3.7 異常處理
5.3.8 客戶視圖
5.4 MDB的打包、部署和測試
5.4.1 先決條件
5.4.2 編譯會話bean和MDB
5.4.3 打包會話bean和MDB
5.4.4 創建JMS和JavaMail資源
5.4.5 部署會話bean和MDB
5.4.6 編譯客戶程式
5.4.7 運行客戶程式
5.5 小結
第6章 EJB3和Web服務
6.1 簡介
6.2 Web服務是什麼
6.2.1 UDDI
6.2.2 WSDL
6.2.3 SOAP
6.2.4 何時使用Web服務
6.3 JavaEE和Web服務
6.3.1 JAX-WS
6.3.2 JAXB
6.3.3 JAXR
6.3.4 SAAJ
6.3.5 JSR181
6.4 EJB3無狀態會話bean作為Web服務
6.5 Web服務的打包、部署和測試
6.5.1 先決條件
6.5.2 編譯會話bean
6.5.3 打包會話bean
6.5.4 部署會話bean
6.5.5 使用GlassFish控制台測試信用卡服務
6.6 Web服務客戶視圖
6.6.1 開發訪問Web服務的Java客戶程式
6.6.2 會話bean作為Web服務客戶程式
6.7 小結
第7章集成會話,實體,訊息驅動bean和Web服務
7.1 簡介
7.2 應用程式概述
7.3 應用程式組件和服務
7.3.1 購物車組件
7.3.2 搜尋外觀組件
7.3.3 顧客外觀組件
7.3.4 訂單處理外觀組件
7.3.5 持久化服務
7.3.6 電子郵件服務
7.3.7 信用卡服務
7.3.8 訂單處理服務
7.4 酒類線上應用程式業務處理
7.5 深入講解組件/服務
7.5.1 持久化服務
7.5.2 顧客外觀組件
7.5.3 搜尋外觀組件
7.5.4 購物車組件
7.5.5 訂單處理外觀組件
7.5.6 訂單處理服務
7.5.7 電子郵件服務
7.5.8 信用卡服務
7.5.9 資料庫schema
7.6 打包、部署和測試應用程式
7.6.1 先決條件
7.6.2 部署信用卡服務
7.6.3 編譯持久化單元
7.6.4 打包持久化單元
7.6.5 編譯業務服務(會話bean和MDB)
7.6.6 打包業務服務
7.6.7 彙編應用程式
7.6.8 創建資料庫schema
7.6.9 創建數據源、JMS資源和Mail資源
7.6.10 部署應用程式
7.7 應用程式的簡單測試客戶程式
7.8 小結
第8章 EJB3中的事務支持
8.1 事務是什麼
8.1.1 分散式事務
8.1.2 事務的ACID屬性
8.1.3 JTA
8.1.4 兩階段提交協定
8.2 EJB中的事務支持
8.3 服務模型中的會話bean事務行為
8.3.1 容器管理的事務分界
8.3.2 bean管理的事務分界
8.4 持久化模型中的實體事務行為
8.4.1 實體如何與事務上下文相關聯
8.4.2 容器管理與應用程式管理的持久化上下文
8.4.3 事務範圍的持久化上下文與擴展的持久化上下文
8.4.4 JTA與資源本地的Entity-Manager
8.5 酒類線上應用程式的事務場景
8.5.1 設定示例
8.5.2 使用CMT分界的無狀態會話bean
8.5.3 使用BMT分界的有狀態會話bean和擴展的持久化上下文
8.6 小結
第9章 EJB3性能和測試
9.1 測試方法論
9.1.1 性能標準
9.1.2 模擬應用程式使用
9.1.3 定義測試尺度
9.2 Grinder
9.3 測試應用程式
9.4 性能測試
9.4.1 測試環境
9.4.2 測試腳本
9.4.3 設定
9.4.4 初步測試
9.4.5 樣本大小
9.4.6 校準
9.4.7 實際測試運行
9.4.8 分析結果
9.5 小結
第10章 把EJB2.x應用程式遷移到EJB3
10.1 準備
10.2 會話bean遷移
10.2.1 EJB2.1會話bean
10.2.2 EJB2.1的ejb-jar.xml檔案
10.2.3 EJB3會話bean類
10.2.4 遷移EJB2.1會話bean類
10.2.5 遷移EJB2.1會話bean接口
10.2.6 遷移EJB2.1會話bean的ejb-jar.xml屬性
10.2.7 遷移EJB2.1的Web服務端點接口
10.2.8 會話bean遷移包裝
10.3 MDB遷移
10.4 實體bean遷移
10.5 EJB客戶程式遷移
10.6 完整的應用程式遷移示例
10.6.1 EJB2.1應用程式源檔案
10.6.2 EJB3應用程式源檔案
10.7 把我們的應用程式遷移在JavaEE容器之外運行
10.7.1 EJB3會話bean類運行在EJB容器之外
10.7.2 容器外部持久化單元的EJB3的persistence.xml檔案
10.7.3 EJB3應用程式管理的EntityManager客戶程式
10.8 小結
第11章 EJB3部署
11.1 部署工具簡介
11.2 部署過程概述
11.2.1 提供者
11.2.2 裝配者
11.2.3 部署者
11.3 JavaEE部署基礎結構
11.3.1 JavaEE伺服器
11.3.2 JavaEE容器
11.4 JavaEE部署組件
11.4.1 JavaEE應用程式
11.4.2 JavaEE模組類型
11.4.3 庫組件
11.5 套用伺服器和平台無關性
11.5.1 部署工具
11.5.2 部署計畫
11.6 部署角色
11.6.1 應用程式裝配者
11.6.2 應用程式部署者
11.7 彙編EJBJAR模組
11.8 彙編持久化單元
11.9 小結
第12章 EJB3客戶應用程式
12.1 應用程式架構
12.2 JSF
12.2.1 JavaEEWeb技術的發展
12.2.2 JSF架構
12.2.3 JSF工具和組件
12.3 使用JSF和EJB開發Web應用程式
12.3.1 登錄頁面
12.3.2 新用戶註冊頁面
12.3.3 連結頁面
12.3.4 搜尋頁面
12.3.5 酒類清單頁面
12.3.6 顯示選定的酒類詳細信息頁面
12.3.7 顯示購物車項目頁面
12.3.8 通知頁面
12.4 打包、部署和測試應用程式
12.4.1 先決條件
12.4.2 編譯和打包JSF應用程式
12.4.3 彙編酒類商店應用程式
12.4.4 部署酒類商店應用程式
12.4.5 運行酒類商店應用程式
12.5 應用程式客戶容器
12.6 小結
附錄