明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ejb一則,franzy@163.net多多交流哦

[摘要]什么是 Enterprise JavaBeans 組件?Ken Nordby軟件工程師,IBM2000 年 7 月 本文的第 3 部分說(shuō)明 Enterprise JavaBeans 組件的部署過(guò)程,...
什么是 Enterprise JavaBeans 組件?


Ken Nordby
軟件工程師,IBM
2000 年 7 月




本文的第 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ì)象訪(fǎng)

問(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ù)訪(fǎng)問(wèn)調(diào)用 -- 數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)調(diào)用將由容器工具

在部署時(shí)生成。


“專(zhuān)用于提供容器管理式持久性支持的容器,通常將提供豐富的部署時(shí)工具,以

允許企業(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ò)程序訪(fǎng)問(wèn)事

務(wù)管理。”(Enterprise JavaBeans Specification 1.0)

當(dāng) bean 的開(kāi)發(fā)人員依賴(lài)容器進(jìn)行事務(wù)管理時(shí),就稱(chēng)為容器管理式定界,容器使

用在部署時(shí)提供的事務(wù)屬性:


“無(wú)論客戶(hù)機(jī)何時(shí)調(diào)用企業(yè)級(jí) bean,容器都會(huì)介入這個(gè)方法調(diào)用。這種介入允許

容器通過(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ì)象反映允許調(diào)用

bean 的方法的用戶(hù)或角色。當(dāng)容器試圖訪(fǎ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ī)安全身份。訪(fǎng)問(wèn)控制和 RunAs 的信息是

bean 的開(kāi)發(fā)人員在部署描述符中指定的,將影響容器管理 bean 的與安全有關(guān)的

行為方式。

雖然 EJB 1.0 規(guī)范也提到安全問(wèn)題,但更詳細(xì)的安全功能定義,見(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) 訪(fǎng)問(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)用程序變得更為容易!保‥nterprise 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

映射的主要目的是,保證不同廠(chǎng)商構(gòu)建的 EJB 服務(wù)器之間的互操作性;ゲ僮餍

提供以下好處:

CORBA 客戶(hù)機(jī)可以訪(fǎng)問(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)自不同廠(chǎng)商的基于 CORBA 的多臺(tái)

EJB 服務(wù)器上
使用來(lái)自某個(gè)廠(chǎng)商的 ORB 的客戶(hù)機(jī),可以訪(fǎng)問(wèn)另一個(gè)廠(chǎng)商基于 CORBA 的 EJB 服

務(wù)器上的 bean
對(duì)于要訪(fǎng)問(wèn) EJB 組件的 CORBA 客戶(hù)機(jī)來(lái)說(shuō),bean 接口被映射到 IDL。例如,可

將股票交易 bean 中定義的 buy() 和 sell() 方法,指定為 IDL 文件中的

CORBA 操作。非 bean 的 CORBA 客戶(hù)機(jī),如 C++ 客戶(hù)機(jī),可以訪(fǎng)問(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)用間接訪(fǎng)問(wèn)基礎(chǔ)命名服務(wù),

也可以通過(guò)“CORBA 對(duì)象服務(wù)” (COS) 命名 API 直接訪(fǎng)問(wèn)該服務(wù)。

EJB 事務(wù)支持依賴(lài)于 CORBA Transaction Service,即 Object Transaction

Service (OTS)。Java Transaction Service (JTS) 代表 OTS 的 Java 綁定,它

是語(yǔ)言中立的; CORBA 的 EJB 容器必須識(shí)別 CORBA 客戶(hù)機(jī)通過(guò) OTS 接口

發(fā)出的事務(wù)邊界,以及 EJB 應(yīng)用程序通過(guò) Java Transaction API (JTA) 接口發(fā)

出的事務(wù),JTA 是到 JTS 的應(yīng)用程序級(jí)接口。JTA 還代表 Open Group XA 接口

的 Java 綁定,以便將應(yīng)用程序資源連接到外部事務(wù)管理器。JIA 中含存的

javax.transaction.UserTransaction 接口,為事務(wù)邊界的應(yīng)用程序級(jí)控制提供

API。UserTransaction 接口,既可由其事務(wù)屬性設(shè)置為 TX_BEAN_MANAGED 的

bean 使用,以可由 Java 客戶(hù)機(jī)使用。

使用 EJB 組件
因?yàn)?EJB 體系結(jié)構(gòu)被設(shè)計(jì)為高度靈活的,并支持使用任意復(fù)雜的方式連接企業(yè)級(jí)

