J2EE的層次和組成
J2EE組件和“標準的” Java類的不同點在于:它被裝配在一個J2EE應(yīng)用中,具有固定的格式并遵守J2EE規(guī)范,由J2EE服務(wù)器對其進行管理。以下是關(guān)于J2EE的層次和組成,歡迎大家參考!
目前,Java 2平臺有3個版本,它們是適用于小型設(shè)備和智能卡的Java 2平臺Micro版(Java 2 Platform Micro Edition,J2ME)、適用于桌面系統(tǒng)的Java 2平臺標準版(Java 2 Platform Standard Edition,J2SE)、適用于創(chuàng)建服務(wù)器應(yīng)用程序和服務(wù)的Java 2平臺企業(yè)版(Java 2 Platform Enterprise Edition,J2EE)。J2EE是一種利用Java 2平臺來簡化企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復(fù)雜問題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎(chǔ)就是核心Java平臺或Java 2平臺的標準版,J2EE不僅鞏固了標準版中的許多優(yōu)點,例如"編寫一次、隨處運行"的特性、方便存取數(shù)據(jù)庫的JDBC API、CORBA技術(shù)以及能夠在Internet應(yīng)用中保護數(shù)據(jù)的安全模式等等,同時還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術(shù)的全面支持。其最終目的就是成為一個能夠使企業(yè)開發(fā)者大幅縮短投放市場時間的體系結(jié)構(gòu)。
J2EE使用多層的分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分為組件,各個應(yīng)用組件根據(jù)他們所在的層分布在不同的機器上。事實上,sun設(shè)計J2EE的初衷正是為了解決兩層模式(client/server)的弊端,在傳統(tǒng)模式中,客戶端擔當了過多的角色而顯得臃腫,在這種模式中,第一次部署的時候比較容易,但難于升級或改進,可伸展性也不理想,而且經(jīng);谀撤N專有的協(xié)議??通常是某種數(shù)據(jù)庫協(xié)議。它使得重用業(yè)務(wù)邏輯和界面邏輯非常困難,F(xiàn)在J2EE 的多層企業(yè)級應(yīng)用模型將兩層化模型中的不同層面切分成許多層。一個多層化應(yīng)用能夠為不同的每種服務(wù)提供一個獨立的層。
這四層分別是 運行在客戶端機器上的客戶端層(Client Tier)、 運行在Web服務(wù)器上的Web層(Web Tier)、 運行在EJB服務(wù)器上的業(yè)務(wù)層(Business Tier)和 運行在EIS服務(wù)器上企業(yè)信息系統(tǒng)層(Enterprise Information System Tier)其中Web層和業(yè)務(wù)層共同組成了三層J2EE應(yīng)用的中間層,其他兩層是客戶端層和存儲層或企業(yè)信息系統(tǒng)層。一般情況下,許多開放商把Web服務(wù)器和EJB服務(wù)器產(chǎn)品結(jié)合在一起發(fā)布,稱為應(yīng)用服務(wù)器或J2EE服務(wù)器。J2EE平臺規(guī)范也定義了相應(yīng)層的組件:
I. 客戶端層組件
應(yīng)用客戶端程序和瀏覽器是客戶端層組件?蛻舳藢咏M件可以是基于Web方式的即作為Web服務(wù)器的瀏覽器,也可以是基于傳統(tǒng)方式的(非基于Web方式)即獨立的應(yīng)用程序,可以完成瘦客戶機無法完成的任務(wù)。
II. Web層組件
Java Servlet和JavaServer Pages(JSP)是Web層組件。如圖2所示的客戶層那樣,Web層可能包含某些 JavaBean 對象來處理用戶輸入,并把輸入發(fā)送給運行在業(yè)務(wù)層上的Enterprise Bean 來進行處理。按照J2EE規(guī)范,靜態(tài)的HTML頁面和Applets不算是Web層組件。這里的JavaBean和EJB(Enterprise JavaBean)除了共用“JavaBean”這個名字外,這兩種組件模式完全沒有關(guān)系。許多文章把EJB作為原始的“JavaBean”的擴展,這是錯誤的。EJB并沒有擴展或使用JavaBean組件模式。最初的JavaBean(java.beans包)在進程內(nèi)部(intraprocess)使用,而EJB(javax.ejb包)是在進程間(interprocess)使用的組件。即最初的JavaBean不是為分布式組件而設(shè)的。它是最好的組件模式,可能是至今發(fā)現(xiàn)的最好的過程內(nèi)部開發(fā)的組件模式,但它不是一個服務(wù)器端的組件模式。EJB則能解決在三層結(jié)構(gòu)中由管理分布式商務(wù)對象多帶來的問題。
III. 業(yè)務(wù)層組件
Enterprise JavaBeans(EJB)是業(yè)務(wù)層組件。業(yè)務(wù)層代碼的邏輯用來滿足銀行,零售,金融等特殊商務(wù)領(lǐng)域的需要,由運行在業(yè)務(wù)層上的EJB 進行處理。 EJB從客戶端程序接收數(shù)據(jù),進行處理(如果必要的話), 并發(fā)送到企業(yè)信息系統(tǒng)層(EIS) 層儲存的,這個過程也可以逆向進行。
有三種企業(yè)級的Bean: 會話(Session)Beans, 實體(Entity) Beans, 和 消息驅(qū)動(Message-driven) Beans。 會話Bean 表示與客戶端程序的臨時交互。 當客戶端程序執(zhí)行完后, 會話Bean 和相關(guān)數(shù)據(jù)就會消失。相反, 實體Bean 表示數(shù)據(jù)庫的表中一行永久的記錄。 當客戶端程序中止或服務(wù)器關(guān)閉時, 就會有潛在的服務(wù)保證實體Bean 的數(shù)據(jù)得以保存。消息驅(qū)動Bean 結(jié)合了會話Bean 和 JMS的消息監(jiān)聽的機器的特性, 允許一個業(yè)務(wù)層組件異步接收JMS 消息。
IV. 企業(yè)信息系統(tǒng)層組件
處理企業(yè)信息系統(tǒng)軟件包括企業(yè)基礎(chǔ)建設(shè)系統(tǒng)例如企業(yè)資源計劃 (ERP), 大型機事務(wù)處理, 數(shù)據(jù)庫系統(tǒng),和其它的遺留信息系統(tǒng)組成了企業(yè)信息系統(tǒng)層。 例如,J2EE應(yīng)用組件可能為了數(shù)據(jù)庫連接需要訪問企業(yè)信息系統(tǒng)。
J2EE平臺由一整套服務(wù)(Services)、應(yīng)用程序接口(APIs)和協(xié)議構(gòu)成,它對開發(fā)基于Web的多層應(yīng)用提供了功能支持,下面對J2EE中的13種技術(shù)規(guī)范進行簡單的描述:
JDBC(Java Database Connectivity)
JDBC API為訪問不同的數(shù)據(jù)庫提供了一種統(tǒng)一的途徑,象ODBC一樣,JDBC對開發(fā)者屏蔽了一些細節(jié)問題,另外,JDCB對數(shù)據(jù)庫的訪問也具有平臺無關(guān)性。
JNDI(Java Name and Directory Interface)
JNDI API被用于執(zhí)行名字和目錄服務(wù)。它提供了一致的模型來存取和操作企業(yè)級的資源如DNS和LDAP,本地文件系統(tǒng),或應(yīng)用服務(wù)器中的對象。
EJB(Enterprise JavaBean)
J2EE技術(shù)之所以贏得媒體廣泛重視的原因之一就是EJB。它們提供了一個框架來開發(fā)和實施分布式商務(wù)邏輯,由此很顯著地簡化了具有可伸縮性和高度復(fù)雜的企業(yè)級應(yīng)用的開發(fā)。EJB規(guī)范定義了EJB組件在何時如何與它們的容器進行交互作用。容器負責提供公用的服務(wù),例如目錄服務(wù)、事務(wù)管理、安全性、資源緩沖池以及容錯性。但這里值得注意的是,EJB并不是實現(xiàn)J2EE的唯一途徑。正是由于J2EE的開放性,使得有的廠商能夠以一種和EJB平行的方式來達到同樣的目的。
RMI(Remote Method Invoke)
正如其名字所表示的那樣,RMI協(xié)議調(diào)用遠程對象上方法。它使用了序列化方式在客戶端和服務(wù)器端傳遞數(shù)據(jù)。RMI是一種被EJB使用的更底層的`協(xié)議。
Java IDL/CORBA
在Java IDL的支持下,開發(fā)人員可以將Java和CORBA集成在一起。他們可以創(chuàng)建Java對象并使之可在CORBA ORB中展開, 或者他們還可以創(chuàng)建Java類并作為和其它ORB一起展開的CORBA對象的客戶。后一種方法提供了另外一種途徑,通過它Java可以被用于將你的新的應(yīng)用和舊的系統(tǒng)相集成。
JSP(Java Server Pages)
JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端所請求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。
Java Servlet
Servlet是一種小型的Java程序,它擴展了Web服務(wù)器的功能。作為一種服務(wù)器端的應(yīng)用,當被請求時開始執(zhí)行,這和CGI Perl腳本很相似。Servlet提供的功能大多與JSP類似,不過實現(xiàn)的方式不同。JSP通常是大多數(shù)HTML代碼中嵌入少量的Java代碼,而servlets全部由Java寫成并且生成HTML。
XML(Extensible Markup Language)
XML是一種可以用來定義其它標記語言的語言。它被用來在不同的商務(wù)過程中共享數(shù)據(jù)。
XML的發(fā)展和Java是相互獨立的,但是,它和Java具有的相同目標正是平臺灣的獨立立性。通過將Java和XML的組合,您可以得到一個完美的具有平臺灣的獨立立性的解決方案。
JMS(Java Message Service)
MS是用于和面向消息的中間件相互通信的應(yīng)用程序接口(API)。它既支持點對點的域,有支持發(fā)布/訂閱(publish/subscribe)類型的域,并且提供對下列類型的支持:經(jīng)認可的消息傳遞,事務(wù)型消息的傳遞,一致性消息和具有持久性的訂閱者支持。JMS還提供了另
一種方式來對您的應(yīng)用與舊的后臺系統(tǒng)相集成。
JTA(Java Transaction Architecture)
JTA定義了一種標準的API,應(yīng)用系統(tǒng)由此可以訪問各種事務(wù)監(jiān)控。
JTS(Java Transaction Service):
JTS是CORBA OTS事務(wù)監(jiān)控的基本的實現(xiàn)。JTS規(guī)定了事務(wù)管理器的實現(xiàn)方式。該事務(wù)管理器是在高層支持Java Transaction API (JTA)規(guī)范,并且在較底層實現(xiàn)OMG OTS specification的Java映像。JTS事務(wù)管理器為應(yīng)用服務(wù)器、資源管理器、獨立的應(yīng)用以及通信資源管理器提供了事務(wù)服務(wù)。
JavaMail
JavaMail是用于存取郵件服務(wù)器的API,它提供了一套郵件服務(wù)器的抽象類。不僅支持SMTP服務(wù)器,也支持IMAP服務(wù)器。
JAF(JavaBeans Activation Framework)
JavaMail利用JAF來處理MIME編碼的郵件附件。MIME的字節(jié)流可以被轉(zhuǎn)換成Java對象,或者轉(zhuǎn)換自Java對象。大多數(shù)應(yīng)用都可以不需要直接使用JAF。
【J2EE的層次和組成】相關(guān)文章:
5.品牌的層次