commons-dbcp jar包详解

JavaWeb 数据库连接池与DBUtils工具 看了要点赞哦!!!!!!! 数据库连接池 DBCP数据源 DBCP是数据库连接池(DataBase Connection Pool)的简称,是Apache组织下的开源连接池实现,也是Tomcat服务器使用的连接池组件。单独使用DBCP数据源时,需要在应用程序 中导入两个JAR包,具体如下。 1.commons-dbcp.jar包 commons-dbcp.jar包是DBCP数据源的实现包,包含所有操作数据库连接信息和数据库连接池初始化信息的方法,并实现了DataSource接口的... 阅读详情

本文原文:http://blog.sina.com.cn/s/blog_5ff02a9f01013u65.html

1.dbcp简介
网络程序的设计,很多都涉及到和关系型数据库的交互操作,一般的操作方式都是使用的时候创建到数据库的连
接,然后进行各种操作,这种简单的操作方式带来的问题便是数据库的频繁的打开和关闭,以及transtion的执
行,这是一种很耗费时间和资源的操作。于是数据库缓冲池dbcp就出现了,这个包是从pool包发展出来的。
2.dbcp实现的基本流程
  1.创建enericobjectpool实例
  genericobjectpool pool = new genericobjectpool(null);
  2.创建poolableconnectionfactory
  drivermanagerconnectionfactory cf =
    new drivermanagerconnectionfactory(
    "jdbc:mysql://host/db", "username", "password");

poolableconnectionfactory pcf =
    new poolableconnectionfactory(
    cf, pool, null, "select * from mysql.db", false, true);
  3.创建和注册poolingdriver
  new poolingdriver().registerpool("mypool", pool);
  到此为止,数据库缓冲池就创建完毕了.
3.datasource的实现过程
datasource在众多的jsp容器和应用程序中都已经实现,在容器或者应用服务器启动的时候,他会读取相关的
配置文件,自动完成datasource的创建工作,我们一般只需要在服务器的配置文件中指定就可以了,这里贴出
实现的过程,便于大家理解它内部的实现机制,便于编程参考。
import javax.sql.datasource;
import java.sql.connection;
import java.sql.statement;
import java.sql.resultset;
import java.sql.sqlexception;
import org.apache.commons.dbcp.basicdatasource;
public class basicdatasourceexample {

    public static void main(string[] args) {
        // 创建basicdatasource
        system.out.println("setting up data source.");
        datasource datasource = setupdatasource(args[0]);
        system.out.println("done.");

 //创建jdbc数据源
        connection conn = null;
        statement stmt = null;
        resultset rset = null;

               try {
                       system.out.println("creating connection.");
                       conn = datasource.getconnection();
                       system.out.println("creating statement.");
                       stmt = conn.createstatement();
                       system.out.println("executing statement.");
                       rset = stmt.executequery(args[1]);
                       system.out.println("results:");
                       int numcols = rset.getmetadata().getcolumncount();
                       while(rset.next()) {
                               for(int i=1;i<=numcols;i++) {
                                       system.out.print("\t" + rset.getstring(i));
                               }
                               system.out.println("");
                       }
               } catch(sqlexception e) {
                       e.printstacktrace();
               } finally {
                       try { rset.close(); } catch(exception e) { }
                       try { stmt.close(); } catch(exception e) { }
                       try { conn.close(); } catch(exception e) { }
               }
       }
       //创建数据源
       public static datasource setupdatasource(string connecturi) {
               basicdatasource ds = new basicdatasource();
               ds.setdriverclassname("oracle.jdbc.driver.oracledriver");
               ds.setusername("scott");
               ds.setpassword("tiger");
               ds.seturl(connecturi);
               return ds;
       }
       //提示数据源状态
       public static void printdatasourcestats(datasource ds) throws sqlexception {
               basicdatasource bds = (basicdatasource) ds;
system.out.println("numactive: " + bds.getnumactive());
               system.out.println("numidle: " + bds.getnumidle());
       }
       //关闭数据源
       public static void shutdowndatasource(datasource ds) throws sqlexception {
               basicdatasource bds = (basicdatasource) ds;
               bds.close();
       }
}
例子比较简单,不再多说了~
4.tomcat中dbcp的配置
这里是以mysql作为数据库进行说明。
使用dbcp,在 server.xml 中需要设置相关的连接及 dbcp 的参数值.
  <context path="/mysqltest" docbase="mysqltest"
                                       debug="5" reloadable="true" crosscontext="true">
 
         <logger classname="org.apache.catalina.logger.filelogger"
                                 prefix="localhost_mysqltest_log." suffix=".txt"
                                 timestamp="true"/>
                               
       <resource name="jdbc/testdb"   auth="container" type="javax.sql.datasource"/>
     
       <resourceparams name="jdbc/testdb">
               <parameter>
                       <name>factory</name>
                       <value>org.apache.commons.dbcp.basicdatasourcefactory</value>
               </parameter>
               <parameter>
                       <name>maxactive</name>
                       <value>100</value>
               </parameter>
               <parameter>
                       <name>maxidle</name>
                       <value>30</value>
               </parameter>
               <parameter>
                       <name>maxwait</name>
                       <value>10000</value>
               </parameter>
               <parameter>
                       <name>username</name>
                       <value>root</value>
               </parameter>
               <parameter>
                       <name>password</name>
                       <value>admin</value>
               </parameter>
               <parameter>
                       <name>driverclassname</name>
                       <value>org.gjt.mm.mysql.driver</value>
               </parameter>
               <parameter>
                       <name>url</name>
                       <value>jdbc:mysql://localhost:3306/javatest?autoreconnect=true</value>
               </parameter>
           </resourceparams>
</context>
我们可以看到他使用的 dbcp factory 就是 org.apache.commons.dbcp.basicdatasourcefactory
5.参数说明
*datasource:要连接的 datasource (通常我们不会定义在 server.xml)
*defaultautocommit:对于事务是否 autocommit, 默认值为 true
*defaultreadonly:对于数据库是否只能读取, 默认值为 false
*driverclassname:连接数据库所用的 jdbc driver class,
*maxactive:最大连接数据库连接数,设 0 为没有限制
*maxidle:最大等待连接中的数量,设 0 为没有限制
*maxwait:最大等待秒数, 单位为 ms, 超过时间会乬出错误信息
*password:登陆数据库所用的密码
*url:连接数据库的 url
*username:登陆数据库所用的帐号
*validationquery:验证连接是否成功, sql select 指令至少要返回一行
*removeabandoned:是否自我中断, 默认是 false
*removeabandonedtimeout:几秒后会自我中断, removeabandoned 必须为 true
*logabandoned:是否记录中断事件, 默认为 false
6.总结
dbcp一般应用在数据库的使用非常频繁的情况下使用,它可以处理大量的数据库的连接请求,不失为做大型站
点的首选数据库配置
7.参考资料
*jakarta commons
http://jakarta.apache.org/commons/
*jakarta commons-dbcp
http://jakarta.apache.org/commons/dbcp
*jakarta commons-dbcp api
http://jakarta.apache.org/commons/dbcp/apidocs/index.html
*cvs资料
http://cvs.apache.org/viewcvs.cgi/jakarta-commons/dbcp/doc/

commons-dbcp升级到commons-dbcp2兼容性问题 首先,数据库连接池一些参数理解:maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。MaxActive,连接池的最大数据库连接数。设为0表示无限制。maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。dbcp2中没有maxActive、maxWait两个变量,转而是maxTotal、maxW... 阅读详情

相关推荐

掌握DBCP连接池:实践指南与核心依赖

数据库连接池(Connection Pool)是用于实现数据库连接管理的中间件,它能够提高应用程序对数据库连接的使用效率。在众多开源连接池实现中,DBCP(Database Connection Pool)作为Apache基金会提供的一个高效、可扩展的数据库连接池库,备受IT专业人士的关注。DBCP连接池通过预设和维护一定数量的数据库连接,为应用提供稳定、快速的数据访问能力,有效避免了频繁的数据库连接和关闭操作所带来的性能开销。

weixin_42602241的博客 914

java dbcp jar_commons-dbcp.jar

