自己以前做程序都是自己寫(xiě)連接池,那個(gè)時(shí)候項(xiàng)目大,環(huán)境各異,為了便于實(shí)施,總是由自己進(jìn)行連接池的管理,等到自己想做一些小東西的時(shí)候,才發(fā)現(xiàn)這個(gè)連接池成了一個(gè)專用的東西,和系統(tǒng)做了太多的綁定,只能找連接池用,用過(guò)resin自帶的連接池,再用tomcat連接池的時(shí)候就很不爽,沒(méi)有監(jiān)控的功能,在網(wǎng)上選來(lái)選去,最后選擇了Proxool。
??????Proxool連接池是sourceforge下的一個(gè)開(kāi)源項(xiàng)目,這個(gè)項(xiàng)目提供一個(gè)健壯、易用的連接池,最為關(guān)鍵的是這個(gè)連接池提供監(jiān)控的功能,方便易用,便于發(fā)現(xiàn)連接泄漏的情況。開(kāi)源項(xiàng)目地址是:
http://proxool.sourceforge.net/
配置連接池比較的簡(jiǎn)單:
1、將下載的包解開(kāi),從包中的lib目錄下將proxool-xxx.jar(xxx隨著不同的版本號(hào)變化)加入你的工程中。
2、配置數(shù)據(jù)源:
??????在web-info下建立文件:proxool.xml,文件內(nèi)容如下:
<?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容器加載的時(shí)候自動(dòng)加載配置文件,如果不是web程序,這個(gè)部分就需要通過(guò)開(kāi)發(fā)接口來(lái)初始化了 -->
<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>
<!--配置監(jiān)控servlet,其實(shí)如果不想監(jiān)控的話,可以不配-->
?? <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、在程序中調(diào)用
一般我將獲取connection的行為封裝為一個(gè)工廠模式,便于多種情況的切換,以下是其中proxool數(shù)據(jù)源的getConnection方法的實(shí)現(xiàn):
public Connection getConnection() {
??????? try{
??????????? Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
??????????? return DriverManager.getConnection("proxool.Develop");
??????? }catch(Exception ex){
??????????? ex.printStackTrace();
??????? }
??????? return null;
??? }
5、應(yīng)用開(kāi)發(fā):
??????在實(shí)際的應(yīng)用中,我們可能需要更多的功能,比如監(jiān)控功能不夠強(qiáng)大,權(quán)限不好控制,我們希望能夠編寫(xiě)出更強(qiáng)大的功能,比如殺死一些大的查詢語(yǔ)句等,記錄各種查詢語(yǔ)句占用的時(shí)間,這就需要對(duì)開(kāi)發(fā)接口進(jìn)行進(jìn)一步的研究了。
<script type="text/javascript"></script>
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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