【永恒的瞬間】
          ?Give me hapy ?


          誘惑的世界,難以自我!
          名利的生活,面具包裹!
          我們的人生,充當角色!
          寂靜的深夜,真實自我!

          常用鏈接

          留言簿(4)

          隨筆檔案(6)

          文章分類(188)

          文章檔案(206)

          URL

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          EJB是sun的服務器端組件模型,最大的用處是部署分布式應用程序,類似微軟的.com技術。憑借java跨平臺的優勢,用EJB技術部署的分布式系統可以不限于特定的平臺。


          EJB (Enterprise JavaBean)是J2EE的一部分,定義了一個用于開發基于組件的企業多重應用程序的標準。其特點包括網絡服務支持和核心開發工具(SDK)。

          在J2EE里,Enterprise Java Beans(EJB)稱為Java 企業Bean,是Java的核心代碼,分別是會話Bean(Session Bean),實體Bean(Entity Bean)和消息驅動Bean(MessageDriven Bean)。  

          1.Session Bean用于實現業務邏輯,它可以是有狀態的,也可以是無狀態的。每當客戶端請求時,容器就會選擇一個Session Bean來為客戶端服務。Session Bean可以直接訪問數據庫,但更多時候,它會通過Entity Bean實現數據訪問。

          2.Entity Bean是域模型對象,用于實現O/R映射,負責將數據庫中的表記錄映射為內存中的Entity對象,事實上,創建一個Entity Bean對象相當于新建一條記錄,刪除一個Entity Bean會同時從數據庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態和數據庫同步。

          3.MessageDriven Bean是EJB2.0中引入的新的企業Bean,它基于JMS消息,只能接收客戶端發送的JMS消息然后處理。MDB實際上是一個異步的無狀態 Session Bean,客戶端調用MDB后無需等待,立刻返回,MDB將異步處理客戶請求。這適合于需要異步處理請求的場合,比如訂單處理,這樣就能避免客戶端長時間 的等待一個方法調用直到返回結果。

          EJB實際上是SUN的J2EE中的一套規范,并且規定了一系列的API用來實現把EJB概念轉換成EJB產品.EJB是BEANS,BEANS是什么概 念,那就是得有一個容納她,讓她可勁造騰的地方,就是得有容器.EJB必須生存在EJB容器中.這個容器可是功能強大之極!她首先要包裝你BEAN, EJB的客戶程序實際上從來就不和你編寫的EJB直接打交道,他們之間是通過HOME/REMOTE接口來發生關系的.它負責你的BEAN的所有的吃喝拉 薩睡,比如BEAN的持續化,安全性,事務管理。。。

          一.什么是 EJB?

          一個技術規范:EJB 從技術上而言不是一種"產品"
          EJB 是一種標準描述了構建應用組件要解決的:
          可擴展 (Scalable)
          分布式 (Distributed)
          事務處理 (Transactional)
          數據存儲 (Persistent)
          安全性 (Secure)

          二.Sun 對 EJB 的期望

          提供一個標準的分布的、基于 OO 的組件架構
          屏蔽復雜的系統級功能需求
          Write once, run anywhere
          與非 Java 應用之間的互操作能力
          兼容 CORBA 標準

          三.特征
          • 包含處理企業數據的業務邏輯;

          • EJB實例由容器在運行時創建及管理;

          • 可在部署時通過編輯環境項(environment entry)定制EJB的行為;

          • EJB的各種服務設置信息,如事務及安全屬性,從EJB的類文件中分離出來。在部署和運行時,可通過工具對EJB的服務設置信息進行管理;

          • EJB部署到EJB容器后,客戶端才可通過EJB容器對EJB進行間接訪問;

          • EJB可使用任何EJB規范中指定可以使用的服務;

          • EJB可以不經改動代碼或重新編譯,即可直接裝配到一個新的應用中;

          • 當EJB被部署到不同的容器或服務器時,EJB開發者定義的客戶視圖(Client View)不會發生改變。


          四:為什么選擇 EJB?

          EJB 服務器完成"繁雜"的工作:
            應用開發人員關注于業務邏輯的實現而不是底層的實現機制(類似于 4GL 語言設計的目標)

          事務處理:
            服務器提供對EJB組件的事務控制服務,多個業務操作同時成功,或全部失敗,可以通過代碼外的 部署描述來設置組件事務處理級別 ;


          可擴展性:
             EJB 可以根據您應用的增長而擴展,EJB 服務器往往還提供了負載均衡和
          安全性:
             由 EJB 服務器提供資源的訪問權限控制

          四.EJB 架構

          EJB的客戶端有以下幾種類型:

          • 運行于相同容器或其他容器中的EJB;

          • 一般的Java類,如Java應用程序、applet、servlet;

          • 非Java的客戶環境,如非Java語言編寫的CORBA客戶。

          EJB組件模型的組成部分

          一般,EJB組件由以下幾個部分組成,即組件服務器 (Server),容器 (Container),類 (Class) ,實例 (Instance)
          接口、Home接口,Remote 接口、Enterprise Bean類和部署描述文件(Message-driven Bean不具有組件接口和Home接口)。下面分別描述這些組成部分

          EJB的組件接口
            客戶端通過EJB的組件接口訪問EJB對象,組件接口中定義了可被客戶端訪問的業務方法(Message-driven Bean不具有組件接口)。組件接口分為遠程接口和本地接口。

          EJB對象通過遠程或本地接口,提供遠程客戶訪問或本地客戶訪問的支持。

             提供遠程接口的EJB擁有可被遠程客戶訪問或本地客戶訪問的能力。對于提供了遠程接口的對象,客戶可通過標準的Java RMI(Remote Method Invocation)進行遠程對象調用。

            提供本地接口的EJB只可被本地組件通過本地接口進行調用。所謂本地組件,即是運行于相同Java虛擬機中的本地EJB對象。本地調用通過一般的標準Java編程語言接口進行。

          EJB可以同時提供本地接口和遠程接口,但一般只提供二者之一。

          HOME接口
             EJB2.0規定了通過Home接口來提供客戶端創建、清除和在同種類型的EJB中查找特定EJB對象的方法(Message-driven Bean不包含Home接口)。對于提供遠程接口的EJB,需要提供遠程Home接口;提供本地接口的EJB,需要提供本地Home接口。

             Home接口由EJB開發人員編寫,遠程Home接口必須擴展(extend)javax.ejb.EJBHome接口;本地Home接口必須擴展(extend)javax.ejb.EJBLocalHome接口。

          EJB客戶端通過標準的JNDI(Java Naming and Directory Interface™)API定位Home接口。

           EJB3.0中,Home接口的功能由依賴注入以及可選的生命周期回調方法實現。EJB組件不再需要提供Home接口

          Enterprise Bean類
          Enterprise Bean類包含了組件的實現細節。

            Enterprise Bean類由EJB開發人員編寫,EJB2.0規范中的Enterprise Bean組件,必須分別聲明實現如下接口,javax.ejb.SessionBean、javax.ejb.EntityBean和javax.ejb.MessageDrivenBean。符合EJB3.0規范的Enterprise Bean組件則不須實現以上接口,而使用@Stateful、@Stateless、@MessageDriven注解標記EJB類。

          部署描述文件
             部署描述文件是用于包含Enterprise Bean的運行時屬性(安全性,事務性等等)信息的文件,與以上部分一起形成完整的EJB組件,通常部署描述文件使用圖形化的部署工具進行處理。在EJB3.0規范中,EJB部署描述文件并不是必須的,可以在代碼中使用注解來為EJB類附加部署信息。但部署描述文件可以令管理人員在部署時更為靈活。EJB3.0規范規定,當部署描述文件的信息與程序代碼中的注解信息出現沖突時,以部署描述文件為準。這樣管理人員就可以通過修改部署描述文件來改變部署信息,而不須重新編譯應用程序。


          五. 簡化的編程模型

          關注于業務邏輯實現:EJB 負責生命周期 (lifecycle), 數據存儲 (persistence), 事務處理語義 (transactional semantic), 安全(security), ...
          通用的編程模型:各種服務的高層 API
          Java 是其編程語言


          EJB( 業務邏輯代碼 ) 表示了與特定商業領域(例如銀行、零售等行業)相適應的邏輯。它由
          運行在業務邏輯層的 enterprise bean 處理。一個 enterprise bean 可以從客戶端接受數據,對
          它進行處理,并將其發送到企業信息系統層以作存儲;同時它也可以從存儲器獲取數據,
          處理后將其發送到客戶端應用程序

          有三種類型的 enterprise beans:session beans、entity beans 和 message-driven beans。
          Session bean 描述了與客戶端的一個短暫的會話。當客戶端的執行完成后,session bean 和
          它的數據都將消失;與之相對應的是一個 entity bean 描述了存儲在數據庫表中的一行持久
          穩固的數據,如果客戶端終止或者服務結束,底層的服務會負責 entity bean 數據的存儲。
          Message-driven bean 結合了 session bean 和 Java 信息服務(JMS)信息監聽者的功能,它允
          許一個商業組件異步地接受 JMS 消息。

          六:EJB組件模型的靈活性

          EJB組件模型的靈活性表現在:
          EJB可作為表示無狀態服務的對象;
          EJB可作為表示無狀態服務的對象,可通過向指定的消息隊列或主題發送JMS消息,以實現對此對象的異步調用;
          EJB可作為表示與特定客戶的會話對象。此類對象在客戶進行跨越方法的調用時,自動維持會話狀態;
          EJB可作為表示業務對象的實體對象,在多個客戶間共享;
          EJB可作為一個細粒度的持久對象,包含在一個粗粒度業務對象的持久狀態中。
          通常,被遠程訪問的組件往往是粗粒度的業務對象,如訂單、雇員紀錄;細粒度的業務對象往往不會采用可遠程訪問的EJB組件模型,如訂單中的采購項、雇員紀錄中的地址,而是采用可本地訪問的EJB組件模型或是作為EJB的附屬類出現。

          七:何時使用EJB組件:

          下面是在使用EJB組件模型構建企業應用時,一些判斷EJB組件模型是否適用的標準。
          EJB組件是構建分布式企業應用的組件模型技術;
          EJB組件規范是針對分布式企業應用制定的,是基于分布式對象技術的Java組件;EJB組件不涉及表示層的內容,因此,必須與其他表示層技術一起使用;應用服務器提供了可以解決安全性、資源共享、持續運行、并行處理、事務完整性等復雜問題的服務,從而簡化了商業應用系統。
          應用客戶端類型的考慮;
          一般,企業應用開發都會有多種類型的客戶端的需求,訪問相同的數據或業務邏輯。如使用Web客戶提供對應用的基于Internet的訪問,使用應用客戶端提應用基于Intranet的訪問。EJB組件模型將業務邏輯與數據封裝到EJB組件中,提供對多種客戶端的支持。

          應用數據與業務邏輯的并發訪問控制的考慮;
          企業應用通常需要提供數據或業務邏輯的并發訪問能力,以此保證數據的完整性,由于EJB 組件控制對后臺數據的訪問,并管理當前事務和數據庫的內部鎖定。節省了編寫數據庫控制邏輯的工作量,同時也保證了數據的一致性與正確性,從而降低了總編程量。
          全局事務控制的考慮;
          企業應用通常需要對不同的資源進行事務性的操作,如某個操作需要對數據庫進行訪問,同時可能需要通過JMS消息服務發送消息,或者,需要訪問兩個位于不同物理位置的異種數據庫,這些操作必須在相同的事務環境中完成。
          基于訪問控制的考慮;
          企業應用中往往需要對某些資源進行訪問控制,如需要針對不同用戶對組件方法調用設置訪問控制策略,對訪問特定Web資源的用戶設置訪問控制策略等.

          posted on 2007-10-22 09:25 ???MengChuChen 閱讀(1106) 評論(1)  編輯  收藏 所屬分類: EJB3.0

          FeedBack:
          # re: EJB 簡介
          2012-06-08 09:12 | fff
          垃圾  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 普兰店市| 舞阳县| 巨鹿县| 鸡东县| 泰安市| 南城县| 南涧| 株洲市| 井陉县| 东山县| 虹口区| 廉江市| 蓝田县| 襄垣县| 苏尼特右旗| 玉林市| 西乡县| 大姚县| 平凉市| 古田县| 永康市| 逊克县| 密山市| 故城县| 靖边县| 西平县| 嘉定区| 射洪县| 嘉鱼县| 三河市| 伊宁市| 邵阳县| 辽阳县| 武功县| 芜湖县| 清新县| 石楼县| 临邑县| 咸丰县| 桃江县| 新丰县|