commons-dbcp.jar包是一款主流的数据库连接池之一(DBCP,c3p0,proxool),如果缺少了这个commons-dbcp.jar包,那将无法对数据库连接池进行正常使用,马上下载吧。基本简介主流数据库连接池之一(DBCP、c3p0、proxool),单独使用DBCP需要使用commons-dbpc.jar、commons-collections.jar、commons-pool....

weixin_42401137的博客 1059

commons-dbcp.jar.rar

commons-dbcp.jar dbcp数据库连接池驱动,包括pool、logging两个依赖

【无标题】

day12 数据库链接池与DBUtil工具 一、数据库连接池 在JDBC编程中,每次创建和断开Connection对象都会消耗一定的时间和IO资源。这是因为Java程序与数据库之间建立连接时,数据库端要验证用户名和密码,并且要为这个连接分配资源,JAVA程序则要把代表连接的 java.sql.Connection对象加载到内存中,所以建立数据连接的开销很大,尤其是在大量的并发访问时。假如某网站一天的访问量是10万,那么该网站的服务器就需要创建,断开连接10万次,频繁地创建,断开数据库连接势必会影响数据库的访

m0_55680332的博客 660

commons-dbcp jar包

commons-dbcp spring开发的必备jar包 ,spring jar

dbcp数据库连接池所需jar包

commons-dbcp2-2.9.0.jar;commons-logging-1.1.1-1.0.0.jar;commons-pool2-2.11.1.jar

DBCP数据源jar包下载与IDEA配置以及NoClassDefFoundError问题解决

一、DBCP的下载 官网下载:下载二进制压缩包 commons-dbcp.jar http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi commons-pool.jar https://commons.apache.org/proper/commons-pool/download_pool.cgi 下载完成后,选择如图红框所示的两个 jar 包导入 IDEA项目中 二、IDEA项目导入 打开 lib 目录,右键 mysql 的

AI 全栈工程师修炼中 5930

UE5 使用Slate制作对话窗口

使用Slate制作对话框窗口并获取对话框结果,非UMG

qq_25521145的博客 3189

DBCP连接池所用到的两个jar包下载地址

DBCP连接池所用到的两个jar包下载地址 commons-dbcp.jar: http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi commons-pool.jar: http://commons.apache.org/proper/commons-pool/download_pool.cgi

ximexi的博客 3199

使用 Python 获取实时港股行情数据

在本教程中,你将学习如何通过 Infoway API 获取港股实时行情数据,具体以腾讯控股(0700.HK)和汇丰控股(0005.HK)为例,使用 Python 进行数据请求和解析。

kk_stoper的博客 1516

Unity开发HoloLens应用:从打包到部署的完整指南

本文为Unity开发者提供了将应用部署到HoloLens设备的完整实战指南。详细讲解了从环境准备、Unity项目配置、生成Visual Studio工程,到最终构建APPX安装包并通过设备门户或Visual Studio进行部署的全流程,帮助开发者高效完成混合现实应用的打包与安装。

red88的博客 1018

java DBCP 线程池

使用Apache提供的commons-DBCP来实现数据库连接池。 1.引入jar包 引入三个与连接池相关的jar包: commons-pool.jar,commons-logging.jar,commons-dbcp.jar。 2.代码实例 import java.sql.Connection; import java.sql.DriverManager; ...

万里归来少年心 650

AD9361 LVDS数据接口时序解析与FPGA实现

本文详细解析了AD9361 LVDS数据接口的时序特性与FPGA实现方法,重点探讨了DATA_CLK、Rx_FRAME等关键信号的时序关系及数据拼接技巧。通过Verilog代码示例和调试经验分享,帮助开发者解决跨时钟域处理、IQ数据重组等常见问题,提升射频收发系统的稳定性与性能。

weixin_29186249的博客 128

commons dbcp.jar有什么用

主流数据库连接池之一(DBCP、c3p0、proxool) 单独使用DBCP需要使用commons-dbpc.jar、commons-collections.jar、commons-pool.jar三个包, 都可以在Apache组织的网站上下到(commons.apache.org)。 ...

懒人的博客 640

Win10更新后黑屏只剩鼠标?火绒误杀explorer.exe的5种自救方案(附详细步骤)

