常用的数据源连接池

1.DBCP

  1. 需要的依赖包
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
  2. 数据源实现类在spring中的配置
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <property name="initialSize" value="5" />
        <property name="maxActive" value="10" />
    </bean>

     

2.C3P0

  1. 需要的依赖包
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>

     

  2. 数据源实现类在spring中的配置
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="user" value="${username}" />
        <property name="password" value="${password}" />
        <property name="initialPoolSize" value="5" />
    </bean>

 3.Proxool(据说比DBCP和C3P0的性能都要好)

Proxool与其他的数据源连接池有点不一样,它不但会创建一个甚至多个连接池,而且还为每个连接池定义了资源定位(url),使用Proxool提供的连接驱动来实现与连接池的连接。因此,在配置Proxool连接池时,需要两步:1.创建连接池;2.使用一般的jdbc获取连接。

3.1 Proxool的xml配置文件

在创建连接池前,都需要对Proxool进行一些配置,下面是配置样例:

<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
    <proxool>
        <alias>DBPool</alias><!--该连接池的别名,那么该连接池的资源定位(URL)就是proxool.DBPool-->
        <driver-url>jdbc:mysql://192.168.2.108:3306/lucky_wheel_test</driver-url><!-- 设定连接数据库的url -->
        <driver-class>com.mysql.jdbc.Driver</driver-class><!-- 设定所连接数据库使用的驱动 -->    
        <driver-properties><!-- 设定连接数据库的参数 -->                            
            <property name="user" value="test" /><!-- 设定登陆用户 -->                
            <property name="password" value="test" /><!-- 设定登陆密码 -->
        </driver-properties>
        <house-keeping-sleep-time>60000</house-keeping-sleep-time><!-- 设定sleep time -->        
        <minimum-connection-count>1</minimum-connection-count><!-- 设定最少的连接数 -->        
        <maximum-connection-count>15</maximum-connection-count><!-- 设定最大的连接数 -->        
        <maximum-connection-lifetime>18000000</maximum-connection-lifetime><!-- 设定连接的最长存活时间 -->    
        <maximum-active-time>60000</maximum-active-time><!-- 设定从连接池拿出后最大的使用时间 -->
        <house-keeping-test-sql>select 1</house-keeping-test-sql><!-- 设定测试连接是否alive的命令 -->
        <verbose>true</verbose>
        <trace>false</trace>
    </proxool>
    <!--可配置多个连接池-->
    <proxool>
        ...
    </proxool>
</something-else-entirely>

3.2 加载Proxool配置文件创建连接池

3.2.1 硬代码方式加载Proxool配置文件

  static{
        InputStream is = ProxoolTestCase.class.getResourceAsStream("/test/proxool.xml");
        Reader reader = new InputStreamReader(is);
        try {
            JAXPConfigurator.configure(reader, false);
        } catch (ProxoolException ex) {
            logger.debug("", ex);
        }
    }

3.2.2 servlet中加载Proxool配置文件

    <!--加载proxool配置文件创建proxool连接池-->
    <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>
    <!--Admin servlet用于监测proxool连接池信息-->
    <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>/admin</url-pattern>  
    </servlet-mapping>

3.3 普通的Jdbc方式获取连接

3.3.1 硬代码方式获取连接

        Connection connection = null;
        try {
            Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
            connection = DriverManager.getConnection("proxool.DBPool");
        } catch (Exception ex) {
        }

3.3.2 spring方式配置数据源

  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/>
        <property name="url" value="proxool.DBPool"/>
    </bean>

posted on 2012-07-10 23:47 TimLeung 阅读(...) 评论(...) 编辑 收藏

导航