jakarta commons-dbcp
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 的参数值.
factory org.apache.commons.dbcp.BasicDataSourceFactory maxActive 100 maxIdle 30 maxWait 10000 username root password admin driverClassName org.gjt.mm.mysql.Driver url jdbc:mysql://localhost:3306/javatest?autoReconnect=true 我们可以看到他使用的 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
分享到:
相关推荐
DBCP(DataBase Connection Pool)是 apache common上的一个 java 连接池项目,也是 tomcat 使用的连接池组件,依赖 于Jakarta commons-pool 对象池机制,DBCP可以直接的在应用程序中使用。 使用DBCP会用到commons-...
2. `commons-dbcp-1.2.jar`:这是DBCP的主要实现库,包含了数据库连接池的具体实现。它提供了一个数据源接口,允许应用程序通过获取和归还连接到池中来管理数据库连接。这个库还包含了一些实用工具类,用于初始化和...
这个项目的源代码压缩包名为"commons-dbcp-1.0-src.zip",其中包含了用于创建、管理和维护数据库连接池的全部源代码。Apache Commons DBCP 是基于Jakarta POI和Jakarta Pool项目开发的,旨在解决Java应用程序在处理...
这个版本是在2009年发布的,它基于Jakarta DBCP项目,并且是Apache Commons的一部分,提供了一套完善的数据库连接池解决方案。Apache Commons DBCP 主要用于提高应用程序的性能,因为它允许重复使用数据库连接,避免...
在描述中提到了两个具体的版本号:“commons-dbcp-1.2.2.jar”和“commons-pool-1.3.jar”。这两个版本是较旧的,可能不包含最新的性能优化和安全修复。通常建议使用较新的稳定版本以获得更好的兼容性和安全性。不过...
1. 添加依赖:在Java项目中,需要将`commons-dbcp-1.4.jar`作为依赖引入,通常是通过Maven或Gradle等构建工具完成。 2. 配置连接池:创建一个配置文件,定义数据库的相关参数,如URL、用户名、密码等,以及DBCP的...
Apache Commons DBCP是Apache软件基金会的Jakarta项目下的一个子项目,主要功能是提供数据库连接池服务。数据库连接池是一种在应用服务器启动时预创建一定数量的数据库连接,并将这些连接存储在一个池中,当多个用户...
jakarta-commons 相关依赖包,文件列表: commons-attributes-api.jar commons-attributes-compiler.jar commons-beanutils.jar commons-codec.jar commons-collections.jar commons-dbcp.jar commons-digester.jar ...
DBCP(DataBase Connection Pool)是 apache common上的一个 java 连接池项目,也是 tomcat 使用的连接池组件,依赖 于Jakarta commons-pool 对象池机制,DBCP可以直接的在应用程序中使用。 使用DBCP会用到commons-...
"commons-dbcp-1.2.1.zip" 是这个组件的一个版本包,包含了该版本的所有源代码和相关资源。 Apache Commons DBCP 1.2.1 版本提供了以下关键功能和特性: 1. **数据库连接池**:DBCP 提供了一个基于 Jakarta Pool ...
DBCP(Database Connection Pool)是Apache Jakarta项目中的一个子项目,它利用了commons-pool对象池机制来实现数据库连接的复用,从而减少创建和释放数据库连接时的开销。Tomcat,一个广泛使用的Java应用服务器,...
在 `commons-dbcp-1.2.2.jar` 文件中,包含了DBCP库的所有类和方法,用于在程序中集成和使用DBCP。开发者可以通过导入此jar文件,调用其中的类和方法来创建和管理数据库连接池。 然而,需要注意的是,`commons-dbcp...
1. **添加依赖:** 首先需要将`commons-dbcp-1.2.1.jar`和`commons-pool-current.jar`(这里可能是`commons-pool-x.x.x.jar`,具体版本取决于描述中的`current`所指)添加到项目的类路径中。如果是Maven项目,可以在...
Apache Commons DBCP(Database Connection Pool)是Apache软件基金会提供的一款开源数据库连接池组件,版本1.4是我们这里关注的重点。数据库连接池在Java应用程序中扮演着至关重要的角色,它提高了应用性能,优化了...
这里提到的几个jar包都是用于实现数据库连接池功能的库,分别是Apache的DBCP(Jakarta Commons DBCP)和C3P0。 1. **Apache Commons DBCP**: `commons-dbcp.jar` 是Apache Commons项目的一部分,提供了数据库连接...
Commons-DBCP 提供数据库连接池服务 DbUtils DbUtils 是一个 JDBC helper 类库,完成数据库任务的简单的资源清除代码. Digester Commons-Digester 是一个 XML-Java对象的映射工具,用于解析 XML配置文件. ...
commons-dbcp 数据连接池服务 commons-dbutils JDBC 辅助类 commons-digester XML 文件到 Java 对象的映射机制 commons-discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称...
此外,`commons-dbcp-1.2.2.jar`还包含了处理连接生命周期、连接池管理、异常处理等相关功能。 3. `commons-pool-1.3.jar`: Apache Commons POOL库是对象池设计模式的实现,它为其他组件(如DBCP)提供了对象复用...
commons-dbcp 数据连接池服务 commons-dbutils JDBC 辅助类 commons-digester XML 文件到 Java 对象的映射机制 commons-discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称...
2. **commons-dbcp-1.2.2.jar**: 这是Apache DBCP的主要实现库,它基于Jakarta-DBCP项目,并且包含了数据库连接池的实现。DBCP提供了一种机制,可以高效地管理和复用数据库连接,从而减少创建和关闭连接的开销,提高...