bean,所以可構(gòu)建許多不同的方案,來(lái)說(shuō)明應(yīng)用程序可怎樣使用企業(yè)級(jí) bean。一

個(gè)有用的方案提出將 EJB 組件表示為三層信息系統(tǒng)的關(guān)鍵組件,該系統(tǒng)將企業(yè)數(shù)

據(jù)、事務(wù)和應(yīng)用程序資源連接到 Web 上。

基于 EJB 的三層編程模型視 Web 瀏覽器為第一層,視支持應(yīng)用程序的 Web 服務(wù)

器為第二層,視企業(yè)信息資源為第三層。在此編程模型中,除了 EJB 技術(shù)外,還

實(shí)現(xiàn)了 Java servlet 技術(shù)、JavaBeans 技術(shù)和 Java Server Page (JSP) 技術(shù)

。下圖顯示了各層的排列情況:




第一層是瘦客戶(hù)機(jī) -- 通常是 Web 瀏覽器,它可以處理普通 Web 數(shù)據(jù)類(lèi)型,如

HTML 和 GIF,并支持 HTTP 通信。第二層是 Web 應(yīng)用程序服務(wù)器,它是用代碼

擴(kuò)充的 Web 服務(wù)器,用來(lái)對(duì)能夠通過(guò) Web 服務(wù)器調(diào)用的應(yīng)用程序提供運(yùn)行時(shí)支

持,F(xiàn)有的 Web 應(yīng)用程序都沿用 CGI-BIN 編程模型,但預(yù)計(jì)第二層應(yīng)用程序開(kāi)

發(fā)將轉(zhuǎn)向 Java servlet 編程模型,后者提供大幅改善的性能和可移植性。除支

持 Java servlet 外,Web 應(yīng)用程序服務(wù)器還將添加 EJB 服務(wù)器功能,以支持使

用 EJB 組件的應(yīng)用程序。第三層代表企業(yè)級(jí)信息資源,可以包括關(guān)系數(shù)據(jù)庫(kù)和面

向?qū)ο蟮臄?shù)據(jù)庫(kù)、事務(wù)監(jiān)視器和定制的應(yīng)用程序。EJB 技術(shù)在這一設(shè)計(jì)中扮演著

關(guān)鍵角色,因?yàn),它使駐留在第二層上的應(yīng)用程序組件,與組成第三層的企業(yè)資

源之間的接口,得以標(biāo)準(zhǔn)化。

Java servlet、Java beans 和 Java server page 不是 EJB 應(yīng)用程序方案的必

需元素,但它們可與 EJB 組件一起工作,以提供基于 Java 的內(nèi)聚性的應(yīng)用程序

環(huán)境。此處描繪的環(huán)境將以下職責(zé)指定給參與工作的 Java 組件:

給 Java servlet 指定了應(yīng)用程序“控制器”的角色
JSP 頁(yè)面處理數(shù)據(jù)表示和用戶(hù)界面的任務(wù)
Java bean 充當(dāng)“數(shù)據(jù)封裝器”,存儲(chǔ)中間結(jié)果的數(shù)據(jù)
EJB 組件提供訪(fǎng)問(wèn)企業(yè)信息資源的機(jī)制
客戶(hù)可以使用一個(gè)假定的、基于 EJB 的 Web 應(yīng)用程序更新現(xiàn)有的庫(kù)存,并用容

器管理式持久性和容器管理式事務(wù),將訪(fǎng)問(wèn)庫(kù)存數(shù)據(jù)庫(kù)的位置封裝在實(shí)體 EJB 組

件的內(nèi)部。庫(kù)存票據(jù)可通過(guò) Web 瀏覽器輸入,瀏覽器提供一個(gè) HTML 表單來(lái)捕獲

產(chǎn)品編號(hào)、供應(yīng)商,等等,并在提交時(shí)調(diào)用一個(gè) servlet。servlet 代碼充當(dāng)應(yīng)

用程序控制器角色,確定哪些企業(yè)數(shù)據(jù)庫(kù)需要更新,需要用戶(hù)追加什樣的信息。

servlet 可通過(guò)代表它的實(shí)體 bean 訪(fǎng)問(wèn)主庫(kù)存數(shù)據(jù)庫(kù),并調(diào)用 JNDI 接口獲取

對(duì)此 bean 的本地對(duì)象的引用,然后使用 finder 方法定位所請(qǐng)求產(chǎn)品編號(hào)的遠(yuǎn)

