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


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

          常用鏈接

          留言簿(4)

          隨筆檔案(6)

          文章分類(188)

          文章檔案(206)

          URL

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

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


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

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

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

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

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

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

          一.什么是 EJB?

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

          二.Sun 對 EJB 的期望

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

          三.特征
          • 包含處理企業(yè)數(shù)據(jù)的業(yè)務邏輯;

          • EJB實例由容器在運行時創(chuàng)建及管理;

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

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

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

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

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

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


          四:為什么選擇 EJB?

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

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


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

          四.EJB 架構(gòu)

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

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

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

          • 非Java的客戶環(huán)境,如非Java語言編寫的CORBA客戶。

          EJB組件模型的組成部分

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

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

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

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

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

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

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

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

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

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

          Enterprise Bean類
          Enterprise Bean類包含了組件的實現(xiàn)細節(jié)。

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

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


          五. 簡化的編程模型

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


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

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

          六:EJB組件模型的靈活性

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

          七:何時使用EJB組件:

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

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

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

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

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 白山市| 伽师县| 南通市| 嘉兴市| 应城市| 宝应县| 呈贡县| 扬州市| 无棣县| 德阳市| 富锦市| 凌源市| 凤山县| 宁明县| 孟津县| 洛扎县| 扶风县| 赤水市| 苍梧县| 靖江市| 鄂托克前旗| 牡丹江市| 古田县| 贡山| 徐闻县| 梧州市| 临汾市| 新田县| 庄河市| 澄江县| 东光县| 荆门市| 金秀| 黑山县| 上思县| 都匀市| 太白县| 汾西县| 虹口区| 乌兰察布市| 英山县|