後來上網上找了這個PROXOOL連接池插件,發現有自動KILL不活動的連接的功能.而且有VIEW方式查看連接情況,而且很多數據都是配置完成。決定在項目中試驗一下。
官方網址:http://proxool.sourceforge.net/ 當前版本:proxool-0.9.0RC2
1、下載proxool 地址:http://proxool.sourceforge.net/
2、解壓縮proxool-0.9.0RC2.zip,拷貝lib/proxool-0.9.0RC2.jar到web-info/lib 拷貝jdbc驅動到web-info/lib
3、在web-info下建立文件:proxool.xml
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>Test</alias>
<driver-url>jdbc:oracle:thin:@192.168.10.160:1521:orc1</driver-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<driver-properties>
<property name="user" value="test"/>
<property name="password" value="testpass"/>
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</something-else-entirely>
4、在web.xml裏新增如下:
<servlet>
<servlet-name>proxoolServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/config/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- proxool提供的管理監控工具,可查看當前數據庫連接情況。如果運行不成功,請刪除本行 -->
<servlet>
<servlet-name>Admin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Admin</servlet-name>
<url-pattern>/admin</url-pattern>
</servlet-mapping>
5、在調用數據庫連接代碼:
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
Connection conn = DriverManager.getConnection("proxool.Develop");
6、利用proxool監控工具查看數據庫運行狀態。地址:./admin
以上配置是採用的XML文件方式,也可以採用properties配置方式:
proxool.alias=Test
proxool.driver-class=oracle.jdbc.driver.OracleDriver
proxool.driver-url=jdbc:oracle:thin:@192.168.10.160:1521:orcl
proxool.user=test
proxool.password=testpass
proxool.maximum-connection-count=20
proxool.prototype-count=4
proxool.house-keeping-test-sql=select sysdate from DUAL
proxool.verbose=true
proxool.statistics=10s,1m,1d
proxool.statistics-log-level=ERROR
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>propertyFile</param-name>
<param-value>WEB-INF/config/Proxool.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
在調用數據庫連接代碼
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
Connection conn = DriverManager.getConnection("proxool.Test");
還有一些配置屬性:
maximum-connection-lifetime 最大連接生命週期 默認值:4小時
maximum-active-time: 最大活動時間 默認值:5分鐘
maximum-connection-count 最大連接數 默認值:15個
minimum-connection-count 最小連接數 默認值:5個
在用admin調用的時候,可以查看這個WEB應用所有的連接數的狀態,雖然這個插件可以把不活動的連接自動放到連接池裏,但是如果連接數過多,而不及時KILL的話,對網站的連接是有很大的影響的,建議還是手工KILL。