官术网_书友最值得收藏!

1.2 Java EE簡介

Java EE是建立在Java平臺上的企業(yè)級應(yīng)用的解決方案。其技術(shù)的基礎(chǔ)是Java平臺,不但有Java SE平臺的所有功能,同時還提供了對EJB、Servlet、JSP、XML等技術(shù)的全面支持,最終目標(biāo)是為使用Java技術(shù)開發(fā)服務(wù)器端的應(yīng)用提供了一個平臺獨立的、可移植的、多用戶的、安全的和基于標(biāo)準(zhǔn)的企業(yè)級平臺,從而簡化企業(yè)應(yīng)用的開發(fā)、部署和管理。

Java EE是一個標(biāo)準(zhǔn),一種規(guī)范,而不是一個現(xiàn)成的產(chǎn)品。各個平臺開發(fā)商,如IBM、BEA公司等,按照J(rèn)ava EE規(guī)范分別開發(fā)了不同的Java EE應(yīng)用服務(wù)器,以及開發(fā)Java EE企業(yè)級應(yīng)用的IDE工具。Java EE應(yīng)用服務(wù)器是Java EE企業(yè)級應(yīng)用的部署平臺,由于它們都遵循了Java EE規(guī)范,因此,使用Java EE技術(shù)開發(fā)的企業(yè)級應(yīng)用可以部署在各種Java EE應(yīng)用服務(wù)器上。

1.2.1 Java EE體系結(jié)構(gòu)

為了規(guī)范使用Java EE架構(gòu)來構(gòu)建企業(yè)級應(yīng)用,Sun公司給出了一個建議性的Java EE應(yīng)用設(shè)計模型,如圖1-11所示。

圖1-11 Java EE體系結(jié)構(gòu)

這個模型提供了實施Java EE企業(yè)級應(yīng)用的體系結(jié)構(gòu)、設(shè)計模式和相關(guān)的代碼規(guī)范。

通過應(yīng)用Java EE體系結(jié)構(gòu)所描述的體系模型,能夠部分簡化架構(gòu)企業(yè)級應(yīng)用這項復(fù)雜的工作。Java EE體系是開發(fā)人員設(shè)計和優(yōu)化Java EE組件的基本原則,同時為圍繞開發(fā)工作進行職能分工給出了指導(dǎo)性策略,以幫助應(yīng)用開發(fā)設(shè)計人員合理地分配技術(shù)資源。

通過分析Java EE應(yīng)用設(shè)計模型,可以看出Java EE架構(gòu)分為三層:客戶層、中間層及企業(yè)信息系統(tǒng)層,其中中間層又分為Web層和業(yè)務(wù)層,如圖1-1 2所示。

圖1-12 Java EE多層模型

● 客戶層

客戶層提供用戶與應(yīng)用程序交互的方式。這種交互可以是通過Web瀏覽器實現(xiàn)的,也可以通過Web服務(wù)接口以編程方式實現(xiàn)。

在一個基于Web的Java EE應(yīng)用中,用戶通過瀏覽器與部署在Web服務(wù)器上的應(yīng)用程序交互,這時,客戶層中的就是用戶的瀏覽器,用戶在瀏覽器中發(fā)出請求,查看Web服務(wù)器的某個頁面,或輸入信息,提交到Web服務(wù)器上;Web服務(wù)器將Web層中的靜態(tài)HTML頁面或由JSP或Servlet生成的動態(tài)HTML頁面?zhèn)魉徒o瀏覽器。

在一個不是基于Web的Java EE應(yīng)用程序中,客戶層中的是一個獨立的客戶端程序。客戶端程序可能會包括JavaBean,JavaBean處理用戶的輸入信息,并將輸入發(fā)送到業(yè)務(wù)層中運行的Enterprise Bean來處理。

● Web層

Web層使客戶層可以與駐留在其他層的應(yīng)用程序邏輯通信和交互。在典型的Web應(yīng)用程序中,通常一些或全部應(yīng)用程序邏輯就駐留在Web層。