程對(duì)象。此時(shí),通過(guò)調(diào)用遠(yuǎn)程對(duì)象的方法,servlet 可更新庫(kù)存計(jì)數(shù),接著容器

將此方法委托給 EJB 組件。因?yàn)槿萜鞲鶕?jù)數(shù)據(jù)庫(kù)更新,以對(duì) bean 透明的方式劃

分一個(gè)事務(wù),而且以對(duì) bean 透明的方式將數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)來(lái)保證數(shù)據(jù)持久性,

所以也就保持了數(shù)據(jù)的完整性。

從 EJB 組件返回到 servlet 的任何結(jié)果信息,都可以使用 setter 方法存儲(chǔ)在

一個(gè)(非企業(yè)的) Java bean 的屬性中。此時(shí) servlet 可將控制權(quán)轉(zhuǎn)讓給一個(gè)

適當(dāng)?shù)?JSP 頁(yè)面,以便將這些結(jié)果組合到表示格式中,并將結(jié)果返回給用戶(hù)。

JSP 頁(yè)面很可能主要由靜態(tài)文本和有關(guān)單個(gè)事務(wù)的可變信息占位符組成。在向?yàn)g

覽器發(fā)送表示數(shù)據(jù)之前,JSP 頁(yè)面使用 getter 方法從 Java bean 的屬性中獲得

可變數(shù)據(jù)元素。

基于 EJB 的三層設(shè)計(jì)提供了幾個(gè)好處,包括:

訪(fǎng)問(wèn)企業(yè)數(shù)據(jù)的業(yè)務(wù)邏輯可封裝在可重用、可移植的企業(yè)級(jí) bean 中。
現(xiàn)有的企業(yè)系統(tǒng)只需很少修改或者根本不需要修改,就可以集成為企業(yè)級(jí) bean。
企業(yè)應(yīng)用程序所需的運(yùn)行時(shí)服務(wù),如事務(wù)和持久性,可以從 bean 中分解出來(lái),

并指定給此 bean 的容器。
無(wú)須更改 EJB 組件,即可修改控制應(yīng)用程序流程的 Servlet。
Servlet 代碼可將注意力集中在應(yīng)用程序控制邏輯上,而無(wú)須考慮數(shù)據(jù)表示。
JSP 頁(yè)面可將靜態(tài)和動(dòng)態(tài)內(nèi)容混合在一起,生成表示信息。
用 Java 語(yǔ)言編寫(xiě)的系統(tǒng)組件,對(duì)于具有 JVM 的任何平臺(tái)都是可移植的。
結(jié)論
在開(kāi)發(fā)能夠支持關(guān)鍵任務(wù)的企業(yè)級(jí)信息系統(tǒng)的過(guò)程中,EJB 規(guī)范代表了 Java 技

術(shù)的下一個(gè)發(fā)展階段。EJB 組件將隨 JavaBeans 規(guī)范引入的 Java 組件模型,擴(kuò)

展到服務(wù)器領(lǐng)域,從而使業(yè)務(wù)邏輯組件的開(kāi)發(fā)可以跨企業(yè)應(yīng)用程序重用,并且可

以跨支持 Java 的平臺(tái)移植。由于包含了基于 RMI 技術(shù)的對(duì)象分布,所以支持跨

多層的可執(zhí)行組件的分立,從而允許最大的實(shí)現(xiàn)靈活性和高度可伸縮性。如果將

常規(guī)的企業(yè)應(yīng)用程序運(yùn)行時(shí)服務(wù)重新定義為可指定給容器抽象的對(duì)象服務(wù),則允

許 EJB 組件的開(kāi)發(fā)人員將精力集中在業(yè)務(wù)邏輯上,從而減小了通常與運(yùn)行時(shí)服務(wù)

相關(guān)的復(fù)雜性和平臺(tái)相關(guān)性。

增強(qiáng) Java 運(yùn)行環(huán)境,以包括命名和目錄服務(wù)的標(biāo)準(zhǔn)接口、關(guān)系數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)、事

務(wù)服務(wù)和遠(yuǎn)程對(duì)象訪(fǎng)問(wèn),使 Java 開(kāi)發(fā)人員能夠編寫(xiě)強(qiáng)健的企業(yè)應(yīng)用程序,而不

必離開(kāi) Java 編程環(huán)境。將其它 Java 技術(shù) -- 如 Java servlet 和 JavaServer

