POJI
介紹
典型的術語中,JavaBean 和接口通常分別稱作普通舊式 Java 對象 (POJO) 和普通舊式 Java 接口 (POJI)。
EJB 3類和接口現在分別類似於 POJO 和 POJI。現在已經消除了對類似主接口這樣的不必要工件的需求。
您不必在 javax.ejb 程序包中實現某個 EJB 3接口(SessionBean、EntityBean 或 MessageDrivenBean)。相反,您可以使用 Stateless、Stateful、MessageDriven 或 Entity 對它們的 bean 類進行批註。例如,如果要將無狀態 EJB 3定義為 HelloWorld,應按如下所示定義 EJB 3:
import javax.ejb.Stateless;@Statelesspublic class HelloWorldBean implements HelloWorld {public void sayHello(String name) {System.out.println("Hello "+name +" from your first EJB 3.0 component ..."); }}EJB 的接口(無論是遠程接口還是本地接口)不必實現 EJBObject 或 EJBLocalObject。 在本示例中,bean 類為 EJB 實現了業務接口 在本示例中,HelloWorldBean 實現了 HelloWorld 接口。
import javax.ejb.Remote;@Remote
public interface HelloWorld {public void sayHello(String name);}
如果查看以上的代碼示例,則可以非常清楚地看到 @Remote 用於將接口標記為遠程接口。
如果需要,您的 EJB 3可以擁有遠程接口和本地接口。主接口現在即使對會話 Bean 而言也是可選的。
從以上示例中,可以清楚地看到,使用 EJB 3.0,許多常規任務(如創建部署描述符和實現不必要的回調方法)現在都已經廢棄了。
應用架構
Spring框架組件是一個流行的,但是非標準的開放原始碼框架組件。它主要是由Interface21 Inc.公司開發和控制的。Spring框架組件的架構是基於依賴注入(DI)設計模式的。Spring可以單獨地或者與現有的應用程式伺服器一起工作,它大量地使用XML配置文件。
EJB 3.0框架組件是一個標準的框架組件,由Java社區組織(JCP)定義,並受到所有主流的J2EE廠商支持。預發布的EJB 3.0規範的開放原始碼和商業實現都可以在JBoss和Oracle上看到了。EJB 3.0大量使用Java注釋(annotation)。
這兩個框架組件的核心設計理念是相同的:兩者的目標都是把中間件服務傳遞給鬆散耦合的簡單舊式Java對象(POJO)。這些框架組件通過在運行時截取執行內容或向POJO注入服務對象,把應用程式服務與POJO捆綁在一起。POJO本身不關心捆綁的過程,並且對框架組件幾乎沒有依賴。其結果是,開發者可以聚焦於業務邏輯,個人可以在沒有框架組件的情況下測試他們的POJO。此外,由於POJO不需要從框架組件中繼承或實現框架組件接口,開發者建立繼承結構和構建應用程式的時候都有高度的靈活性。
但是,儘管兩者的設計理念是相同的,它們傳遞POJO服務時卻採用了完全不同的方法。儘管目前已經出版了大量的圖書和文章來把Spring或EJB 3.0與EJB 2.1進行對比,但是它們都沒有對Spring與EJB 3.0之間的差異進行認真的研究。在本文中,我將研究Spring和EJB 3.0框架組件之間的關鍵差異,並討論它們的優缺點。本文的主題也可以應用在其它一些名氣稍小的企業級中間件框架組件上,因為它們都聚焦於"鬆散耦合的POJO"設計。我希望本文能夠幫助你選擇符合需求的最佳的框架組件。