熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java編程語言中EJB技術的詳細說明

2022-06-13   來源: Java核心技術 
    EJB技術概論
    Enterprise JavaBean (EJB) 規范定義了開發和部署基於事務性分布式對象應用程序的服務器端軟件組件的體系結構企業組織可以構建它們自己的組件或從第三方供應商購買組件這些服務器端組件稱作 Enterprise Bean它們是 Enterprise JavaBean 容器中駐留的分布式對象為分布在網絡中的客戶機提供遠程服務
  兩層和三層環境
    在兩層客戶機/服務器環境中程序員編寫與供應商特定軟件緊密結合的應用程序通常兩層應用程序直接從客戶機訪問數據庫服務或事務服務有時這種應用程序稱作胖客戶機因為應用程序邏輯駐留在客戶機上這使客戶機變得龐大和復雜下圖描繪了這一特性
    三層客戶機/服務器應用程序使用一個中間或中間層應用程序服務器它在客戶機應用程序和後端數據庫之間操作中間層存儲了系統的商業邏輯並協調客戶機上與後端數據庫交互的顯示
  在兩層模型上使用三層體系結構是出於以下兩個動機
    改進的可伸縮性可用性和性能
    改良的商業系統靈活性和可擴展性
    由於兩層系統利用了客戶機的處理能力因而它具有良好的性能但許多客戶機對單一後端資源(如數據庫)的特性會產生瓶頸隨著客戶機數量逐漸增大這會抑制可伸縮性可用性和性能三層系統試圖通過更有效地管理後端資源來消除這個瓶頸利用資源管理技術如合用和集群中間層服務器可以實現這個目標合用允許許多客戶機共享不充足的資源(如數據庫連接)這樣可以減少後端服務器的工作負荷從而使三層系統更有效由於多個服務器和資源可以支持故障恢復並均衡不斷增加的客戶機數量的負載因此集群可以使三層系統變得更具可用性和可伸縮性
    三層系統比相應的兩層系統更靈活且更可擴展這是因為商業邏輯和服務(如安全性和事務)都駐留在中間層並且基本上獨立於客戶機應用程序如果正確實現了三層系統那麼在使用 Enterprise JavaBean 的情況下服務會自動應用於客戶機請求因此服務是看不見的由於服務對於客戶機不可見因此對服務的更改也不可見如果正確實現了三層系統那麼中間層上對商業邏輯的更改和增強也可對客戶機應用程序隱藏
    另外如果客戶機與中間件組件是以 Java 編程語言實現的那麼它們極有可能具有可移植性可以非常容易地將實現客戶機和應用程序服務器的類文件重新安置到當前最合適的主機上
    在最近二三年中一些供應商發布了基於 Java 的三層應用程序服務器這些服務器全都可以與後端服務器操作交互並管理這些操作盡管這些中間件產品支持分布式體系結構這些體系結構在兩層設計上(以及 Java 之前的應用程序服務器)做了非常重大的改進它們的主要限制是編程模塊越來越趨向於特定於某個供應商這意味著公司必須大量購買一家供應商的型號而且系統是不可移植的從而導致了供應商鎖定


    隨著面向對象編程范例日益普及分布式對象系統已經逐漸壯大現在已經存在一些分布式對象技術最流行的是由 Object Management Group 創建的 CORBASun Microsystems 的 Java RMI (JRMP) 和 Microsoft 的 DCOM 和 MTS(又名 COM+)每種都有其自身的優缺點Sun Microsystems 的 Enterprise JavaBean 是最新加入這個圈子的技術在某些方面它既是這些技術的竟爭者同時也是合作者
    由於在三層計算中使用了其它開放標准(如 LDAP)CORBA(公共對象請求中介體系結構)在解決供應商壟斷問題方面取得了成功不幸的是雖然 CORBA 根本改變了分布式計算但經驗證編程模塊太復雜而且供應商不能一致地遵守規范CORBA 有高級的分布式計算但已證明太難而無法實現並且其可移植性也比預期差
    Enterprise JavaBean (EJB) 是 Sun Microsystems 對 CORBA 的可移植性和復雜性的解決方案EJB 引入了比 CORBA 更簡單的編程模塊它可以讓開發人員創建可移植分布式組件稱作 Enterprise BeanEJB 編程模塊可以讓開發人員創建安全的事務性的和持久的商業對象 (Enterprise Bean)該對象使用非常簡單的編程模塊和聲明屬性與 CORBA 不同例如訪問控制(授權安全性)和事務管理等設施非常易於編程CORBA 需要使用復雜的 API 來利用這些服務而 EJB 則根據一種稱作部署描述信息的特性文件中的聲明將這些服務自動應用到 Enterprise Bean這個模型確保了 bean 開發人員可以集中精力編寫商業邏輯而容器會自動管理更復雜但又必要的操作
    由於 EJB 規范頒布了一組明確的 EJB 容器(供應商服務器)和 EJB 組件(商業對象)之間的契約因此 EJB 中實現了可移植性這些契約或規則確切規定容器必須為 Enterprise Bean 提供什麼服務bean 開發人員需要使用什麼 API 和聲明屬性來創建 Enterprise Bean由於詳細指定了 Enterprise Bean 的生命周期因此供應商知道如何在運行時管理 beanbean 開發人員確切知道 Enterprise Bean 在其存在期間可以做什麼
    Enterprise JavaBean 簡化了分布式對象的開發部署和訪問EJB 分布式對象(一種 Enterprise Bean)的開發人員只需依照為 Enterprise JavaBean 建立的契約和協議實現對象支持 EJB 的應用程序服務器可以也確實使用任何分布式網絡協議包括本地 Java RMI 協議 (JRMP)專有協議或 CORBA 的網絡協議 (IIOP)不管在某個特定產品中使用的基本網絡協議是什麼EJB 使用相同的編程 API 和語義以 Java RMIIIOP 訪問分布式對象協議的細節對應用程序和 bean 開發人員隱藏;對於所有供應商來說定位和使用分布式 bean 的方法是相同的
   Enterprise Bean 與 JavaBean 不同JavaBean 是使用 javabeans 包開發的它是 Java 標准版的一部分JavaBean 是一台機器上同一個地址空間中運行的組件JavaBean 是進程內組件Enterprise Bean 是使用 javaxejb 包開發的它是標准 JDK 的擴展是 Java Enterprise Edition 的一部分Enterprise Bean 是在多台機器上跨幾個地址空間運行的組件因此 Enterprise Bean 是進程間組件JavaBean 通常用作 GUI 窗口小部件而 Enterprise Bean 則用作分布式商業對象


From:http://tw.wingwit.com/Article/program/Java/hx/201401/30282.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.