Tomcat jdbc-pool DBCP 的參數對照翻譯

weiflying 10年前發布 | 25K 次閱讀 Tomcat 應用服務器 JDBC

通用屬性

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr> </tbody> </table>

Tomcat jdbc-pool 新增屬性

 

屬性名 描述(DBCP/Tomcat jdbc-pool 差別 ) DBCP默認值 jdbc-pool默認值
username 傳遞給JDBC 驅動的用于建立連接的用戶名

password 傳遞給JDBC 驅動的用于建立連接的密碼

url 傳遞給JDBC 驅動的用于建立連接的URL

driverClassName 使用的JDBC 驅動的完整有效的java 類名

connectionProperties (String) 當建立新連接時被發送給JDBC 驅動的連接參數,格式必須是 [propertyName=property;]*
注意 :參數user/password 將被明確傳遞,所以不需要包括在這里。

 null
defaultAutoCommit (boolean) 連接池創建的連接的默認的auto-commit 狀態 true driver default
defaultReadOnly (boolean) 連接池創建的連接的默認的read-only 狀態. 如果沒有設置則setReadOnly 方法將不會被調用. ( 某些驅動不支持只讀模式, 比如:Informix) driver default driver default
defaultTransactionIsolation

(String) 連接池創建的連接的默認的TransactionIsolation狀態. 下面列表當中的某一個: ( 參考javadoc)

  • NONE
  • READ_COMMITTED
  • READ_UNCOMMITTED
  • REPEATABLE_READ
  • </ul>

    • SERIALIZABLE
    </td>

driver default driver default
defaultCatalog (String) 連接池創建的連接的默認的catalog
driver default
initialSize (int) 初始化連接: 連接池啟動時創建的初始化連接數量,1.2版本后支持 0 10
maxActive (int) 最大活動連接: 連接池在同一時間能夠分配的最大活動連接的數量, 如果設置為非正數則表示不限制 8 100
maxIdle

(int) 最大空閑連接: 連接池中容許保持空閑狀態的最大連接數量, 超過的空閑連接將被釋放, 如果設置為負數表示不限制

如果啟用,將定期檢查限制連接,如果空閑時間超過minEvictableIdleTimeMillis 則釋放連接  參考testWhileIdle 

</td>

8 與maxActive
minIdle

