今天,越來越多的程序設(shè)計人員希望借助服務(wù)器端技術(shù)的快捷、安全以及可靠性,為他們的企業(yè)開發(fā)分布式的交易應(yīng)用系統(tǒng)。如果你已經(jīng)工作在這一領(lǐng)域,你將非常清楚,在今天這樣一個電子商務(wù)和信息技術(shù)飛速發(fā)展、并充滿需求的世界上,企業(yè)應(yīng)用必須以更少的資金、更快的速度和比以往更少的資源來設(shè)計、建造和運營。 為降低成本、快速實現(xiàn)企業(yè)應(yīng)用的設(shè)計和開發(fā),J2EE平臺技術(shù)為企業(yè)應(yīng)用的設(shè)計、開發(fā)、集成以及部署提供了一條基于組件的實現(xiàn)途徑。J2EE平臺為您提供了一個多層次分布是應(yīng)用設(shè)計模式,重用組件的能力,統(tǒng)一的安全模式,靈活的交易控制。你不僅可以把全新的客戶解決方案,用比以往都快的速度推向市場,而且平臺獨立、基于J2EE組件的解決方案將使你的產(chǎn)品不綁定在任何一個廠商的產(chǎn)品和API上。 本文介紹J2EE 1.3平臺并同時作為J2EE教程的概述章節(jié)。J2EE教程采用基于范例的方式,描述J2EE SDK 1.3版的特點和功能。無論你是新手還是有經(jīng)驗的企業(yè)應(yīng)用開發(fā)人員,你都將發(fā)現(xiàn)J2EE教程中結(jié)合了文字的范例,是你創(chuàng)建自己企業(yè)的解決方案時,有價值的、唾手可得知識庫。 如果你是剛剛開始接觸J2EE應(yīng)用開發(fā),這個介紹是一個很好的起點。在這里你將學(xué)習(xí)J2EE架構(gòu),開始熟悉重要的術(shù)語和概念,找到如何開始進行J2EE應(yīng)用程序編程,集成和部署。 分布式的多層次應(yīng)用 J2EE平臺采用一個多層次分布式的應(yīng)用模式。這意味著應(yīng)用邏輯根據(jù)功能被劃分成組件,組成J2EE應(yīng)用的不同應(yīng)用組件安裝在不同的服務(wù)器上,這種劃分是根據(jù)應(yīng)用組件屬于多層次J2EE環(huán)境中的哪一個層次來決定的。圖1展示了兩個多層次J2EE應(yīng)用劃分成在下面的表中描述的不同層次。圖1中表示的J2EE應(yīng)用部分代表了J2EE應(yīng)用組件。 • 運行在客戶機器上的客戶層組件 • 運行在J2EE服務(wù)器上的Web層組件 • 運行在J2EE服務(wù)器上的業(yè)務(wù)層組件 • 運行在EIS服務(wù)器上的企業(yè)信息系統(tǒng)層軟件 如圖1所示,J2EE應(yīng)用可以由三或四個層次組成,J2EE多層次應(yīng)用一般被認為是三層應(yīng)用,因為它們是被分布在三個不同的地點:客戶端機器、J2EE服務(wù)器和數(shù)據(jù)庫或后端的傳統(tǒng)系統(tǒng)服務(wù)器。三層架構(gòu)應(yīng)用是對標準的客戶端/服務(wù)器應(yīng)用架構(gòu)的一種擴展,即在客戶端應(yīng)用和后臺存儲之間增加一個多線程應(yīng)用服務(wù)器。
J2EE應(yīng)用組件 J2EE應(yīng)用是由組件組成的。J2EE組件是一個自我封裝的功能軟件單元,它將通過相關(guān)的類、文件和與其它組件的通訊,被集成進J2EE應(yīng)用。J2EE規(guī)范定義了如下J2EE組件: • 應(yīng)用(Application)客戶端和小程序(applet)是客戶端組件 • Java Servlet和Java Server Pages技術(shù)組件是Web組件 • Enterprise JavaBeans(EJB)組件是業(yè)務(wù)組件 J2EE組件使用Java編程語言編寫的,也向任何Java編程語言程序一樣編譯的。使用J2EE平臺的不同之處是,J2EE組件是被集成到J2EE應(yīng)用中的,是經(jīng)過很好格式化的并經(jīng)過J2EE規(guī)范兼容性驗證的,而且在部署和正式運行時,是運行在J2EE服務(wù)器上,并且是在J2EE服務(wù)器的管理下運行的。 客戶端組件 一個J2EE應(yīng)用可以使基于Web的或不基于Web的。對于不基于Web的J2EE應(yīng)用,一個應(yīng)用客戶端軟件將運行在客戶端機器上,而對于基于Web的J2EE應(yīng)用,瀏覽器會下載Web頁面和小程序(applet)到客戶端機器上。 應(yīng)用客戶端 運行在客戶端機器上的應(yīng)用客戶端軟件,為用戶提供一個途徑,處理象J2EE系統(tǒng)或應(yīng)用管理這樣的工作。它通常由一個用Swing或AWT API開發(fā)的圖形用戶界面,但是也可以使用命令行接口。 應(yīng)用客戶端軟件直接訪問運行在業(yè)務(wù)層的企業(yè)Bean。當(dāng)然,如果J2EE應(yīng)用客戶端允許,一個應(yīng)用客戶端也可以建立HTTP連接,與運行在Web層的Servlet進行通訊。 Web瀏覽器 用戶端的Web瀏覽器從Web層下載HTML/WML/XML等靜態(tài)或動態(tài)Web頁面。動態(tài)頁面是由運行在Web層的Servlet或JSP頁面生成的。 Applet 一個從Web層下載的Web頁面可以包含嵌入的applet。一個applet是一個用Java編程語言編寫的小客戶端應(yīng)用,通過安裝在Web瀏覽器上的Java虛擬機執(zhí)行。然而,applet要在Web瀏覽器上成功運行,客戶端系統(tǒng)還需要Java插件(Java Plug-in)和安全策略文件。 JSP頁面是推薦的創(chuàng)建基于Web的客戶端程序的API,因為在客戶端無需插件和安全策略文件。而且,JSP頁面支持清晰的、多模塊應(yīng)用設(shè)計,因為它提供一個途徑,使應(yīng)用程序編程和Web頁面設(shè)計分離。這意味著參與Web頁面設(shè)計的人員所要做的工作,不需要了解Java編程語言的語法。 運行在基于網(wǎng)絡(luò)的系統(tǒng),例如手持設(shè)備、汽車電話等上的Applet,可以執(zhí)行運行在J2EE服務(wù)器上的JSP頁面或Servlet生成的WML頁面。WML頁面是通過無線應(yīng)用協(xié)議(WAP)傳送的,網(wǎng)絡(luò)配置需要一個網(wǎng)關(guān),把WAP轉(zhuǎn)換成HTTP,然后在轉(zhuǎn)換回來。網(wǎng)關(guān)把從手持設(shè)備上來的WAP請求轉(zhuǎn)換成J2EE服務(wù)器的HTTP請求,再把HTTP服務(wù)器的響應(yīng)和WML頁面轉(zhuǎn)換成一個WAP服務(wù)器響應(yīng)和WML頁面顯示在手持設(shè)備上。 JavaBeans組件架構(gòu) 客戶層也由一個基于JavaBeans組件架構(gòu)的組件,用于管理應(yīng)用客戶端或applet 與運行在J2EE服務(wù)器上的組件之間的數(shù)據(jù)流。JavaBeans組件不是在J2EE規(guī)范中的組件。 為J2EE平臺而寫的JavaBeans組件,包含實例變量以及為訪問實例變量的讀取和設(shè)置方法。以這種方式使用的JavaBeans組件一般設(shè)計和實現(xiàn)起來非常簡單,但是要遵循JavaBeans組件架構(gòu)中的命名和設(shè)計規(guī)范。 J2EE服務(wù)器通訊 圖2展示了組成客戶層的不同組成部分??蛻舳伺c運行在J2EE服務(wù)器上的業(yè)務(wù)層之間的通訊,可以是直接的,或者是在客戶端運行瀏覽器的情況下,通過運行在Web層的JSP頁面或Servlet完成。
瘦客戶端 J2EE應(yīng)用使用瘦客戶端。一個瘦客戶端是與應(yīng)用連接地輕負載接口,它不處理象查詢數(shù)據(jù)庫、執(zhí)行負載業(yè)務(wù)邏輯、或域傳統(tǒng)系統(tǒng)連接等工作。象這樣的重負載被轉(zhuǎn)移到運行在J2EE服務(wù)器上的Web或企業(yè)Beans上,這樣可以借助J2EE服務(wù)器端技術(shù)的安全性、快速、服務(wù)和可靠性。 Web組件 J2EE的Web組件可以是JSP頁面,也可以是Servlet。Servlet是Java編程語言的類,能夠動態(tài)處理請求并生成響應(yīng)。JSP頁面是基于文本的文件,包含靜態(tài)內(nèi)容和小段的Java編程語言代碼用以生成動態(tài)內(nèi)容。當(dāng)JSP頁面被調(diào)用時,后臺Servlet執(zhí)行這小短代碼,并返回結(jié)果。 靜態(tài)HTML頁面和applet在應(yīng)用集成的時候是與Web組件捆綁在一起的。但是沒有被J2EE規(guī)范最為Web組件處理。服務(wù)器端應(yīng)用類也可以與Web組件捆綁,象HTML一樣,沒有作為Web組件。 如圖3展示,向客戶層一樣,Web層有JavaBeans對象管理用戶的輸入,并把輸入發(fā)送到運行在業(yè)務(wù)層的企業(yè)Bean處理。
業(yè)務(wù)組件 業(yè)務(wù)代碼,用于解決或滿足特定的業(yè)務(wù)領(lǐng)域的問題的邏輯,例如銀行、零售或者金融等等,是在業(yè)務(wù)層,由企業(yè)Beans來處理的。圖4展示一個企業(yè)Beans是如何接收客戶端程序的數(shù)據(jù),處理它(如果需要的話),并把它發(fā)送到企業(yè)信息系統(tǒng)層進行存儲。企業(yè)Bean同樣接收存儲的數(shù)據(jù),處理它(如果需要的話),在發(fā)送回客戶端程序。 企業(yè)Beans有三類:Session Beans、實體beans(entity beans)和消息驅(qū)動Beans。一個Session Bean代表一個與客戶的臨時會話。當(dāng)客戶結(jié)束操作時,這個Session Bean和它的數(shù)據(jù)就消失了。相反,實體Bean表示一個永久存儲在數(shù)據(jù)庫的表中的數(shù)據(jù)。如果客戶結(jié)束操作或服務(wù)器關(guān)機,后臺操作保證實體Beans的數(shù)據(jù)存儲下來。 一個消息驅(qū)動的Bean結(jié)合了Session Bean和Java消息服務(wù)(JMS)消息偵聽器的功能,允許業(yè)務(wù)組件以異步的方式接收JMS消息。這里介紹實體Beans和Session Beans。想了解更多的關(guān)于消息驅(qū)動Beans,參加Java Message Service教程。
企業(yè)信息系統(tǒng)層 企業(yè)信息系統(tǒng)層處理企業(yè)信息系統(tǒng)軟件,包括企業(yè)體系結(jié)構(gòu)系統(tǒng)如企業(yè)資源規(guī)劃(ERP),大型機交易處理,數(shù)據(jù)庫系統(tǒng),以及傳統(tǒng)信息系統(tǒng)。J2EE應(yīng)用組件需要訪問企業(yè)信息系統(tǒng),例如建立數(shù)據(jù)庫連接等等。 J2EE架構(gòu) 通常,瘦客戶端多層次應(yīng)用是很難編寫的,因為它包括很多行非常難以理解的代碼,以處理交易和狀態(tài)管理,多線程,資源池管理,以及其他復(fù)雜的低層次細節(jié)問題?;诮M件的、與平臺無關(guān)的J2EE應(yīng)用的開發(fā)是很容易的,因為業(yè)務(wù)邏輯被組織成可重復(fù)使用的組件,而且J2EE服務(wù)器以容器(Container)的形式為每種類型的組件提供后臺支持。由于你不必自己開發(fā)這些服務(wù),你可以專注于解決你面臨的業(yè)務(wù)問題。 容器(container)和服務(wù) 組件在部署時被安裝在容器之中,是組件和特定平臺底層功能之間的接口支持著組件。在Web,企業(yè)Bean或者應(yīng)用客戶端組件能夠被執(zhí)行以前,它必須被組裝到J2EE應(yīng)用里,并且被部署到它的容器里。 組裝流程包括設(shè)定J2EE應(yīng)用中的每一個組件以及J2EE應(yīng)用本身在容器之中的設(shè)置。容器的設(shè)置個性化了J2EE服務(wù)器對每個組件的后臺支持,包括象安全性、交易管理、Java命名和目錄接口查詢,以及遠程連接等等。這里是一些重點: • J2EE安全模式,使你能夠配置Web組件或企業(yè)Bean,使系統(tǒng)資源只能被授權(quán)的用戶訪問。 • J2EE交易模式,使你能夠指定方法之間的關(guān)系,從而組成一個交易,這樣交易中的所有方法將被作為一個單元對待。 • JNDI查詢服務(wù),為企業(yè)中多種命名和目錄服務(wù)提供統(tǒng)一的接口,這樣應(yīng)用組件就可以訪問命名和目錄服務(wù)了。 • J2EE遠程連接模式,管理客戶端和企業(yè)Beans之間的底層通訊。在企業(yè)Bean被創(chuàng)建后,客戶端調(diào)用它的方法,就象它在同一個虛擬機上一樣。 實際上,J2EE架構(gòu)提供可配置的服務(wù),意思是在同一個J2EE應(yīng)用中的應(yīng)用組件可以根據(jù)他們部署的位置不同,表現(xiàn)不同。一個企業(yè)Bean可以通過不同的安全設(shè)置,是它在一個生產(chǎn)系統(tǒng)中獲得一種層次的數(shù)據(jù)庫數(shù)據(jù)訪問,而在另一個生產(chǎn)系統(tǒng)中,則獲得另一種數(shù)據(jù)庫訪問權(quán)限。 容器還管理著不可配置服務(wù),如企業(yè)bean和Servlet的生命周期,數(shù)據(jù)庫連接資源池,數(shù)據(jù)持續(xù)性(persistence),以及J2EE API中描述的訪問J2EE平臺的API。盡管數(shù)據(jù)持續(xù)性機制是一個不可配置服務(wù),J2EE架構(gòu)允許你在需要比缺省的容器管理的持續(xù)性機制更多的控制時,用你的企業(yè)Bean實現(xiàn)中的相應(yīng)的代碼覆蓋原有的容器管理的持續(xù)機制。例如,你可以使用Bean管理的持續(xù)性機制來實現(xiàn)你自己的搜索方法,或創(chuàng)建個性化的數(shù)據(jù)庫緩存。 容器類型 在部署過程之中,J2EE應(yīng)用組件被安裝在如下類型的J2EE容器中。本文中涉及的J2EE組件和容器參見圖5。 企業(yè)JavaBeans(EJB)容器,為J2EE應(yīng)用管理著所有的企業(yè)Beans。企業(yè)Bean和它們的容器運行在J2EE服務(wù)器上。 Web容器,為J2EE應(yīng)用管理著所有的JSP頁面和Servlet組件。Web組件和它們的容器運行在J2EE服務(wù)器上。 應(yīng)用客戶端容器,為J2EE應(yīng)用管理著所有的應(yīng)用客戶端組件。應(yīng)用客戶端組件和它們的容器運行在客戶端機器上。 applet容器,是Web瀏覽器和Java插件的組合,運行在客戶端機器上。
包裝 J2EE組件是單獨包裝的,為部署而捆綁到J2EE應(yīng)用中。每個組件,其相關(guān)的文件如GIF和HTML文件,或者服務(wù)器端應(yīng)用類,以及部署描述,被集成成一個模塊并添加到J2EE應(yīng)用中。J2EE應(yīng)用是由一個或多個企業(yè)Bean,Web,或應(yīng)用客戶端組件模塊組成的。最終企業(yè)解決方案可以使用一個J2EE應(yīng)用或根據(jù)設(shè)計需要由兩個或更多的J2EE應(yīng)用組成。 一個J2EE應(yīng)用以及它的每一個模塊都有它自己的部署描述。部署描述是一個XML文本文件,帶有.xml后綴,描述組件的部署設(shè)置。一個企業(yè)Bean的部署描述,例如,聲明交易屬性,和企業(yè)Bean的安全認證。由于部署描述的信息是可以聲明的,這樣它可以在無需修改Bean的源代碼的情況下,進行修改。在運行時,J2EE服務(wù)器讀取部署描述,并依次對組件進行操作。 J2EE應(yīng)用以及相關(guān)的模塊是在一個Enterprise Archive(EAR)中發(fā)送的。EAR文件是一個標準的JAR文件,以.ear后綴結(jié)尾。在GUI版的J2EE SDK應(yīng)用部署工具集中,你先創(chuàng)建一個EAR文件,在添加JAR和WAR到EAR中。如果你使用命令行打包工具,則先創(chuàng)建JAR和WAR文件,然后創(chuàng)建EAR文件。J2EE SDK工具: • 每個EJB JAR文件包含它的部署描述,相關(guān)文件和企業(yè)Bean的.class文件 • 每個應(yīng)用客戶端JAR包含它的部署描述,相關(guān)文件和應(yīng)用客戶端的.class文件 • 每個WAR文件包含它的部署描述,相關(guān)文件和servlet的.class文件以及JSP頁面的.jsp文件 使用模塊和EAR文件使使用一些相同的組件組裝多個不同的J2EE應(yīng)用成為可能。無需額外的編程,只是把不同的J2EE模塊組裝到J2EE EAR文件中。 開發(fā)的角色 可重用模塊使把應(yīng)用開發(fā)和部署過程分成截然不同的角色成為可能。這樣不同的人或公司能夠在整個過程中實施不同的部分。 最開始的兩個角色包括購買和安裝J2EE產(chǎn)品和工具。當(dāng)軟件采購的并且安裝了, J2EE組件可以由應(yīng)用組件提供商開發(fā),由應(yīng)用組裝商組裝,由應(yīng)用部署商部署。在一個大的機構(gòu)中,每一個角色由不同的個人或小組完成。這種勞動力的分割是可行的,因為每一個先前的角色輸出一個可移植的文件,這個文件可以作為后續(xù)角色的輸入。例如,在應(yīng)用組件開發(fā)階段,一個企業(yè)Bean軟件開發(fā)商提交EJB JAR文件。在應(yīng)用組裝角色中,另一個開發(fā)商把這些EJB JAR文件與J2EE應(yīng)用相結(jié)合,并存放在一個EAR文件中。在應(yīng)用部署角色中,系統(tǒng)管理員在客戶現(xiàn)場,使用EAR文件,把J2EE應(yīng)用安裝到一個J2EE服務(wù)器中。 不同的角色并不是總是由不同的人來執(zhí)行的。如果你為一個小公司工作,或者你在構(gòu)建一個測試應(yīng)用,你可能要執(zhí)行每一個階段的工作。 J2EE產(chǎn)品供應(yīng)商 J2EE產(chǎn)品供應(yīng)商是設(shè)計和制作能夠用于銷售的J2EE平臺、API和J2EE規(guī)范所定義的其他特性的公司。產(chǎn)品供應(yīng)商一般是操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、應(yīng)用服務(wù)器或Web服務(wù)器廠商,他們根據(jù)J2EE規(guī)范實現(xiàn)J2EE平臺。 工具供應(yīng)商 工具供應(yīng)商是個人或公司,他們提供組件開發(fā)商、組裝商、部署商等使用的開發(fā)、組裝和包裝工具。參見工具信息提供的J2EE SDK 1.3兼容的工具。 應(yīng)用組件供應(yīng)商 應(yīng)用組件供應(yīng)商是公司或個人,他們制作Web組件、企業(yè)Beans、applet或應(yīng)用客戶端,這些組件可用于J2EE應(yīng)用。 企業(yè)Bean制作 軟件開發(fā)者完成以下工作,以提供包含企業(yè)Bean的EJB JAR文件: • 編寫并編譯源代碼 • 定制部署描述 • 捆綁.class文件和部署描述到一個EJB JAR文件 Web組件制作 Web開發(fā)者(JSP頁面)或軟件開發(fā)者(servlet)完成以下工作,以提供包含Web組件的WAR文件。 • 編寫并編譯servlet源代碼 • 編寫JSP和HTML文件 • 為web組件定制部署描述 • 捆綁.class,.jsp,.html和部署描述文件到WAR文件 J2EE應(yīng)用客戶端制作 軟件開發(fā)者完成以下工作,以提供包含J2EE應(yīng)用客戶端的JAR文件。 • 編寫并編譯源代碼 • 為客戶端定制部署描述 • 捆綁.class文件和部署描述文件到JAR文件 應(yīng)用組裝商 應(yīng)用組裝商是一些公司或個人,他們從組件供應(yīng)商那里得到應(yīng)用組件的JAR文件,并組裝成J2EE應(yīng)用的EAR文件。組裝商和部署商可以直接編輯部署描述或者使用工具,根據(jù)交互方式的選擇,正確的增加XML標簽。軟件開發(fā)商完成以下工作,以提供包含J2EE應(yīng)用的EAR文件。 • 組裝EJB JAR和前一階段開發(fā)的Web組件(WAR)文件,生成新的J2EE應(yīng)用(EAR)文件。 • 為J2EE應(yīng)用定制部署描述 • 檢查EAR文件的內(nèi)容是否是很好格式化的并符合J2EE規(guī)范 應(yīng)用部署商和管理員 部署商和管理員是公司或個人,他們配置并部署J2EE應(yīng)用,管理J2EE運行的計算和網(wǎng)絡(luò)架構(gòu),并監(jiān)視運行環(huán)境。責(zé)任包括設(shè)置交易控制,安全屬性,并設(shè)定與數(shù)據(jù)庫地連接。 在配置過程中,部署者遵循由應(yīng)用組件供應(yīng)商提供的指南,解決外部依賴關(guān)系,設(shè)定安全框架,設(shè)置交易屬性。在安裝過程中,部署商將應(yīng)用組件轉(zhuǎn)移到服務(wù)器上,并生成容器專用的類和接口。 部署商/系統(tǒng)管理員完成以下工作,已安裝并配置J2EE應(yīng)用。 • 增加在前一階段制作的J2EE應(yīng)用(EAR)文件到J2EE服務(wù)器上 • 為運行環(huán)境配置J2EE應(yīng)用,即修改J2EE應(yīng)用的部署描述 • 檢查EAR文件的內(nèi)容是否是很好格式化的并符合J2EE規(guī)范 • 部署(安裝)J2EE應(yīng)用的EAR文件到J2EE服務(wù)器 參考實現(xiàn)軟件 J2EE SDK是由Sun公司提供的J2EE平臺和規(guī)范的非商業(yè)用途的實現(xiàn),適用于示范、原形制作和教學(xué)環(huán)境。包含J2EE應(yīng)用服務(wù)器、Web服務(wù)器、關(guān)系型數(shù)據(jù)庫、J2EE API等,是一套完整的開發(fā)部署工具。你可以從網(wǎng)上下載J2EE SDK。 • 產(chǎn)品開發(fā)商使用J2EE SDK確定在一組給定應(yīng)用條件下必須組那些實現(xiàn),并且運行J2EE兼容性測試包,以檢測它們的產(chǎn)品測試包是否完全符合J2EE規(guī)范。 • 應(yīng)用組件開發(fā)商在J2EE SDK上運行他們的J2EE應(yīng)用,以驗證這些應(yīng)用是否適用于所有J2EE產(chǎn)品和工具。 Web服務(wù)器 Web服務(wù)器提供一個或多個Web容器。例如,Web容器一般依賴于Web服務(wù)器提供HTTP消息管理。J2EE實現(xiàn)不是必須支持某個特定的Web服務(wù)器,這意味著不同的J2EE產(chǎn)品對Web服務(wù)器的支持是由變化的。 數(shù)據(jù)庫訪問 關(guān)系性數(shù)據(jù)庫對應(yīng)用數(shù)據(jù)提供持久的存儲。J2EE實現(xiàn)不是必須支持某一特定類型的數(shù)據(jù)庫,這意味著不同J2EE產(chǎn)品對數(shù)據(jù)庫的支持是變化的。參見J2EE SDK下載文件中的版本說明,提供了參考實現(xiàn)目前支持的數(shù)據(jù)庫清單。 J2EE API Java 2平臺標準版(J2SE)SDK在運行J2EE SDK時是必需的,它為編寫J2EE組件提供核心API,核心開發(fā)工具,以及Java虛擬機。J2EE SDK提供下列API供J2EE應(yīng)用使用。 企業(yè)JavaBeans技術(shù) 2.0 一個企業(yè)Bean是一段包含域和方法的代碼體,用于實現(xiàn)業(yè)務(wù)邏輯的一個模塊。你可以認為企業(yè)Bean是一個構(gòu)建模塊,可以單獨使用或與其他企業(yè)Beans一起在J2EE服務(wù)器上執(zhí)行業(yè)務(wù)邏輯。 由三種類型的企業(yè)Bean:Session Bean,實體Beans,和消息驅(qū)動Beans,這些在業(yè)務(wù)組件中描述過。有了實體Beans,你無需編寫任何SQL代碼或直接使用JDBC API執(zhí)行數(shù)據(jù)庫訪問操作。EJB容器替你處理這些。當(dāng)然,如果你不管因為任何原因,覆蓋了卻省的容器管理持續(xù)性機制,你將需要使用JDBC API。同樣,如果你選用Session Beans訪問數(shù)據(jù)庫,你必須使用JDBC API。 JDBC 2.0 API JDBC API是你可以從Java編程語言的方法中,調(diào)用SQL命令。你在覆蓋了卻省的容器管理持續(xù)性機制,或選用Session Beans訪問數(shù)據(jù)庫,則企業(yè)Bean中訪問數(shù)據(jù)庫必須使用JDBC API。有了容器管理持續(xù)性機制,數(shù)據(jù)庫訪問操作由容器來處理,你的企業(yè)Bean的實現(xiàn)中不包含JDBC代碼或SQL命令。你也可以從servlet或JSP頁面中直接使用JDBC API訪問數(shù)據(jù)庫,而不通過企業(yè)Bean。 JDBC API由兩個部分:一個適用于應(yīng)用組件訪問數(shù)據(jù)庫的應(yīng)用驅(qū)動接口;一個是隸屬于J2EE平臺的服務(wù)提供接口。 Java Servlet技術(shù)2.3 Java Servlet技術(shù)為你定義HTTP專用的servlet類。一個Servlet類擴展了服務(wù)器的能力,這個服務(wù)器存放著應(yīng)用,而應(yīng)用是以請求-響應(yīng)編程模式被訪問的。盡管Servlet可以響應(yīng)任意形式的請求,但是它通常被用于擴展Web服務(wù)器存放的應(yīng)用。 JavaServer Pages(JSP)技術(shù) 1.2 JSP頁面技術(shù)是你能夠在基于文本的文件中結(jié)合小段的Java編程語言代碼和靜態(tài)內(nèi)容。一個JSP頁面是一個基于文本的文件,它包含兩種類型的文本:靜態(tài)模板數(shù)據(jù),它可以表示為任何基于文本的格式,如HTML、WML和XML;JSP元素,決定這個頁面如何構(gòu)造動態(tài)內(nèi)容。 Java Messaging Service 1.0 JMS API是一種消息標準,允許J2EE應(yīng)用組件創(chuàng)建、發(fā)送、接受和讀取消息。它是松散耦合的、可靠的,異步地進行分布式通訊。有關(guān)JMS的更多信息參見Java消息服務(wù)教程。 Java Transaction API(JTA) 1.0 JTA API為分段交易提供標準的分段接口。J2EE架構(gòu)提供一個缺省的自動確認來處理交易的確認和回滾。一個自動確認意味著任何其他查詢數(shù)據(jù)的應(yīng)用,在每次數(shù)據(jù)庫的讀寫操作以后,將看到最新的數(shù)據(jù)。然而,如果你的應(yīng)用執(zhí)行兩個獨立的相互依賴的數(shù)據(jù)庫訪問操作,你將希望使用JTA API來劃分,使整個交易同時含有開始、回滾和確認。 JavaMail技術(shù)1.2 很多互聯(lián)網(wǎng)應(yīng)用需要發(fā)送郵件進行確認,所以J2EE平臺包含了與JavaMail服務(wù)提供商配合使用的JavaMail API,這樣,應(yīng)用組件可以使用它發(fā)送郵件。JavaMail API包含兩個部分:一個是應(yīng)用層接口,應(yīng)用組件使用它發(fā)送郵件;一個服務(wù)提供商接口。 JavaBean Activation Framework 1.0 JavaBeans激活框架被包含是因為JavaMail要使用它。它提供標準的服務(wù),以確定專用數(shù)據(jù)的類型,對它的壓縮訪問,發(fā)現(xiàn)對它可以使用的操作,并創(chuàng)建相應(yīng)的JavaBean組件來執(zhí)行那些操作。 Java API for XML(JAXP) 1.1 XML是一種語言,用于表示和描述基于文本的數(shù)據(jù),這樣數(shù)據(jù)可以被使用XML API的程序或者工具所讀取和處理。程序和工具可以生成XML文件,另一些程序和工具可以讀取和處理。 例如,一個J2EE應(yīng)用使用XML制作報表,不同的公司收到這個報表,可以用最符合他們需要的方式處理這些數(shù)據(jù)。一個公司可能把XML數(shù)據(jù)通過程序轉(zhuǎn)換成HTML格式,這樣它可以把報表放在Web上,另一個公司可能把XML數(shù)據(jù)通過工具生成市場演講稿,再有另一個公司可能把XML數(shù)據(jù)讀到J2EE應(yīng)用中進行處理。 J2EE Connector API 1.0 連接器API被J2EE工具廠商和系統(tǒng)集成商用于創(chuàng)建資源適配器,使企業(yè)信息系統(tǒng)可以嵌入一些J2EE產(chǎn)品。一個資源適配器是一個軟件組件,它使J2EE應(yīng)用組件可以與后臺資源管理器進行訪問和交互。因為資源適配器是他的資源管理器專用的,所以每個類型的數(shù)據(jù)庫或信息系統(tǒng)有它不同的資源適配器。 Java授權(quán)與認證服務(wù)(JAAS)1.0 Java授權(quán)與認證服務(wù)(JAAS)提供一個途徑,使J2EE應(yīng)用可以授權(quán)并認證一個用戶或一個用戶組使用它。JAAS是標準的嵌入式認證模塊(PAM)框架的一個Java編程語言版本,使Java 2平臺安全架構(gòu)可以支持基于用戶的授權(quán)。 工具 J2EE參考實現(xiàn)提供一個應(yīng)用部署工具和一組腳本,用于組裝、驗證和部署J2EE應(yīng)用并管理你的開發(fā)和生產(chǎn)環(huán)境。參見J2EE教程以全面了解這些工具。 應(yīng)用部署工具 J2EE參考實現(xiàn)提供一個應(yīng)用部署工具,用于組裝、驗證和部署J2EE應(yīng)用。它由兩個版本:命令行和GUI。 GUI工具包含有Wizards用于: • 打包、配置和部署J2EE應(yīng)用 • 打包、配置企業(yè)Beans • 打包、配置Web組件 • 打包、配置應(yīng)用客戶端 • 打包、配置資源使配器 另外,配置信息可以在表格化的檢驗圖框中為每一個組件和模塊類型進行設(shè)置。 腳本 表1列出了J2EE參考實現(xiàn)中包含的腳本,你可以在命令行中執(zhí)行這些操作。
結(jié)論 J2EE平臺提供了你設(shè)計、建造、測試、部署分布式多層次應(yīng)用所需要的所有內(nèi)容。J2EE教程對平臺特性、API和工具進行了有深度的介紹。如果你需要J2EE應(yīng)用設(shè)計方面的幫助,J2EE BluePrints Digest對在J2EE平臺上,開發(fā)多層次、瘦客戶應(yīng)用,提供了高層次的描述。 應(yīng)用編程模式由技術(shù)主體和原則組成,指導(dǎo)J2EE應(yīng)用開發(fā)人員確定最合理的實施選擇、最有效的使用JSP和Servlets,在實現(xiàn)業(yè)務(wù)邏輯時選擇好的設(shè)計、有效的把J2EE安全模型映射到企業(yè)計算環(huán)境和體系結(jié)構(gòu)。 作者簡介 Monica Pawlan, Java Developer Connection(JDC)的首席作家,是Essentials of the Java Programming Language: A Hands-On Guide的作者,和Advanced Programming for the Java 2 Platform的合作作者。 |
|