SeamFramework.orgCommunity Documentation

部 I. ä½¿ç”¨æ¦‚念上的物件

Web Beans(JSR-299)規格為 Java EE 環境定義了一組簡化應用程式開發的服務。Web Bean 針對於現有的 Java 元件類型(包含 JavaBeans 以及 Enterprise Java Beans)提供了增強的生命週期與互動模型(interaction model)。為了補充傳統的 Java EE 程式撰寫模型(Programming Model),Web Bean 服務提供了:

依賴注入和 contextual 生命週期管理這兩者組合起來可讓一個不熟悉的 API 的用戶無須過問下列問題:

Web Bean 只會指定它所依賴的 Web Bean 的類型和語意。它無須知道實際的生命週期、具體的實做、執行緒模型,或是任何它所依賴的 Web Bean 的其它客戶端。更好的是,它所依賴的 Web Bean 的具體實做、生命週期和執行緒模型可根據建置的情況來改變,並且不影響到任何的客戶端。

事件、攔截器以及裝飾器可增強在此模型中所繼承的 loose-coupling(鬆散結合性):

最重要的是,Web Bean 以一種 typesafe 的方式來提供了所有的這些功能。Web Bean 從不使用基於字串的識別符號(identifier)來斷定共同協作的物件如何相輔相成。雖然 XML 也是選項之一不過卻很少被使用到。取而代之,Web Bean 使用了 Java 物件模型中可使用的 typing 資訊並統合了一個稱為 binding annotations(綁定標記)的新格式,它可將 Web Bean、它們的相依性、它們的攔截器和裝飾器以及它們的事件用戶聯繫在一起。

Web Bean 服務為通用的並且適用於下列位於 Java EE 環境中的元件類型:

Web Bean 甚至提供了必要的整合點來讓未來 Java EE 規格或是非標準架構所定義的其它類型元件能夠利落地與 Web Bean 整合、有效利用 Web Bean 服務,並與任何其它類型的 Web Bean 進行互動。

Web Bean 受到了幾個現有的 Java framework(包括 Seam、Guice 以及 Spring)的影響。不過,Web Bean 擁有它自己獨特的特性:比 Seam 還要完善的 typesafe、比 Spring 更 stateful 而沒有那麼地以 XML 為中心,並且針對於網站和企業級的應用程式上的處理能力比 Guice 完善。

最重要的是,Web Bean 是一個能與 Java EE 以及可使用崁入式的 EJB Lite 的任何 Java SE 環境整合的 JCP 標準。

內容目錄

1. 開始使用 Web Bean
1.1. 您的第一個 Web Bean
1.2. Web Bean 是什麼?
1.2.1. API 類型、綁定類型以及依賴注入
1.2.2. 建置類型(Deployment type)
1.2.3. Scope
1.2.4. Web Bean 名稱和 Unified EL
1.2.5. 攔截器綁定類型
1.3. 哪種物件屬於 Web Bean?
1.3.1. 基本的 Web Bean
1.3.2. 企業級的 Web Bean
1.3.3. Producer method
1.3.4. JMS 端點(endpoints)
2. JSF 網站應用程式範例
3. Web Beans, the Reference Implementation of JSR-299
3.1. Using JBoss AS 5
3.2. Using Apache Tomcat 6.0
3.3. Using GlassFish
3.4. numberguess 範例
3.4.1. The numberguess example for Tomcat
3.5. 轉譯器範例
4. 依賴注入(Dependency injection)
4.1. 綁定標記
4.1.1. member 和綁定標記
4.1.2. 綁定標記的組合
4.1.3. 綁定標記和 producer method
4.1.4. 預設綁定類型
4.2. 建置類型
4.2.1. 啟用 deployment type
4.2.2. Deployment type 優先權
4.2.3. 範例 deployment type
4.3. 修正相依性不足(unsatisfied dependencies)的問題
4.4. 客戶端代理伺服器(Client proxies)
4.5. 透過程式性的搜尋來取得一個 Web Bean
4.6. Lifecycle callback、@Resource@EJB@PersistenceContext
4.7. InjectionPoint 物件
5. Scope 與 context
5.1. Scope type
5.2. 內建 scope
5.3. conversation scope
5.3.1. Conversation demarcation(對話區分)
5.3.2. Conversation propagation(傳播)
5.3.3. Conversation timeout(逾時)
5.4. dependent pseudo-scope
5.4.1. @New 標記
6. Producer method
6.1. producer method 的 scope
6.2. 注入 producer method
6.3. 使用 @New 和 producer method