- 浏览: 277924 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
plg17:
properties文件中文自动转码问题确实给开发带来不便,按 ...
eclipse .properties插件 -
sorriest-siben:
帅哥,你的例子是不是笔误了呀应该是这样的吧<result ...
struts2 redirect 传参数 -
Masket874:
沙发。。。。。
session的监听器 -
spp_1987:
<%@page import="java.ne ...
jsp输出静态的图片 -
spp_1987:
如何 限制输出图片大小。 还有我的后台报错 出来一个异常:
严 ...
jsp输出静态的图片
dbcp使用
--------------------
dbcp提供了数据库连接池;
可以在spring,iBatis,hibernate中调用dbcp完成数据库连接,框架一般都提供了dbcp连接的方法;
tomcat中也提供了dbcp的jndi设置方法;
也可以不在框架中使用dbcp,单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar
下面是个dbcp的实用类,通过它可以完成DBCP的使用:
package dbcp; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.HashMap; import java.util.Map; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; /** * @author space * @date Aug 12, 2008 3:25:49 PM * * dbcp 实用类,提供了dbcp连接,不允许继承; * * 该类需要有个地方来初始化 DS ,通过调用initDS 方法来完成,可以在通过调用带参数的构造函数完成调用,可以在其它类中调用,也可以在本类中加一个static{}来完成; */ public final class DbcpBean { /** 数据源,static */ private static DataSource DS; /** 从数据源获得一个连接 */ public Connection getConn() { try { return DS.getConnection(); } catch (SQLException e) { System.out.println("获得连接出错!"); e.printStackTrace(); return null; } } /** 默认的构造函数 */ public DbcpBean() { } /** 构造函数,初始化了 DS ,指定 数据库 */ public DbcpBean(String connectURI) { initDS(connectURI); } /** 构造函数,初始化了 DS ,指定 所有参数 */ public DbcpBean(String connectURI, String username, String pswd, String driverClass, int initialSize, int maxActive, int maxIdle, int maxWait) { initDS(connectURI, username, pswd, driverClass, initialSize, maxActive, maxIdle, maxWait); } /** * 创建数据源,除了数据库外,都使用硬编码默认参数; * * @param connectURI 数据库 * @return */ public static void initDS(String connectURI) { initDS(connectURI, "root", "password", "com.mysql.jdbc.Driver", 5, 100, 30, 10000); } /** * 指定所有参数连接数据源 * * @param connectURI 数据库 * @param username 用户名 * @param pswd 密码 * @param driverClass 数据库连接驱动名 * @param initialSize 初始连接池连接个数 * @param maxActive 最大激活连接数 * @param maxIdle 最大闲置连接数 * @param maxWait 获得连接的最大等待毫秒数 * @return */ public static void initDS(String connectURI, String username, String pswd, String driverClass, int initialSize, int maxActive, int maxIdle, int maxWait) { BasicDataSource ds = new BasicDataSource(); ds.setDriverClassName(driverClass); ds.setUsername(username); ds.setPassword(pswd); ds.setUrl(connectURI); ds.setInitialSize(initialSize); // 初始的连接数; ds.setMaxActive(maxActive); ds.setMaxIdle(maxIdle); ds.setMaxWait(maxWait); DS = ds; } /** 获得数据源连接状态 */ public static Map<String, Integer> getDataSourceStats() throws SQLException { BasicDataSource bds = (BasicDataSource) DS; Map<String, Integer> map = new HashMap<String, Integer>(2); map.put("active_number", bds.getNumActive()); map.put("idle_number", bds.getNumIdle()); return map; } /** 关闭数据源 */ protected static void shutdownDataSource() throws SQLException { BasicDataSource bds = (BasicDataSource) DS; bds.close(); } public static void main(String[] args) { DbcpBean db = new DbcpBean("jdbc:mysql://localhost:3306/testit"); Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = db.getConn(); stmt = conn.createStatement(); rs = stmt.executeQuery("select * from test limit 1 "); System.out.println("Results:"); int numcols = rs.getMetaData().getColumnCount(); while (rs.next()) { for (int i = 1; i <= numcols; i++) { System.out.print("\t" + rs.getString(i) + "\t"); } System.out.println(""); } System.out.println(getDataSourceStats()); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); if (db != null) shutdownDataSource(); } catch (Exception e) { e.printStackTrace(); } } } }
发表评论
-
小学数学竞赛题:1-9 填充 3 * 3 格
2009-07-15 14:27 1908用 java 实现这么 一道 小学数学竞赛题: 用1-9 ... -
事务 transaction
2009-04-21 15:32 1146事务 即 transaction 是个什么概念,又为什么有事务 ... -
struts2 redirect 传参数
2009-04-14 12:40 3771struts2 redirect 时如果想传参数示例如下,注意 ... -
eclipse .properties插件
2008-12-30 10:32 26520资源文件 即 .properties ... -
hql oracle 比较 日期时间
2008-12-25 10:58 13921oracle 里比较date类型时 ... -
单例模式-简单示范
2008-11-01 16:56 1312======所谓单例模式====== 即项目中某个类,只生成1 ... -
一道有关 变量、对象 作用域的java面试题
2008-11-01 16:50 1309这道java面试题,主要考了以下2点: * 变量、对象 作 ... -
struts2.0.11.2 的 validator 功能的 1个bug
2008-10-08 16:38 3384今天又用了一下struts2的validator功能,也就是校 ... -
log4j 配置详解
2008-10-06 19:22 4118转载 自 http://zhang-hong-cai-sina ... -
security 获得登陆用户
2008-10-06 19:00 2486如何在 security 中 获得 user 信息?由 sec ... -
java 反编译
2008-09-30 00:08 1484有时候需要将现有的 java 类,即 .class 文件编译成 ... -
acegi 的 session 控制 和 自定义的 remember-me 功能 冲突解决
2008-09-22 11:29 1728将 org.acegisecurity.context.Htt ... -
jsp输出静态的图片
2008-09-19 16:14 66022个方式,jsp中直接输出静态图片: img.jsp &l ... -
jstl core
2008-09-16 12:24 1674jstl core 的标签使用 jstl-core.jsp ... -
jstl fmt
2008-09-12 15:44 382621)导入jstl 包,加载ftm标签 首先将jstl的jar包 ... -
session 过期时间设置
2008-09-10 18:08 8076原文地址:http://hailan1987.blog ... -
session的监听器
2008-09-10 17:35 2760javax.servlet.http.HttpSession ... -
eclipse 快捷键
2008-09-03 15:00 62181)设置eclipse的快捷键 打开eclipse,Windo ... -
ant 风格的 url 匹配
2008-08-21 14:33 4320转载自:http://hi.baidu.com/xiaolan ... -
tomcat dbcp jndi 配置
2008-08-11 16:33 5114使用tomcat6,mysql6 1)添加jar包tomcat ...
相关推荐
《Mycat DBCP 使用手册详解》 Mycat 是一款开源的分布式数据库中间件,主要用于处理大数据处理和MySQL集群。在Mycat中,DBCP(Database Connection Pool)作为连接池管理工具,扮演着关键角色,它能有效地管理和...
DBCP通过维护一个连接池,可以在应用程序需要时快速提供已建立的数据库连接,用完后则将连接返回到池中,供其他线程重复使用,从而显著提高了数据库操作的效率。DBCP是Apache Commons项目的一部分,与Apache的其他...
它提供了一套对象池化的API,DBCP使用这个库来管理数据库连接的生命周期,包括创建、分配、回收和销毁。PoolableConnection是DBCP中的一个关键类,它实现了池化连接的逻辑,与PoolableConnectionFactory配合工作,...
- `commons-collections-3.2.1.jar`:这是Apache Commons Collections库,提供了各种集合操作的工具类,DBCP使用它来辅助管理和维护连接池。 - `commons-dbcp-1.4.jar`:这是DBCP的主要库文件,包含了DBCP连接池的...
- `commons-pool.jar`:这个库是Apache Commons的通用对象池,DBCP使用它来实现数据库连接的池化管理。对象池允许你复用已经创建的对象,避免频繁地创建和销毁对象带来的性能损失。 2. **配置文件**: DBCP的配置...
2. **连接工厂**:DBCP使用`PoolableConnectionFactory`来创建和管理池化的数据库连接。这个类负责将数据库的物理连接转换为池化的连接,同时提供了连接的验证和回收机制。 3. **池化对象**:`PoolableConnection`...
**DBCP使用步骤** 1. **引入依赖**:在项目中添加DBCP的jar包依赖。 2. **配置连接池**:通过XML或Java代码设置DBCP的配置属性,如数据库URL、用户名、密码、最大/最小连接数等。 3. **初始化连接池**:创建...
- **GenericObjectPool**:一个通用的对象池,DBCP使用它来存储和管理PoolableConnection对象。 3. **配置DBCP**: 在使用DBCP之前,需要配置相关参数,如最大活跃连接数、最小空闲连接数、超时时间等。这通常...
本示例将简要介绍DBCP连接池的使用方法,以及如何将其集成到Java应用中。 首先,我们需要在项目中引入DBCP的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>commons-dbcp ...
3. **Apache Commons Pool**:DBCP使用Commons Pool来实现连接对象的池化,确保高效的资源分配和回收。 4. **Apache Commons Collections**:这个库提供了一些高级数据结构和算法,如双向映射、集合排序、集合转换...
DBCP使用它来实现数据库连接的池化管理,通过对象池技术有效地复用数据库连接,提高系统的效率和稳定性。 在实际使用过程中,还需要根据所使用的数据库类型,将对应的JDBC驱动JAR包添加到类路径中。例如,如果你的...
- `ObjectPool`: 对象池接口,DBCP使用它来管理连接对象,例如C3P0或Commons Pool提供的实现。 3. **DBCP的配置与使用** - 配置文件:通常在应用的配置文件(如`web.xml`)中配置`BasicDataSource`的相关属性,如...
- **commons-pool.jar**:这是Apache Commons Pool库,提供了对象池化的支持,DBCP使用它来管理数据库连接。 - **commons-logging.jar**:Apache Commons Logging库,提供日志服务的抽象层,使得DBCP可以灵活地...
- `ObjectPool`:接口,表示对象池,DBCP使用它来存储和管理数据库连接。 - `AbandonedConfig`:配置类,用于处理废弃连接的检测和清除策略。 3. **配置DBCP** - 在XML配置文件中,你可以设置各种属性,如最大...
- Commons-Pool.jar:提供了对象池化的基础框架,DBCP使用它来实现连接池的底层逻辑。 在使用DBCP时,开发者需要在Java代码中配置DBCP的连接池属性,如数据库URL、用户名、密码、最大连接数、最小连接数等,并通过...
Apache Commons JDBC是一个集合,包含了多个小型的、独立的、与JDBC相关的工具和实用程序,虽然在描述中没有明确提及,但它可能是DBCP使用的补充库。 在压缩包子文件的文件名称列表中,我们看到"www.pudn.com.txt"...
DBCP使用C3P0或Apache Commons Pool库来实现对象池的具体逻辑。 5. **AbandonedConfig** 和 **AbandonedObjectPool**: 这两个类用于处理"废弃"的连接。当连接长时间未使用时,可以设置自动回收机制,防止资源浪费和...
Apache Commons Pool是对象池化的实现库,DBCP使用它来管理数据库连接池。这个库提供了基础的池化服务,如对象的创建、回收和检测是否有效等。在DBCP中,它负责维护数据库连接的池,确保在需要时可以快速获取连接,...
JavaEE DBCP简单案例