(int) 最小空閑連接: 連接池中容許保持空閑狀態的最小連接數量, 低于這個數量將創建新的連接, 如果設置為0 則不創建如果連接驗證失敗將縮小這個值( 參考testWhileIdle 

 

</td>

0

initialSize相同

</td> </tr>

maxWait (int) 最大等待時間: 當沒有可用連接時, 連接池等待連接被歸還的最大時間( 以毫秒計數), 超過時間則拋出異常, 如果設置為-1 表示無限等待 無限  30000(30 秒)
validationQuery

(String) SQL 查詢, 用來驗證從連接池取出的連接, 在將連接返回給調用者之前. 如果指定, 則查詢必須是一個SQL SELECT 并且必須返回至少一行記錄

查詢不必返回記錄,但這樣將不能拋出SQL異常

</td>


 null
testOnBorrow

(boolean) 指明是否在從池中取出連接前進行檢驗, 如果檢驗失敗, 則從池中去除連接并嘗試取出另一個.
注意: 設置為true 后如果要生效,validationQuery 參數必須設置為非空字符串

參考validationInterval以獲得更有效的驗證

</td>

true  false
testOnReturn (boolean) 指明是否在歸還到池中前進行檢驗 
注意: 設置為true 后如果要生效,validationQuery 參數必須設置為非空字符串
false  false
testWhileIdle

(boolean) 指明連接是否被空閑連接回收器( 如果有) 進行檢驗. 如果檢測失敗, 則連接將被從池中去除.
注意: 設置為true 后如果要生效,validationQuery 參數必須設置為非空字符串

要啟用空閑連接回收器線程,必須啟用

</td>

false  false
timeBetweenEvictionRunsMillis

(int) 在空閑連接回收器線程運行期間休眠的時間值, 以毫秒為單位. 如果設置為非正數, 則不運行空閑連接回收器線程

這個值不應該小于1秒,它決定線程池多久驗證連接空閑或丟棄連接。

</td>

-1  

5000 (5 seconds)

numTestsPerEvictionRun

(int) 在每次空閑連接回收器線程( 如果有) 運行時檢查的連接數量

jdbc-pool中未使用此屬性

</td>

3  -
minEvictableIdleTimeMillis 連接在池中保持空閑而不被空閑連接回收器線程( 如果有) 回收的最小時間值,單位毫秒 1000 * 60 * 30(30分鐘)  60000(60 秒)
poolPreparedStatements

(boolean) 開啟池的prepared statement 池功能

 

jdbc-pool中未使用此屬性

</td>

false
maxOpenPreparedStatements

(int)statement 池能夠同時分配的打開的statements 的最大數量, 如果設置為0 表示不限制

jdbc-pool中未使用此屬性

</td>

不限制
accessToUnderlyingConnectionAllowed

(boolean) 控制PoolGuard 是否容許獲取底層連接

jdbc-pool中未使用此屬性;可以通過調用連接的unwrap方法取得控制權。參考javax.sql.DataSource接口,通過反射調用getConnection方法,或強制轉換為javax.sql.PooledConnection對象。

</td>

false  -
removeAbandoned

(boolean) 標記是否刪除泄露的連接, 如果他們超過了removeAbandonedTimout 的限制. 如果設置為true, 連接被認為是被泄露并且可以被刪除, 如果空閑時間超過removeAbandonedTimeout. 設置為true 可以為寫法糟糕的沒有關閉連接的程序修復數據庫連接.

參考logAbandoned

</td>

false  false
removeAbandonedTimeout

(int) 泄露的連接可以被刪除的超時值, 單位秒

這個值應該設為應用中查詢執行最長的時間

</td>

300  60
logAbandoned (boolean) 標記當Statement 或連接被泄露時是否打印程序的stack traces 日志。被泄露的Statements 和連接的日志添加在每個連接打開或者生成新的Statement, 因為需要生成stack trace 。 false  false

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr>

</tr> </tbody> </table>

 本文由用戶 weiflying 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
屬性名 描述 默認值
validatorClassName (String)實現org.apache.tomcat.jdbc.pool.Validator接口的類名,必須存在默認或明確的無參構造方 法。將建立一個指定類的實例作為驗證器,用來代替執行查詢的連接驗證。例 如:com.mycompany.project.SimpleValidator。 null

initSQL

(String) 當連接第一次建立時執行的SQL null

jdbcInterceptors

(String)(**杜天微注:jdbc攔截器——jdbc-pool的高級擴展屬 性)用分號分隔的、繼承org.apache.tomcat.jdbc.pool.JdbcInterceptor的類名列表。這些攔截器將被插入到對 java.sql.Connection操作之前的攔截器鏈上。

預制的攔截器有:

org.apache.tomcat.jdbc.pool.interceptor.ConnectionState - 追蹤自動提交、只讀狀態、catalog和事務隔離等級等狀態。(keeps track of auto commit, read only, catalog and transaction isolation level.)
org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer - 追蹤打開的statement,當連接被歸還時關閉它們。(keeps track of opened statements, and closes them when the connection is returned to the pool.)

更多預制攔截器詳細描述請參見JDBC攔截器部分 (**杜天微注:英文內容)。

</td>

null

validationInterval

(long) 避免過度驗證,保證驗證不超過這個頻率——以毫秒為單位。如果一個連接應該被驗證,但上次驗證未達到指定間隔,將不再次驗證。 3000030秒)

jmxEnabled

是否將連接池注冊到JMX true

fairQueue

