Posted on 2010-01-13 22:36
斷點 閱讀(260)
評論(0) 編輯 收藏 所屬分類:
EJB3.0
EJB(Enterprise JavaBeans)在JavaEE體系中,通常用來完成商務邏輯層的功能,EJB是一種組件結構。EJB組件要按照EJB規范編寫,然后部署到應用服務器上,具體講是運行在J2EE應用服務器的EJB容器中,該部分軟件不單為EJB提供運行時的環境,更重要的是提供事務、會話管理、持久性、安全等服務。EJB容器通過查看EJB描述符(配置文件)確定EJB需要那些服務。客戶機要訪問EJB組件需要通過JNDI和RMI定位EJB的對外接口。
采用EJB開發基于MVC(包含顯示層、控制層和業務層)結構的應用,那么EJB就是用于開發應用的業務層。
開發EJB遵循如下步驟進行:
1.開發構成EJB組件的Java源文件,比如:組件接口、Home接口、企業Bean類、所需的輔助類等。
2.手工完成部署描述符,或者借助與IDE。
3.編譯步驟1開發的java源文件.
4.借助于JDK自帶的jar使用工具,來創建含有部署描述符和.class文件的EJB-jar文件。
5.通過具體EJb容器提供的部署建議,來完成Ejb-jar文件的部署。
6.配置EJB服務器,使得Ejb-jar含有的Ejb組件能夠正常運作。
7.啟動EJB服務器。此時,開發者可以驗證EJB組件是否部署成功,并運行。
EJB3.0規范定義了如下3種EJB組件類型:
1、會話Bean(SessionBean):無狀態會話Bean(Stateless SessionBean)、有狀態會話Bean(Stateful SessionBean)。
會話Bean通常有以下屬性:
(1)代表單個客戶機執行。
(2)可以是事務的。
(3)可以更新共享數據庫中的數據。
(4)生存期相對較短。
(5)其生存期通常就是客戶機的生存期。
(6)任何持久性數據都有Bean管理。
(7)可以依容器的判斷予以刪除。
(8)會在EJB服務器失敗時被刪除。
EJB容器管理無狀態會話Bean的生存周期,其方式是通過創建足夠多數量的此種Bean適應客戶機工作負荷,并在不需要它們的時候將其刪除或者將閑置的Bean寫到磁盤上。
如果會話Bean在方法調用之前需要保留狀態信息,則必須使用有狀態的會話Bean(Stateful SessionBean)。
會話Bean在J2EE應用程序中被用來完成一些服務器端的業務操作,例如訪問數據庫、調用其他EJB組件。
總之,會話Bean代表一種操作:它檢索或者存儲數據以滿足用戶的請求。
2、實體Bean(EntityBean),通常有以下屬性:
(1)代表數據庫的數據。
(2)是事務性的。
(3)允許多個用戶共同訪問。
(4)可以長期存在。
(5)持久性數據可以由容器管理。
(6)在EJB服務器失敗后能繼續生存。
實體Bean被用來代表應用數據庫中用到的數據。例如在一個電子商務系統中,實體Bean可以被用來代表產品、雇員、信用卡、訂單數據等數據對象。
持久性是實體Bean的一個基本屬性。EJB規范允許兩種形式的實體持久性:Bean管理的持久性(BMP)和容器管理的持久性(CMP)。
實體Bean支持多個用戶并發的訪問數據。EJB規范說明,維護數據的完整性是容器的責任。容器完成這個任務通常的做法是,鎖定數據庫中的數據,并使訪問串行化,或者通過創建多個實體Bean的實例,并允許在基礎數據存儲中使用并發控制,來管理訪問。
總之,實體Bean代表一種數據集:可以訪問這些數據集以滿足用戶的請求。
3、消息驅動bean(Message DrivenBean)
消息驅動Bean要與JMS結合使用,以提供消息驅動的異步處理功能。例如電子商務系統的交易確認就可以用消息驅動Bean來實現。
消息驅動Bean作為JMS隊列和主題的監聽器部署,當有JMS消息到達,系統就會調用消息驅動Bean去完成業務邏輯方法。
總之,客戶機不能直接調用消息驅動Bean,客戶通過發送JMS消息調用消息驅動Bean。
posted @ 2009-03-13 15:11 斷點 閱讀(122) | 評論 (0)