Tomcat 7-dbcp配置數據庫連接池詳解
原理
關于連接池,大家都曉得用來限定對數據庫的連接?;镜脑硎穷A先在緩沖池中放入一定的空閑連接,當程序需要和數據庫來交互時,不是直接新建數據庫連接而是在連接池中直接取,使用完成后再放回到連接池中。為什么要這樣犧牲一個緩沖來存放這些原本就會使用的連接呢?在上面講了一個好處就是可以限定連接數,這樣不會造成N多的數據庫連接最后宕機;額外有了這樣一個連接池,也可以來監聽這些連接和便于管理。
配置
1.拷貝相關的jar
要知道連接池不是用來直接操作數據庫的,最終進行相關操作的還是相關的jdbc驅動。如果是tomcat服務器,直接將驅動拷到tomncat的lib中。對于Java是ojdbc6.jar;對于sqlserver來講是tomcat-dbcp.jar、servlet-ap.jar和sql server的驅動sqljdbc4.jar 包到項目文件的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放在指定的項目中webroot的meta-inf中,就只會對自己本項目起作用。
注:
Name:指定連接池的名稱Auth:是連接池管理權屬性,Container表示容器管理type:數據源類型factory:這個是在tomcat 5之后對于commons-dbcp的一種處理方案,具體是用了這樣一個指定的實現類來處理的。性能更加優越,也能夠兼容dbcp。maxActive:最大的分配連接數。maxIdle:idle是空閑的意思,所以這個就是當tomcat啟動時,緩沖池為連接的新建的連接數。maxWait:本文最大響應時間為10s。url:為數據庫地址。sqlserver的格式:jdbc:sqlserver://localhost:1433;DatabaseName=name;driverclassname:驅動地址。sqlserver的為:com.microsoft.sqlserver.jdbc.SQLServerDriver
3.驗證
Connectionconn=null; PreparedStatementpstmt=null; ResultSetrs=null; try{ //實例DBCP連接池 Contextctx=new InitialContext(); //通過JNDI訪問指定的連接池 DataSourceds=(DataSource)ctx.lookup("java:comp/env/jdbc/drp"); //實例化數據庫連接 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對于針對數據連接的處理的方案,有他的好處,也需要開發人員在平時的編程中養成好的習慣,如果對于開啟的連接沒有關閉,當連接池夠大的時候,會影響性能;如果達到峰值,那么程序直接宕掉。也減少了咱們在創建數據庫連接的時間。當然除了dbcp,也有C3P0、Poolmen這樣的處理方案。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選