(boolean) 如果被設為true ,getConnection 方法將被以先進先出的方式對待。此屬性使用 org.apache.tomcat.jdbc.pool.FairBlockingQueue 實現閑置連接列表。

如果需要使用異步連接回收,這個標記是必須的。

這個標記確保線程取得連接的順序和他們調用getConnection 方法的順序是相同的。

在性能測試中,這個標記對鎖和鎖等待有非常大的影響。當fairQueue=true,將有一個依賴于操作系統的線程作為決定線程。如果是Linux 系統( 系統屬性os.name=Linux )可以在線程池的類加載之前設置系統屬性org.apache.tomcat.jdbc.pool.FairBlockingQueue.ignoreOS=true 關閉Linux 特定行為但仍然使用公平隊列

</td>

true

abandonWhenPercentageFull

(int)正在被使用的連接超過這個百分比以前被丟棄的連接不會被斷開或報告。這個值應被設為0-100之間。默認值為0,意味著達到removeAbandonedTimeout 時將被盡快關閉。 0

maxAge

 (long)保持連接的最大毫秒數。當一個連接被歸還時,連接池將檢查是否滿足:現在時間-連接時長>maxAge,如果條件滿足,連接將被關閉而不是回到池中。默認值為0,標識禁用該功能。
 0

useEquals

 (boolean)如果希望ProxyConnection類使用String.equals方法對比方法名,設為true;否則將使用==判斷。這個屬性不會影響單獨配置的攔截器。  true

suspectTimeout(懷疑超時)

(int)以秒為單位的超時時間。類似 removeAbandonedTimeout,但不會將連接丟棄甚至關閉,如果logAbandoned為true,則 只是記錄一個警告。如果這個值小于等于0,不會有懷疑超時檢測被執行。懷疑檢測只有當超時時間大于0并且連接未丟棄,或者丟棄檢測被禁用的情況下才占用空間。如果一個連接被懷疑,將記錄一條警告消息,并發送一個JMX通知。  0

rollbackOnReturn

 (boolean)如果autoCommit==false,當連接被歸還時,通過調用連接的rollback方法中斷事務。  false
commitOnReturn  (boolean)如果autoCommit==false,當連接被歸還時,通過調用連接的commit方法完成事務。如果rollbackOnReturn==ture,這個屬性將被忽略。
 false

alternateUsernameAllowed

(boolean)為了提高性能,默認情況下,jdbc-pool將忽略 DataSource.getConnection(username,password)調用,直接返回一個以已有的全局配置的用戶名和密碼創建的連 接。連接池仍然可以用不同的用戶名和密碼,但已經通過舊的用戶名和密碼創建的連接將被關閉,然后重新以新的用戶名和密碼連接。這樣連接池將以全局級別管理 連接數,而不是schema級別。設置這個屬性為true來啟用 DataSource.getConnection(username,password)方法描述的行為。

這個屬性為bug 50025 增加。

</td>

 false

dataSource

 (javax.sql.DataSource)向連接池注入一個數據源,連接池將使用這個數據源索取連接,而不是通過java.sql.Driver接口建立。當您希望池化XA連接或者使用數據源而不是url時,這個屬性非常有用。  null

dataSourceJNDI

(String)用來建立數據連接的JNDI名稱。參考dataSource屬性。 null

useDisposableConnectionFacade

(boolean)如果您希望在連接上建立一道屏障防止連接關閉之后被重新使用,設置這個屬性為true。這個屬性用來預防線程保持已關閉連接的引用,并在上面執行查詢動作。 true

logValidationErrors

(boolean)如果設置為true,將在驗證相位時向日志文件寫入錯誤。如果值為true,錯誤將被記錄為SEVER。默認值是false以向后兼容。 false

propagateInterruptState

(boolean)設置這個屬性為true,可以傳播一個被中斷的線程(還沒有清除中斷狀態)的中斷狀態。默認值為false以向后兼容。 false
  • sesese色