Tomcat 7-dbcp配置數(shù)據(jù)庫(kù)連接池詳解
Tomcat 7-dbcp配置數(shù)據(jù)庫(kù)連接池詳解
原理
關(guān)于連接池,大家都曉得用來(lái)限定對(duì)數(shù)據(jù)庫(kù)的連接。基本的原理是預(yù)先在緩沖池中放入一定的空閑連接,當(dāng)程序需要和數(shù)據(jù)庫(kù)來(lái)交互時(shí),不是直接新建數(shù)據(jù)庫(kù)連接而是在連接池中直接取,使用完成后再放回到連接池中。為什么要這樣犧牲一個(gè)緩沖來(lái)存放這些原本就會(huì)使用的連接呢?在上面講了一個(gè)好處就是可以限定連接數(shù),這樣不會(huì)造成N多的數(shù)據(jù)庫(kù)連接最后宕機(jī);額外有了這樣一個(gè)連接池,也可以來(lái)監(jiān)聽(tīng)這些連接和便于管理。
配置
1.拷貝相關(guān)的jar
要知道連接池不是用來(lái)直接操作數(shù)據(jù)庫(kù)的,最終進(jìn)行相關(guān)操作的還是相關(guān)的jdbc驅(qū)動(dòng)。如果是tomcat服務(wù)器,直接將驅(qū)動(dòng)拷到tomncat的lib中。對(duì)于Java是ojdbc6.jar;對(duì)于sqlserver來(lái)講是tomcat-dbcp.jar、servlet-ap.jar和sql server的驅(qū)動(dòng)sqljdbc4.jar 包到項(xiàng)目文件的web-inf 文件夾下的lib目錄。
2.配置context.xml
name="jdbc/drp" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" maxActive="100" maxIdle="30" maxWait="10000" username="drp1" password="drp1" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:drp" />
如果是全局配置的話,將context.xml文件放在tomcat的配置文件夾conf中即可;若想局部控制就需要將context.xml放在指定的項(xiàng)目中webroot的meta-inf中,就只會(huì)對(duì)自己本項(xiàng)目起作用。
注:
Name:指定連接池的名稱 Auth:是連接池管理權(quán)屬性,Container表示容器管理 type:數(shù)據(jù)源類(lèi)型 factory:這個(gè)是在tomcat 5之后對(duì)于commons-dbcp的一種處理方案,具體是用了這樣一個(gè)指定的實(shí)現(xiàn)類(lèi)來(lái)處理的。性能更加優(yōu)越,也能夠兼容dbcp。 maxActive:最大的分配連接數(shù)。 maxIdle:idle是空閑的意思,所以這個(gè)就是當(dāng)tomcat啟動(dòng)時(shí),緩沖池為連接的新建的連接數(shù)。 maxWait:本文最大響應(yīng)時(shí)間為10s。 url:為數(shù)據(jù)庫(kù)地址。 sqlserver的格式:jdbc:sqlserver://localhost:1433;DatabaseName=name; driverclassname:驅(qū)動(dòng)地址。 sqlserver的為:com.microsoft.sqlserver.jdbc.SQLServerDriver
3.驗(yàn)證
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrs=null;
try{
//實(shí)例DBCP連接池
Contextctx=new InitialContext();
//通過(guò)JNDI訪問(wèn)指定的連接池
DataSourceds=(DataSource)ctx.lookup("java:comp/env/jdbc/drp");
//實(shí)例化數(shù)據(jù)庫(kù)連接
conn=ds.getConnection();
//查詢語(yǔ)句
pstmt=conn.prepareStatement("select* from t_user");
rs=pstmt.executeQuery();
if(rs.next()){
System.out.print(rs.getString("user_id")+rs.getString("user_name"));
System.out.print(conn);
}
}catch(SQLExceptione){
}
finally{
}
后序
之前tomcat 5的版本即可以在localhost:8080/admin中視圖化配置,也可在xml中;后面就棄用了視圖化配置的過(guò)程??偟脕?lái)說(shuō)對(duì)于針對(duì)數(shù)據(jù)連接的處理的方案,有他的好處,也需要開(kāi)發(fā)人員在平時(shí)的編程中養(yǎng)成好的習(xí)慣,如果對(duì)于開(kāi)啟的連接沒(méi)有關(guān)閉,當(dāng)連接池夠大的時(shí)候,會(huì)影響性能;如果達(dá)到峰值,那么程序直接宕掉。也減少了咱們?cè)趧?chuàng)建數(shù)據(jù)庫(kù)連接的時(shí)間。當(dāng)然除了dbcp,也有C3P0、Poolmen這樣的處理方案。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Tomcat 啟動(dòng)時(shí) SecureRandom 非常慢解決辦法
這篇文章主要介紹了Tomcat 啟動(dòng)時(shí) SecureRandom 非常慢解決辦法的相關(guān)資料,需要的朋友可以參考下2017-06-06
解決tomcat部署時(shí)war和war exploded導(dǎo)致的問(wèn)題
war包和warexploded模式的區(qū)別主要在于部署方式,war包是在項(xiàng)目發(fā)布時(shí)打包上傳,而warexploded模式則是直接將文件夾結(jié)構(gòu)上傳到服務(wù)器,支持熱部署,常用于開(kāi)發(fā)階段,這種差異可能導(dǎo)致樣式和文件引用問(wèn)題,如在不同電腦部署時(shí)路徑設(shè)置的不同2024-10-10
Tomcat整體結(jié)構(gòu)簡(jiǎn)單介紹
這篇文章主要介紹了Tomcat整體結(jié)構(gòu)簡(jiǎn)單介紹,Tomcat的本質(zhì)是一個(gè)Servlet容器。一個(gè)Servlet能做的事情是:處理請(qǐng)求資源,并為客戶端填充response對(duì)象,需要的朋友可以參考下2019-07-07
如何解決Tomcat啟動(dòng)后中文亂碼問(wèn)題
這篇文章主要介紹了如何解決Tomcat啟動(dòng)后中文亂碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
tomcat使用問(wèn)題之安裝后無(wú)法訪問(wèn)localhost:8080解決
當(dāng)Tomcat無(wú)法訪問(wèn)localhost:8080時(shí),可能是由于未啟動(dòng)、環(huán)境變量未配置、端口號(hào)占用或版本問(wèn)題,這篇文章主要介紹了tomcat使用問(wèn)題之安裝后無(wú)法訪問(wèn)localhost:8080解決的相關(guān)資料,需要的朋友可以參考下2024-10-10
Tomcat無(wú)法映射到activiti-app導(dǎo)致activiti無(wú)法啟動(dòng)頁(yè)面的解決方法
這篇文章主要介紹了Tomcat無(wú)法映射到activiti-app導(dǎo)致activiti無(wú)法啟動(dòng)頁(yè)面的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-11-11
解決Tomcat啟動(dòng)報(bào)錯(cuò)Publishing?failed??multiple問(wèn)題
這篇文章主要介紹了解決Tomcat啟動(dòng)報(bào)錯(cuò)Publishing?failed??multiple問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
tomcat異常解決(Invalid character found in the request target. Th
這篇文章主要介紹了tomcat 異常的解決方案,幫助大家排查錯(cuò)誤,保持服務(wù)器的穩(wěn)定,感興趣的朋友可以了解下2020-10-10
tomcat 幾種連接池配置代碼(包括tomcat5.0,tomcat5.5x,tomcat6.0)
Tomcat6.0連接池配置 實(shí)現(xiàn)代碼,大家可以參考下。2009-08-08
關(guān)于Tomcat的服務(wù)器使用及說(shuō)明
這篇文章主要介紹了關(guān)于Tomcat的服務(wù)器使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

