top
Loading...
EnterpriseJavaBeans導論一
b>服務框架

EJB并不是一個產品。它是Java服務器端服務框架的規范,軟件廠商根據它來實現EJB服務器。應用程序開發者可以專注于支持應用所需的商業邏輯,而不用擔心周圍框架的實現問題。
EJB規范詳細地解釋了一些最小但是必須的服務,如事務,安全和名字等。軟件廠商根據這些規范要求以保證一個enterprise bean能使用某個必需的服務。規范并沒有說明廠商如何實現這些服務。這使得通過閱讀規范來學習EJB更加困難,因為它允許廠商在不犧牲核心服務的可移植性的前提下來提供一些增強功能。

JavaBeans和Enterprise JavaBeans

JavaBeans是Java的組件模型。在JavaBeans規范中定義了事件和屬性等特征。Enterprise JavaBeans也定義了一個Java組件模型,但是Enterprise JavaBeans組件模型和JavaBeans組件模型是不同的。 JavaBeans重點是允許開發者在開發工具中可視化的操縱組件。JavaBeans規范詳細地解釋了組件間事件登記、傳遞、識別和屬性使用、定制和持久化的應用編程接口和語意。 Enterprise JavaBeans的側重點是詳細地定義了一個可以portably地部署Java組件的服務框架模型。因此,其中并沒提及事件,因為enterprise bean通常不發送和接受事件。同樣也沒有提及屬性------屬性定制并不是在開發時進行,而是在運行時(實際上在部署時)通過一個部署描述符來描述。
不要尋找JavaBeans和Enterprise JavaBeans之間的相似性。他們都是組件模型規范,但是前者說明了開發工具中應用程序組裝的問題,而后者則側重于部署組件的服務框架的細節。不要錯誤地認為JavaBeans是用于客戶端的開發,Enterprise JavaBeans是用于服務器端的開發。JavaBeans也可作為進行非圖形化服務器端Java應用開發的組件模型。區別是當你使用JavaBeans創建服務器應用時,你還得設計整個的服務框架。用Enterprise Javabeans框架是現成的,你只需遵守它的APIs.對于復雜的服務器端應用程序,顯然使用Enterprise JavaBeans比重新開發更簡單。

Enterprise JavaBeans體系結構

EJB服務器是管理EJB容器的高端進程或應用程序,并提供對系統服務的訪問。EJB服務器也可以提供廠商自己的特性,如優化的數據庫訪問接口,對其他服務(如CORBA服務)的訪問,對SSL 3.0的支持等。一個EJB服務器必須提供對可訪問JNDI的名字服務和事務服務支持。一些可能的EJB服務器的例子如:

?數據庫服務? r> ?應用服務器
?中間件服務器


EJB容器是一個管理一個或多個EJB類/實例的抽象。它通過規范中定義的接口使EJB類訪問所需的服務。容器廠商也可以在容器或服務器中提供額外服務的接口。

現在沒有EJB服務器和EJB容器間接口的規范。因為目前容器通常由EJB服務器來提供,所以一旦接口標準化了,廠商就可能提供可以在任何兼容的EJB服務器上運行的容器。

Home接口列出了所有定位、創建、刪除EJB 類實例的方法。Home對象是home接口的實現。EJB類開發者必須定義home接口。容器廠商應該提供從home接口中產生home對象實現的方法。

遠程接口(remote interface)列出了EJB類中的商業方法。EJBObject實現遠程接口,并且客戶端通過它訪問EJB實例的商業方法。EJB類開發者定義遠程接口,容器開發商提供產生相應的EJBObject的方法。客戶端不能得到EJB實例的引用,只能得到它的EJBObject實例的引用。當客戶端調用一個方法,EJBObject接受請求并把它傳給EJB實例,同時提供進程中必要的包裝功能。客戶端應用程序通過home對象來定位、創建、刪除EJB類的實例,通過EJBObject來調用實例中的商業方法。客戶端可以用Java來編程,通過Java RMI來訪問訪問home對象和EJBObject,或用其他語言編程并通過CORBA/IIOP訪問,使得部署的服務器端組件可以通過CORBA接口來訪問。


上圖是Enterprise JavaBeans體系結構的一個描述。下一節詳細討論了每個組件的細節。

轉自 www.chinacode.net 中國代碼聯盟新聞組

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com