Java EE的Web層通常由JSP頁面,以及顯示HTML頁面的Servlet組成。就像客戶層一樣,Web層也可能會包括JavaBean來管理用戶的輸入,并將輸入發(fā)送到業(yè)務(wù)層中運行的Enterprise Bean來處理。

● 業(yè)務(wù)層

運行在業(yè)務(wù)層的EJB負(fù)責(zé)執(zhí)行整個應(yīng)用程序中的業(yè)務(wù)邏輯。

一方面,EJB從客戶層中接收數(shù)據(jù),并對數(shù)據(jù)進行加工處理,再將數(shù)據(jù)發(fā)送到企業(yè)信息系統(tǒng)層存儲。另一方面,EJB還從企業(yè)信息系統(tǒng)層中檢索數(shù)據(jù),并將數(shù)據(jù)送回客戶程序,顯示給用戶。因此業(yè)務(wù)層經(jīng)常被稱為EJB層。

● 企業(yè)信息系統(tǒng)層

企業(yè)信息系統(tǒng)層(EIS層)包含整個企業(yè)使用的數(shù)據(jù)和服務(wù)。它提供了對企業(yè)資源的訪問手段,這些企業(yè)資源包括數(shù)據(jù)庫、主機、客戶關(guān)系管理(CRM)應(yīng)用以及ERP(企業(yè)資源規(guī)劃)系統(tǒng)。中間層使用專用于資源的協(xié)議與EIS層中的組件通信。例如,為了與關(guān)系數(shù)據(jù)庫通信,中間層通常要使用JDBC驅(qū)動程序。對于ERP系統(tǒng)而言,還要使用專用的適配器。

1.2.2 Java EE組件及容器

1.Java EE組件

一個多層的分布式的應(yīng)用模型意味著應(yīng)用邏輯根據(jù)功能劃分成組件,并且可以在同一個服務(wù)器或不同的服務(wù)器上安裝這些組件。一個應(yīng)用組件應(yīng)被安裝在什么地方,取決于該應(yīng)用組件屬于多層的Java EE環(huán)境中的哪一層。

Java EE定義了4種組件:Applets和Application Client是客戶層中包含的組件;Web組件(包括JSP和Servlet)放置在Web層;還有Enterprise JavaBean放置在業(yè)務(wù)層,如圖1-13所示。

圖1-13 Java EE組件

● 客戶層組件

Applet是嵌在瀏覽器中的一種輕量級客戶端,一般而言,僅當(dāng)使用Web頁面無法充分地表現(xiàn)數(shù)據(jù)或應(yīng)用界面時才使用它。Applet是一種替代Web頁面的手段,僅能夠使用Java SE開發(fā)Applet,Applet無法使用Java EE的各種Service和API,這是基于安全性的考慮。

Application Client相對Applet而言是一種較重量級的客戶端,它能夠使用Java EE的大多數(shù)Service和API。Java EE應(yīng)用程序客戶端與一般的Java應(yīng)用程序的區(qū)別在于,它必須在Java EE上運行,所以能夠訪問其他Java EE組件。而一般的Java應(yīng)用程序不能訪問像EJB那樣的Java EE組件。

● Web層組件

Web層中包括兩種組件:JSP和Servlet。JSP和Servlet都是Web服務(wù)器的功能擴展,接收Web請求,返回動態(tài)的Web頁面。Web容器中的組件可使用EJB層中的組件完成復(fù)雜的商業(yè)邏輯。

● 業(yè)務(wù)層組件

業(yè)務(wù)層,也就是EJB層,它是Java EE的核心之一,主要用于服務(wù)器端的業(yè)務(wù)邏輯的實現(xiàn)。EJB規(guī)范定義了一個開發(fā)和部署分布式商業(yè)邏輯的框架,以簡化企業(yè)級應(yīng)用的開發(fā),使其較容易地具備可伸縮性、可移植性、分布式事務(wù)處理、多用戶和安全性等。

2.Java EE容器

