(第5講)javabean、EJB區別

http://www.cnblogs.com/qianye/archive/2012/11/24/2786423.html

1、javabean是一種java語言編寫的可重用組件。javabean的類必須是具體的和公開的,並且具有無參數構造器,javabean通過提供符合一致性設計模式(這和通常的設計模式不同,只是一種理念)的公共方法暴露內部域成員變量,通常是get/set方法

2、EJB是指運行在EJB容器中的javabean,Tomcat是web容器的參考實現。一個完整的JavaEE服務器應該包括WEb容器和EJB容器;WEB容器中無法運行EJB,同事所有的javabean都是在服務器運行的。如果在客戶端的話,就會標稱C/S結構了。目前來說除非需要分佈式處理,不然那基本上不需要考慮EJB了。Spring能很好的處理分佈計算之外的一切。用JavaScript來進行服務器調用的話,屬於Ajax的範圍了。
3、JavaBean的目的是爲了將可以重複使用的軟件代碼打包標準。特別是用與幫助廠家開發在綜合開發環境(IDE)下使用的java軟件部件。這些包括如Grid控件,用戶可以將該部件拖放到開發環境中。從此,JavaBean就可以擴展爲一個java web 應用的標準部件,並且JavaBean部件框架已經擴展爲企業版的 Bean(EJB)。  
 JavaBean 和 Server Bean(通常稱爲 Enterprise JavaBean (EJB))有一些基本相同之處。它們都是用一組特性創建,以執行其特定任務的對象或組件。它們還有從當前所駐留服務器上的容器獲得其它特性的能力。這使得 bean 的行爲根據特定任務和所在環境的不同而有所不同。
JavaBean 是使用 java.beans 包開發的,它是 Java 2 標準版的一部分。JavaBean 是一臺機器上同一個地址空間中運行的組件。JavaBean 是進程內組件。Enterprise Bean 是使用 javax.ejb 包開發的,它是標準 JDK 的擴展,是 Java 2 Enterprise Edition 的一部分。Enterprise Bean 是在多臺機器上跨幾個地址空間運行的組件。因此 Enterprise Bean 是進程間組件。JavaBean 通常用作 GUI 窗口小部件,而 Enterprise Bean 則用作分佈式商業對象.

| javabean                                                    | Enterprise JavaBean                                 |
|-----------------------------------------------------------------|----------------------------------------------------------------|
| 使用java.beans包開發                                 | 使用javax.ejb包開發                                  |
| beans包是java2標準的一部分                       | ejb包是標準JDK的擴展                             |
| 一臺機器上同一個地址空間中運行的組件      | 在多臺機器上跨幾個地址空間運行的組件    |
| javabean是進程內組件                                 | ejb是進程間組件                                      |
| 通常用作GUI窗口小部件                              | 用作分佈式商業對象                                 |

 

javabean存在與四種範圍:頁面(page),請求(request),對話(sessin),應用(application)。

對話範圍:
對話範圍的JavaBean 主要應用與跨多個頁面和時間段: 例如填充用戶信息。 添加信息並且接受回饋,保存用戶最近執行頁面的軌跡。對話範圍JavaBean保留一些和用戶對話 ID 相關的信息。這些信息來自臨時的對話cookie,並在當用戶關閉瀏覽器時,這個cookie將從客戶端和服務器刪除。
頁面/請求範圍:
頁面和請求範圍的JavaBean有時類似表單 的bean , 這是因爲他們大都用於處理表單。表單需要很長的時間來處理用戶的輸入??外頁面和請求範圍的bean可以用於減少大型站點服務器上的負載,如果使用對話bean,耽擱的處理就可能會消耗掉很多資源。
應用:
應用範圍通常應用於服務器的部件,例如 JDBC連接池、應用監視、用戶計數和其他參與用戶行爲的類。

javaBean持久化是指以流的形式,用JavaBean的屬性來保存bean,並在以後的某個時候或者在另一個虛擬機中再將它們讀回來,和對象的序列化有點類似,然而它們有一個非常重要的區別,javabean持久化適合於長期存儲。

當一個對象被序列化存儲以後,如果類的實現發生了變化,則把對象重新讀出來的時候就要在新舊數據表現之間進行轉化。因此對象序列化僅適合於短期存儲或者應用程序之間的RMI。

JavaBean的持久化可以考慮三種方式:數據庫、XML文件、二進制流

第一種方式可以使用O/R Mapping技術將一個JavaBean映射到關係數據庫中的表;
第二種方式可以使用JAVA1.4 的java.beans.XMLDecoder/java.beans.XMLEncoder將Bean映射到一個XML文件中;
第三種方式要求Bean實現Java的Serializable接口;


http://blog.sina.com.cn/s/blog_868000de0100xv60.html


兩者是完全不同的
1、JavaBean是一個組件,而EJB就是一個組建框架
2、JavaBean面向的是業務邏輯和表示層的顯示,通過編寫一個JavaBean,可以將業務邏輯的事件和事務都放在其中,然後通過它的變量屬性將所需要的內容在表示層傳遞顯示。
EJB是部署在服務器上的可執行組建或商業對象。EJB有一個部署描述符,通過這個部署描述符可以對EJB的屬性進行描述。EJB不和表示層交互。

3、通常,對於簡單的服務器端應用來說,使用JavaBean是很不錯的選擇。雖然對於複雜的服務器端應用來說,使用JavaBean同樣可以達到相同的效果,但這麼做,所有底層的實現都必須手工來重新編寫。而EJB不必用戶關心它的底層操作,而只要關心它的外部實現即可。
的確,利用JavaBean來與EJB共同完成實現,是十分常見的。

4、從概念層上理解就是:
JavaBean是領域模型的具體化類,保存了信息和業務。只有set、get方法的JavaBean是失血模型。現在來說一般多少不太歡迎這種東西。把本屬於領域對象的業務邏輯都丟掉了。
實際上現在的JavaEE系統分這麼幾個層。
表現層(Struts、JSF等)+應用層(處理業務,可以是JavaBean也可以是EJB)+持久層(JDBC、Hibernate)。
不要在Struts的Action類中寫業務代碼,那是反模式。不然日後需要修改的時候很麻煩的。Action中只有流程指向和對應用層的調用。

5、從服務其方面考慮就是:

JavaBean 和 Server Bean(通常稱爲 Enterprise JavaBean(EJB))有一些基本相同之處。它們都是用一組特性創建,以執行其特定任務的對象或組件。它們還有從當前所駐留服務器上的容器獲得其它特性的能力。這使得bean 的行爲根據特定任務和所在環境的不同而有所不同。

這開闢了巨大商機。因爲 JavaBean 是與平臺無關的,所以對於將來的解決方案,供應商可以輕易向不同用戶推出其客戶機方的JavaBean,而不必創建或維護不同的版本。

這些 JavaBean 可以與執行商業功能(例如訂購、信用卡處理、電子匯款、存貨分配、運輸等)的 EJB配合使用。這裏有巨大潛力,而這正是組件代理(WebSphereApplication Server企業版)設計提供的那種潛力。

JavaBean 是一種組件,它在內部有接口或有與其相關的屬性,以便不同人在不同時間開發的 bean 可以詢問和集成。可以構建一個bean,而在以後構造時將其與其它 bean 綁定。

這種過程提供了先構建,然後重複使用的方法,這就是組件的概念。可以將這種單一應用程序部署成獨立程序、ActiveX組件或在瀏覽器中。

JavaBean 因其外部接口(即屬性接口)而與純對象不同。這種接口允許工具讀取組件要執行的功能,將其與其它 bean掛鉤,以及將其插入其它環境。

JavaBean 設計成對單一進程而言是本地的,它們在運行時通常可視。這種可視組件可能是按鈕、列表框、圖形或圖表 -但這不是必需的。

可執行組件

Server Bean 或 EJB是部署在服務器上的可執行組件或商業對象。有一個協議允許對其進行遠程訪問或在特定服務器上安裝或部署它們。有一系列機制允許它們將服務安全性、事務行爲、併發性(由多個客戶機同時訪問的能力)和持久性(其狀態可以保存多久)的主要方面授權給EJB 服務器上其所在的容器。

當安裝在容器中時,它們獲得各自的行爲,該行爲提供不同質量的服務,因此,選擇正確的 EJB 服務器至關重要。這正是 IBMWebSphere 企業版的優勢所在


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章