Proxool 連線池的配置使用
一.下載proxool
去proxool官網下載proxool,最新版本是0.9.1。
下載完後解壓,把proxool.jar和proxool-cglib.jar放入你要配置的專案的lib目錄下.
二.配置proxool.xml
新增proxool.xml檔案到專案的/WEB-INF下.
連線資料庫Oracle的配置如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
<proxool>
<alias>dbname</alias>
<driver-url>jdbc:oracle:thin:@127.0.0.1:1521:testdb</driver-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver-properties>
<property name="user" value="username"/>
<property name="password" value="password"/>
</driver-properties>
<maximum-connection-count>100</maximum-connection-count>
<minimum-connection-count>10</minimum-connection-count>
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<maximum-new-connections>10</maximum-new-connections>
<prototype-count>5</prototype-count>
<test-before-use>true</test-before-use>
<house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
</proxool>
</something-else-entirely>
alias:資料來源的別名
driver-url:url連線串,須確定使用者名稱和密碼
driver-class:驅動名
username:使用者名稱(proxool沒有使用,但是不能沒有)
password:密碼(proxool沒有使用,但是不能沒有)
maximum-connection-count:最大連線數(預設5個),超過了這個連線數,再有請求時,就排在佇列中等候,最大的等待請求數由maximum-new-connections決定
minimum-connection-count:最小連線數(預設2個)
house-keeping-sleep-time:proxool自動偵察各個連線狀態的時間間隔(毫秒),偵察到空閒的連線就馬上回收,超時的銷燬 預設30秒)
prototype-count:最少保持的空閒連線數(預設2個)
maximum-new-connections:沒有空閒連線可以分配而在佇列中等候的最大請求數,超過這個請求數的使用者連線就不會被接受
test-before-use和house-keeping-test-sql:測試用
三.配置web.xml
<servlet>
<servlet-name>contextConfigLocation</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.configuration.ServletConfigurator
</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>123</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.123.servlet.123Servlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>123</servlet-name>
<url-pattern>/123</url-pattern>
</servlet-mapping>
ServletConfigurator:載入並初始化proxool.xml檔案,因為它是連線資料庫的.其他很多模組都用到資料,所以必須首先載入它
load-on-startup:值越小級別就越高,就先被載入初始化
contextConfigLocation:載入Spring的配置檔案,如果以前是:
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
則必須改成
<servlet>
<servlet-name>contextConfigLocation</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
設定載入順序為proxool.xml之後,如果設定成監聽器的形式,因監聽器會在servlet之前載入,所以會報錯.
123:監控資料庫連線池的連線情況
四.配置applicationContext.xml,整合Spring和proxool
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="org.logicalcobwebs.proxool.ProxoolDriver" />
<property name="url" value="proxool.dbname" />
</bean>
<property name="url">要配置成 proxool. + proxool.xml中的別名
配置基本完成,還有其它配置方式,但個人比較喜好這種.
另附加一份proxool.xml的配置屬性說明:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Properties for Proxool Configurator testing. Defines the same parameters as
TestHelper.buildCompleteAlternativeProperties()
-->
<something-else-entirely xmlns="http://sumthin.else.entirely" xmlns:proxool="The latest version is available at
http://proxool.sourceforge.net/xml-namespace">
<proxool:proxool>
<proxool:alias>xml-test-ns</proxool:alias>
<proxool:driver-url>jdbc:hsqldb:db/test</proxool:driver-url>
<proxool:driver-class>org.hsqldb.jdbcDriver</proxool:driver-class>
<proxool:driver-properties>
<proxool:property name="user" value="sa"/>
<proxool:property name="password" value=""/>
</proxool:driver-properties>
<proxool:house-keeping-sleep-time>40000</proxool:house-keeping-sleep-time>
<proxool:house-keeping-test-sql>select CURRENT_DATE</proxool:house-keeping-test-sql>
<proxool:maximum-connection-count>10</proxool:maximum-connection-count>
<proxool:minimum-connection-count>3</proxool:minimum-connection-count>
<proxool:maximum-connection-lifetime>18000000</proxool:maximum-connection-lifetime> <!-- 5 hours -->
<proxool:simultaneous-build-throttle>5</proxool:simultaneous-build-throttle>
<proxool:recently-started-threshold>40000</proxool:recently-started-threshold>
<proxool:overload-without-refusal-lifetime>50000</proxool:overload-without-refusal-lifetime>
<proxool:maximum-active-time>60000</proxool:maximum-active-time>
<proxool:verbose>true</proxool:verbose>
<proxool:trace>true</proxool:trace>
<proxool:fatal-sql-exception>Fatal error</proxool:fatal-sql-exception>
<proxool:prototype-count>2</proxool:prototype-count>
</proxool:proxool>
<nothing-to-do-with-proxool>
<proxool:proxool>
<proxool:alias>xml-test-ns-2</proxool:alias>
<proxool:driver-url>jdbc:hsqldb:db/test</proxool:driver-url>
<proxool:driver-class>org.hsqldb.jdbcDriver</proxool:driver-class>
<proxool:driver-properties>
<proxool:property name="user" value="sa"/>
<proxool:property name="password" value=""/>
</proxool:driver-properties>
<proxool:house-keeping-sleep-time>40000</proxool:house-keeping-sleep-time>
<proxool:house-keeping-test-sql>select CURRENT_DATE</proxool:house-keeping-test-sql>
<proxool:maximum-connection-count>10</proxool:maximum-connection-count>
<proxool:minimum-connection-count>3</proxool:minimum-connection-count>
<proxool:maximum-connection-lifetime>18000000</proxool:maximum-connection-lifetime> <!-- 5 hours -->
<proxool:simultaneous-build-throttle>5</proxool:simultaneous-build-throttle>
<proxool:recently-started-threshold>40000</proxool:recently-started-threshold>
<proxool:overload-without-refusal-lifetime>50000</proxool:overload-without-refusal-lifetime>
<proxool:maximum-active-time>60000</proxool:maximum-active-time>
<proxool:verbose>true</proxool:verbose>
<proxool:trace>true</proxool:trace>
<proxool:fatal-sql-exception>Fatal error</proxool:fatal-sql-exception>
<proxool:prototype-count>2</proxool:prototype-count>
</proxool:proxool>
</nothing-to-do-with-proxool>
</something-else-entirely>
屬性列表說明:
fatal-sql-exception: 它是一個逗號分割的資訊片段.當一個SQL異常發生時,他的異常資訊將與這個資訊片段進行比較.如果在片段中存在,那麼這個異常將被認為是個致命錯誤(Fatal SQL Exception ).這種情況下,資料庫連線將要被放棄.無論發生什麼,這個異常將會被重擲以提供給消費者.使用者最好自己配置一個不同的異常來丟擲.
fatal-sql-exception-wrapper-class:正如上面所說,你最好配置一個不同的異常來重擲.利用這個屬性,使用者可以包裝SQLException,使他變成另外一個異常.這個異常或者繼承SQLException或者繼承字RuntimeException.proxool自帶了2個實現:'org.logicalcobwebs.proxool.FatalSQLException' 和'org.logicalcobwebs.proxool.FatalRuntimeException' .後者更合適.
house-keeping-sleep-time: house keeper 保留執行緒處於睡眠狀態的最長時間,house keeper 的職責就是檢查各個連線的狀態,並判斷是否需要銷燬或者建立.
house-keeping-test-sql: 如果發現了空閒的資料庫連線.house keeper 將會用這個語句來測試.這個語句最好非常快的被執行.如果沒有定義,測試過程將會被忽略。
injectable-connection-interface: 允許proxool實現被代理的connection物件的方法.
injectable-statement-interface: 允許proxool實現被代理的Statement 物件方法.
injectable-prepared-statement-interface: 允許proxool實現被代理的PreparedStatement 物件方法.
injectable-callable-statement-interface: 允許proxool實現被代理的CallableStatement 物件方法.
jmx: 如果屬性為true,就會註冊一個訊息Bean到jms服務,訊息Bean物件名: "Proxool:type=Pool, name=<alias>". 預設值為false.
jmx-agent-id: : 一個逗號分隔的JMX代理列表(如使用MBeanServerFactory.findMBeanServer(String agentId)註冊的連線池。)這個屬性是僅當"jmx"屬性設定為"true"才有效。所有註冊jmx伺服器使用這個屬性是不確定的
jndi-name: 資料來源的名稱
maximum-active-time: 如果housekeeper 檢測到某個執行緒的活動時間大於這個數值.它將會殺掉這個執行緒.所以確認一下你的伺服器的頻寬.然後定一個合適的值.預設是5分鐘.
maximum-connection-count: 最大的資料庫連線數.
maximum-connection-lifetime: 一個執行緒的最大壽命.
minimum-connection-count: 最小的資料庫連線數
overload-without-refusal-lifetime: 這可以幫助我們確定連線池的狀態。如果我們已經拒絕了一個連線在這個設定值
(毫秒),然後被認為是超載。預設為60秒。
prototype-count: 連線池中可用的連線數量.如果當前的連線池中的連線少於這個數值.新的連線將被建立(假設沒有超過最大可用數).例如.我們有3個活動連線2個可用連線,而我們的prototype-count是4,那麼資料庫連線池將試圖建立另外2個連線.這和 minimum-connection-count不同. minimum-connection-count把活動的連線也計算在內.prototype-count 是spare connections 的數量.
recently-started-threshold: 這可以幫助我們確定連線池的狀態,連線數少還是多或超載。只要至少有一個連線
已開始在此值(毫秒)內,或者有一些多餘的可用連線,那麼我們假設連線池是開啟的。預設為60秒
simultaneous-build-throttle: 這是我們可一次建立的最大連線數。那就是新增的連線請求,但還沒有可供使用的連線。由於
連線可以使用多執行緒,在有限的時間之間建立聯絡從而帶來可用連線,但是我們需要通過一些方式確認一些執行緒並不是立即響應
連線請求的,預設是10。
statistics: 連線池使用狀況統計。 引數“10s,1m,1d”
statistics-log-level: 日誌統計跟蹤型別。 引數“ERROR”或 “INFO”
test-before-use: 略
test-after-use: 略
trace: 如果為true,那麼每個被執行的SQL語句將會在執行期被log記錄(DEBUG LEVEL).你也可以註冊一個ConnectionListener (參看ProxoolFacade)得到這些資訊.
verbose: 詳細資訊設定。 引數 bool 值
相關文章
- proxool連線池 配置
- proxool連線池如何使用SSL方式連線?
- PROXOOL資料庫連線池使用資料庫
- Proxool資料庫連線池資料庫
- DBCP 資料連線池的配置和使用
- 跪求?????JBoss中的連線池配置及使用
- Oracle 連線池配置Oracle
- Resin 配置連線池
- Hibernate連線池配置
- tomcat 配置JDBC連線池TomcatJDBC
- Tomcat下連線池的配置(續)Tomcat
- 關與連線池的配置問題!
- Tomcat連線池使用Tomcat
- 安裝配置PGBouncer連線池
- JNDI配置資料庫連線池資料庫
- .net 資料庫連線池配置資料庫
- 資料庫連線池的使用資料庫
- 使用 Spring Boot 2.4配置Oracle的UCP資料庫連線池Spring BootOracle資料庫
- 怎麼配置jive使用容器的資料來源和連線池?
- mysql資料庫連線池配置教程MySql資料庫
- DBCP連線池配置引數說明
- druid資料庫連線池的配置類UI資料庫
- druid連線池的配置檔案參考UI
- 連線池
- 【JDBC】使用OracleDataSource建立連線池用於連線OracleJDBCOracle
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- [求助]資料庫連線池配置問題資料庫
- 在JBOSS中使用mysql連線池MySql
- java資料庫連線池dbcp的使用Java資料庫
- Go連線池Go
- HTTP連線池HTTP
- django連線池Django
- Tomcat4的資料庫連線池配置 (轉)Tomcat資料庫
- Tomcat配置DataSource,連線池資料來源Tomcat
- Tomcat6資料庫連線池配置Tomcat資料庫
- 新手配置tomcat連線池疑問 請指教!Tomcat
- Tomcat 5.5 配置 MySQL 資料庫連線池TomcatMySql資料庫
- Jedis使用連線池操作redis叢集Redis