`
YOUNG918
  • 浏览: 188762 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

几种开源数据库连接池的使用 --转载

阅读更多

转载:  http://www.blogjava.net/fantasyginge/

在项目中尝试使用了几种开源的数据库连接池实现。一种是dbcp,一种是c3p0,还有一种是proxool,这几种数据库连接池都可以很容易的在Spring配置起来。性能总体上上感觉dbcp为最优,因为稳定性和并发性都是我的项目需要的。
     项目中经过反复测试,如果web server和数据库server不是同一个机器的话,在断网时间比较短的时间内三种数据库连接池都能较好的重连,但是在断网时间超过8个钟头proxool就不能恢复工作了。但是dbcp却能很快的重新连接。实际生产环境中稳定性和总体性能是最重要的,都需要做相应的测试才能放心的让系统上生产线。


这里给出项目中数据库连接池配置:

dbcp的jndi:

1 < bean id ="dataSource"
2          class ="org.springframework.jndi.JndiObjectFactoryBean" >
3          < property name ="jndiName" >
4          < value > java:comp/env/jdbc/mysql </ value >
5          </ property >
6          </ bean >


proxool(proxool-0.9.0RC1)的配置:

< bean id ="MySqlDataSource"
   class
="org.logicalcobwebs.proxool.ProxoolDataSource"
   lazy-init
="false" >
  
< property name ="driver" >
   
< value > com.mysql.jdbc.Driver </ value >
  
</ property >
  
< property name ="driverUrl" >
   
< value > jdbc:mysql://ip:3306/dbname?useUnicode=true &amp; characterEncoding=utf8 &amp; autoReconnect=true </ value >
  
</ property >
  
< property name ="user" >
   
< value > user </ value >
  
</ property >
  
< property name ="password" >
   
< value > password </ value >
  
</ property >
  
< property name ="maximumConnectionCount" >
   
< value > 500 </ value >
  
</ property >
  
< property name ="houseKeepingSleepTime" >
   
< value > 15000 </ value >
  
</ property >
  
< property name ="houseKeepingTestSql" >
   
< value > select CURRENT_DATE </ value >
  
</ property >
  
< property name ="testBeforeUse" >
   
< value > true </ value >
  
</ property >
  
< property name ="alias" >
   
< value > mysqlProxoolDataSource </ value >
  
</ property >
  
<!--
   <property name="maximumActiveTime">
    <value>10000</value>
   </property>
  
-->
  
< property name ="simultaneousBuildThrottle" >
   
< value > 1000 </ value >
  
</ property >
  
< property name ="trace" >
   
< value > false </ value >
  
</ property >
</ bean >




建议使用DBCP,配置在tomcat中,然后在spring中使用jndi的形式获取。


c3p0(c3p0-0.9.0):

1 < bean id ="dataSource"       class ="com.mchange.v2.c3p0.ComboPooledDataSource"
2          destroy-method ="close" >
3          < property name ="driverClass" >
4          < value > com.mysql.jdbc.Driver </ value >
5          </ property >
6          < property name ="jdbcUrl" >
7          < value > jdbc:mysql://192.168.0.225:3306/sendinmdb?useUnicode=true &amp; characterEncoding=utf8 &amp; autoReconnect=true </ value >
8          </ property >
9          < property name ="user" >
10          < value >******** </ value >
11          </ property >
12          < property name ="password" >
13          < value >******** </ value >
14          </ property >
15          < property name ="maxPoolSize" >
16          < value > 100 </ value >
17          </ property >
18          < property name ="maxIdleTime" >
19          < value > 50 </ value >
20          </ property >
21          < property name ="maxStatementsPerConnection" >
22          < value > 100 </ value >
23          </ property >
24          < property name ="numHelperThreads" >
25          < value > 1000 </ value >
26          </ property >
27          < property name ="idleConnectionTestPeriod" >
28          < value > 30 </ value >
29          </ property >
30          </ bean >




直接copy & paste到spring配置文件里就可以使用了。

配置一些额外的tomcat 的DBCP连接池参数,也可以更好的使用到类似proxool提供的功能,只是dbcp更加稳定而已。

tomcat/conf/context.xml中插入一个Resource元素:

< Resource name ="jdbc/mysql" auth ="Container" type ="javax.sql.DataSource"
maxActive
="1000" maxIdle ="30" maxWait ="10000"
username
="user" password ="password" driverClassName ="com.mysql.jdbc.Driver"
validationQuery
= "select current_date()"
testOnBorrow
= "true" testOnReturn = "false"    testWhileIdle = "true"
timeBetweenEvictionRunsMillis
= "15000" numTestsPerEvictionRun = "10" minEvictableIdleTimeMillis = "600000"
url
="jdbc:mysql://ip:3306/sendinmdb?useUnicode=true&amp;characterEncoding=utf8&amp;autoReconnect=true" />

解释一下以下这些参数的含义:
validationQuery = "select current_date()"
testOnBorrow = "true"
testOnReturn = "false"
testWhileIdle = "true"

当从池中获取一个Connection后使用 select current_date() 来测试该数据库连接的可用性,如果SQL语句返回结果则认为是一个有效的连接,否则将继续测试知道可以拿到有效的连接。当返回Connection给池的时候不进行验证,但是Connection空闲的时候就要进行认证。


timeBetweenEvictionRunsMillis = "15000"
DBCP 清空线程睡眠的间隙,如值为负数则不运行该线程

numTestsPerEvictionRun = "10"
清空线程每次验证的连接对象个数


minEvictableIdleTimeMillis = "600000"

Connection对象可以在池中空闲的最小时间,单位为毫秒

分享到:
评论

相关推荐

    几种数据库连接池详细配置

    本文将深入解析几种常用的数据库连接池——Apache DBCP、C3P0、Proxool、BoneCP的详细配置参数,帮助开发者更好地理解和应用这些技术。 ### Apache DBCP **dataSource**: 配置数据源,通常在应用服务器的配置文件...

    开源数据库连接池

    在这个压缩包“开源数据库连接池”中,我们找到了几个主流的Java数据库连接池实现,包括c3p0、DBCP等,以及与JDBC事务控制相关的PPT资料。以下将详细介绍这些内容。 首先,c3p0是一个开源的JDBC连接池,由Miquel ...

    web中常用数据库连接池

    在使用数据库连接池时,我们需要关注以下几点: 1. 配置参数:根据应用的实际情况调整连接池的配置,如初始连接数、最大连接数、空闲连接存活时间等,确保既能满足高峰期的需求,又不会造成资源浪费。 2. 连接回收...

    数据库连接池以及hibernate对各种连接池的整合

    以下是一些主要的开源数据库连接池及其特点: 1. **C3P0**:这是一个包含JDBC 3和JDBC 2扩展规范的开源连接池,它提供了一种实现DataSources对象的方式,可以方便地与Hibernate集成。 2. **Proxool**:它是一个...

    数据库连接池c3p0jar包

    总的来说,C3P0作为一款成熟的数据库连接池,对于Java开发者来说,是一个值得信赖的工具,可以帮助我们更有效地管理和使用数据库连接,提升应用程序的性能和可靠性。在实际项目中,根据具体需求合理配置C3P0,可以更...

    数据库连接池驱动包_数据库连接池驱动包_

    本压缩包包含了几个常见的数据库连接池驱动包,这些驱动包为开发者提供了便捷的方式来处理数据库连接,下面将详细阐述它们的功能和使用。 1. Druid(druid-1.1.10.jar): Druid 是阿里巴巴开源的一个强大、全面且...

    java项目开发实践经验之二:几种常见数据库连接池的使用比较(转)

    本篇文章将探讨几种常见的数据库连接池的使用比较,包括Proxool、DBCP、C3P0,并通过配置文件(如`proxool.xml`、`dbcp.xml`和`c3p0.xml`)来展示它们的配置细节。 首先,我们来看Proxool,它是一个轻量级的数据库...

    数据库连接池的应用与研究

    数据库连接池是一种管理数据库连接的技术,它在应用程序启动时预先创建一定数量的数据库连接,并将这些连接保存在一个“池”中。当应用程序需要与数据库交互时,不是每次请求都新建一个连接,而是从池中获取已存在的...

    mysql 数据库连接池

    数据库连接池是一种管理数据库连接的技术,通过预先创建并维护一定数量的数据库连接,为应用程序提供高效、可靠的数据库访问服务。它解决了频繁建立和关闭数据库连接所造成的性能损耗,同时也提升了系统的资源利用率...

    DBCP数据库连接池

    DBCP(Database Connection Pool)是由Apache软件基金会提供的一个开源的数据库连接池实现,它是Commons DBCP项目的一部分,依赖于Commons Pool库来管理连接对象。本篇文章将深入探讨DBCP的原理、配置与使用方法。 ...

    dbcp数据库连接池jar包

    综上所述,DBCP数据库连接池是Java Web开发中常用的一种数据库连接管理工具,通过合理的配置和使用,可以显著提高应用的性能和稳定性。在实际项目中,结合Spring等框架,可以更便捷地管理和使用数据库连接。确保正确...

    数据库连接池

    DBCP(Basic Database Connection Pool)是Apache组织提供的一个开源数据库连接池组件,它基于Jakarta-Commons项目,可以方便地集成到Spring等框架中。`DBCP数据源`是指DBCP提供的数据源服务,它是数据库连接池的...

    数据库连接池代码

    常见的Java数据库连接池实现有以下几种: 1. C3P0:开源的JDBC连接池,提供了强大的配置选项和异常处理机制。 2. DBCP (Apache Commons DBCP):Apache组织提供的基础连接池实现,基于Jakarta Pool框架。 3. ...

    基于数据库连接池的D A O模式在J 2 E E应用系统中的实现

    数据库连接池可以通过多种方式进行实现,包括但不限于手动构建连接池或使用现有的开源框架(如C3P0、DBCP等)。无论采用哪种方式,其核心都是为了达到以下目标: - 预先创建一定数量的数据库连接。 - 当应用程序...

    java 数据库连接池

    在Java中,常见的数据库连接池实现有以下几种: 1. **C3P0**:这是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0提供了比DBCP更强大的连接池功能,如连接测试、自动关闭...

    tomcat6.0数据库连接池驱动

    Apache Commons DBCP是Apache组织提供的一个开源数据库连接池组件,它基于Jakarta POI项目中的DBUtils,提供了基本的数据库连接池功能。而C3P0则是一个更高级的连接池实现,它提供了一些额外的功能,如自动检测失效...

    Tomcat6.0+MyEclipse6.0+mysql5.0数据库连接池配置!.pdf

    配置数据库连接池涉及到了几个关键的配置文件:Tomcat的`context.xml`和`server.xml`文件,以及Web应用的`web.xml`文件。数据库连接池的配置使得应用可以更高效地使用数据库连接,减少连接开销,提升系统的性能和...

    数据库连接池.docx

    目前存在多种数据库连接池解决方案,以下列举了几种常见的: 1. C3p0:这是一个较早的连接池实现,尽管现在使用较少,但其在早期对于数据库连接池的实现提供了参考。 2. DBCP (Database Connection Pool):由...

    poolman 数据库连接池

    **PoolMan数据库连接池**是Java环境中用于管理数据库连接的一种高效、可靠且可扩展的工具。连接池在软件设计中扮演着重要角色,特别是在高并发的Web应用中,通过复用已建立的数据库连接,避免了频繁创建和销毁连接...

Global site tag (gtag.js) - Google Analytics