[转]Java使用commons-dbcp2.0
原文地址:http://blog.csdn.net/jiutianhe/article/details/39670817
dbcp 是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar。
commons-pool的实现类来进行配置。
7 only (JDBC 4.1)
6 only (JDBC 4)
1.4-5 only (JDBC 3)
commons-dbcp2参数配置
Parameter Description
username
password | url | driverClassName | connectionProperties | Format of the string must be [propertyName=property;]* |
Parameter Default Description
defaultAutoCommit
defaultReadOnly
defaultTransactionIsolation
The default auto-commit state of connections created by this pool. If not set then the setAutoCommit method will not be called. | |||
The default read-only state of connections created by this pool. If not set then the setReadOnly method will not be called. (Some drivers don't support read only mode, ex: Informix) |
|||
The default TransactionIsolation state of connections created by this pool. One of the following: (see
|
cacheState |
If true, the pooled connection will cache the current readOnly and autoCommit settings when first read or written and on all subsequent writes. This removes the need for additional database queries for any further calls to the getter. If the underlying connection is accessed directly and the readOnly and/or autoCommit settings changed the cached values will not reflect the current state. In this case, caching should be disabled by setting this attribute to false. |
- 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.dbcp2.BasicDataSource;
- /**
- * @author
- * @date
- *
- * dbcp 实用类,提供了dbcp连接,不允许继承;
- *
- * 该类需要有个地方来初始化 DS ,通过调用initDS 方法来完成, 可以在通过调用带参数的构造函数完成调用,
- * 可以在其它类中调用,也可以在本类中加一个static{}来完成;
- */
- public final class DbcpBean {
- /** 数据源,static */
- private static DataSource DS;
- /** 从数据源获得一个连接 */
- public Connection getConn() {
- Connection con = null;
- if (DS != null) {
- try {
- con = DS.getConnection();
- } catch (Exception e) {
- e.printStackTrace(System.err);
- }
- try {
- con.setAutoCommit(false);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return con;
- }
- return con;
- }
- /** 默认的构造函数 */
- 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, int minIdle) {
- initDS(connectURI, username, pswd, driverClass, initialSize, maxActive,
- maxIdle, maxWait, minIdle);
- }
- /**
- * 创建数据源,除了数据库外,都使用硬编码默认参数;
- *
- * @param connectURI
- * 数据库
- * @return
- */
- public static void initDS(String connectURI) {
- initDS(connectURI, "root", "password", "com.mysql.jdbc.Driver", 5, 100,
- 30, 10000, 1);
- }
- /**
- * 指定所有参数连接数据源
- *
- * @param connectURI
- * 数据库
- * @param username
- * 用户名
- * @param pswd
- * 密码
- * @param driverClass
- * 数据库连接驱动名
- * @param initialSize
- * 初始连接池连接个数
- * @param maxtotal
- * 最大活动连接数
- * @param maxIdle
- * 最大连接数
- * @param maxWaitMillis
- * 获得连接的最大等待毫秒数
- * @param minIdle
- * 最小连接数
- * @return
- */
- public static void initDS(String connectURI, String username, String pswd,
- String driverClass, int initialSize, int maxtotal, int maxIdle,
- int maxWaitMillis , int minIdle) {
- BasicDataSource ds = new BasicDataSource();
- ds.setDriverClassName(driverClass);
- ds.setUsername(username);
- ds.setPassword(pswd);
- ds.setUrl(connectURI);
- ds.setInitialSize(initialSize); // 初始的连接数;
- ds.setMaxTotal(maxtotal);
- ds.setMaxIdle(maxIdle);
- ds.setMaxWaitMillis(maxWaitMillis);
- ds.setMinIdle(minIdle);
- 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();
- }
- }
- }
- }
[转]Java使用commons-dbcp2.0的更多相关文章
- Dbcp2抛出org.apache.commons.dbcp2.LifetimeExceededException
三月 24, 2016 5:16:33 下午 org.apache.commons.dbcp2.BasicDataSource onSwallowException 警告: An internal o ...
- Java I/O 从0到1 - 第Ⅰ滴血 File
前言 File 类的介绍主要会依据<Java 编程思想>以及官网API .相信大家在日常工作中,肯定会遇到文件流的读取等操作,但是在搜索过程中,并没有找到一个介绍的很简洁明了的文章.因此, ...
- Failed to unregister the JMX name: org.apache.commons.dbcp2:name=xxx,type=BasicDataSource
把datesource的bean的class由 org.apache.commons.dbcp2.BasicDataSource 改成 org.apache.tomcat.dbcp.dbcp.Basi ...
- 《Java I/O 从0到1》 - 第Ⅰ滴血 File
前言 File 类的介绍主要会依据<Java 编程思想>以及官网API .相信大家在日常工作中,肯定会遇到文件流的读取等操作,但是在搜索过程中,并没有找到一个介绍的很简洁明了的文章.因此, ...
- 20145208 《Java程序设计》第0周学习总结
20145208 <Java程序设计>第0周学习总结 阅读心得 读了老师推荐的几个文章,虽然第四个文章"为什么一定要自学"报告资源不存在而无法阅读,其他的三篇文章都言之 ...
- 《Java I/O 从0到1》 - 第Ⅱ滴血 “流”
前言 <Java I/O 从0到1>系列上一章节,介绍了File 类,这一章节介绍的是IO的核心 输入输出.I/O类库常使用流这个抽象概念.代表任何有能力产出数据的数据源对象或者是有能力接 ...
- Windows Intellij环境下Gradle的 “Could not determine Java version from ‘9.0.1’”的解决方式
当我导入Gradle项目初试Java spring的时候,遇到下面报错: Gradle complete project refresh failed Error:Could not determin ...
- hadoop 遇到java.net.ConnectException: to 0.0.0.0:10020 failed on connection
hadoop 遇到java.net.ConnectException: to 0.0.0.0:10020 failed on connection 这个问题一般是在hadoop2.x版本里会出 ...
- 20145328 《Java程序设计》第0周学习总结
20145328 <Java程序设计>第0周学习总结 阅读心得 从总体上来说,这几篇文章都是围绕着软件工程专业的一些现象来进行描述的,但深入了解之后就可以发现,无论是软件工程专业还是我们现 ...
- Java升级替换java version "1.5.0"
首先进行java安装 http://www.cnblogs.com/someone9/p/8670585.html 2. 然后查看版本信息,仍然是1.5.0 [root@OKC java]# java ...
随机推荐
- [转]VS2010中如何创建一个WCF
本文转自:http://www.cnblogs.com/zhangliangzlee/archive/2012/08/28/2659701.html 转载:http://www.cnblogs.com ...
- POJ 2540 Hotter Colder --半平面交
题意: 一个(0,0)到(10,10)的矩形,目标点不定,从(0,0)开始走,如果走到新一点是"Hotter",那么意思是离目标点近了,如果是"Colder“,那么就是远 ...
- 洛谷U4807抽水机[最小生成树]
题目背景 kkk被Farmer John和他的奶牛贝茜虐的很惨,然后她也想体验下一个Farmer的生活.但她又懒得种地,就选择养鱼. 题目描述 这些鱼都是热带鱼(废话),很娇贵(比kkk娇贵),要经常 ...
- jQuery UI常用插件使用
一.什么是插件 ①是遵循一定接口规范编写的程序 ②是原有系统平台功能的扩展和补充 ③只能运行在规定的系统平台下,而不能单独运行 注:由于jQuery插件是基于jQuery脚本库的扩展,所以所有jQue ...
- Android M新的运行时权限开发者需要知道的一切
android M 的名字官方刚发布不久,最终正式版即将来临!android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响.惊讶的是android社区鲜有谈论这事儿, ...
- BZOJ 1024 【SCOI2009】 生日快乐
Description windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕.现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋 ...
- 获取iTextSharp 的image 报错
获取itextsharp类库的image对象的时候报错 outofmemory .经过艰苦的测试发现jpeg类型是可行的的 iTextSharp.text.Image je = iTextShar ...
- indows 8上强制Visual Studio以管理员身份运行
http://diaosbook.com/Post/2013/2/28/force-visual-studio-always-run-as-admin-on-windows-8 Windows 8的一 ...
- java:多线程基础之Runnable、Callable与Thread
java.lang包下有二个非常有用的东西:Runnable接口与Thread类,Thread实现了Runnable接口(可以认为Thread是Runnable的子类),利用它们可以实现最基本的多线程 ...
- centos6-honeyd安装&配置
安装 需要装 libpcap libevent libdnet 等(!) 有些用的yum,有些下载的安装包手动安装 (wget tar configure make install 非常linux) ...