`
zjqzxjw
  • 浏览: 27374 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

用apache的dbcp来建立数据库连接池

阅读更多
数据库连接池的好处是不言而喻的,现在大部分的application server都提供自己的数据库连接池方案,此时,只要按照application server的文档说明,正确配置,即可在应用中享受到数据库连接池的好处。

       但是,有些时候,我们的应用是个独立的java application,并不是普通的WEB/J2EE应用,而且是单独运行的,不要什么application server的配合,这种情况下,我们就需要建立自己的数据库连接池方案了。这里,介绍如何利用apache的dbcp来建立为民自己的数据库连接池。

1。首先,下载必须的jar包
dbcp包,目前版本是1.2.1:http://jakarta.apache.org/commons/dbcp/ ],在附件已有

pool包,目前版本是1.3:http://jakarta.apache.org/commons/pool/在附件已有


       如果下载的pool包是1.2的版本,还要下载common-collections包:http://jakarta.apache.org/commons/collections/
在建立我们自己的数据库连接池时,可以使用xml文件来传入需要的参数,这里只使用hard code的方式来简单介绍,所有需要我们自己写的代码很少,只要建立一个文件如下:
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;

import java.sql.SQLException;
import java.sql.Connection;
import java.util.Properties;

public class ConnectionSource {
    private static BasicDataSource dataSource = null;

    public ConnectionSource() {
    }

    public static void init() {

        if (dataSource != null) {
            try {
                dataSource.close();
            } catch (Exception e) {
                //
            }
            dataSource = null;
        }

        try {
            Properties p = new Properties();
            p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver");
            p.setProperty("url", "jdbc:oracle:thin:@192.168.0.1:1521:testDB");
            p.setProperty("password", "scott");
            p.setProperty("username", "tiger");
            p.setProperty("maxActive", "30");
            p.setProperty("maxIdle", "10");
            p.setProperty("maxWait", "1000");
            p.setProperty("removeAbandoned", "false");
            p.setProperty("removeAbandonedTimeout", "120");
            p.setProperty("testOnBorrow", "true");
            p.setProperty("logAbandoned", "true");

            dataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(p);

        } catch (Exception e) {
            //
        }
    }


    public static synchronized Connection getConnection() throws  SQLException {
        if (dataSource == null) {
            init();
        }
        Connection conn = null;
        if (dataSource != null) {
            conn = dataSource.getConnection();
        }
        return conn;
    }
}

       接下来,在我们的应用中,只要简单地使用ConnectionSource.getConnection()就可以取得连接池中的数据库连接,享受数据库连接带给我们的好处了。当我们使用完取得的数据库连接后,只要简单地使用connection.close()就可把此连接返回到连接池中,至于为什么不是直接关闭此连接,而是返回给连接池,这是因为dbcp使用委派模型来实现Connection接口了。

      在使用Properties来创建BasicDataSource时,有很多参数可以设置,比较重要的还有:

     testOnBorrow、testOnReturn、testWhileIdle,他们的意思是当是取得连接、返回连接或连接空闲时是否进行有效性验证(即是否还和数据库连通的),默认都为false。所以当数据库连接因为某种原因断掉后,再从连接池中取得的连接,实际上可能是无效的连接了,所以,为了确保取得的连接是有效的, 可以把把这些属性设为true。当进行校验时,需要另一个参数:validationQuery,对oracle来说,可以是:SELECT COUNT(*) FROM DUAL,实际上就是个简单的SQL语句,验证时,就是把这个SQL语句在数据库上跑一下而已,如果连接正常的,当然就有结果返回了。

      还有2个参数:timeBetweenEvictionRunsMillis 和 minEvictableIdleTimeMillis, 他们两个配合,可以持续更新连接池中的连接对象,当timeBetweenEvictionRunsMillis 大于0时,每过timeBetweenEvictionRunsMillis 时间,就会启动一个线程,校验连接池中闲置时间超过minEvictableIdleTimeMillis的连接对象。

还有其他的一些参数,可以参考源代码。
分享到:
评论
1 楼 shzgsi 2008-09-12  
有参考价值,谢谢!

相关推荐

    用apache的dbcp建立数据库连接池

    了解并掌握这些知识点,将有助于你在实际项目中有效地使用Apache DBCP来构建和管理数据库连接池,提升应用的性能和可靠性。同时,不断关注和学习新的数据库连接池技术,可以帮助你适应不断变化的开发需求和环境。

    Apache-DBCP数据库连接池

    Apache DBCP(Database ...总结来说,Apache DBCP是一个实用且基础的数据库连接池实现,适合对性能要求不那么高,但需要进行数据库连接管理的Java应用。通过合理配置和使用,可以有效地提升应用的效率和稳定性。

    Apache Commons DBCP 软件实现数据库连接池

    Apache Commons DBCP 软件实现数据库连接池

    使用DBCP创建MySQL数据库连接池

    DBCP(Database Connection Pool)是Apache Commons的一个子项目,提供了数据库连接池的实现。本篇文章将详细介绍如何使用DBCP来创建一个针对MySQL数据库的连接池。 首先,我们需要了解DBCP的基本概念。DBCP全称为...

    DBCP数据库连接池jar包.zip

    "DBCP数据库连接池jar包.zip"这个压缩包包含以下文件: 1. `commons-dbcp2-2.6.0-bin`:这是DBCP2的二进制发行版,包含了编译后的jar文件,可以直接在项目中引用,用于实现数据库连接池的功能。 2. `commons-pool2-...

    DBCP数据库连接池

    1. **添加依赖**:在项目中引入DBCP的JAR包,如描述中所提到的"DBCP数据库连接池的完整jar包"。 2. **配置连接池**:创建一个配置文件,设置数据库URL、用户名、密码、驱动类名以及DBCP特定的参数。 3. **初始化...

    dbcp.rar数据库连接池工具包

    DBCP(Database Connection Pool)是Apache软件基金会下的Commons DBCP项目提供的一个开源数据库连接池实现。它基于Jakarta-DBCP,具有轻量级、易用性好、稳定且性能优秀的特点。DBCP提供了两种主要的连接池实现:...

    dbcp数据库连接池

    **数据库连接池(DBCP)** 是一个在Java应用程序中管理数据库连接的工具,它能够有效地提高数据库操作的性能和效率。...理解和掌握DBCP的使用和配置,对于理解数据库连接池的工作原理和提升应用性能具有重要意义。

    dbcp数据库连接池使用jar包

    DBCP数据库连接池的引入,使得应用程序可以预先创建并维护一定数量的数据库连接,当需要与数据库通信时,从连接池中获取一个已存在的连接,用完后不是立即关闭,而是将其归还回连接池,供后续使用。这样减少了频繁的...

    DBCP配置数据库连接池

    DBCP(Database Connection Pool)是Apache软件基金会的Commons项目中的一个组件,它提供了一个数据库连接池服务。数据库连接池在应用服务器启动时创建一定数量的数据库连接,并将这些连接放入池中,当应用程序需要...

    DBCP数据库连接池包下载

    1. **连接池管理**:DBCP维护了一个数据库连接池,当应用程序需要访问数据库时,可以从池中获取一个已建立的连接,使用完毕后归还给池而不是直接关闭。这样减少了创建和销毁连接的时间,提高了系统的响应速度。 2. ...

    DBCP(数据库连接池)

    DBCP,全称为Jakarta-Commons-DBCP,是一个基于Apache组织开发的开源数据库连接池组件。在Java应用程序中,DBCP可以帮助管理和优化数据库连接,提高应用性能和资源利用率。数据库连接池在多线程环境下尤其重要,因为...

    dbcp数据库连接池jar包

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

    dbcp数据库连接池用到的jar包

    总之,DBCP是一个强大的数据库连接池实现,它通过Apache Commons Collections和Pool库的支持,为Java应用程序提供了高效的数据库连接管理。在Spring框架中整合DBCP,可以简化数据库连接的生命周期管理,提升应用性能...

    DBCP数据库连接池1.2jar包

    DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要3个包:commons-dbcp.jar,commons-pool.jar,commons-collections.jar由于建立...

    利用dbcp实现数据库连接池

    DBCP(Jakarta DBCP)是Apache软件基金会提供的一个开源数据库连接池实现,它基于Jakarta Commons Pool对象池机制,提供了一种有效管理数据库连接的方式。 在Java应用程序中,频繁地创建和关闭数据库连接会消耗大量...

    数据库连接池DBCP,jar包

    数据库连接池(DBCP)是Java应用中用于管理数据库连接的一种技术,它允许应用程序重复使用已建立的数据库连接,而不是每次需要访问数据库时都创建新的连接。这样可以显著提高应用程序的性能,减少系统资源的消耗,并...

    apache数据库连接池JAR包

    总的来说,Apache Commons DBCP是一个强大的数据库连接池工具,它简化了Java应用对数据库连接的管理,提升了系统的性能和稳定性。结合Commons Pool,它为开发者提供了更高效的资源管理方案。在实际开发中,正确配置...

Global site tag (gtag.js) - Google Analytics