?? ejb一則,franzy@163.net多多交流哦.txt
字號:
客戶機程序在事務中可以將對 CORBA 對象的調用,與對企業級 bean 的調用混合
在一起
事務可以跨多個 bean,而這些 bean 又位于來自不同廠商的基于 CORBA 的多臺
EJB 服務器上
使用來自某個廠商的 ORB 的客戶機,可以訪問另一個廠商基于 CORBA 的 EJB 服
務器上的 bean
對于要訪問 EJB 組件的 CORBA 客戶機來說,bean 接口被映射到 IDL。例如,可
將股票交易 bean 中定義的 buy() 和 sell() 方法,指定為 IDL 文件中的
CORBA 操作。非 bean 的 CORBA 客戶機,如 C++ 客戶機,可以訪問這個 bean,
并用標準 CORBA 調用來調用 bean 的方法。如果容器使用 IIOP 作為它的分布式
對象協議,則該容器的職責是,生成與企業級 bean 及其接口對應的 IDL。
EJB 命名服務,它以“CORBA 對象服務”命名服務為基礎,使 EJB 組件可用于
CORBA 客戶機。Java Naming and Directory Interface (JNDI) 可提供到 CORBA
命名服務的接口,同時,客戶機既可以通過 JNDI 調用間接訪問基礎命名服務,
也可以通過“CORBA 對象服務” (COS) 命名 API 直接訪問該服務。
EJB 事務支持依賴于 CORBA Transaction Service,即 Object Transaction
Service (OTS)。Java Transaction Service (JTS) 代表 OTS 的 Java 綁定,它
是語言中立的。基于 CORBA 的 EJB 容器必須識別 CORBA 客戶機通過 OTS 接口
發出的事務邊界,以及 EJB 應用程序通過 Java Transaction API (JTA) 接口發
出的事務,JTA 是到 JTS 的應用程序級接口。JTA 還代表 Open Group XA 接口
的 Java 綁定,以便將應用程序資源連接到外部事務管理器。JIA 中含存的
javax.transaction.UserTransaction 接口,為事務邊界的應用程序級控制提供
API。UserTransaction 接口,既可由其事務屬性設置為 TX_BEAN_MANAGED 的
bean 使用,以可由 Java 客戶機使用。
使用 EJB 組件
因為 EJB 體系結構被設計為高度靈活的,并支持使用任意復雜的方式連接企業級
bean,所以可構建許多不同的方案,來說明應用程序可怎樣使用企業級 bean。一
個有用的方案提出將 EJB 組件表示為三層信息系統的關鍵組件,該系統將企業數
據、事務和應用程序資源連接到 Web 上。
基于 EJB 的三層編程模型視 Web 瀏覽器為第一層,視支持應用程序的 Web 服務
器為第二層,視企業信息資源為第三層。在此編程模型中,除了 EJB 技術外,還
實現了 Java servlet 技術、JavaBeans 技術和 Java Server Page (JSP) 技術
。下圖顯示了各層的排列情況:
第一層是瘦客戶機 -- 通常是 Web 瀏覽器,它可以處理普通 Web 數據類型,如
HTML 和 GIF,并支持 HTTP 通信。第二層是 Web 應用程序服務器,它是用代碼
擴充的 Web 服務器,用來對能夠通過 Web 服務器調用的應用程序提供運行時支
持。現有的 Web 應用程序都沿用 CGI-BIN 編程模型,但預計第二層應用程序開
發將轉向 Java servlet 編程模型,后者提供大幅改善的性能和可移植性。除支
持 Java servlet 外,Web 應用程序服務器還將添加 EJB 服務器功能,以支持使
用 EJB 組件的應用程序。第三層代表企業級信息資源,可以包括關系數據庫和面
向對象的數據庫、事務監視器和定制的應用程序。EJB 技術在這一設計中扮演著
關鍵角色,因為,它使駐留在第二層上的應用程序組件,與組成第三層的企業資
源之間的接口,得以標準化。
Java servlet、Java beans 和 Java server page 不是 EJB 應用程序方案的必
需元素,但它們可與 EJB 組件一起工作,以提供基于 Java 的內聚性的應用程序
環境。此處描繪的環境將以下職責指定給參與工作的 Java 組件:
給 Java servlet 指定了應用程序“控制器”的角色
JSP 頁面處理數據表示和用戶界面的任務
Java bean 充當“數據封裝器”,存儲中間結果的數據
EJB 組件提供訪問企業信息資源的機制
客戶可以使用一個假定的、基于 EJB 的 Web 應用程序更新現有的庫存,并用容
器管理式持久性和容器管理式事務,將訪問庫存數據庫的位置封裝在實體 EJB 組
件的內部。庫存票據可通過 Web 瀏覽器輸入,瀏覽器提供一個 HTML 表單來捕獲
產品編號、供應商,等等,并在提交時調用一個 servlet。servlet 代碼充當應
用程序控制器角色,確定哪些企業數據庫需要更新,需要用戶追加什樣的信息。
servlet 可通過代表它的實體 bean 訪問主庫存數據庫,并調用 JNDI 接口獲取
對此 bean 的本地對象的引用,然后使用 finder 方法定位所請求產品編號的遠
程對象。此時,通過調用遠程對象的方法,servlet 可更新庫存計數,接著容器
將此方法委托給 EJB 組件。因為容器根據數據庫更新,以對 bean 透明的方式劃
分一個事務,而且以對 bean 透明的方式將數據寫入數據庫來保證數據持久性,
所以也就保持了數據的完整性。
從 EJB 組件返回到 servlet 的任何結果信息,都可以使用 setter 方法存儲在
一個(非企業的) Java bean 的屬性中。此時 servlet 可將控制權轉讓給一個
適當的 JSP 頁面,以便將這些結果組合到表示格式中,并將結果返回給用戶。
JSP 頁面很可能主要由靜態文本和有關單個事務的可變信息占位符組成。在向瀏
覽器發送表示數據之前,JSP 頁面使用 getter 方法從 Java bean 的屬性中獲得
可變數據元素。
基于 EJB 的三層設計提供了幾個好處,包括:
訪問企業數據的業務邏輯可封裝在可重用、可移植的企業級 bean 中。
現有的企業系統只需很少修改或者根本不需要修改,就可以集成為企業級 bean。
企業應用程序所需的運行時服務,如事務和持久性,可以從 bean 中分解出來,
并指定給此 bean 的容器。
無須更改 EJB 組件,即可修改控制應用程序流程的 Servlet。
Servlet 代碼可將注意力集中在應用程序控制邏輯上,而無須考慮數據表示。
JSP 頁面可將靜態和動態內容混合在一起,生成表示信息。
用 Java 語言編寫的系統組件,對于具有 JVM 的任何平臺都是可移植的。
結論
在開發能夠支持關鍵任務的企業級信息系統的過程中,EJB 規范代表了 Java 技
術的下一個發展階段。EJB 組件將隨 JavaBeans 規范引入的 Java 組件模型,擴
展到服務器領域,從而使業務邏輯組件的開發可以跨企業應用程序重用,并且可
以跨支持 Java 的平臺移植。由于包含了基于 RMI 技術的對象分布,所以支持跨
多層的可執行組件的分立,從而允許最大的實現靈活性和高度可伸縮性。如果將
常規的企業應用程序運行時服務重新定義為可指定給容器抽象的對象服務,則允
許 EJB 組件的開發人員將精力集中在業務邏輯上,從而減小了通常與運行時服務
相關的復雜性和平臺相關性。
增強 Java 運行環境,以包括命名和目錄服務的標準接口、關系數據庫訪問、事
務服務和遠程對象訪問,使 Java 開發人員能夠編寫強健的企業應用程序,而不
必離開 Java 編程環境。將其它 Java 技術 -- 如 Java servlet 和 JavaServer
Pages 技術 -- 與 EJB 組件一起使用,可創建一個對于大型企業系統來說足夠強
健的緊湊編程模型,但由于使用了巧妙的接口,從而簡化了開發工作。而且,因
為 EJB 體系結構是 JavaBeans 組件模型的邏輯擴展,所以作為 EJB 組件開發的
業務邏輯可跨多個企業應用程序重用。
企業級 bean 體系結構的另一個好處是,提供了現有企業信息系統的直接集成通
道,此通道可能與 Java 編程語言或 bean 編程模型毫無共同之處。因為現有的
企業信息資源 -- 如關系數據庫、事務監視器和業務應用程序的定制新品種 --
可通過將它們封裝在 EJB 組件中連接到 Web 前端,而無須替換應用程序或重寫
主要代碼段,所以,客戶可保護其現有的 IT 投資。
考慮到 EJB 技術的巨大前景,IT 業界以相當大的興趣歡迎 EJB 規范,就不是什
么令人驚訝的事了。EJB 體系結構提供的一個最大好處可能是,把業務邏輯編程
與將業務邏輯和企業級服務器端運行環境的復雜集成分離開來。如果部署了 EJB
組件的容器承擔了管理運行時服務(如持久性、事務和并發數據庫訪問)的職責
,則 bean 的開發人員就可以自由地將精力集中在開發封裝業務邏輯的軟件組件
上。JavaSoft 副總裁表述了 EJB 技術的重要性(引自 Sun Microsystems 網站
):
“‘Enterprise JavaBeans API 將為企業開發人員和解決方案提供商提供一種新
的戰略武器,供他們建立下一代行業領先的、基于關鍵業務的應用程序,’Sun
Microsystems 的 JavaSoft 軟件產品部副總裁,Jon Kannegaard 說:‘因為用
Enterprise JavaBeans API 設計的應用程序將與現有的企業系統一起工作,所以
企業利用 Java 平臺會獲得新的競爭優勢,同時還保留他們對現有技術的投資,
’Kannegaard 繼續說。
“使用 Enterprise JavaBeans API,開發人員將能夠消除應用程序開發過程中的
復雜性。這是可能的,因為每個 Enterprise JavaBeans 組件都封裝了一個基本
的業務功能。目前開發人員必須懂得如何編寫業務邏輯和專門的系統級程序,以
控制諸如安全性功能部件和處理多個事務的能力 -- 一項既枯燥又復雜的任務。
Enterprise JavaBeans API 使全體開發人員能夠將精力集中在編寫解決業務問題
的邏輯上,而不是將精力集中在編寫用以簡化不同技術間交互作用的代碼上。”
(新聞稿:Sun Releases Draft Enterprise JavaBeans Specification for
Public Review)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -