Tomcat 7-dbcp配置數(shù)據(jù)庫連接池詳解
Tomcat 7-dbcp配置數(shù)據(jù)庫連接池詳解
原理
關(guān)于連接池,大家都曉得用來限定對(duì)數(shù)據(jù)庫的連接。基本的原理是預(yù)先在緩沖池中放入一定的空閑連接,當(dāng)程序需要和數(shù)據(jù)庫來交互時(shí),不是直接新建數(shù)據(jù)庫連接而是在連接池中直接取,使用完成后再放回到連接池中。為什么要這樣犧牲一個(gè)緩沖來存放這些原本就會(huì)使用的連接呢?在上面講了一個(gè)好處就是可以限定連接數(shù),這樣不會(huì)造成N多的數(shù)據(jù)庫連接最后宕機(jī);額外有了這樣一個(gè)連接池,也可以來監(jiān)聽這些連接和便于管理。
配置
1.拷貝相關(guān)的jar
要知道連接池不是用來直接操作數(shù)據(jù)庫的,最終進(jìn)行相關(guān)操作的還是相關(guān)的jdbc驅(qū)動(dòng)。如果是tomcat服務(wù)器,直接將驅(qū)動(dòng)拷到tomncat的lib中。對(duì)于Java是ojdbc6.jar;對(duì)于sqlserver來講是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ù)源類型 factory:這個(gè)是在tomcat 5之后對(duì)于commons-dbcp的一種處理方案,具體是用了這樣一個(gè)指定的實(shí)現(xiàn)類來處理的。性能更加優(yōu)越,也能夠兼容dbcp。 maxActive:最大的分配連接數(shù)。 maxIdle:idle是空閑的意思,所以這個(gè)就是當(dāng)tomcat啟動(dòng)時(shí),緩沖池為連接的新建的連接數(shù)。 maxWait:本文最大響應(yīng)時(shí)間為10s。 url:為數(shù)據(jù)庫地址。 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(); //通過JNDI訪問指定的連接池 DataSourceds=(DataSource)ctx.lookup("java:comp/env/jdbc/drp"); //實(shí)例化數(shù)據(jù)庫連接 conn=ds.getConnection(); //查詢語句 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中;后面就棄用了視圖化配置的過程??偟脕碚f對(duì)于針對(duì)數(shù)據(jù)連接的處理的方案,有他的好處,也需要開發(fā)人員在平時(shí)的編程中養(yǎng)成好的習(xí)慣,如果對(duì)于開啟的連接沒有關(guān)閉,當(dāng)連接池夠大的時(shí)候,會(huì)影響性能;如果達(dá)到峰值,那么程序直接宕掉。也減少了咱們?cè)趧?chuàng)建數(shù)據(jù)庫連接的時(shí)間。當(dāng)然除了dbcp,也有C3P0、Poolmen這樣的處理方案。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
解決tomcat部署時(shí)war和war exploded導(dǎo)致的問題
war包和warexploded模式的區(qū)別主要在于部署方式,war包是在項(xiàng)目發(fā)布時(shí)打包上傳,而warexploded模式則是直接將文件夾結(jié)構(gòu)上傳到服務(wù)器,支持熱部署,常用于開發(fā)階段,這種差異可能導(dǎo)致樣式和文件引用問題,如在不同電腦部署時(shí)路徑設(shè)置的不同2024-10-10簡(jiǎn)單實(shí)現(xiàn)nginx+tomcat的反向代理與動(dòng)靜分離
這篇文章主要介紹了簡(jiǎn)單實(shí)現(xiàn)nginx+tomcat的反向代理與動(dòng)靜分離,需要的朋友可以參考下2016-05-05同一臺(tái)服務(wù)器(電腦)運(yùn)行多個(gè)Tomcat的設(shè)置方法步驟
這篇文章主要介紹了同一臺(tái)服務(wù)器(電腦)運(yùn)行多個(gè)Tomcat的設(shè)置方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04搭建Tomcat 8源碼開發(fā)環(huán)境的步驟詳解
相信大家都知道開源軟件tomcat目前幾乎已經(jīng)是Java web開發(fā)的必備軟件了,目前有很多關(guān)于tomcat的書籍,已經(jīng)通過配置對(duì)tomcat進(jìn)行一些跟應(yīng)用業(yè)務(wù)功能的調(diào)優(yōu),但感覺如果僅僅只是了解一些配置,可能稍微少了點(diǎn)什么,下面通過本文深入到源代碼中進(jìn)行學(xué)些和了解。2016-10-10Tomcat報(bào)錯(cuò): JDBC unregister 解決辦法
這篇文章主要介紹了Tomcat報(bào)錯(cuò): JDBC unregister 解決辦法的相關(guān)資料,需要的朋友可以參考下2017-05-05