java配置dbcp连接池(数据库连接池)示例分享

2013-12-07  来源:本站原创  分类:Java  人气:12 

java配置dbcp连接池示例分享,大家参考使用吧

使用jar包:commons-dbcp-1.4.jar、commons-pool-1.6.jar、commons-logging-1.1.3.jar,另外还有数据库的jdbc驱动,适用java6及以上平台

连接池管理类

package cn.songxinqiang.samples.commonsdbcp.util;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory;
/**
 * tomcat数据库连接池管理类<br>
 * 使用为tomcat部署环境<br>
 * 需要在类路径下准备数据库连接配置文件dbcp.properties
 *
 * @author 宋信强
 * @mail [email protected]
 *
 * @time 2013-12-27
 *
 */
public class DBManager {
 private static final Log log = LogFactory.getLog(DBManager.class);
 private static final String configFile = "dbcp.properties";
 private static DataSource dataSource;
 static {
  Properties dbProperties = new Properties();
  try {
   dbProperties.load(DBManager.class.getClassLoader()
     .getResourceAsStream(configFile));
   dataSource = BasicDataSourceFactory.createDataSource(dbProperties);
   Connection conn = getConn();
   DatabaseMetaData mdm = conn.getMetaData();
   log.info("Connected to " + mdm.getDatabaseProductName() + " "
     + mdm.getDatabaseProductVersion());
   if (conn != null) {
    conn.close();
   }
  } catch (Exception e) {
   log.error("初始化连接池失败:" + e);
  }
 }
 private DBManager() {
 }
 /**
  * 获取链接,用完后记得关闭
  *
  * @see {@link DBManager#closeConn(Connection)}
  * @return
  */
 public static final Connection getConn() {
  Connection conn = null;
  try {
   conn = dataSource.getConnection();
  } catch (SQLException e) {
   log.error("获取数据库连接失败:" + e);
  }
  return conn;
 }
 /**
  * 关闭连接
  *
  * @param conn
  *            需要关闭的连接
  */
 public static void closeConn(Connection conn) {
  try {
   if (conn != null && !conn.isClosed()) {
    conn.setAutoCommit(true);
    conn.close();
   }
  } catch (SQLException e) {
   log.error("关闭数据库连接失败:" + e);
  }
 }
}

连接配置文件

复制代码 代码如下:

#数据库驱动
driverClassName=com.mysql.jdbc.Driver
#数据库连接地址
url=jdbc:mysql://localhost/ctg
#用户名
username=root
#密码
password=123456
#连接池的最大数据库连接数。设为0表示无限制
maxActive=30
#最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
#接将被标记为不可用,然后被释放。设为0表示无限制
maxIdle=10
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
maxWait=1000
#超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false,调整为true)
removeAbandoned=true
#超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
removeAbandonedTimeout=180

测试连接池工作效率,同时演示怎样获取连接和关闭连接

复制代码 代码如下:

