在數據庫應用程序中,數據庫連接的取得是一個耗費時間的動作,為了避免花費時間在連接的取得與關閉上,我們會將連接資源放置在一個池中,需要連接時就從池中取得,不需要連接時就將之放回池中,以求重復利用連接,連接池也擔任連接數量、連接時間的控制等動作。
常常,我們在web應用中,會遇到連接沒有關閉導至too many connection的現象。這跟我們寫的程序有關,但另一方面也跟連接池有關。網上的資料顯示,apache的DBCP網上的評價不是很高。而Proxool網上很多人對它的評價是非常好的。所以值得試試。還有一個評價也是非常好的,那就是Hibernate包下有一個叫c3p的。因為有了這些開源包,我們就省去了寫連接池程序的麻煩,不要重復的發明輪子。而且現在Proxool也比較成熟了。目前的最新版本是:proxool-0.9.0RC2.jar
他的配置使用非常簡單。
參考了網上的資料。
1、把下載下來的proxool-0.9.0RC2.jar放到web的lib中,同時也別忘了加入jdbc的驅動。
2、在WEB-INF中加一個Proxool.xml配置文件。當然也可以用其它的配置,只是我覺得用xml進行配置比較好一點。內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<proxool>
<alias>Develop</alias>
<driver-url>
jdbc:postgresql://127.0.0.1:5432/selldb
</driver-url>
<driver-class>
org.postgresql.Driver
</driver-class>
<driver-properties>
<property name="user" value="postgres"/>
<property name="password" value="123456"/>
</driver-properties>
<maximum-connection-count>20</maximum-connection-count>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
3、在web.xml中加上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>
4、寫一個程序來測試一下。
<%@ page language="java" import="java.sql.*" pageEncoding="UTF-8"%>
<html><head><title>Proxool.jsp</title></head><body><h2>使用Proxool.jsp</h2>
<%Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String po = "";
try {
con = DriverManager.getConnection("proxool.Develop");
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String query = "select * from sell_item";
rs = stmt.executeQuery(query);
while (rs.next()) {
po = rs.getString("po");
%>
值<%=po%>
<br>
<%}
stmt.close();
con.close();
}
catch (SQLException e) {
out.println("發生了異常" + e);
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException ne) {
out.println("SQLException:" + ne);
}
}
%>
</bdoy>
</html>