Tomcat中數(shù)據(jù)源的配置和使用_第1頁
Tomcat中數(shù)據(jù)源的配置和使用_第2頁
Tomcat中數(shù)據(jù)源的配置和使用_第3頁
Tomcat中數(shù)據(jù)源的配置和使用_第4頁
Tomcat中數(shù)據(jù)源的配置和使用_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Tomcat中數(shù)據(jù)源的配置和使用、數(shù)據(jù)源簡介:*在Java語言中,DataSource對象就是一個代表數(shù)據(jù)源實體的對象。一個數(shù)據(jù)源就是一個用來存儲數(shù)據(jù)的工具,它可以是復(fù)雜的大型企業(yè)級數(shù)據(jù)庫,也可以是簡單得只有行和列的文件。數(shù)據(jù)源可 以位于在服務(wù)器端,也可以位于客服端。應(yīng)用程序通過一個連接來訪問數(shù)據(jù)源,那么一個DataSource對象就是用于提供連接數(shù)據(jù)源的工具。DataSource接口提供了兩個方法用于建立和數(shù)據(jù)源的連接使用DataSource對象建立和數(shù)據(jù)庫的連接比起使用DriverManager接口更加高效,雖然兩者的使用范圍都很相似,并且都提供了方法用于建立和數(shù)據(jù)庫的連接,設(shè)置連接的最大

2、超時時間,獲 取流、登錄。但兩者之間的區(qū)別更加明顯。和DriverManager不同,一個 DataSource對象能夠識別和描述它所代表的數(shù)據(jù)源的屬性,而且 DataSource對象的工作和 JNDI(Javatm Naming and Directory Interfaceti)具有密切的關(guān)系,DataSource的建立、發(fā)布、獨(dú)立于應(yīng)用程序的管理都依靠JNDI技術(shù)。DataSource 接在JDBC2.0或JDBC3.0中,所有的數(shù)據(jù)庫驅(qū)動程序提供商必須提供一個實現(xiàn)了口的類,要使用數(shù)據(jù)源必須首先在JNDI中注冊該數(shù)據(jù)源對象。如果在JNDI中注冊了數(shù)據(jù)源對象,將會比起使用DriverMan

3、ager來具有兩個方面的優(yōu)勢:首先程序不需要像使用 DriverMa nager 樣對加載的數(shù)據(jù)庫驅(qū)動程序信息進(jìn)行硬編碼,程序員可以選擇先在JNDI中注冊這個數(shù)據(jù)源對象,然后在程序中使用一個邏輯名稱來引用它,JNDI會自動根據(jù)你給出的名稱找到與這個名稱綁定的DataSource對象。然后就可以使用這個 DataSource對象來建立和具體數(shù)據(jù)庫的連接了。其次,使用實現(xiàn)了 DataSource接口的類所具有的第二個優(yōu)勢體現(xiàn)在連接池和分布式事務(wù)上。 連接池通過對連接的復(fù)用而不是新建一個物理連接來顯著地提高程序的效率。從而適用于任務(wù)繁 忙、負(fù)擔(dān)繁重的企業(yè)級分布式事務(wù)。*、JNDI簡介:*JNDI是用

4、于向Java程序提供目錄和命名功能的API。它被設(shè)計成獨(dú)立于特定的目錄服務(wù),所以各種各樣的目錄都可以通過相同的方式進(jìn)行訪問。可以簡單地把 JNDI理解為一種將對象和名字綁定的技術(shù),對象工廠負(fù)責(zé)生產(chǎn)出對象,這些對象都和惟一的名字綁定。外部程序可以通過名字來獲取對某個對象的引用。在Intranets( 企業(yè)內(nèi)部網(wǎng))和Internates(互聯(lián)網(wǎng))中目錄服務(wù) (Directory service) 扮演了一個非常重要的角色,它能夠在眾多的用戶、機(jī)器、網(wǎng)絡(luò)、服務(wù)、應(yīng)用程序中訪問各種各樣的信息。目錄服務(wù)提供了一系列的命名措施,用人類可以理解的命名方式來刻畫各種各樣的實體之間的關(guān)系一個企業(yè)式計算環(huán)境(co

5、mput ingen viro nment)通常是由若干代表不同部分的命名復(fù)合而成。比如在一個企業(yè)級環(huán)境中DNS(Domain NameSystem)通常被當(dāng)成頂層的命名方案 (top-levelnameinfacility)區(qū)分不同的部門或組織。而這些部門或組織自己又可以使用諸如LADP或NDS的目錄服務(wù)從用戶的角度來看, 這些都是由不同的命名方案構(gòu)成的復(fù)合名稱。URL就是一個很典型的例子,它由多個命名方案構(gòu)成。使用目錄服務(wù)的應(yīng)用程序必須支持這種復(fù)合構(gòu)成方式使用目錄服務(wù) API的Java開發(fā)人員獲得的好處不僅在于API獨(dú)立于特定的目錄或命名服務(wù),而且可以通過多層的命名方案無縫訪問(seaml

6、ess acess)目錄對象。實際上,任何的應(yīng)用程序都可以將自身的對象和特定的命名綁定起來,這種功能可以使到任何的Java程序查找和獲取任何類型的對象終端用戶可以方便地使用邏輯名稱從而輕易地在網(wǎng)絡(luò)上查找和識別各種不同的對象,目錄服務(wù)的開發(fā)人員可以使用 API方便地在不同的客服端之間切換而不需要作任何更改*三、數(shù)據(jù)源和連接池的關(guān)系:*JDBC2.0提供了 javax.sql.DataSource 接口,它負(fù)責(zé)建立與數(shù)據(jù)庫的連接,在應(yīng)用程序訪問數(shù)據(jù)庫時不需要編寫連接數(shù)據(jù)庫的代碼,可以直接從數(shù)據(jù)源獲得數(shù)據(jù)庫連接。在DataSource中事先建立了多個數(shù)據(jù)庫連接,這些數(shù)據(jù)庫連接保存在連接池(Conne

7、ct Pool)中。Java程序訪問數(shù)據(jù)庫時,只需要從連接池中取出空閑狀態(tài)的數(shù)據(jù)庫連接;當(dāng)程序訪問數(shù)據(jù)庫結(jié)束,再將數(shù)據(jù)庫連接放回連接池。*四、數(shù)據(jù)源和JNDI的關(guān)系:*DataSource對象是由Tomcat提供的,因此不能在程序中采用創(chuàng)建一個實例的方式來生產(chǎn) DataSource對象,而需要采用Java的另一個技術(shù) JNDI,來獲得 DataSource對象的引用。Tomcat把DataSource作為一種可以配置的JNDI資源來處理。生成 DataSource對象的工廠為 mon s.dbcp.BasicDataSourceFactory。在javax .n ami ng 包中提供了 Co