所有的Java EE組件都運行在容器中。Java EE將組成一個完整企業(yè)級應(yīng)用的不同部分納入不同的容器,每個容器中都包含若干組件,這些組件是需要部署在相應(yīng)容器中的。通常,容器提供了運行于其中的組件的控制環(huán)境。容器提供了其中的組件可以使用的通用服務(wù),這樣組件開發(fā)人員無須自己編寫這些服務(wù)。

Java EE容器包括4個:Applet容器和Application Client容器,這些是客戶端容器;Web組件容器和EJB容器,這些是服務(wù)器端容器,如圖1-14所示。

圖1-14 Java EE容器

Applet容器包含的組件為Applet;Application Client容器包含的組件為Application Client;Web容器包含兩種組件JSP和Servlet;EJB容器包含組件EJB。

容器為組件的運行提供環(huán)境。例如,EJB容器用來容納業(yè)務(wù)邏輯,并為業(yè)務(wù)邏輯截取請求。EJB在EJB容器中運行,EJB容器為EJB提供所有典型的中間層服務(wù),如事務(wù)管理、安全、遠(yuǎn)程連接、生存周期管理和數(shù)據(jù)庫連接緩沖。組件開發(fā)人員不必關(guān)心這些資源的管理。

Web容器截取通過HTTP、FTP、SMTP或其他協(xié)議發(fā)送的請求。Web應(yīng)用容器為Servlet和JSP頁面提供的資源與EJB容器提供的資源相同。Web容器允許Servlet、JSP組件和其他Java類在容器中部署和執(zhí)行。JSP和Servlet這種Web組件依賴Web容器支持諸如客戶請求和響應(yīng)及Enterprise Bean查詢等。像Java Naming and Directory Interfac(e Java命名和目錄接口,JNDI)、連接池和事務(wù)服務(wù)都可以在容器層次上配置。

客戶端應(yīng)用是獨立的Java應(yīng)用,它們在遠(yuǎn)程的獨立JVM上運行(與Web容器和EJB容器所運行的JVM不同)。應(yīng)用客戶端容器為這些應(yīng)用截取請求。運行在應(yīng)用客戶端容器上的程序非常類似于帶有main()方法的Java程序,不過,程序不再由JVM控制,而是由一個容器(也就是應(yīng)用客戶端容器)控制。在應(yīng)用客戶端容器內(nèi)運行的程序能夠訪問遠(yuǎn)程應(yīng)用服務(wù)器上的JAXP、JDBC、JMS和JAAS資源。

Applet容器是一個特殊的容器,它為在瀏覽器內(nèi)運行的Java程序截取請求。Applet容器不提供任何對其他資源(比如JDBC和JMS)的訪問。在Applet容器內(nèi)運行的Applet必須自己直接向應(yīng)用服務(wù)器請求資源(而不是把請求發(fā)送給容器,然后由容器發(fā)送請求給應(yīng)用服務(wù)器)。

當(dāng)使用容器提供的服務(wù)時,組件開發(fā)人員可能不得不將對環(huán)境的某些控制權(quán)交給容器。第三方開發(fā)商構(gòu)建這些容器,但是他們必須遵守公共規(guī)范中明確規(guī)定的指導(dǎo)原則,盡管允許每一個開發(fā)商以特有的方式實現(xiàn)容器的某些部分,但是他們還是必須遵守這些規(guī)則,以確保應(yīng)用程序可以移植。

1.2.3 Java EE打包與部署

Java EE平臺允許開發(fā)人員可以在其上整合不同的組件,這個將組件整合為模塊并將模塊整合為商業(yè)應(yīng)用程序的過程叫做打包。而在一個可使用的環(huán)境中安裝和定制應(yīng)用程序的過程則叫做部署。

