应用,一定要应用

BlogJava 首页 新随笔 联系 聚合 管理
  25 Posts :: 0 Stories :: 118 Comments :: 0 Trackbacks
      自己以前做程序都是自己写连接池,那个时候项目大,环境各异,为了便于实施,总是由自己进行连接池的管理,等到自己想做一些小东西的时候,才发现这个连接池成了一个专用的东西,和系统做了太多的绑定,只能找连接池用,用过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、应用开发:
      在实际的应用中,我们可能需要更多的功能,比如监控功能不够强大,权限不好控制,我们希望能够编写出更强大的功能,比如杀死一些大的查询语句等,记录各种查询语句占用的时间,这就需要对开发接口进行进一步的研究了。
posted on 2006-11-02 12:00 flyffa 阅读(5839) 评论(7)  编辑  收藏 所属分类: 其他应用

Feedback

# re: Proxool连接池的简单配置 2006-11-02 14:09 fef
米鼠网的会员群,是我见过的最火爆的会员群,共有20个群组成,每个群里面都有软件高手在里面为会员提供服务,所有的程序员和软件爱好者均可以申请加入群,只是加入以后必须马上注册会员(会员的注册是免费的)且必须经常上线参与讨论,否则有可能会被踢出群。
32141532 32141736,32141620
米鼠网的论坛也很有特色,所有发帖均有无一不漏均可以得到解答可见论坛里是高手如云啊!!!
米鼠网的论坛地址是:www.huazimc.com
  回复  更多评论
  

# re: Proxool连接池的简单配置 2006-11-02 16:09 荣海
文件名WEB-INF/classes/Proxool.properties
jdbc-0.proxool.alias=BBSWRH
jdbc-0.proxool.driver-class=com.mysql.jdbc.Driver
jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/bbs?user=root&password=password&useUnicode=true&characterEncoding=UTF-8
jdbc-0.proxool.maximum-connection-count=100
jdbc-0.proxool.prototype-count=4
jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE
jdbc-0.proxool.verbose=true


<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/classes/Proxool.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>



这一行可以这样
con = DriverManager.getConnection("proxool.BBSWRH");

这也是一种方法  回复  更多评论
  

# re: Proxool连接池的简单配置 2006-11-02 23:10 Tin
应该补充一个重要问题:
Proxool是为了那些实现的时候并没有考虑连接池的问题,而直接使用了JDBC连接的项目使用的。Proxool对JDBC连接进行了池化封装,可以相对透明的让你的应用增加连接池的能力。
而对于新的应用,可以考虑c3p0或dbcp。:D  回复  更多评论
  

# re: Proxool连接池的简单配置 2006-11-03 13:18 flyffa
@Tin
那c3p0和dbcp是不是在性能上有特殊的优势,还是使用上有什么优势。

proxool从我使用来说是很方便的,我只是将我的工厂类做了一个新的实例就搞定了,而且他本身有监控功能,应该也有开放的开发口,虽然我还没有仔细的去研究。

c3p0和dbcp是不是也具备同样的特性呢?  回复  更多评论
  

# re: Proxool连接池的简单配置 2006-11-03 13:19 flyffa
@荣海
你是property法,呵呵,我一般不太喜欢用property文件写配置,不过还是非常感谢  回复  更多评论
  

# re: Proxool连接池的简单配置 2008-02-25 17:14
我遇到一个问题,我的程序使用的是proxool连接池对连接对象进行管理。当数据库当掉重启之后,怎样才能让它自动恢复连接呢? 希望你能够给个答案吧! 不知道在proxool中怎么配置呢?   回复  更多评论
  

# re: Proxool连接池的简单配置 2014-05-04 20:32 okok
@荣海
谢谢,果然不用反射也可以,properties和xml各有各有脾益。都是高手啊。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: