1. 程式人生 > >淺談j2ee技術設計模型的應用

淺談j2ee技術設計模型的應用

J2EE的概念

     J2EE是一種利用Java 2平臺來簡化企業解決方案的開發、部署和管理相關的複雜問題的體系結構。J2EE技術的基礎就是核心Java平臺或Java 2平臺的標準版,J2EE不僅鞏固了標準版中的許多優點,例如"編寫一次、隨處執行"的特性、方便存取資料庫的JDBC API、CORBA技術以及能夠在Internet應用中保護資料的安全模式等等,同時還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術的全面支援。其最終目的就是成為一個能夠使企業開發者大幅縮短投放市場時間的體系結構。

J2EE的優勢

     高效的開發: J2EE允許公司把一些通用的、很繁瑣的服務端任務交給中介軟體供應商去完成。這樣開發人員可以集中精力在如何建立商業邏輯上,相應地縮短了開發時間。高階中介軟體供應商提供以下這些複雜的中介軟體服務:
       1、 狀態管理服務 -- 讓開發人員寫更少的程式碼,不用關心如何管理狀態,這樣能夠更快地完成程式開發。
        2、持續性服務 -- 讓開發人員不用對資料訪問邏輯進行編碼就能編寫應用程式,能生成更輕巧,與資料庫無關的應用程式,這種應用程式更易於開發與維護。
        3、分散式共享資料物件CACHE服務 -- 讓開發人員編制高效能的系統,極大提高整體部署的伸縮性。
 

J2EE 的四層模型

     J2EE使用多層的分散式應用模型,應用邏輯按功能劃分為元件,各個應用元件根據他們所在的層分佈在不同的機器上。事實上,sun設計J2EE的初衷正是為了解決兩層模式(client/server)的弊端,在傳統模式中,客戶端擔當了過多的角色而顯得臃腫,在這種模式中,第一次部署的時候比較容易,但難於升級或改進,可伸展性也不理想,而且經常基於某種專有的協議?D?D通常是某種資料庫協議。它使得重用業務邏輯和介面邏輯非常困難。現在J2EE 的多層企業級應用模型將兩層化模型中的不同層面切分成許多層。一個多層化應用能夠為不同的每種服務提供一個獨立的層,以下是 J2EE 典型的四層結構:

    執行在客戶端機器上的客戶層元件
    執行在J2EE伺服器上的Web層元件
    執行在J2EE伺服器上的業務邏輯層元件
    執行在EIS伺服器上的企業資訊系統(Enterprise information system)層軟體
 


 

業務層元件
     業務層程式碼的邏輯用來滿足銀行,零售,金融等特殊商務領域的需要,由執行在業務層上的enterprise bean 進行處理. 下圖表明瞭一個enterprise bean 是如何從客戶端程式接收資料,進行處理(如果必要的話), 併發送到EIS 層儲存的,這個過程也可以逆向進行。

     有三種企業級的bean: 會話(session) beans, 實體(entity) beans, 和訊息驅動(message-driven) beans. 會話bean 表示與客戶端程式的臨時互動. 當客戶端程式執行完後, 會話bean 和相關資料就會消失. 相反, 實體bean 表示資料庫的表中一行永久的記錄. 當客戶端程式中止或伺服器關閉時, 就會有潛在的服務保證實體bean 的資料得以儲存.訊息驅動 bean 結合了會話bean 和 JMS的訊息監聽`器的特性, 允許一個業務層元件非同步接收JMS 訊息.


 

企業資訊系統層
企業資訊系統層處理企業資訊系統軟體包括企業基礎建設系統例如企業資源計劃 (ERP), 大型機事務處理, 資料庫系統,和其它的遺留資訊系統. 例如,J2EE 應用元件可能為了資料庫連線需要訪問企業資訊系統。
 

這種基於元件,具有平臺無關性的J2EE 結構使得J2EE 程式的編寫十分簡單,因為業務邏輯被封裝成可複用的元件,並且J2EE 伺服器以容器的形式為所有的元件型別提供後臺服務. 因為你不用自己開發這種服務, 所以你可以集中精力解決手頭的業務問題.

容器和服務
容器設定定製了J2EE伺服器所提供得內在支援,包括安全,事務管理,JNDI(Java Naming and Directory Interface)定址,遠端連線等服務,以下列出最重要的幾種服務:

  • J2EE安全(Security)模型可以讓你配置 web 元件或enterprise bean ,這樣只有被授權的使用者才能訪問系統資源. 每一客戶屬於一個特別的角色,而每個角色只允許啟用特定的方法。你應在enterprise bean的佈置描述中宣告角色和可被啟用的方法。由於這種宣告性的方法,你不必編寫加強安全性的規則。
  • J2EE 事務管理(Transaction Management)模型讓你指定組成一個事務中所有方法間的關係,這樣一個事務中的所有方法被當成一個單一的單元. 當客戶端啟用一個enterprise bean中的方法,容器介入一管理事務。因有容器管理事務,在enterprise bean中不必對事務的邊界進行編碼。要求控制分散式事務的程式碼會非常複雜。你只需在佈置描述檔案中宣告enterprise bean的事務屬性,而不用編寫並除錯複雜的程式碼。容器將讀此檔案併為你處理此enterprise bean的事務。
  • JNDI 定址(JNDI Lookup)服務向企業內的多重名字和目錄服務提供了一個統一的介面,這樣應用程式元件可以訪問名字和目錄服務.
  • J2EE遠端連線(Remote Client Connectivity)模型管理客戶端和enterprise bean間的低層互動. 當一個enterprise bean建立後, 一個客戶端可以呼叫它的方法就象它和客戶端位於同一虛擬機器上一樣.
  • 生存週期管理(Life Cycle Management)模型管理enterprise bean的建立和移除,一個enterprise bean在其生存週期中將會歷經幾種狀態。容器建立enterprise bean,並在可用例項池與活動狀態中移動他,而最終將其從容器中移除。即使可以呼叫enterprise bean的create及remove方法,容器也將會在後臺執行這些任務。
  • 資料庫連線池(Database Connection Pooling)模型是一個有價值的資源。獲取資料庫連線是一項耗時的工作,而且連線數非常有限。容器通過管理連線池來緩和這些問題。enterprise bean可從池中迅速獲取連線。在bean釋放連線之可為其他bean使用。

容器型別
J2EE應用元件可以安裝部署到以下幾種容器中去:

  • EJB 容器管理所有J2EE 應用程式中企業級bean 的執行. enterprise bean 和它們的容器執行在J2EE 伺服器上.
  • Web 容器管理所有J2EE 應用程式中JSP頁面和Servlet元件的執行. Web 元件和它們的容器執行在J2EE 伺服器上.
  • 應用程式客戶端容器管理所有J2EE應用程式中應用程式客戶端元件的執行. 應用程式客戶端和它們的容器執行在J2EE 伺服器上.
  • Applet 容器是執行在客戶端機器上的web瀏覽器和 Java 外掛的結合.