J2EE的層次和組成

J2EE組件和“標準的” Java類的不同點在於:它被裝配在一個J2EE應用中,具有固定的格式並遵守J2EE規範,由J2EE服務器對其進行管理。以下是關於J2EE的層次和組成,歡迎大家參考!

J2EE的層次和組成

目前,Java 2平臺有3個版本,它們是適用於小型設備和智能卡的Java 2平臺Micro版(Java 2 Platform Micro Edition,J2ME)、適用於桌面系統的Java 2平臺標準版(Java 2 Platform Standard Edition,J2SE)、適用於創建服務器應用程序和服務的Java 2平臺企業版(Java 2 Platform Enterprise Edition,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使用多層的分佈式應用模型,應用邏輯按功能劃分爲組件,各個應用組件根據他們所在的層分佈在不同的機器上。事實上,sun設計J2EE的初衷正是爲了解決兩層模式(client/server)的弊端,在傳統模式中,客戶端擔當了過多的角色而顯得臃腫,在這種模式中,第一次部署的時候比較容易,但難於升級或改進,可伸展性也不理想,而且經常基於某種專有的協議??通常是某種數據庫協議。它使得重用業務邏輯和界面邏輯非常困難。現在J2EE 的多層企業級應用模型將兩層化模型中的不同層面切分成許多層。一個多層化應用能夠爲不同的每種服務提供一個獨立的層。

這四層分別是 運行在客戶端機器上的客戶端層(Client Tier)、 運行在Web服務器上的Web層(Web Tier)、 運行在EJB服務器上的業務層(Business Tier)和 運行在EIS服務器上企業信息系統層(Enterprise Information System Tier)其中Web層和業務層共同組成了三層J2EE應用的中間層,其他兩層是客戶端層和存儲層或企業信息系統層。一般情況下,許多開放商把Web服務器和EJB服務器產品結合在一起發佈,稱爲應用服務器或J2EE服務器。J2EE平臺規範也定義了相應層的組件:

  I. 客戶端層組件

應用客戶端程序和瀏覽器是客戶端層組件。客戶端層組件可以是基於Web方式的即作爲Web服務器的瀏覽器,也可以是基於傳統方式的(非基於Web方式)即獨立的應用程序,可以完成瘦客戶機無法完成的任務。

  II. Web層組件

Java Servlet和JavaServer Pages(JSP)是Web層組件。如圖2所示的客戶層那樣,Web層可能包含某些 JavaBean 對象來處理用戶輸入,並把輸入發送給運行在業務層上的Enterprise Bean 來進行處理。按照J2EE規範,靜態的HTML頁面和Applets不算是Web層組件。這裏的JavaBean和EJB(Enterprise JavaBean)除了共用“JavaBean”這個名字外,這兩種組件模式完全沒有關係。許多文章把EJB作爲原始的“JavaBean”的擴展,這是錯誤的。EJB並沒有擴展或使用JavaBean組件模式。最初的JavaBean(s包)在進程內部(intraprocess)使用,而EJB(包)是在進程間(interprocess)使用的組件。即最初的`JavaBean不是爲分佈式組件而設的。它是最好的組件模式,可能是至今發現的最好的過程內部開發的組件模式,但它不是一個服務器端的組件模式。EJB則能解決在三層結構中由管理分佈式商務對象多帶來的問題。

  III. 業務層組件

Enterprise JavaBeans(EJB)是業務層組件。業務層代碼的邏輯用來滿足銀行,零售,金融等特殊商務領域的需要,由運行在業務層上的EJB 進行處理。 EJB從客戶端程序接收數據,進行處理(如果必要的話), 併發送到企業信息系統層(EIS) 層儲存的,這個過程也可以逆向進行。

有三種企業級的Bean: 會話(Session)Beans, 實體(Entity) Beans, 和 消息驅動(Message-driven) Beans。 會話Bean 表示與客戶端程序的臨時交互。 當客戶端程序執行完後, 會話Bean 和相關數據就會消失。相反, 實體Bean 表示數據庫的表中一行永久的記錄。 當客戶端程序中止或服務器關閉時, 就會有潛在的服務保證實體Bean 的數據得以保存。消息驅動Bean 結合了會話Bean 和 JMS的消息監聽的機器的特性, 允許一個業務層組件異步接收JMS 消息。

  IV. 企業信息系統層組件

處理企業信息系統軟件包括企業基礎建設系統例如企業資源計劃 (ERP), 大型機事務處理, 數據庫系統,和其它的遺留信息系統組成了企業信息系統層。 例如,J2EE應用組件可能爲了數據庫連接需要訪問企業信息系統。

J2EE平臺由一整套服務(Services)、應用程序接口(APIs)和協議構成,它對開發基於Web的多層應用提供了功能支持,下面對J2EE中的13種技術規範進行簡單的描述:

  JDBC(Java Database Connectivity)

JDBC API爲訪問不同的數據庫提供了一種統一的途徑,象ODBC一樣,JDBC對開發者屏蔽了一些細節問題,另外,JDCB對數據庫的訪問也具有平臺無關性。

  JNDI(Java Name and Directory Interface)

JNDI API被用於執行名字和目錄服務。它提供了一致的模型來存取和操作企業級的資源如DNS和LDAP,本地文件系統,或應用服務器中的對象。

  EJB(Enterprise JavaBean)

J2EE技術之所以贏得媒體廣泛重視的原因之一就是EJB。它們提供了一個框架來開發和實施分佈式商務邏輯,由此很顯著地簡化了具有可伸縮性和高度複雜的企業級應用的開發。EJB規範定義了EJB組件在何時如何與它們的容器進行交互作用。容器負責提供公用的服務,例如目錄服務、事務管理、安全性、資源緩衝池以及容錯性。但這裏值得注意的是,EJB並不是實現J2EE的唯一途徑。正是由於J2EE的開放性,使得有的廠商能夠以一種和EJB平行的方式來達到同樣的目的。

  RMI(Remote Method Invoke)

正如其名字所表示的那樣,RMI協議調用遠程對象上方法。它使用了序列化方式在客戶端和服務器端傳遞數據。RMI是一種被EJB使用的更底層的協議。

  Java IDL/CORBA

在Java IDL的支持下,開發人員可以將Java和CORBA集成在一起。他們可以創建Java對象並使之可在CORBA ORB中展開, 或者他們還可以創建Java類並作爲和其它ORB一起展開的CORBA對象的客戶。後一種方法提供了另外一種途徑,通過它Java可以被用於將你的新的應用和舊的系統相集成。

  JSP(Java Server Pages)

JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端所請求以後對這些Java代碼進行處理,然後將生成的HTML頁面返回給客戶端的瀏覽器。

  Java Servlet

Servlet是一種小型的Java程序,它擴展了Web服務器的功能。作爲一種服務器端的應用,當被請求時開始執行,這和CGI Perl腳本很相似。Servlet提供的功能大多與JSP類似,不過實現的方式不同。JSP通常是大多數HTML代碼中嵌入少量的Java代碼,而servlets全部由Java寫成並且生成HTML。

  XML(Extensible Markup Language)

XML是一種可以用來定義其它標記語言的語言。它被用來在不同的商務過程中共享數據。

XML的發展和Java是相互獨立的,但是,它和Java具有的相同目標正是平臺灣的獨立立性。通過將Java和XML的組合,您可以得到一個完美的具有平臺灣的獨立立性的解決方案。

  JMS(Java Message Service)

MS是用於和麪向消息的中間件相互通信的應用程序接口(API)。它既支持點對點的域,有支持發佈/訂閱(publish/subscribe)類型的域,並且提供對下列類型的支持:經認可的消息傳遞,事務型消息的傳遞,一致性消息和具有持久性的訂閱者支持。JMS還提供了另

一種方式來對您的應用與舊的後臺系統相集成。

  JTA(Java Transaction Architecture)

JTA定義了一種標準的API,應用系統由此可以訪問各種事務監控。

  JTS(Java Transaction Service):

JTS是CORBA OTS事務監控的基本的實現。JTS規定了事務管理器的實現方式。該事務管理器是在高層支持Java Transaction API (JTA)規範,並且在較底層實現OMG OTS specification的Java映像。JTS事務管理器爲應用服務器、資源管理器、獨立的應用以及通信資源管理器提供了事務服務。

  JavaMail

JavaMail是用於存取郵件服務器的API,它提供了一套郵件服務器的抽象類。不僅支持SMTP服務器,也支持IMAP服務器。

  JAF(JavaBeans Activation Framework)

JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的字節流可以被轉換成Java對象,或者轉換自Java對象。大多數應用都可以不需要直接使用JAF。