czmchen

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  17 随笔 :: 0 文章 :: 24 评论 :: 0 Trackbacks
连接池是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能


所以一个项目访问数据库比较频繁的时候,就要用到连接池,一般连接池本人都觉得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来测试,因为它调用到服务器


posted on 2009-11-10 15:47 陈周敏 阅读(2976) 评论(1)  编辑  收藏 所属分类: J2EE Studying

评论

# re: 浅谈proxool连接池经验 2009-11-10 16:38 Elvea
晕死,你在Web容器中初始化,在类中单独测试肯定有问题  回复  更多评论
  


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


网站导航: