`

Java Web中使用数据库连接池proxool配置详解

 
阅读更多
使用proxool数据库连接池步骤:

在WEB-INF的lib中导入proxool-0.9.0RC3.jar
在WEB-INF中新建一个XML文件,取名为proxool.xml
在proxool.xml中的内容如下:

    <?xml version="1.0" encoding="UTF-8"?> 
    <!-- 
    the proxool configuration can be embedded within your own application's. Anything outside the "proxool"  
     
    tag is ignored. 
    --> 
    <something-else-entirely> 
         <proxool> 
                    <alias>smms</alias> <!--数据源的别名--> 
                    <driver-url>jdbc:mysql://127.0.0.1:3306/smms</driver-url><!--url连接串--> 
                    <driver-class>com.mysql.jdbc.Driver</driver-class><!--驱动类--> 
                    <driver-properties> 
                            <property name="user" value="root" /><!--用户名--> 
                            <property name="password" value="root" /><!--密码--> 
                    </driver-properties>          
                    <!--最大连接数(默认 5个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由 
     
    maximum-new-connections决定--> 
                    <maximum-connection-count>100</maximum-connection-count> 
                    <!--最小连接数(默认2个)--> 
                    <minimum-connection-count>10</minimum-connection-count> 
                    <!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁  默 
     
    认30秒--> 
                    <house-keeping-sleep-time>90000</house-keeping-sleep-time> 
                    <!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受- 
     
    -> 
                    <maximum-new-connections>10</maximum-new-connections> 
                    <!--最少保持的空闲连接数(默认2个)--> 
                    <prototype-count>5</prototype-count> 
                    <!--在使用之前测试--> 
                    <test-before-use>true</test-before-use> 
                    <!--用于保持连接的测试语句  --> 
                    <house-keeping-test-sql>select id from t_sysadmin</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>      
    t;/servlet> 

数据库操作类如下:

    package cn.edu.hbcit.smms.dao.databasedao; 
     
    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.PreparedStatement; 
    import java.sql.ResultSet; 
    import java.sql.SQLException; 
     
    import org.apache.log4j.Logger; 
     
    import org.logicalcobwebs.proxool.ProxoolException;        
    import org.logicalcobwebs.proxool.ProxoolFacade;        
    import org.logicalcobwebs.proxool.admin.SnapshotIF; 
    /**
     * 数据库操作类
     * @author lw
     *
     */ 
    public class DBConn { 
        private static Connection conn; 
        private static ResultSet rs; 
        private static PreparedStatement ps; 
        private static String driverClass = "org.logicalcobwebs.proxool.ProxoolDriver";//proxool驱动类  
        //private static String url = "jdbc:mysql://localhost:3306/bbs?user=root&password=123";  
        private static int activeCount = 0; //活动连接数  
        protected final Logger log = Logger.getLogger(DBConn.class.getName()); 
         
        /**
         * 获取数据库连接
         * @return Connection
         */ 
        public Connection getConn() { 
            try { 
                Class.forName(driverClass);  
                conn = DriverManager.getConnection("proxool.smms"); //此处的smms是在proxool.xml中配置的连接池别名  
                this.showSnapshotInfo(); //查看连接池信息  
            } catch (Exception e) { 
                log.error(e.getMessage()); 
                log.debug("数据库连接错误!"); 
                //System.out.println(e.getMessage());  
                //System.out.println("数据库连接错误!");  
            } 
            return conn; 
        } 
         
        /**     
         * 释放连接     
         * freeConnection     
         * @param conn     
         */ 
        public void freeConnection(Connection conn){ 
            if(conn!=null){ 
                try { 
                    conn.close(); 
                } catch (SQLException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
         
     
        /**
         * 获取连接池中的连接信息
         */ 
        private void showSnapshotInfo(){ 
            try{        
                SnapshotIF snapshot = ProxoolFacade.getSnapshot("smms", true);        
                int curActiveCount=snapshot.getActiveConnectionCount();//获得活动连接数         
                int availableCount=snapshot.getAvailableConnectionCount();//获得可得到的连接数         
                int maxCount=snapshot.getMaximumConnectionCount() ;//获得总连接数         
                if(curActiveCount!=activeCount)//当活动连接数变化时输出的信息         
                { 
                    log.debug("活动连接数:"+curActiveCount+"(active);可得到的连接数:"+availableCount+"(available);总连接数:"+maxCount+"(max)"); 
                 //System.out.println("活动连接数:"+curActiveCount+"(active);可得到的连接数:"+availableCount+"(available);总连接数:"+maxCount+"(max)");                      
                 activeCount=curActiveCount;        
                } 
            }catch(ProxoolException e){        
                e.printStackTrace();        
            }        
        }   
     
    } 
分享到:
评论

相关推荐

    proxool数据库连接池配置

    ### Proxool数据库连接池配置详解 #### 一、引言 Proxool是一个轻量级的Java数据库连接池管理工具,它可以帮助开发者更高效地管理和利用数据库连接资源。通过Proxool,可以显著减少数据库连接创建和关闭的开销,...

    连接池首先 proxool

    【标题】:“连接池技术...总之,Proxool作为一款轻量级的数据库连接池,它的易用性和灵活性使其在各种Java Web应用中得到了广泛的应用。了解并熟练掌握Proxool的配置和使用,对于提升应用的性能和稳定性具有重要意义。

    Proxool连接池配置

    Proxool作为一款轻量级的开源数据库连接池实现,它提供了高效的数据库连接管理和复用机制,旨在减少应用程序创建和销毁数据库连接的开销,从而提升性能。 ### Proxool连接池配置步骤详解 #### 步骤一:部署Proxool...

    proxool连接池.txt

    提供的部分Java代码展示了如何使用Proxool进行数据库连接管理: 1. **导入必要的包**: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql....

    proxool连接池

    Proxool是一个轻量级的Java数据库连接池实现,它能够管理多个数据源,并为每个数据源维护一个连接池。通过Proxool,应用程序可以高效地复用数据库连接,减少创建和销毁连接的时间开销,从而提高系统性能。 #### 二...

    proxool配置说明

    Proxool是一个开源的Java数据库连接池管理器,由Joe Doherty开发并维护。它能够帮助应用程序有效地管理和复用数据库连接,减少频繁创建和销毁数据库连接所带来的性能开销,从而提高整体的应用性能。Proxool不仅功能...

    proxool部署说明.pdf

    ### Proxool数据库连接池部署知识点详解 #### 一、Proxool简介及核心功能 Proxool是一个轻量级的开源数据库连接池组件,专为Java应用程序设计,旨在优化数据库连接管理,提高应用程序的性能和响应速度。通过提供一...

    Spring+proxool+hibernate+struts2+aop整合的完整的简单项目

    2. **Proxool连接池**:Proxool是一个轻量级数据库连接池,它能有效地管理和复用数据库连接,提高系统性能,避免因频繁创建和销毁连接导致的资源浪费。在Spring中,通过配置Proxool的属性,如最大连接数、超时时间等...

    spring3+hibernate3+proxool+jstl+oracle整合示例代码

    3. **Proxool 0.9.1**:Proxool是基于Apache的数据库连接池,它为应用提供了一个高效的数据库连接管理策略,降低了数据库连接的创建和销毁开销。在Spring配置中,可以通过定义Proxool的数据源,实现对数据库连接的...

    Struts2+ibatis资料大全

    Proxool是数据库连接池的实现,它提高了数据库连接的效率和并发性能。在Struts2+ibatis的项目中,Proxool可以用来管理和复用数据库连接,减少创建和关闭连接的开销。通过配置Proxool,可以设定连接池的大小、超时...

    java学习路线图

    - **C3P0、proxool连接池等:** 介绍几种常用的数据库连接池实现。 **2.5 ORM对象关系映射基本思想** - **使用反射机制和ORM思想封装JDBC工具:** ORM是将对象模型映射到关系数据库的技术,这里会介绍如何使用反射...

    基于全注解方式的SSH基础框架

    - **proxool.properties**: 数据库连接池配置文件,定义了连接池的大小和其他参数。 - **applicationContext.xml**: Spring的核心配置文件,用于定义Bean和依赖注入关系。 ##### Web.xml详解 `web.xml`是项目的...

    SSH所用JAR包详解.docx

    - `c3p0-0.9.1.jar`:C3P0数据库连接池,可选替代方案。 - `connector.jar`:JCA API,与特定应用服务器的集成。 - `jboss-system.jar`:与JBoss应用服务器相关的库。 - `jacc-1_0-fr.jar`:Java Authorization ...

    SSH简单流程说明第一版 1

    确保Proxool或Hibernate配置文件(hibernate.cfg.xml)正确设置了数据库连接池和数据库连接信息。 **第二步:创建项目结构** 创建模块并划分包结构,如Action、Model、Dao和服务(Service)包。Action包用于放置...

    struts2 hibernate spring集成

    4. **数据库连接池配置**: - 导入必要的JAR包:`proxool-0.9.1.jar`, `proxool-cglib.jar`, `mysql-connector-java-5.0.8-bin.jar`。 - 编写`src/jdbc.properties`文件,定义数据库连接参数,如: ```properties...

Global site tag (gtag.js) - Google Analytics