屬性 |
描述 |
factory |
必需的屬性,其值應(yīng)為 org.apache.tomcat.jdbc.pool.DataSourceFactory |
type |
類型應(yīng)為 javax.sql.DataSource 或 javax.sql.XADataSource。 |
系統(tǒng)屬性作用于 JVM 范圍,影響創(chuàng)建于 JVM 內(nèi)的所有池。
屬性 |
描述 |
org.apache.tomcat.jdbc.pool.onlyAttemptCurrentClassLoader |
布爾值,默認(rèn)為 false。控制動(dòng)態(tài)類(如JDBC 驅(qū)動(dòng)、攔截器、驗(yàn)證器)的加載。如果采用默認(rèn)值,池會(huì)首先利用當(dāng)前類加載器(比如已經(jīng)加載池類的類加載器)加載類;如果類加載失敗,則嘗試?yán)镁€程上下文加載器加載。取值為 true 時(shí),會(huì)向后兼容 Apache Tomcat 8.0.8 及更早版本,只會(huì)采用當(dāng)前類加載器。如果未設(shè)置,則取默認(rèn)值。 |
屬性 |
描述 |
defaultAutoCommit |
(布爾值)連接池所創(chuàng)建的連接默認(rèn)自動(dòng)提交狀態(tài)。如果未設(shè)置,則默認(rèn)采用 JDBC 驅(qū)動(dòng)的缺省值(如果未設(shè)置,則不會(huì)調(diào)用 setAutoCommit 方法)。 |
defaultReadOnly |
(布爾值)連接池所創(chuàng)建的連接默認(rèn)只讀狀態(tài)。如果未設(shè)置,將不會(huì)調(diào)用 setReadOnly 方法。(有些驅(qū)動(dòng)并不支持只讀模式,比如:informix) |
defaultTransactionIsolation |
(字符串)連接池所創(chuàng)建的連接的默認(rèn)事務(wù)隔離狀態(tài)。取值范圍為:(參考 javadoc) · NONE · READ_COMMITTED · READ_UNCOMMITTED · REPEATABLE_READ · SERIALIZABLE
|
defaultCatalog |
(字符串)連接池所創(chuàng)建的連接的默認(rèn)catalog。 |
driverClassName |
(字符串)所要使用的 JDBC 驅(qū)動(dòng)的完全限定的 Java 類名。該驅(qū)動(dòng)必須能從與 tomcat-jdbc.jar 同樣的類加載器訪問 |
username |
(字符串)傳入 JDBC 驅(qū)動(dòng)以便建立連接的連接用戶名。注意,DataSource.getConnection(username,password) 方法默認(rèn)不會(huì)使用傳入該方法內(nèi)的憑證,但會(huì)使用這里的配置信息。可參看 alternateUsernameAllowed 了解更多詳情。 |
password |
(字符串)傳入 JDBC 驅(qū)動(dòng)以便建立連接的連接密碼。注意,DataSource.getConnection(username,password) 方法默認(rèn)不會(huì)使用傳入該方法內(nèi)的憑證,但會(huì)使用這里的配置信息。可參看 alternateUsernameAllowed 了解更多詳情。 |
maxActive |
(整形值)池同時(shí)能分配的活躍連接的最大數(shù)目。默認(rèn)為 100。 |
maxIdle |
(整型值)池始終都應(yīng)保留的連接的最大數(shù)目。默認(rèn)為 maxActive:100。會(huì)周期性檢查空閑連接(如果啟用該功能),留滯時(shí)間超過 minEvictableIdleTimeMillis 的空閑連接將會(huì)被釋放。(請(qǐng)參考 testWhileIdle) |
minIdle |
(整型值)池始終都應(yīng)保留的連接的最小數(shù)目。如果驗(yàn)證查詢失敗,則連接池會(huì)縮減該值。默認(rèn)值取自 initialSize:10(請(qǐng)參考 testWhileIdle)。 |
initialSize |
(整型值)連接器啟動(dòng)時(shí)創(chuàng)建的初始連接數(shù)。默認(rèn)為 10。 |
maxWait |
(整型值)在拋出異常之前,連接池等待(沒有可用連接時(shí))返回連接的最長(zhǎng)時(shí)間,以毫秒計(jì)。默認(rèn)為 30000(30 秒) |
testOnBorrow |
(布爾值)默認(rèn)值為 false。從池中借出對(duì)象之前,是否對(duì)其進(jìn)行驗(yàn)證。如果對(duì)象驗(yàn)證失敗,將其從池中清除,再接著去借下一個(gè)。注意:為了讓 true 值生效,validationQuery 參數(shù)必須為非空字符串。為了實(shí)現(xiàn)更高效的驗(yàn)證,可以采用 validationInterval。 |
testOnReturn |
(布爾值)默認(rèn)值為 false。將對(duì)象返回池之前,是否對(duì)齊進(jìn)行驗(yàn)證。注意:為了讓 true 值生效,validationQuery 參數(shù)必須為非空字符串。 |
testWhileIdle |
(布爾值)是否通過空閑對(duì)象清除者(如果存在的話)驗(yàn)證對(duì)象。如果對(duì)象驗(yàn)證失敗,則將其從池中清除。注意:為了讓 true 值生效,validationQuery 參數(shù)必須為非空字符串。該屬性默認(rèn)值為 false,為了運(yùn)行池的清除/測(cè)試線程,必須設(shè)置該值。(另請(qǐng)參閱 timeBetweenEvictionRunsMillis) |
validationQuery |
(字符串)在將池中連接返回給調(diào)用者之前,用于驗(yàn)證這些連接的 SQL 查詢。如果指定該值,則該查詢不必返回任何數(shù)據(jù),只是不拋出 SQLException 異常。默認(rèn)為 null。實(shí)例值為:SELECT 1(MySQL) select 1 from dual(Oracle) SELECT 1(MySQL Server)。 |
validationQueryTimeout |
(整型值)連接驗(yàn)證失敗前的超時(shí)時(shí)間(以秒計(jì))。通過在執(zhí)行 validationQuery 的語句上調(diào)用 java.sql.Statement.setQueryTimeout(seconds) 來實(shí)現(xiàn)。池本身并不會(huì)讓查詢超時(shí),完全是由 JDBC 來強(qiáng)制實(shí)現(xiàn)。若該值小于或等于 0,則禁用該功能。默認(rèn)為 -1。 |
validatorClassName |
(字符串)實(shí)現(xiàn) org.apache.tomcat.jdbc.pool.Validator 接口并提供了一個(gè)無參(可能是隱式的)構(gòu)造函數(shù)的類名。如果指定該值,將通過該類來創(chuàng)建一個(gè) Validator 實(shí)例來驗(yàn)證連接,代替任何驗(yàn)證查詢。默認(rèn)為 null,范例值為:com.mycompany.project.SimpleValidator。 |
timeBetweenEvictionRunsMillis |
(整型值)空閑連接驗(yàn)證/清除線程運(yùn)行之間的休眠時(shí)間(以毫秒計(jì))。不能低于 1 秒。該值決定了我們檢查空閑連接、廢棄連接的頻率,以及驗(yàn)證空閑連接的頻率。默認(rèn)為 5000(5 秒) |
numTestsPerEvictionRun |
(整型值)Tomcat JDBC 連接池沒有用到這個(gè)屬性。 |
minEvictableIdleTimeMillis |
(整型值)在被確定應(yīng)被清除之前,對(duì)象在池中保持空閑狀態(tài)的最短時(shí)間(以毫秒計(jì))。默認(rèn)為 60000(60 秒) |
accessToUnderlyingConnectionAllowed |
(布爾值)沒有用到的屬性。可以在歸入池內(nèi)的連接上調(diào)用 unwrap來訪問。參閱 javax.sql.DataSource 接口的相關(guān)介紹,或者通過反射調(diào)用 getConnection,或者將對(duì)象映射為 javax.sql.PooledConnection。 |
removeAbandoned |
(布爾值)該值為標(biāo)志(Flag)值,表示如果連接時(shí)間超出了 removeAbandonedTimeout,則將清除廢棄連接。如果該值被設(shè)置為 true,則如果連接時(shí)間大于 removeAbandonedTimeout,該連接會(huì)被認(rèn)為是廢棄連接,應(yīng)予以清除。若應(yīng)用關(guān)閉連接失敗時(shí),將該值設(shè)為 true 能夠恢復(fù)該應(yīng)用的數(shù)據(jù)庫(kù)連接。另請(qǐng)參閱 logAbandoned。默認(rèn)值為 false。 |
removeAbandonedTimeout |
(整型值)在廢棄連接(仍在使用)可以被清除之前的超時(shí)秒數(shù)。默認(rèn)為 60(60 秒)。應(yīng)把該值設(shè)定為應(yīng)用可能具有的運(yùn)行時(shí)間最長(zhǎng)的查詢。 |
logAbandoned |
(布爾值)標(biāo)志能夠針對(duì)丟棄連接的應(yīng)用代碼,進(jìn)行堆棧跟蹤記錄。由于生成堆棧跟蹤,對(duì)廢棄連接的日志記錄會(huì)增加每一個(gè)借取連接的開銷。默認(rèn)為 false |
connectionProperties |
(字符串)在建立新連接時(shí),發(fā)送給 JDBC 驅(qū)動(dòng)的連接屬性。字符串格式必須為:[propertyName=property;]*。注意:user 與 password 屬性會(huì)顯式傳入,因此這里并不需要包括它們。默認(rèn)為 null。 |
poolPreparedStatements |
(布爾值)未使用的屬性 |
maxOpenPreparedStatements |
(整型值)未使用的屬性 |
屬性 |
描述 |
initSQL |
字符串值。當(dāng)連接第一次創(chuàng)建時(shí),運(yùn)行的自定義查詢。默認(rèn)值為 null。 |
jdbcInterceptors |
字符串。繼承自類 org.apache.tomcat.jdbc.pool.JdbcInterceptor 的子類類名列表,由分號(hào)分隔。關(guān)于格式及范例,可參見下文的配置 JDBC 攔截器。 · org.apache.tomcat.jdbc.pool.interceptor · ConnectionState——記錄自動(dòng)提交、只讀、catalog以及事務(wù)隔離級(jí)別等狀態(tài)。 · org.apache.tomcat.jdbc.pool.interceptor · StatementFinalizer——記錄打開的語句,并當(dāng)連接返回池后關(guān)閉它們。
|
validationInterval |
長(zhǎng)整型值。為避免過度驗(yàn)證而設(shè)定的頻率時(shí)間值(以秒計(jì))。最多以這種頻率運(yùn)行驗(yàn)證。如果連接應(yīng)該進(jìn)行驗(yàn)證,但卻沒能在此間隔時(shí)間內(nèi)得到驗(yàn)證,則會(huì)重新對(duì)其進(jìn)行驗(yàn)證。默認(rèn)為 30000(30 秒)。 |
jmxEnabled |
布爾值。是否利用 JMX 注冊(cè)連接池。默認(rèn)為 true。 |
fairQueue |
布爾值。假如想用真正的 FIFO 方式公平對(duì)待 getConnection 調(diào)用,則取值為 true。對(duì)空閑連接列表將采用 org.apache.tomcat.jdbc.pool.FairBlockingQueue 實(shí)現(xiàn)。默認(rèn)值為 true。如果想使用異步連接獲取功能,則必須使用該標(biāo)志。 |
abandonWhenPercentageFull |
整型值。除非使用中連接的數(shù)目超過 abandonWhenPercentageFull 中定義的百分比,否則不會(huì)關(guān)閉并報(bào)告已廢棄的連接(因?yàn)槌瑫r(shí))。取值范圍為 0-100。默認(rèn)值為 0,意味著只要達(dá)到 removeAbandonedTimeout,就應(yīng)關(guān)閉連接。 |
maxAge |
長(zhǎng)整型值。連接保持時(shí)間(以毫秒計(jì))。當(dāng)連接要返回池中時(shí),連接池會(huì)檢查是否達(dá)到 now - time-when-connected > maxAge 的條件,如果條件達(dá)成,則關(guān)閉該連接,不再將其返回池中。默認(rèn)值為 0,意味著連接將保持開放狀態(tài),在將連接返回池中時(shí),不會(huì)執(zhí)行任何年齡檢查。 |
useEquals |
布爾值。如果想讓 ProxyConnection 類使用 String.equals,則將該值設(shè)為 true;若想在對(duì)比方法名稱時(shí)使用 ==,則應(yīng)將其設(shè)為 false。該屬性不能用于任何已添加的攔截器中,因?yàn)槟切r截器都是分別配置的。默認(rèn)值為 true。 |
suspectTimeout |
整型值。超時(shí)時(shí)間(以秒計(jì))。默認(rèn)值為 0。 |
rollbackOnReturn |
布爾值。如果 autoCommit==false,那么當(dāng)連接返回池中時(shí),池會(huì)在連接上調(diào)用回滾方法,從而終止事務(wù)。默認(rèn)值為 false。 |
commitOnReturn |
布爾值。如果 autoCommit==false,那么當(dāng)連接返回池中時(shí),池會(huì)在連接上調(diào)用提交方法,從而完成事務(wù);如果 rollbackOnReturn==true,則忽略該屬性。默認(rèn)值為 false。 |
alternateUsernameAllowed |
布爾值。出于性能考慮,JDBC 連接池默認(rèn)會(huì)忽略 DataSource.getConnection(username,password)調(diào)用,只返回之前池化的具有全局配置屬性 username 和 password的連接。 |
dataSource |
(javax.sql.DataSource)將數(shù)據(jù)源注入連接池,從而使池利用數(shù)據(jù)源來獲取連接,而不是利用 java.sql.Driver 接口來建立連接。它非常適于使用數(shù)據(jù)源(而非連接字符串)來池化 XA 連接或者已建立的連接時(shí)。默認(rèn)值為 null。 |
dataSourceJNDI |
字符串。在 JNDI 中查找的數(shù)據(jù)源的 JNDI 名稱,隨后將用于建立數(shù)據(jù)庫(kù)連接。參看 datasource 屬性的介紹。默認(rèn)值為 null。 |
useDisposableConnectionFacade |
布爾值。如果希望在連接上放上一個(gè)門面對(duì)象,從而使連接在關(guān)閉后無法重用,則要將值設(shè)為 true。這能防止線程繼續(xù)引用一個(gè)已被關(guān)閉的連接,并繼續(xù)在連接上查詢。默認(rèn)值為 true。 |
logValidationErrors |
布爾值。設(shè)為 true 時(shí),能將驗(yàn)證階段的錯(cuò)誤記錄到日志文件中,錯(cuò)誤會(huì)被記錄為 SEVERE。考慮到了向后兼容性,默認(rèn)值為 false。 |
propagateInterruptState |
布爾值。傳播已中斷的線程(還沒有清除中斷狀態(tài))的中斷狀態(tài)。考慮到了向后兼容性,默認(rèn)值為 false。 |
ignoreExceptionOnPreLoad |
布爾值。在初始化池時(shí),是否忽略連接創(chuàng)建錯(cuò)誤。取值為 true時(shí)表示忽略;設(shè)為 false 時(shí),拋出異常,從而宣告池初始化失敗。默認(rèn)值為 false。 |