public class ConnectionSource {
 public static void main(String[] args){
  long begin=System.currentTimeMillis();
  for(int i=0;i<10000;i++){
   Connection conn=DBManager.getConn();
   System.out.print(i+"   ");
   DBManager.closeConn(conn);
  }
  long end=System.currentTimeMillis();
  System.out.println("用时:"+(end-begin));
 }
}
相关文章
  • java配置dbcp连接池(数据库连接池)示例分享 2013-12-07

    java配置dbcp连接池示例分享,大家参考使用吧 使用jar包:commons-dbcp-1.4.jar.commons-pool-1.6.jar.commons-logging-1.1.3.jar,另外还有数据库的jdbc驱动,适用java6及以上平台 连接池管理类 package cn.songxinqiang.samples.commonsdbcp.util; import java.sql.Connection; import java.sql.DatabaseMetaData; im

  • java求三个数的最大值的示例分享 2014-02-01

    这篇文章主要介绍了java求三个数的最大值的示例分享,需要的朋友可以参考下 import java.util.Arrays; import java.util.Scanner; public class MaxOf3_2 { /* * 获取最大的整数 */ public static int getMaxNum(int...a){ Arrays.sort(a); int maxNum = a[a.length-1]; return maxNum; } }

  • Spring3.1.2框架下c3po和dbcp两种数据库连接池的配置 2013-01-27

    在hibernate和spring的框架中经常会用到c3pO数据库连接池 这里自己理解一下c3pO,首先它是一个开源的JDBC的连接池,实现了数据源和JNDI绑定,支持JDBC3 规范和JDBC2的标准扩展. 首先我们要在项目中引c3pO-0.9.1.2jar包 比如我自己项目的Spring3.0的框架中上下文XML的配置中,配置如下:连接oracle数据库的例子 <bean id="dataSource" class="com.mchange.v2.c3p0.Comb

  • java动态代理和cglib动态代理示例分享 2014-08-05

    这篇文章主要介绍了java动态代理和cglib动态代理示例,JDK1.3之后,Java提供了动态代理的技术,允许开发者在运行期间创建接口的代理实例,下面我们使用示例学习一下 java动态代理类可以分为两种. 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译.在程序运行前,代理类的.class文件就已经存在了. 动态代理:在程序运行时,运用反射机制动态创建而成. 一.首先我们进行java动态代理的演示. 现在我们有一个简单的业务接口Saying,如下: package testAOP;

  • java实现voctor按指定方式排序示例分享 2014-11-19

    这篇文章主要介绍了java实现voctor按指定方式排序示例,需要的朋友可以参考下 import java.util.*; class MyCompare implements Comparator //实现Comparator,定义自己的比较方法 { public int compare(Object o1, Object o2) { Elem e1=(Elem)o1; Elem e2=(Elem)o2; if(e1.get() > e2.get())//这样比较是降序,如果把-1改成1就是升

  • java删除文件夹下所有文件示例分享 2015-03-19

    这篇文章主要介绍了java删除文件夹下所有文件示例,需要的朋友可以参考下 package org.sw; import java.io.File; public class DeleteFolder { /** * 删除文件夹下的所有文件 * @param oldPath */ public void deleteFile(File oldPath) { if (oldPath.isDirectory()) { System.out.println(oldPath + "是文件夹--"

  • java基于AspectJ(面向切面编程)编码示例分享 2014-06-07

    AspectJ是一种面向切面程序设计的基于Java的实现,下面对过示例学习他的使用方法,需要的朋友可以参考下 一.基本概念 AspectJ是一种面向切面程序设计的基于Java 的实现.它向 Java 中加入了连接点(Join Point)这个新概念,其实它也只是现存的一个 Java概念的名称而已.它向 Java 语言中加入少许新结构:切点(pointcut).通知(Advice).类型间声明(Inter-type declaration)和方面(Aspect).切点和通知动态地影响程序流程,类型

  • java解析xml之jdom解析xml示例分享 2013-12-31

    JDOM是专门为Java打造的API,JDOM采用了Java中的Collection架构来封装集合,是Java爱好者更加熟悉的模式,下面看使用示例 package com.test; import java.io.File; import java.util.ArrayList; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; p

  • java模拟post请求登录猫扑示例分享 2014-02-09

    这篇文章主要介绍了java模拟post请求登录猫扑的小示例,需要的朋友可以参考下 import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter;

  • java解析xml之dom解析xml示例分享 2014-04-18

    DOM将整个XML文件加载到内存中,并构建出节点树:应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点.属性等信息: 这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内存,解析速度也不快,下面看使用示例吧 package com.test; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder;

  • java解析xml之sax解析xml示例分享 2014-07-07

    SAX基于事件的解析,解析器在一次读取XML文件中根据读取的数据产生相应的事件,由应用程序实现相应的事件处理逻辑,即它是一种"推"的解析方式:这种解析方法速度快.占用内存少,但是它需要应用程序自己处理解析器的状态,实现起来会比较麻烦 package com.test; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import

  • java解析xml之dom4j解析xml示例分享 2014-12-23

    DOM4J具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml,dom4j是一套开源的api.实际项目中,往往选择dom4j来作为解析xml的利器 package com.test; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.dom4j.Document; im

  • java读取csv文件和写csv示例分享 2015-01-22

    这篇文章主要介绍了JAVA对CSV格式文本数据处理后再保存成新CSV格式文本的模板,可以学习到java读取csv文件和写csv的方法,需要的朋友可以参考下 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.File

  • java配置数据库连接池的方法步骤 2013-10-13

    java配置数据库连接池的方法步骤,需要的朋友可以参考一下 先来了解下什么是数据库连接池 数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间. 在实际应用开发中,特别是在WEB应用系统中,如果JSP.Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接.打开数据库.存取数据和

  • DBCP连接池原理分析 2015-02-23

    DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 JDBC 3. DBCP 1.4 版本需要运行于 JDK 1.6 ,支持 JDBC 4. 1.3和1.4基于同一套源代码,含有所有的bug修复和新特性.因此在选择DBCP版本的时候,要看你用的是什么JDK版本. DBCP1.2版本性能一般,比c3p0差挺多.DBCP1.4和1.3,配合(依赖)co

  • 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库 2014-12-08

    作者:泥沙砖瓦浆木匠 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 如果我的帮到了你,是否乐意捐助一下或请一杯啤酒也好呢?有你支持,干的更好~ 点这参与众筹 我的支付宝:13958686678 一. 前言 泥瓦匠又和大家见面了,最近两天我在Code Review ,顺便代码小小的Refactoring(重构)下.先了解这个项目吧,这次解决的是数据源配置优化.因为这web项目中配置数据源的地方很多.例如JDBC要配置数据源,Mybatis要配置数据源,Quartz定时任务要配

  • Maven 配置Spring-Hibernate数据库连接池时启动错误 2012-11-21

    Error Log 如下所示:找不到驱动类[本身依赖是加了驱动的] org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver' at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429) at org.apache.commons.db

  • 几种常见数据库连接池的使用比较 2015-03-05

    感觉在介绍之前有必要阐述一下连接池的几个概念,有助于后边一些文字的理解. 最原始的数据库使用就是打开一个连接并进行使用,使用过后一定要关闭连接释放资源.由于频繁的打开和关闭连接对jvm包括数据库 都有一定的资源负荷,尤其应用压力较大时资源占用比较多容易产生性能问题.由此使用连接池的作用就显现出来,他的原理其实不复杂: 先打开一定数量的数据库连接,当使用的时候分配给调用者,调用完毕后返回给连接池,注意返回给连接池后这些连接并不会关闭,而是 准备给下一个调用者进行分配.由此可以看出连接池节省了大量的

  • java向文件末尾添加内容示例分享 2014-03-11

    本文为大家提供一个java向文件末尾添加内容的示例分享,大家参考使用吧 BufferedWriter out = null; try { out = new BufferedWriter(new FileWriter("filename", true)); out.write("aString"); } catch (IOException e) { // error processing code } finally { if (out != null) { ou

  • java数据库连接池和数据库连接示例 2015-05-02

    这篇文章主要介绍了java数据库连接池和数据库连接示例,需要的朋友可以参考下 import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; /** * 工具类 提供数据库连接池 和数据库连接 * * @author seawind * */ public class JDBCUtils