自己以前做程序都是自己寫連接池,那個時候項目大,環境各異,為了便于實施,總是由自己進行連接池的管理,等到自己想做一些小東西的時候,才發現這個連接池成了一個專用的東西,和系統做了太多的綁定,只能找連接池用,用過resin自帶的連接池,再用tomcat連接池的時候就很不爽,沒有監控的功能,在網上選來選去,最后選擇了Proxool。
??????Proxool連接池是sourceforge下的一個開源項目,這個項目提供一個健壯、易用的連接池,最為關鍵的是這個連接池提供監控的功能,方便易用,便于發現連接泄漏的情況。開源項目地址是:
http://proxool.sourceforge.net/
配置連接池比較的簡單:
1、將下載的包解開,從包中的lib目錄下將proxool-xxx.jar(xxx隨著不同的版本號變化)加入你的工程中。
2、配置數據源:
??????在web-info下建立文件:proxool.xml,文件內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
? <proxool>
??? <alias>Develop</alias>
??? <driver-url>jdbc:mysql://localhost/kuanxue</driver-url>
??? <driver-class>com.mysql.jdbc.Driver</driver-class>
??? <driver-properties>
????? <property name="user" value="root"/>
????? <property name="password" value=""/>
????? <property name="useUnicode" value="true"/>
????? <property name="characterEncoding" value="GBK"/>
??? </driver-properties>
??? <maximum-connection-count>500</maximum-connection-count>
??? <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
? </proxool>
?</something-else-entirely>
3、配置web.xml
在web.xml中增加:
<!--?配置初始化servlet,在web容器加載的時候自動加載配置文件,如果不是web程序,這個部分就需要通過開發接口來初始化了 -->
<servlet>
???? <servlet-name>proxoolInitialServlet</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>
??? <servlet-name>dbpoolAdmin</servlet-name>
??? <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
? </servlet>
?? <servlet-mapping>
??? <servlet-name>dbpoolAdmin</servlet-name>
??? <url-pattern>/dbpool</url-pattern>
? </servlet-mapping>
4、在程序中調用
一般我將獲取connection的行為封裝為一個工廠模式,便于多種情況的切換,以下是其中proxool數據源的getConnection方法的實現:
public Connection getConnection() {
??????? try{
??????????? Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
??????????? return DriverManager.getConnection("proxool.Develop");
??????? }catch(Exception ex){
??????????? ex.printStackTrace();
??????? }
??????? return null;
??? }
5、應用開發:
??????在實際的應用中,我們可能需要更多的功能,比如監控功能不夠強大,權限不好控制,我們希望能夠編寫出更強大的功能,比如殺死一些大的查詢語句等,記錄各種查詢語句占用的時間,這就需要對開發接口進行進一步的研究了。
<script type="text/javascript"></script>
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
