1. 概述
FR 連接池屬性,使用的是 DBCP 連接池,本文将介紹其設置方法及其屬性中各參數的意義。
2. 具體介紹
2.1 設置連接池屬性
在 FineReport 設計器中點擊「服務器>定義數據連接」,選擇某個數據連接,點擊「連接池屬性」,可設置連接池屬性。如下圖所示:
2.2 各參數介紹
其中連接池屬性的各參數說明如下表所示:
名稱 | 舉例 | 含義 |
---|---|---|
初始化連接數 | initialSize="1" | 連接池啓動時創建的初始化連接數量 |
最大活動連接數 | maxActive="200" | 連接池在同一時間能夠分配的最大活動連接的數量,如果設置爲非正數則表示不限制 |
最大空閑連接數 | maxIdle="100" | 連接池中容許保持空閑狀态的最大連接數量,超過的空閑連接将被釋放,如果設置爲負數表示不限制 注:第三方框架已經廢棄該參數,設置無效果 |
最小空閑連接數 | minIdle="2" | 連接池中容許保持空閑狀态的最小連接數量,低於這個數量将創建新的連接,如果設置爲 0 則不創建 |
最大等待時間(毫秒) | maxWait="1000" | 當沒有可用連接時,連接池等待連接被歸還的最大時間(以毫秒計數),超過時間則抛出異常,如果設置爲 -1 表示無限等待 |
SQL 驗證查詢 | validationQuery="SQL語句" | 用來驗證從連接池取出的連接,在将連接返回給調用者之前如果指定,則查詢必須是一個 SQL SELECT 并且必須返回至少一行記錄 |
獲取連接前檢驗 | testOnBorrow="false" | 指明是否在從池中取出連接前進行檢驗,如果檢驗失敗,則從池中去除連接并嘗試取出另一個 |
歸還連接前檢驗 | testOnReturn="true" | 指明是否在歸還到池中前進行檢驗 |
開啓空閑回收器檢驗 | testWhileIdle="true" | 指明連接是否被空閑連接回收器(如果有)進行檢驗,如果檢測失敗,則連接将被從池中去除 |
空閑連接回收器休眠時間(毫秒) | timeBetweenEvictionRunsMilli s="1000" | 在空閑連接回收器線程運行期間休眠的時間值,以毫秒爲單位.。如果設置爲非正數,則不運行空閑連接回收器線程 |
空閑連接回收檢查數 | numTestsPerEvictionRun="2" | 在每次空閑連接回收器線程(如果有)運行時檢查的連接數量 |
保持空閑最小時間 | minEvictableIdleTimeMilli s="18005000" | 連接在池中保持空閑而不被空閑連接回收器線程(如果有)回收的最小時間值 |
最大活動連接數設置超過數據庫中的連接數目,只能按照數據庫中的連接數目爲準,如想調至最大,則也要調整數據庫中的連接數目,參考文檔 連接池滿問題 中的解決方案。
3. 注意事項
如果訪問模板時,報連接超時、等待狀态,警告如下所示:
警告:Cannot get a connection, pool error Timeout waiting for idle object
at com.fr.third.org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:114)
at com.fr.third.org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at com.fr.data.pool.MemoryConnection.create(Unknown Source)
at com.fr.data.impl.JDBCDatabaseConnection.createConnection(Unknown Source)
則需要把相應連接數調大。