8、n text接口,該接口提供了將對象和名字綁定,以及通過名字 檢索對象的方法。Con text中的主要方法有:bi nd(Stri ng name,Object object):將對象與一個名字綁定lookup(Stri ng name):返回與指定的名字綁定的對象*五、Tomcat中數(shù)據(jù)源的配置:*數(shù)據(jù)源的配置涉及修改server.xml 和web.xml,在server.xml中加入定義數(shù)據(jù)源的元素,在 web.xml加入 元素,聲明該 Web應(yīng)用所引用的數(shù)據(jù)A. 在 server.xml 中加入 元素: 元素用來定義 JNDI Resource。屬性描述n ame指定Resource的J

9、NDI名字auth指定管理 Resource 的 Manager,它有兩個可選值:Container Applicationtype指定Resource所屬的Java類名(Resource n ame = jdbc/BookDbauth = Contain ertype = javax.sql.DataSource /B. 在Resource元素中加入ResourceParams元素:ResourceParams元素用來指定各種參數(shù)值屬性描述factory指定生成的DataResource的factory 類名maxActive指定數(shù)據(jù)庫連接池中處于活動狀態(tài)的最大連接數(shù)目,0表示不受限制max

10、Idle指定數(shù)據(jù)庫連接池中處于空閑狀態(tài)的最大連接數(shù)目,0表示不受限制maxWait指定連接池中連接處于空閑狀態(tài)的最長時間,超過會拋出異常,-1表示無限:user name指定連接數(shù)據(jù)庫的用戶名password指定連接數(shù)據(jù)庫的口令driverClassName指定連接數(shù)據(jù)庫的JDBC驅(qū)動程序url指定連接數(shù)據(jù)庫的 URLfact ory mon s.dbcp.BasicDataSourceFactory maxAct ive100maxIdle/name30maxWait/name10000user name/nameuserpassword 1234driverClassName/name c

11、om.mysql.jdbc.Driver url/namejdbc:mysql/localhost:3306/BookDb?autoReco nn ect=trueC. 在web.xml中加入resource-ref 元素:resource-ref元素表示在 Web應(yīng)用中引用 JNDI資源屬性描述descripti on對所引用的資源的說明res-ref- name指疋所引用資源的 JNDI名子,與Resource兀素中的name屬性對應(yīng)res-type指疋所引用資源的類名子,與Resource兀素中的type屬性對應(yīng)res-auth指疋所引用資源的 Manager,與Resource兀素中的

12、auth屬性對應(yīng)*六、在 Web應(yīng)用中使用數(shù)據(jù)源:*javax. nami ng.C on text提供了查找JNDI Resource的接口,可以通過三個步驟來使用數(shù)據(jù)源對象:A. 獲得對數(shù)據(jù)源的引用:Con text ctx = new In italC on text();DataSource ds = (DataSource )ctx.lo okup(java:comp/e nv/jdbc/BookDb);B. 獲得數(shù)據(jù)庫連接對象:Conn ecti on con = ds.getC onnection();C. 返回數(shù)據(jù)庫連接到連接池:con. close();在連接池中使用close()方法和在非連接池中使用close()方法的區(qū)別是:前者僅僅是把數(shù)據(jù)庫連接對象返回到數(shù)據(jù)庫連接池中,是連接對象又恢復(fù)到空閑狀態(tài),而非關(guān)閉數(shù)據(jù)庫連接,而后者將直 接關(guān)閉和數(shù)據(jù)庫的連接*七、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論