本文详细介绍了Win10更新后出现黑屏只剩鼠标的5种专业修复方案,重点解决火绒误杀explorer.exe的问题。从基础的任务管理器操作到安全模式下的系统修复,再到注册表编辑和系统还原,提供了全面的解决方案,帮助用户快速恢复系统正常运行。

weixin_29306571的博客 637

【RT-DETR有效改进】计算训练好权重文件对应的FPS、推理每张图片的平均时间(科研必备)

本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量化的效果(模型大小),对于以提高精度为目的的读者本文也能够帮助大家展示出现阶段的模型速度指标。所以本文的内容是十分有用的机制,对于大家发表论文来说,下面的图片为运行后的效果可以看到,该有的指标均已打印(本文内容为我独家创新,全网无第二份)下面是效果图和文

Snu77的博客 3628

jdbc数据连接池dbcp要导入的jar包

jdbc数据连接池dbcp要导入的jar包 只用导入commons-dbcp-x.y.z.jarcommons-pool-a.b.jar

weixin_33816300的博客 1968

Qt Android MySql 数据库驱动编译(详细图解步骤)

第一步.先介绍下环境搭建: Qt 版本 5.12.11 下载链接 https://download.qt.io/archive/qt/5.12/5.12.11/qt-opensource-linux-x64-5.12.11.run Ubuntu 18.04.6 LTS 下载链接 JDK版本 1.8.0_191 下载链接https://www.oracle.com/java/technologies/downloads/ Android Studio版本 ...

h a 6 6 6 c k 为 你解决复杂难题! 3381

Mybatis与Spring整合|DBCP数据源所需JAR包

需要准备的是DBCP和连接池的JAR包: 分别是: commons-dbcp2-2.7.0.jar:下载网址: http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi commons-pool2-2.7.0.jar:下载网址 https://commons.apache.org/proper/commons-pool/down...

qq_43604667的博客 973

knowhere | 第一课:项目导论与环境搭建

摘要 本课程是Knowhere项目的第一课,重点介绍项目整体架构和开发环境搭建。Knowhere定位为AI Agent的文档记忆基础设施,通过解析多格式文档并保留结构化信息(如章节层级、表格语义等),为Agent提供可导航的文档知识。项目采用Python monorepo结构,核心包括: apps/api:FastAPI服务,处理HTTP请求和流程调用 apps/worker:Celery服务,执行文档解析等耗时任务 packages/shared-python:共享基础设施层 课程明确了各层职责边界,并推

weixin_43674738的博客 152

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

DBCP

DBCP DBCP(DataBase connection pool)数据库连接池是 apache 上的一个Java连接池项目。DBCP通过连接池预先同数据库建立一些连接放在内存中(即连接池中),应用程序需要建立数据库连接时直接到从接池中申请一个连接使用,用完后由连接池回收该连接,从而达到连接复用,减少资源消耗的目的。 DBCP所依赖的jar包(以下例子基于如下jar包版本) commons-dbcp2-2.1.1.jar commons-logging-1.2.jar commons-pool

枣知稻ZZD的博客 673

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

commons-dbcp jar包依赖引起的异常

项目解析xml文件报错(如发布webservice是解析不了xml)   程序报错: java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.setDocumentIn...

chella的专栏 1205

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

下载commons-dbcp-1.3.jar包

如何不花c币下载commons-dbcp-1.3.jar

strlinkk的博客 595

common-dbcp.jar和commons-pool.jar引用和bug

今天使用springmvc搭建工程时用到了common-dbcp .jar,(dbcp:DataBaseconnection pool数据库连接池),使用dbcp时需要用到common-pool.jar。于是我从官网上下载了都基于jdk1.6的jar包,版本分别是DBCP 1.4 for JDBC 4 和Apache Commons Pool 2.4.1,以下是官网截图,显示各自都基于jdk1.

lingkai126的专栏 3475

java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解决方法

 用Myeclipse开发struts时,配置struts-config中的data-sources,出现java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解决方法struts-config.xml文件中的data-sources是这样配置的    data-sources>       

javafc的专栏 1万+
上一篇: Access restriction: The type BASE64Decoder is not accessible due to restriction on required library
下一篇: 多线程中this、Thread.currentThread()和this.currentThread()的区别
congmingPIG_htt
博客等级 码龄11年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值