tomcat下配置數據庫鏈接池學習篇

tomcat下配置數據庫鏈接池DBCP、C3P0、Proxool 
有些是參考別人的DBCP通過親自測試
/////////////////////////////////////////////////////////////////
step 1 : 將鏈接池的jar文件拷貝到tomcat的lib目錄下(也將mysql驅動拷貝到tomcat的lib目錄下)
1)dbcp:
tomcat默認包含tomcat-dbcp.jar,若是使用tomcat自帶的dbcp則不用拷貝jar文件;
若是要使用commons-dbcp鏈接池,則要將commons-dbcp-Xx.jar和commons-pool.jar拷貝到tomcat的lib目錄下;

2)c3p0:
拷貝c3p0-Xx.jar到tomcat的lib目錄下;

3)proxool:
拷貝proxool-Xx.jar、proxool-cglib.jar、commons-logging-Xx.jar到tomcat的lib目錄下;

step 2 : 打開tomcat的context.xml,進行以下配置:
在<Context>節點中添加以下內容(能夠並列添加多個<Resource.../>):
<!--dbcp 類型-->
<Resource 
name="jdbc/mysqlds-dbcp" 
auth="Container" 
type="javax.sql.DataSource" 
factory="org.apache.commons.dbcp.BasicDataSourceFactory"<!--這裏使用的commons-dbcp鏈接池-->
<!--tomcat的dbcp對應的factory爲:將commons替換爲tomcat(?),也可不用配置-->
driverClassName="com.mysql.jdbc.Driver" 
url="jdbc:mysql://localhost:3306/bbs?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8"
username="root"
password="root" 
maxActive="100" 
maxIdle="30"
maxWait="10000" 
>
</Resource> 

<!--
下面解釋一下各屬性的含義: 
name             表示指定的jndi名稱(這個名字這裏能夠隨便寫) 
auth             表示認證方式,通常爲Container 
type             表示數據源牀型,使用標準的javax.sql.DataSource 
maxActive        表示鏈接池當中最大的數據庫鏈接 
maxIdle          表示最大的空閒鏈接數 
maxWait          當池的數據庫鏈接已經被佔用的時候,最大等待時間 
logAbandoned     表示被丟棄的數據庫鏈接是否作記錄,以便跟蹤 
username         表示數據庫用戶名 
password         表示數據庫用戶的密碼 
driverClassName  表示JDBC Driver
url              表示數據庫URL地址 
-->

<!--c3p0 類型-->            
<Resource 
name="jdbc/mysqlds-c3p0"
auth="Container"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
factory="org.apache.naming.factory.BeanFactory"
driverClass="com.mysql.jdbc.Driver"
jdbcUrl="jdbc:mysql://localhost:3306/bbs?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8"
user="root"
password="root" 
maxPoolSize="100"
minPoolSize="1" 
initialPoolSize="5"
acquireIncrement="2"
idleConnectionTestPeriod="60"
maxIdleTime="60"/>


<!--proxool 類型-->
<Resource name="jdbc/mysqlds-proxool"  
     auth="Container"       
     type="javax.sql.DataSource"  
     factory="org.logicalcobwebs.proxool.ProxoolDataSource"       
     proxool.alias="bbs"       
     user="root"     
     password="root"       
     delegateProperties="foo=1,bar=true"  
     proxool.jndi-name="mysqljndi"      
     proxool.driver-url="jdbc:mysql://127.0.0.1:3306/bbs"       
     proxool.driver-class="com.mysql.jdbc.Driver"     
     proxool.house-keeping-sleep-time="900000"     
     proxool.maximum-active-time="5"  
     proxool.prototype-count="3"  
     proxool.statistics="1m,15m,1d"  
     proxool.simultaneous-build-throttle="10"  
     proxool.minimum-connection-count="5"  
     proxool.maximum-connection-count="15"    
  />  
         
step 3: 編輯本身webApplication的web.xml,在<web-app>節點中添加以下內容:
<resource-ref>  
<res-ref-name>jdbc/mysqlds-dbcp</res-ref-name> 
//"jdbc/mysqlds-dbcp"與context.xml下的Resources的name屬性一致
<res-type>javax.sql.DataSource</res-type>  
<res-auth>Container</res-auth>  
</resource-ref>

step 4 : 鏈接數據庫的java代碼;
Context context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:comp/env/"+"jdbc/mysqlds-dbcp");
//"jdbc/mysqlds-dbcp"與context.xml下的Resources的name屬性一致;
return ds.getConnection();
-----------------------------------------------------------------------------------------------------
<Resource name="jdbc/SqlServer" auth="Container" type="javax.sql.DataSource" 
               maxActive="100" maxIdle="30" maxWait="10000" 
               username="sa" password="" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
               url="jdbc:sqlserver://localhost:1433;databaseName=bbs"/>
相關文章
相關標籤/搜索