Java EE規(guī)范不僅為Java EE應(yīng)用程序的結(jié)構(gòu)建立和生成提供了指導(dǎo),還定義了怎樣對EJB、JSP和Servlet等組件打包。它定義將一個或多個組件集成為一個模塊,模塊作為最小單元提供獨立部署。也就是說,一個模塊可以直接部署到Java EE容器中運行,或者多個模塊可以集合起來組建成一個Java EE應(yīng)用程序部署。比如說,幾個EJB組件可以被打包成EJB模塊,同時這個EJB模塊也可以進一步與其他模塊結(jié)合起來,建造成一個完成的Java EE應(yīng)用部署。Java EE平臺為打包和部署提供了相應(yīng)的工具,使得其過程相對簡單,如圖1-15所示。

圖1-15 Java EE打包部署

EAR是Enterprise Application Archive的縮寫。EAR文件用來把一個或多個Java EE組件封裝到單個模塊里面,以便一起部署并裝入到服務(wù)器上。

Java EE規(guī)范描述4種類型的模塊:Web模塊、EJB模塊、應(yīng)用程序客戶端模塊和資源適配器模塊。當(dāng)部署到Java EE應(yīng)用程序服務(wù)器時,通常會將所有這些模塊都壓縮到單個Java EE應(yīng)用程序EAR文件中。每個模塊都有相應(yīng)的部署描述符,部署描述符是一個XML格式的文件,它描述了相應(yīng)模塊部署時的配置信息。整個Java EE程序的EAR文件也有一個部署描述符:application.xml。

● Web模塊

Web模塊包含Web層的組件及資源,由JSP、Servlet、JSP標(biāo)簽庫、HTML或XML文檔,以及其他公共資源如圖片,applet類文件組成。在Web模塊中,部署描述符web.xml具有Servlet初始化和映射信息以及用于在應(yīng)用程序服務(wù)器中運行Web模塊的其他設(shè)置。Web模塊會被打包成Web Application Archive文件,即WAR文件。

● EJB模塊

EJB模塊包含EJB和EJB部署描述符。它們包含應(yīng)用程序的業(yè)務(wù)邏輯,通常會被Web模塊、Application Client模塊和其他EJB模塊調(diào)用。EJB模塊會被打包成Java Archive文件,即JAR文件。JAR文件包含一個或多個EJB組件。

● 應(yīng)用程序客戶端模塊

應(yīng)用程序客戶端模塊包含應(yīng)用客戶類,也被打包成Java Archive文件,并且還有一個部署描述符application-client.xml。應(yīng)用程序客戶端模塊中除了包含運行獨立的客戶端所需要的類,當(dāng)然還包括訪問JDBC、JMS、JAXP、JAAS或者EJB客戶所需的任何客戶端庫。部署時,JAR文件包含一個獨立的Java應(yīng)用程序,會在應(yīng)用程序的客戶端容器中運行。

● 資源適配器模塊

資源適配器模塊包含Java連接器、資源適配器和幫助庫函數(shù)及相關(guān)資源。還有一個部署描述符ra.xml文件。資源適配器RAR文件通常包含在一個企業(yè)信息系統(tǒng)中,來實現(xiàn)一個JCA資源適配器所需的本地庫和Java類。資源適配器不在容器內(nèi)執(zhí)行,相反,它們應(yīng)該作為應(yīng)用服務(wù)器和外部企業(yè)信息系統(tǒng)之間的橋接軟件執(zhí)行。

對于一個Java EE企業(yè)應(yīng)用程序來講,它就是由一個或多個Web、EJB或應(yīng)用客戶端模塊的組合。

主站蜘蛛池模板: 盐亭县| 宽甸| 静宁县| 绥德县| 县级市| 武邑县| 钟山县| 墨竹工卡县| 宿迁市| 阳原县| 蛟河市| 密山市| 中宁县| 息烽县| 灵川县| 栾川县| 桦甸市| 桐城市| 吉林市| 金平| 娄底市| 商都县| 新疆| 庆城县| 东莞市| 民权县| 徐水县| 保康县| 神木县| 景宁| 建宁县| 大渡口区| 保靖县| 酒泉市| 银川市| 南宫市| 上饶县| 绥宁县| 钦州市| 岳池县| 白朗县|