您好,登錄后才能下訂單哦!
Java最初是在瀏覽器和客戶端機(jī)器中粉墨登場(chǎng)的。當(dāng)時(shí),很多人質(zhì)疑它是否適合做服務(wù)器端的開(kāi)發(fā)?,F(xiàn)在,隨著對(duì)Java2平臺(tái)企業(yè)版(J2EE)第三方支持的增多,Java被廣泛接納為開(kāi)發(fā)企業(yè)級(jí)服務(wù)器端解決方案的首選平臺(tái)之一。
J2EE平臺(tái)由一整套服務(wù)(Services)、應(yīng)用程序接口(APIs)和協(xié)議構(gòu)成,它對(duì)開(kāi)發(fā)基于Web的多層應(yīng)用提供了功能支持。在本文中將解釋支撐J2EE的13種核心技術(shù):JDBC,JNDI,EJBs,RMI,JSP,Javaservlets,XML,JMS,JavaIDL,JTS,JTA,JavaMail和JAF,同時(shí)還將描述在何時(shí)、何處需要使用這些技術(shù)。當(dāng)然,我還要介紹這些不同的技術(shù)之間是如何交互的。此外,為了讓您更好地感受J2EE的真實(shí)應(yīng)用,將在WebLogic應(yīng)用服務(wù)器,來(lái)自BEA Systems公司的一種廣為應(yīng)用的產(chǎn)品環(huán)境下來(lái)介紹這些技術(shù)。不論對(duì)于Web Logic應(yīng)用服務(wù)器和J2EE的新手,還是那些想了解J2EE能帶來(lái)什么好處的項(xiàng)目管理者和系統(tǒng)分析員,相信本文一定很有參考價(jià)值。
宏觀印象:分布式結(jié)構(gòu)和J2EE
過(guò)去,二層化應(yīng)用--通常被稱為client/server應(yīng)用--是大家談?wù)摰淖疃嗟?。在很多情況下,服務(wù)器提供的惟一服務(wù)就是數(shù)據(jù)庫(kù)服務(wù)。在這種解決方案中,客戶端程序負(fù)責(zé)數(shù)據(jù)訪問(wèn)、實(shí)現(xiàn)業(yè)務(wù)邏輯、用合適的樣式顯示結(jié)果、彈出預(yù)設(shè)的用戶界面、接受用戶輸入等。client/server結(jié)構(gòu)通常在第一次部署的時(shí)候比較容易,但難于升級(jí)或改進(jìn),而且經(jīng)?;谀撤N專有的協(xié)議,通常是某種數(shù)據(jù)庫(kù)協(xié)議。它使得重用業(yè)務(wù)邏輯和界面邏輯非常困難。更重要的是,在Web時(shí)代,二層化應(yīng)用通常不能體現(xiàn)出很好的伸縮性,因而很難適應(yīng)Internet的要求。
Sun設(shè)計(jì)J2EE的部分起因就是想解決二層化結(jié)構(gòu)的缺陷。于是,J2EE定義了一套標(biāo)準(zhǔn)來(lái)簡(jiǎn)化N層企業(yè)級(jí)應(yīng)用的開(kāi)發(fā)。它定義了一套標(biāo)準(zhǔn)化的組件,并為這些組件提供了完整的服務(wù)。J2EE還自動(dòng)為應(yīng)用程序處理了很多實(shí)現(xiàn)細(xì)節(jié),如安全、多線程等。
用J2EE開(kāi)發(fā)N層應(yīng)用包括將二層化結(jié)構(gòu)中的不同層面切分成許多層。一個(gè)N層化應(yīng)用A能夠?yàn)橐韵碌拿糠N服務(wù)提供一個(gè)分開(kāi)的層:
顯示:在一個(gè)典型的Web應(yīng)用中,客戶端機(jī)器上運(yùn)行的瀏覽器負(fù)責(zé)實(shí)現(xiàn)用戶界面。
動(dòng)態(tài)生成顯示:盡管瀏覽器可以完成某些動(dòng)態(tài)內(nèi)容顯示,但為了兼容不同的瀏覽器,這些動(dòng)態(tài)生成工作應(yīng)該放在Web服務(wù)器端進(jìn)行,使用JSP、Servlets,或者XML(可擴(kuò)展標(biāo)記語(yǔ)言)和(可擴(kuò)展樣式表語(yǔ)言)。
業(yè)務(wù)邏輯:業(yè)務(wù)邏輯適合用SessionEJBs(后面將介紹)來(lái)實(shí)現(xiàn)。
數(shù)據(jù)訪問(wèn):數(shù)據(jù)訪問(wèn)適合用EntityEJBs(后面將介紹)和JDBC來(lái)實(shí)現(xiàn)。
后臺(tái)系統(tǒng)集成:同后臺(tái)系統(tǒng)的集成可能需要用到許多不同的技術(shù),至于何種最佳需要根據(jù)后臺(tái)系統(tǒng)的特征而定。
您可能開(kāi)始詫異:為什么有這么多的層?事實(shí)上,多層方式可以使企業(yè)級(jí)應(yīng)用具有很強(qiáng)的伸縮性,它允許每層專注于特定的角色。例如,讓W(xué)eb服務(wù)器負(fù)責(zé)提供頁(yè)面,應(yīng)用服務(wù)器處理應(yīng)用邏輯,而數(shù)據(jù)庫(kù)服務(wù)器提供數(shù)據(jù)庫(kù)服務(wù)。
由于J2EE建立在Java2平臺(tái)標(biāo)準(zhǔn)版(J2SE)的基礎(chǔ)上,所以具備了J2SE的所有優(yōu)點(diǎn)和功能。包括“編寫(xiě)一次,到處可用”的可移植性、通過(guò)JDBC訪問(wèn)數(shù)據(jù)庫(kù)、同原有企業(yè)資源進(jìn)行交互的CORBA技術(shù),以及一個(gè)經(jīng)過(guò)驗(yàn)證的安全模型。在這些基礎(chǔ)上,J2EE又增加了對(duì)EJB(企業(yè)級(jí)Java組件)、Javaservlets、Java服務(wù)器頁(yè)面(JSPs)和XML技術(shù)的支持。
分布式結(jié)構(gòu)與WebLogic應(yīng)用服務(wù)器
J2EE提供了一個(gè)框架--一套標(biāo)準(zhǔn)API--用于開(kāi)發(fā)分布式結(jié)構(gòu)的應(yīng)用,這個(gè)框架的實(shí)際實(shí)現(xiàn)留給了第三方廠商。部分廠商只是專注于整個(gè)J2EE架構(gòu)中的的特定組件,例如Apache的Tomcat提供了對(duì)JSP和servlets的支持,BEA系統(tǒng)公司則通過(guò)其WebLogic應(yīng)用服務(wù)器產(chǎn)品為整個(gè)J2EE規(guī)范提供了一個(gè)較為完整的實(shí)現(xiàn)。
WebLogic服務(wù)器已使建立和部署伸縮性較好的分布式應(yīng)用的過(guò)程大為簡(jiǎn)化。WebLogic和J2EE代你處理了大量常規(guī)的編程任務(wù),包括提供事務(wù)服務(wù)、安全領(lǐng)域、可靠的消息、名字和目錄服務(wù)、數(shù)據(jù)庫(kù)訪問(wèn)和連接池、線程池、負(fù)載平衡和容錯(cuò)處理等。
通過(guò)以一種標(biāo)準(zhǔn)、易用的方式提供這些公共服務(wù),象WebLogic服務(wù)器這樣的產(chǎn)品造就了具有更好伸縮性和可維護(hù)性的應(yīng)用系統(tǒng),使其為大量的用戶提供了增長(zhǎng)的可用性。
J2EE技術(shù)
在接下來(lái)的部分里,我們將描述構(gòu)成J2EE的各種技術(shù),并且了解WebLogic服務(wù)器是如何在一個(gè)分布式應(yīng)用中對(duì)它們進(jìn)行支持的。最常用的J2EE技術(shù)應(yīng)該是JDBC、JNDI、EJB、JSP和servlets,對(duì)這些我們將作更仔細(xì)的考察。
Java Database Connectivity(JDBC)
JDBCAPI以一種統(tǒng)一的方式來(lái)對(duì)各種各樣的數(shù)據(jù)庫(kù)進(jìn)行存取。和ODBC一樣,JDBC為開(kāi)發(fā)人員隱藏了不同數(shù)據(jù)庫(kù)的不同特性。另外,由于JDBC建立在Java的基礎(chǔ)上,因此還提供了數(shù)據(jù)庫(kù)存取的平臺(tái)獨(dú)立性。
JDBC定義了4種不同的驅(qū)動(dòng)程序,現(xiàn)分述如下:
類型1:JDBC-ODBCBridge
在JDBC出現(xiàn)的初期,JDBC-ODBC橋顯然是非常有實(shí)用意義的,通過(guò)JDBC-ODBC橋,開(kāi)發(fā)人員可以使用JDBC來(lái)存取ODBC數(shù)據(jù)源。不足的是,他需要在客戶端安裝ODBC驅(qū)動(dòng)程序,換句話說(shuō),必須安裝MicrosoftWindows的某個(gè)版本。使用這一類型你需要犧牲JDBC的平臺(tái)獨(dú)立性。另外,ODBC驅(qū)動(dòng)程序還需要具有客戶端的控制權(quán)限。
類型2:JDBC-nativedriverbridge
JDBC本地驅(qū)動(dòng)程序橋提供了一種JDBC接口,它建立在本地?cái)?shù)據(jù)庫(kù)驅(qū)動(dòng)程序的頂層,而不需要使用ODBC。JDBC驅(qū)動(dòng)程序?qū)?duì)數(shù)據(jù)庫(kù)的API從標(biāo)準(zhǔn)的JDBC調(diào)用轉(zhuǎn)換為本地調(diào)用。使用此類型需要犧牲JDBC的平臺(tái)獨(dú)立性,還要求在客戶端安裝一些本地代碼。
類型3:JDBC-networkbridge
JDBC網(wǎng)絡(luò)橋驅(qū)動(dòng)程序不再需要客戶端數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。它使用網(wǎng)絡(luò)上的中間服務(wù)器來(lái)存取數(shù)據(jù)庫(kù)。這種應(yīng)用使得以下技術(shù)的實(shí)現(xiàn)有了可能,這些技術(shù)包括負(fù)載均衡、連接緩沖池和數(shù)據(jù)緩存等。由于第3種類型往往只需要相對(duì)更少的下載時(shí)間,具有平臺(tái)獨(dú)立性,而且不需要在客戶端安裝并取得控制權(quán),所以很適合于Internet上的應(yīng)用。
類型4:PureJavadriver
第4種類型通過(guò)使用一個(gè)純Java數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序來(lái)執(zhí)行數(shù)據(jù)庫(kù)的直接訪問(wèn)。此類型實(shí)際上在客戶端實(shí)現(xiàn)了2層結(jié)構(gòu)。要在N-層結(jié)構(gòu)中應(yīng)用,一個(gè)更好的做法是編寫(xiě)一個(gè)EJB,讓它包含存取代碼并提供一個(gè)對(duì)客戶端具有數(shù)據(jù)庫(kù)獨(dú)立性的服務(wù)。
WebLogic服務(wù)器為一些通常的數(shù)據(jù)庫(kù)提供了JDBC驅(qū)動(dòng)程序,包括Oracle,Sybase,MicrosoftSQLServer以及Informix。它也帶有一種JDBC驅(qū)動(dòng)程序用于Cloudscape,這是一種純Java的DBMS,WebLogic服務(wù)器中帶有該數(shù)據(jù)庫(kù)的評(píng)估版本。
以下讓我們看一個(gè)JDBC實(shí)例:在這個(gè)例子中我們假定你已經(jīng)在Cloudscape中建立了一個(gè)PhoneBook數(shù)據(jù)庫(kù),并且包含一個(gè)表,名為CONTACT_TABLE,它帶有2個(gè)字段:NAME和PHONE。開(kāi)始的時(shí)候先裝載CloudscapeJDBCdriver,并請(qǐng)求drivermanager得到一個(gè)對(duì)PhoneBookCloudscape數(shù)據(jù)庫(kù)的連接。通過(guò)這一連接,我們可以構(gòu)造一個(gè)Statement對(duì)象并用它來(lái)執(zhí)行一個(gè)簡(jiǎn)單的SQL查詢。最后,用循環(huán)來(lái)遍歷結(jié)果集的所有數(shù)據(jù),并用標(biāo)準(zhǔn)輸出將NAME和PHONE字段的內(nèi)容進(jìn)行輸出。
import java.sql.*; |
OK。接著來(lái)看一看JDBC是如何在企業(yè)應(yīng)用中的進(jìn)行使用。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。