Tomcat中DBCP2連接配接池配置如下:
<Resource auth="Container"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
name="jdbc/jndiname"
password="123456"
type="javax.sql.DataSource"
url="jdbc:sqlserver://servername:port;DatabaseName=dbname"
username="admin"
factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
minIdle="10"
maxIdle="50"
initialSize="30"
maxTotal="100"
maxWaitMillis ="10000"
logAbandoned="true"
removeAbandonedOnBorrow="true"
removeAbandonedOnMaintenance="true"
removeAbandonedTimeout="60"
testOnBorrow="true"
testOnReturn="false"
testWhileIdle="true"
timeBetweenEvictionRunsMillis="30000"
minEvictableIdleTimeMillis="30000"
validationQueryTimeout="30000"
validationQuery="SELECT 1"/>
對應屬性詳解:
屬性 | 預設值 | 描述 |
---|---|---|
minIdle | (最小空閑連接配接數,預設0) 可以在池中保持空閑的最小連接配接數,低于設定值時,空閑連接配接将被建立,以努力保持最小空閑連接配接數>=minIdle,如設定為0,則不建立這裡設定的數值生效的前提是:timeBetweenEvictionRunsMillis(空閑對象驅逐線程運作時的休眠毫秒數)被設定為正數。 | |
maxIdle | 8 | (最大空閑連接配接數,預設8) 在池中,可以保持空閑狀态的最大連接配接數,超出設定值之外的空閑連接配接在歸還到連接配接池時将被釋放,如設定為負數,則不限制 |
initialSize | (初始連接配接數,預設0)當這個池被啟動時初始化的建立的連接配接個數,起始生效版本:1.2 | |
maxTotal | 8 | (最大活動連接配接數,預設8)以在這個池中同一時刻被配置設定的有效連接配接數的最大值,如設定為負數,則不限制 |
maxWaitMillis | indefinitely(不确定) | (從連接配接池擷取一個連接配接時,最大的等待時間,預設indefinitely(不确定))設定為-1時,如果沒有可用連接配接,連接配接池會一直無限期等待,直到擷取到連接配接為止。如果設定為N(毫秒),則連接配接池會等待N毫秒,等待不到,則抛出異常。 |
logAbandoned | false | 預設false,标志是否為應用程式中遺棄語句或連接配接的代碼開啟日志堆棧追蹤。因為一個堆棧跟蹤已被建立,被抛棄的語句和連接配接相關的日志将被覆寫到打開每個連接配接或者建立一個Statement時 |
removeAbandonedOnBorrow | false | 預設false,标記是否删除超過removeAbandonedTimout所指定時間的被遺棄的連接配接。如果設定為true,則一個連接配接在超過removeAbandonedTimeout所設定的時間未使用即被認為是應該被抛棄并應該被移除的。建立一個語句,預處理語句,可調用語句或使用它們其中的一個執行查詢(使用執行方法中的某一個)會重新設定其父連接配接的lastUsed 屬性。在寫操作較少的應用程式中将該參數設定為true可以将資料庫連接配接從連接配接關閉失敗中恢複 |
removeAbandonedOnMaintenance | false | |
removeAbandonedTimeout | 300(秒) | (一個被抛棄連接配接可以被移除的逾時時間)一個被抛棄連接配接可以被移除的逾時時間,機關為秒 |
testOnBorrow | true | (從連接配接池擷取一個連接配接時,驗證有效性,預設true)指明在從池中租借對象時是否要進行驗證有效,如果對象驗證失敗,則對象将從池子釋放,然後我們将嘗試租借另一個 |
testOnReturn | false | (連接配接被歸還到連接配接池時,驗證有效性,預設false)指明在将對象歸還給連接配接池前是否需要校驗。 |
testWhileIdle | false | (連接配接空閑時,驗證有效性,預設false) 指明對象是否需要通過對象驅逐者進行校驗(如果有的話),假如一個對象驗證失敗,則對象将被從池中釋放。 |
timeBetweenEvictionRunsMillis | -1 | (空閑對象驅逐線程運作時的休眠毫秒數,預設-1)空閑對象驅逐線程運作時的休眠毫秒數,如果設定為非正數,則不運作空閑對象驅逐線程。 |
minEvictableIdleTimeMillis | 1000 * 60 * 30(30分) | (空閑的連接配接最低要待N毫秒後,才會被釋放,預設1000 * 60 * 30(30分))符合對象驅逐條件的對象在池中最小空閑毫秒總數(如果有的話) |
validationQueryTimeout | no timeout | (确認查詢SQL的逾時時間,預設no timeout)确認連接配接有效SQL的執行查詢逾時時間(秒)。如果設定為正數,那麼會傳遞給JDBC驅動的setQueryTimeOut()方法,這個設定對執行【确認有效查詢SQL】起作用。 |
validationQuery | (确認查詢SQL)在連接配接池傳回連接配接給調用者前用來進行連接配接校驗的查詢sql。如果指定,則這個查詢必須是一個至少傳回一行資料的SQL SELECT語句。如果沒有指定,則連接配接将通過調用isValid() 方法進行校驗。 |