国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

什么是 Enterprise JavaBeans 組件(3)

2019-11-18 12:36:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  本文的第 3 部分說(shuō)明 EnterPRise javaBeans 組件的部署過(guò)程,部署并不僅僅是安裝,因?yàn)樗ǔ_€涉及代碼生成。部署還使用了一個(gè)非凡的部署描述符文件,此文件支持控制企業(yè)級(jí) bean 行為(如某個(gè) bean 是否需要事務(wù))的參數(shù)。bean 部署的這一特性支持 bean 行為的說(shuō)明性、綱領(lǐng)性規(guī)范的 EJB 目標(biāo)。第 3 部分還比較了持久性的兩種主要類(lèi)型,bean 治理式持久性和容器治理式持久性,并討論了 EJB 組件與 CORBA 的關(guān)系。同時(shí)還給出了一個(gè)簡(jiǎn)單的三層 EJB 應(yīng)用程序。
  
  部署過(guò)程
  Enterprise JavaBeans (EJB) 組件是在稱(chēng)為部署的特定過(guò)程中安裝的。由容器組件提供對(duì)部署過(guò)程的支持。在高級(jí)別上,部署由下列步驟組成:
  
  bean 的開(kāi)發(fā)人員創(chuàng)建必需的類(lèi)文件、接口文件和控制信息。
  容器分析輸入文件并生成必要的類(lèi)。
  容器將條目添加到指向本地對(duì)象的 JNDI 命名空間中。
  EJB 組件的開(kāi)發(fā)人員編寫(xiě) bean 的 Java 源文件,此文件包含為這個(gè) bean 提供功能的業(yè)務(wù)邏輯方法,還包括 ejbCreate() 方法。bean 類(lèi)還必須實(shí)現(xiàn) javax.ejb.sessionBean 接口或 javax.ejb.EntityBean 接口。此外,bean 的開(kāi)發(fā)人員編寫(xiě)接口文件,定義對(duì) javax.ejb.EJBHome 接口和 javax.ejb.EJBObject 接口的擴(kuò)展。EJBHome 接口的擴(kuò)展,稱(chēng)為 bean 的本地接口,包含一個(gè)創(chuàng)建方法,并且假如 bean 是一個(gè)實(shí)體 bean,它還會(huì)包含一個(gè) finder 方法。EJBObject 接口的擴(kuò)展,稱(chēng)為 bean 的遠(yuǎn)程接口,指定在 bean 本身中定義的業(yè)務(wù)邏輯方法。
  
  bean 的開(kāi)發(fā)人員提供由部署描述符、環(huán)境屬性和清單式文件組成的控制信息。
  
  部署描述符是 javax.ejb.deployment.SessionDescriptor 對(duì)象或 javax.ejb.deployment.EntityDescriptor 對(duì)象的序列化實(shí)例。
  環(huán)境屬性作為鍵-值對(duì)存儲(chǔ)在一個(gè)文件中,可通過(guò) java.util.Properties 對(duì)象訪問(wèn)此文件。
  清單式文件是標(biāo)識(shí)企業(yè)級(jí) bean 及其相關(guān)文件所必需的。
  企業(yè)級(jí) bean 的類(lèi)文件、這兩個(gè)接口的類(lèi)文件、部署描述符文件、環(huán)境屬性文件和清單式文件都是使用名為 ejb-jar 的文件格式歸檔的。所生成的 ejb-jar 文件提供給容器,作為部署過(guò)程的輸入。
  
  在部署時(shí),容器分析 ejb-jar 文件的內(nèi)容,并采取必要的操作使此 bean 可用。這些操作包括:生成實(shí)現(xiàn) bean 的本地和遠(yuǎn)程接口的新 Java 類(lèi),將本地接口實(shí)現(xiàn)綁定到 JNDI 命名空間中,生成樁模塊和 skeleton helper 類(lèi),后者是支持 RMI 通信所必需的。容器也可以生成 bean 的子類(lèi),并入容器專(zhuān)用的代碼,以方便對(duì) bean 的治理。部署時(shí)由容器生成的類(lèi)通常是容器專(zhuān)用的,而不像 EJB 組件本身那樣具有可移植性。
  
  持久性、事務(wù)和安全
  在為 EJB 組件提供持久性、事務(wù)和安全服務(wù)方面,EJB 容器可扮演主要角色。是將這些服務(wù)的職責(zé)指定給容器,還是假定職責(zé)由 bean 自身負(fù)責(zé),EJB 規(guī)范為 bean 的開(kāi)發(fā)人員提供了靈活性。例如,對(duì)實(shí)體 bean 的持久性支持既可以由 bean 治理,也可以由容器治理。假如 EJB 組件開(kāi)發(fā)人員選擇使用容器治理式持久性,他們就會(huì)在部署描述符中添加一個(gè)稱(chēng)為 containerManagedFields 的屬性。根據(jù) EJB 規(guī)范:
  
  “containerManagedFields 屬性的值是一個(gè)實(shí)例字段列表,企業(yè)級(jí) bean 提供者希望,容器通過(guò)從數(shù)據(jù)庫(kù)加載或?qū)⑵浯鎯?chǔ)到數(shù)據(jù)庫(kù),來(lái)治理這些實(shí)例字段。企業(yè)級(jí) bean 代碼不應(yīng)該包含任何數(shù)據(jù)庫(kù)訪問(wèn)調(diào)用 -- 數(shù)據(jù)庫(kù)訪問(wèn)調(diào)用將由容器工具在部署時(shí)生成。
  
  “專(zhuān)用于提供容器治理式持久性支持的容器,通常將提供豐富的部署時(shí)工具,以答應(yīng)企業(yè)級(jí) bean 部署者建立實(shí)例字段到基礎(chǔ)數(shù)據(jù)源的映射。一般認(rèn)為,盡管容器提供者的工具簡(jiǎn)化了映射進(jìn)程,但映射進(jìn)程仍可能涉及到 bean 部署者(即映射進(jìn)程不是全自動(dòng)的)。”(Enterprise JavaBeans Specification 1.0)
  
  除了支持容器治理式持久性以外,EJB 體系結(jié)構(gòu)還支持容器對(duì)事務(wù)的治理。該規(guī)范規(guī)定:
  
  
  “Enterprise JavaBeans 是一種高級(jí)組件框架,它試圖使應(yīng)用程序開(kāi)發(fā)人員不面對(duì)系統(tǒng)的復(fù)雜性。因此,大多數(shù)企業(yè)級(jí) bean 及其客戶(hù)機(jī)不需要通過(guò)程序訪問(wèn)事務(wù)治理。”(Enterprise JavaBeans Specification 1.0)
  
  當(dāng) bean 的開(kāi)發(fā)人員依靠容器進(jìn)行事務(wù)治理時(shí),就稱(chēng)為容器治理式定界,容器使用在部署時(shí)提供的事務(wù)屬性:
  
  “無(wú)論客戶(hù)機(jī)何時(shí)調(diào)用企業(yè)級(jí) bean,容器都會(huì)介入這個(gè)方法調(diào)用。這種介入答應(yīng)容器通過(guò)事務(wù)屬性顯式控制事務(wù)定界。例如,假如企業(yè)級(jí) bean 部署了 TX_REQUIRED 事務(wù)屬性,則無(wú)論何時(shí),只要客戶(hù)機(jī)調(diào)用支持事務(wù)的企業(yè)級(jí) bean,容器就會(huì)自動(dòng)啟動(dòng)事務(wù),而客戶(hù)機(jī)并不與任何事務(wù)上下文相關(guān)聯(lián)。”(Enterprise JavaBeans Specification 1.0)
  
  假如開(kāi)發(fā)人員選擇在 bean 內(nèi)支持事務(wù),則他們?cè)诓渴鹈枋龇兄付?TX_BEAN_MANAGED 事務(wù)屬性,然后就可以在 bean 自身內(nèi)部自由使用 javax.transaction.UserTransaction 接口劃分事務(wù)邊界。通過(guò)認(rèn)出 TX_BEAN_MANAGED 事務(wù)屬性,容器就能知道不必介入事務(wù)支持。
  
  通過(guò)增強(qiáng) accessControlEntry 對(duì)象和 RunAs 安全標(biāo)識(shí)中指定的限制,容器為 EJB 組件提供安全支持。AccessControlEntry 對(duì)象在 bean 級(jí)別上或針對(duì)單個(gè)方法,將 Identity 對(duì)象與企業(yè)級(jí) bean 相關(guān)聯(lián)。Identity 對(duì)象反映答應(yīng)調(diào)用 bean 的方法的用戶(hù)或角色。當(dāng)容器試圖訪問(wèn)數(shù)據(jù)源或另一個(gè) bean 時(shí),它們也會(huì)將 RunAs 安全身份應(yīng)用于 EJB 組件。可將 RunAs 身份設(shè)置為等同于某個(gè)特定用戶(hù)帳戶(hù)、有權(quán)限的系統(tǒng)帳戶(hù)或客戶(hù)機(jī)安全身份。訪問(wèn)控制和 RunAs 的信息是 bean 的開(kāi)發(fā)人員在部署描述符中指定的,將影響容器治理 bean 的與安全有關(guān)的行為方式。
  
  雖然 EJB 1.0 規(guī)范也提到安全問(wèn)題,但更具體的安全功能定義,見(jiàn)該規(guī)范的后續(xù)版本。
  
  CORBA 和 EJB 技術(shù)的關(guān)系
  公用對(duì)象請(qǐng)求代理程序體系結(jié)構(gòu) (CORBA) 為分布式對(duì)象的平臺(tái)中立和語(yǔ)言中立的計(jì)算環(huán)境奠定了基礎(chǔ)。在 CORBA 環(huán)境中,功能駐留于對(duì)象之中,而客戶(hù)機(jī)可通過(guò)對(duì)象請(qǐng)求代理程序 (ORB) 訪問(wèn)這些對(duì)象。完整的 CORBA 實(shí)現(xiàn)提供 ORB,外加稱(chēng)為 CORBA 對(duì)象服務(wù)和 CORBA 公用工具的幾個(gè)運(yùn)行時(shí)服務(wù)。也可只提供 ORB,不提供相關(guān)聯(lián)的對(duì)象服務(wù)和公用工具(例如,IBM 就提供這樣的兩種獨(dú)立 ORB)。實(shí)現(xiàn)基本 ORB 功能的軟件稱(chēng)為 ORB 核心。為了支持語(yǔ)言無(wú)關(guān)性,CORBA 應(yīng)用程序是用接口定義語(yǔ)言 (IDL) 編寫(xiě)的。該語(yǔ)言在語(yǔ)法上類(lèi)似于 C++,但不包含語(yǔ)義:IDL 中指定的操作是操作接口,而不是操作實(shí)現(xiàn)。由于它對(duì)多種平臺(tái)和多種語(yǔ)言的支持,以及源自其分布式特征的可伸縮性,CORBA 非常適合于治理企業(yè)規(guī)模的信息系統(tǒng)。
  
  設(shè)計(jì) EJB 規(guī)范也是為了支持企業(yè)信息系統(tǒng)。這樣說(shuō)來(lái),CORBA 是一個(gè)競(jìng)爭(zhēng)者嗎?根據(jù) Frequently Asked Questions for Enterprise JavaBeans,答案是否定的:
  
  “實(shí)際上,EJB 技術(shù)很好地補(bǔ)充了 CORBA。CORBA 提供了一個(gè)強(qiáng)大的基于標(biāo)準(zhǔn)的基礎(chǔ)結(jié)構(gòu),可在此結(jié)構(gòu)之上構(gòu)建 EJB 服務(wù)器。EJB 技術(shù)使得在 CORBA 基礎(chǔ)結(jié)構(gòu)的頂層構(gòu)建應(yīng)用程序變得更為輕易。”(Enterprise JavaBeans 常見(jiàn)問(wèn)題解答)
  
  雖然 EJB 規(guī)范和 CORBA 規(guī)范說(shuō)明的是不同的技術(shù),但 EJB 實(shí)現(xiàn)目前利用 CORBA 技術(shù)的某些方面。一個(gè)例子就是 RMI/IIOP。EJB 規(guī)范要求 EJB 組件及其容器使用 Remote Method Invocation (RMI) 技術(shù),實(shí)現(xiàn)分布式對(duì)象之間的方法調(diào)用。 RMI 規(guī)定遠(yuǎn)程方法的語(yǔ)法和語(yǔ)義,但并不規(guī)定應(yīng)使用何種傳輸協(xié)議提供網(wǎng)絡(luò)連接。CORBA Internet 對(duì)象請(qǐng)求代理程序間協(xié)議 (IIOP) 基本上定義了通過(guò) TCP/IP 傳輸 CORBA 消息的一種方法。開(kāi)發(fā)使用 IIOP 消息形式交換 RMI 數(shù)據(jù)的 EJB 實(shí)現(xiàn),說(shuō)明了 EJB 應(yīng)用程序怎樣才能有效地使用 CORBA 技術(shù)的各部分。這種網(wǎng)絡(luò)也支持與 CORBA 應(yīng)用程序的互操作性,后者使用 IIOP 發(fā)送本地 CORBA 消息,與 RMI 無(wú)關(guān)。IBM 的 EJB 實(shí)現(xiàn),即 WebSphere application Server,優(yōu)化了 IIOP 的使用,方法是,弄清楚分布式對(duì)象何時(shí)駐留在同一臺(tái)服務(wù)器上,并且只在對(duì)象確實(shí)在遠(yuǎn)程時(shí)才調(diào)用 IIOP。
  
  為了方便既并入 EJB 技術(shù),又并入 CORBA 技術(shù)的企業(yè)系統(tǒng)的開(kāi)發(fā),Sun Microsystems 在 EJB 規(guī)范和 CORBA 之間創(chuàng)建了一種映射。將 EJB 體系結(jié)構(gòu)映射到 CORBA,影響到 EJB 技術(shù)的幾個(gè)方面,包括對(duì)象分布、命名和事務(wù)。CORBA 映射的主要目的是,保證不同廠商構(gòu)建的 EJB 服務(wù)器之間的互操作性。互操作性提供以下好處:
  
  CORBA 客戶(hù)機(jī)可以訪問(wèn)部署在基于 CORBA 的 EJB 服務(wù)器上的 EJB 組件
  客戶(hù)機(jī)程序在事務(wù)中可以將對(duì) CORBA 對(duì)象的調(diào)用,與對(duì)企業(yè)級(jí) bean 的調(diào)用混合在一起
  事務(wù)可以跨多個(gè) bean,而這些 bean 又位于來(lái)自不同廠商的基于 CORBA 的多臺(tái) EJB 服務(wù)器上
  使用來(lái)自某個(gè)廠商的 ORB 的客戶(hù)機(jī),可以訪問(wèn)另一個(gè)廠商基于 CORBA 的 EJB 服務(wù)器上的 bean
  對(duì)于要訪問(wèn) EJB 組件的 CORBA 客戶(hù)機(jī)來(lái)說(shuō),bean 接口被映射到 IDL。例如,可將股票交易 bean 中定義的 buy() 和 sell() 方法,指定為 IDL 文件中的 CORBA 操作。非 bean 的 CORBA 客戶(hù)機(jī),如 C++ 客戶(hù)機(jī),可以訪問(wèn)這個(gè) bean,并用標(biāo)準(zhǔn) CORBA 調(diào)用來(lái)調(diào)用 bean 的方法。假如容器使用 IIOP 作為它的分布式對(duì)象協(xié)議,則該容器的職責(zé)是,生成與企業(yè)級(jí) bean 及其接口對(duì)應(yīng)的 IDL。
  
  EJB 命名服務(wù),它以“CORBA 對(duì)象服務(wù)”命名服務(wù)為基礎(chǔ),使 EJB 組件可用于 CORBA 客戶(hù)機(jī)。Java Naming and Directory Interface (JNDI) 可提供到 CORBA 命名服務(wù)的接口,同時(shí),客戶(hù)機(jī)既可以通過(guò) JNDI 調(diào)用間接訪問(wèn)基礎(chǔ)命名服務(wù),也可以通過(guò)“CORBA 對(duì)象服務(wù)” (COS) 命名 API 直接訪問(wèn)該服務(wù)。
  
  EJB 事務(wù)支持依靠于 CORBA Transaction Service,即 Object Transaction Service (OTS)。Java T

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 屯门区| 龙岩市| 沙河市| 芦溪县| 鲁甸县| 大城县| 富民县| 宣化县| 水富县| 齐河县| 朝阳区| 灵山县| 宜兴市| 张家界市| 金昌市| 内乡县| 通海县| 双城市| 荆门市| 泉州市| 清流县| 全州县| 铜梁县| 乾安县| 颍上县| 河西区| 宜良县| 临海市| 军事| 贺州市| 凤阳县| 梓潼县| 高清| 闽侯县| 繁峙县| 连城县| 烟台市| 綦江县| 张家港市| 临清市| 长海县|