Pages 技術(shù) -- 與 EJB 組件一起使用,可創(chuàng)建一個(gè)對(duì)于大型企業(yè)系統(tǒng)來(lái)說(shuō)足夠強(qiáng)

健的緊湊編程模型,但由于使用了巧妙的接口,從而簡(jiǎn)化了開(kāi)發(fā)工作。而且,因

為 EJB 體系結(jié)構(gòu)是 JavaBeans 組件模型的邏輯擴(kuò)展,所以作為 EJB 組件開(kāi)發(fā)的

業(yè)務(wù)邏輯可跨多個(gè)企業(yè)應(yīng)用程序重用。

企業(yè)級(jí) bean 體系結(jié)構(gòu)的另一個(gè)好處是,提供了現(xiàn)有企業(yè)信息系統(tǒng)的直接集成通

道,此通道可能與 Java 編程語(yǔ)言或 bean 編程模型毫無(wú)共同之處。因?yàn)楝F(xiàn)有的

企業(yè)信息資源 -- 如關(guān)系數(shù)據(jù)庫(kù)、事務(wù)監(jiān)視器和業(yè)務(wù)應(yīng)用程序的定制新品種 --

可通過(guò)將它們封裝在 EJB 組件中連接到 Web 前端,而無(wú)須替換應(yīng)用程序或重寫(xiě)

主要代碼段,所以,客戶(hù)可保護(hù)其現(xiàn)有的 IT 投資。

考慮到 EJB 技術(shù)的巨大前景,IT 業(yè)界以相當(dāng)大的興趣歡迎 EJB 規(guī)范,就不是什

么令人驚訝的事了。EJB 體系結(jié)構(gòu)提供的一個(gè)最大好處可能是,把業(yè)務(wù)邏輯編程

與將業(yè)務(wù)邏輯和企業(yè)級(jí)服務(wù)器端運(yùn)行環(huán)境的復(fù)雜集成分離開(kāi)來(lái)。如果部署了 EJB

組件的容器承擔(dān)了管理運(yùn)行時(shí)服務(wù)(如持久性、事務(wù)和并發(fā)數(shù)據(jù)庫(kù)訪(fǎng)問(wèn))的職責(zé)

,則 bean 的開(kāi)發(fā)人員就可以自由地將精力集中在開(kāi)發(fā)封裝業(yè)務(wù)邏輯的軟件組件

上。JavaSoft 副總裁表述了 EJB 技術(shù)的重要性(引自 Sun Microsystems 網(wǎng)站

):


“‘Enterprise JavaBeans API 將為企業(yè)開(kāi)發(fā)人員和解決方案提供商提供一種新

的戰(zhàn)略武器,供他們建立下一代行業(yè)領(lǐng)先的、基于關(guān)鍵業(yè)務(wù)的應(yīng)用程序,’Sun

Microsystems 的 JavaSoft 軟件產(chǎn)品部副總裁,Jon Kannegaard 說(shuō):‘因?yàn)橛?

Enterprise JavaBeans API 設(shè)計(jì)的應(yīng)用程序?qū)⑴c現(xiàn)有的企業(yè)系統(tǒng)一起工作,所以

企業(yè)利用 Java 平臺(tái)會(huì)獲得新的競(jìng)爭(zhēng)優(yōu)勢(shì),同時(shí)還保留他們對(duì)現(xiàn)有技術(shù)的投資,

’Kannegaard 繼續(xù)說(shuō)。


“使用 Enterprise JavaBeans API,開(kāi)發(fā)人員將能夠消除應(yīng)用程序開(kāi)發(fā)過(guò)程中的

復(fù)雜性。這是可能的,因?yàn)槊總(gè) Enterprise JavaBeans 組件都封裝了一個(gè)基本

的業(yè)務(wù)功能。目前開(kāi)發(fā)人員必須懂得如何編寫(xiě)業(yè)務(wù)邏輯和專(zhuān)門(mén)的系統(tǒng)級(jí)程序,以

控制諸如安全性功能部件和處理多個(gè)事務(wù)的能力 -- 一項(xiàng)既枯燥又復(fù)雜的任務(wù)。

Enterprise JavaBeans API 使全體開(kāi)發(fā)人員能夠?qū)⒕性诰帉?xiě)解決業(yè)務(wù)問(wèn)題

的邏輯上,而不是將精力集中在編寫(xiě)用以簡(jiǎn)化不同技術(shù)間交互作用的代碼上!

(新聞稿:Sun Releases Draft Enterprise JavaBeans Specification for

Public Review)