連接池是負責分配、管理和釋放數據庫連接,它允許應用程序重復使用一個現有的數據庫連接,而再不是重新建立一個;釋放空閑時間超過最大空閑時間的數據庫連接來避免因為沒有釋放數據庫連接而引起的數據庫連接遺漏。這項技術能明顯提高對數據庫操作的性能
所以一個項目訪問數據庫比較頻繁的時候,就要用到連接池,一般連接池本人都覺得proxool比較好(這個網上的都是這樣說,呵呵),我以前一直都用C3P0連接池,發覺速度還不錯,不過不大穩定!
不說那么多,淺談下我的proxool的經驗
準備前的工作:
到proxool官網http://proxool.sourceforge.net/上下載JAR包和文檔
然后解壓,把里面的proxool-0.9.1.jar和proxool-cglib.jar放到你的服務器的lib下面(好像我用的是TOMCAT,就放到TOMCAT的lib里面,供TOMCAT調用)
先在WEB-INF下建立以個proxool.xml的文件
詳細的配置以下:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : proxool.xml
Created on : 2009年11月9日, 下午3:15
Author : Administrator
Description:
Purpose of the document follows.
-->
<something-else-entirely>
<proxool>
<alias>mypool</alias>
<driver-url>jdbc:mysql://localhost/czm?characterEncoding=utf-8</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root"/>
<property name="password" value=""/>
</driver-properties>
<!-- proxool自動偵察各個連接狀態的時間間隔(毫秒),偵察到空閑的連接就馬上回收,超時的銷毀-->
<house-keeping-sleep-time>300000</house-keeping-sleep-time>
<!--最大的等待請求數,即因沒有空閑連接可以分配而在隊列中等候的最大請求數,超過這個請求數的用戶連接就不會被接受-->
<proxool.simultaneous-build-throttle>200</proxool.simultaneous-build-throttle>
<!-- maximum-new-connections>50</maximum-new-connections-->
<!-- 最少保持的空閑連接數-->
<prototype-count>5</prototype-count>
<!-- 允許最大連接數,超過了這個連接,再有請求時,就排在隊列中等候,最大的等待請求數由maximum-new-connections決定-->
<maximum-connection-count>100</maximum-connection-count>
<!-- 最小連接數-->
<minimum-connection-count>25</minimum-connection-count>
<maximum-active-time>300000</maximum-active-time>
<maximum-connection-lifetime>3600000</maximum-connection-lifetime>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</something-else-entirely>
接著在web.xml下做個插件
詳細配置以下:
<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>Admin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Admin</servlet-name>
<url-pattern>/proxool</url-pattern><!--這個設置是你的項目的上下文路徑-->
</servlet-mapping>
web.xml配置完后,剩下的就是寫個測試連接類
新建一個jsp頁面,頁面內容以下:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
java.sql.Connection conn = java.sql.DriverManager.getConnection("proxool.myself");
System.out.println("conn:" + conn);
out.print("conn:" + conn);
conn.close();
%>
</body>
</html>
OK.運行該頁面看看是否成功?
以前我就是在類中測試,發覺它連接不上,報
java.sql.SQLException: No suitable driver found for proxool.myself
的錯誤。
所以一定要用JSP或servlet來測試,因為它調用到服務器