java类调用第三方连接池 (c3p0)

原创 2011年01月18日 16:32:00

 

 

1、首先编写db_cn.properties属性文件

 

DB.DRIVER=oracle.jdbc.driver.OracleDriver
DB.URL=jdbc/:oracle/:thin/:@192.168.1.162/:1521/:ora10g
DB.USER=new_lottery
DB.PWD=new_lottery
DB.AcquireIncrement=1
DB.InitialPoolSize=1
DB.MaxPoolSize=3
DB.MinPoolSize=1
DB.MaxIdleTime=120
DB.MaxStatements=180
DB.IdleConnectionTestPeriod=3600

存储数据库连接的相关配置

 

2、编写测试java-----DataHandling类。

 

 

package com.diagram.basis.common.db;

import java.sql.Connection;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.diagram.basis.common.util.CFG;
import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * 数据处理工具类
 *
 * @author Administrator
 */
public class DataHandling {

 private static Log log = LogFactory.getLog("DataHandling");
 
 private static CFG cfg = new CFG();
 /**
  * C3P连接池对象
  */
 private static ComboPooledDataSource cpds = null;
 /**
  * 数据库驱动名称
  */
 private static final String DB_DRIVER = cfg.getMessage("DB.DRIVER", "/db_cn.properties");
 /**
  * 数据库连接URL
  */
 private static final String DB_URL = cfg.getMessage("DB.URL", "/db_cn.properties");
 /**
  * 数据库连接用户
  */
 private static final String DB_USER = cfg.getMessage("DB.USER", "/db_cn.properties");
 /**
  * 数据库连接密码
  */
 private static final String DB_PWD = cfg.getMessage("DB.PWD", "/db_cn.properties");
 /**
  * 缺省构造函数
  */
 static {
  cpds = getInstance();
 }

 /**
  * @return ComboPooledDataSource
  */
 private synchronized static ComboPooledDataSource getInstance() {
  if (cpds == null) {
   cpds = new ComboPooledDataSource();
   cpds.setAcquireIncrement(new Integer(cfg.getMessage("DB.AcquireIncrement", "/db_cn.properties")).intValue());
   cpds.setInitialPoolSize(new Integer(cfg.getMessage("DB.InitialPoolSize", "/db_cn.properties")).intValue());
   cpds.setMaxPoolSize(new Integer(cfg.getMessage("DB.MaxPoolSize", "/db_cn.properties")).intValue());
   cpds.setMinPoolSize(new Integer(cfg.getMessage("DB.MinPoolSize", "/db_cn.properties")).intValue());
   cpds.setMaxIdleTime(new Integer(cfg.getMessage("DB.MaxIdleTime", "/db_cn.properties")).intValue());
   try {
    cpds.setDriverClass(DB_DRIVER);
   } catch (Exception e) {
    log.error("setdriverclass error", e);
   }
   cpds.setJdbcUrl(DB_URL);
   cpds.setUser(DB_USER);
   cpds.setPassword(DB_PWD);
   cpds.setMaxStatements(new Integer(cfg.getMessage("DB.MaxStatements", "/db_cn.properties")).intValue());
   cpds.setIdleConnectionTestPeriod(new Integer(cfg.getMessage("DB.IdleConnectionTestPeriod", "/db_cn.properties")).intValue());
  }
  return cpds;
 }

 /**
  * 取得数据库的连接
  *
  * @return Connection
  * @throws Exception
  */
 public Connection getConnection() throws Exception {
  
  Connection connection = null;
  try {
   Date before = new Date();
   connection = cpds.getConnection();
   Date after = new Date();
   log.info("-------time costed: "
     + (after.getTime() - before.getTime()));
   // 设置非自动提交模式
   connection.setAutoCommit(false);
  } catch (Exception e) {
   log.error("getconnection error", e);
   throw e;
  }
  return connection;
 }

 public static void main(String[] args) {
  DataHandling datahandling = new DataHandling();
  Connection con = null;
  int i = 0;
  while (i < 50) {
   java.util.Date before = new java.util.Date();
   try {
    con = datahandling.getConnection();
   } catch (Exception e) {
    e.printStackTrace();
   }
   try {
    con.close();
   } catch (Exception e) {
    e.printStackTrace();
   }

   java.util.Date after = new java.util.Date();
   log.info("-------time costed: "
     + (after.getTime() - before.getTime()));
   i++;
  }
 }
}

 

 

3、读取属性文件的帮助类CFG.java

 

/*
 * shining
 * */
package com.diagram.basis.common.util;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author  黄波涛
 * @version 1.1
 *
 */

public class CFG {
 
 private static Log log = LogFactory.getLog(CFG.class);
 
 private static IO iostream = new IO();
 
 private static StrReplace strreplace = new StrReplace();

 /**
  * @integer 读取KEY值
  * @param   key
  * @return
  */
 public String getMessage(String key) {
  String message = null;
  Properties properties = new Properties();
  InputStream is = getClass().getResourceAsStream(
    "/language_cn.properties");
  try {
   properties.load(is);
  } catch (IOException e) {
   log.error("getMessage() fail", e);
  }
  message = properties.getProperty(key);
  try {
   message = new String(message.getBytes("iso-8859-1"), "utf-8");
  } catch (UnsupportedEncodingException e) {
   log.error(e);
  }

  return message;
 }
 
 /**
  * @integer 读取指定文件的KEY值
  * @param   key
  * @param   uri
  * @return
  */
 public String getMessage(String key,String uri) {
  String message = null;
  Properties properties = new Properties();
  InputStream is = getClass().getResourceAsStream(
    uri);
  try {
   properties.load(is);
  } catch (IOException e) {
   log.error("getMessage() fail", e);
  }
  message = properties.getProperty(key);
  try {
   message = new String(message.getBytes("iso-8859-1"), "utf-8");
  } catch (UnsupportedEncodingException e) {
   log.error(e);
  }

  return message;
 }
 
 /**
  * @integer 读取指定文件的KEY值,并设定编码方式。
  * @param   key
  * @param   uri
  * @param   encoding
  * @return
  */
 public String getMessage(String key,String uri,String encoding) {
  String message = null;
  Properties properties = new Properties();
  InputStream is = getClass().getResourceAsStream(
    uri);
  try {
   properties.load(is);
  } catch (IOException e) {
   log.error("getMessage() fail", e);
  }
  message = properties.getProperty(key);
  try {
   message = new String(message.getBytes("iso-8859-1"), encoding);
  } catch (UnsupportedEncodingException e) {
   log.error(e);
  }
  return message;
 }
 
 public Integer put(String key,String value){

  Properties properties = new Properties();
  InputStream is = getClass().getResourceAsStream(
    "/language_cn.properties");
  try {
   properties.load(is);

   //iostream.writeFile(uri, filename, suffix, filecontent);
   
   
  } catch (IOException e) {
   log.error("getMessage() fail", e);
   return -1; //返回1表示失败
  }
  
  return 0; //返回0表示成功
 }
 
 public static void main(String[] args){

 }
}

4 、加入c3p0包

   

数据库连接池的作用及c3p0的详解

1.JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤:   在主程序(如servlet、beans)中建立数据库连接。 进行sql操作 ...
  • qq441568267
  • qq441568267
  • 2016年10月28日 00:43
  • 9818

C3P0连接池的三种实现方式

用到的jar包:                  mysql-connector-java-5.1.30-bin.jar                  c3p0-0.9.5.2.jar  ...
  • soyuone
  • soyuone
  • 2016年06月01日 11:05
  • 13931

C3P0连接池配置与使用

C3P0连接池配置完整使用
  • edisonyuan
  • edisonyuan
  • 2016年08月03日 15:23
  • 1484

c3p0数据库连接池实例

c3p0下载地址:http://download.csdn.net/detail/huhui_bj/6944595 这篇文章介绍的是,在普通Java Web工程中或者普通Java工程中使用c3p...
  • csh602583095
  • csh602583095
  • 2014年10月27日 16:25
  • 1178

25、连接池(DBCP、C3P0)、动态代理与分页技术

连接池思考:程序中连接如何管理? 1. 连接资源宝贵;需要对连接管理 2. 连接: a) 操作数据库,创建连接 b) 操作结束, 关闭! 分析: 涉及频繁的连接的打开、关闭,...
  • guanhang89
  • guanhang89
  • 2016年06月11日 15:29
  • 4837

java Servlet使用c3p0创建多个Mysql数据库连接池,Sevlet使用c3p0创建oracle数据库连接池

java Servlet使用c3p0创建多个Mysql数据库连接池,Sevlet使用c3p0创建oracle数据库连接池...
  • weixin_36751895
  • weixin_36751895
  • 2017年04月24日 14:54
  • 864

java c3p0连接池 不用spring单独使用c3p0

如之前文章>所说: Connection 复用问题, 多线程共用一个Connection 对象,没问题, 他们不停地用这个Connection 对象去查询没问题, 猜测是Connection 类内部优...
  • nx188
  • nx188
  • 2016年06月25日 13:06
  • 1293

c3p0-----开源JDBC连接池使用及配置

首先来个连接,介绍一下各种连接池的区别及性能差别(boneCP较新,性能较高)连接池区别c3p0是一个开源JDBC连接池,假如英文好的话完全可以c3p0 - JDBC3 Connection and ...
  • linfujian1999
  • linfujian1999
  • 2017年04月01日 14:11
  • 528

Java开源连接池c3p0的基本用法

前言:其实c3p0只是一个实现了javax.sql 接口 DataSource的一个工具集,使用c3p0可以帮我们管理宝贵的Connection资源,无须我们去创建连接(免去每次配置数据库驱动,url...
  • zzxx1994617
  • zzxx1994617
  • 2017年04月27日 11:33
  • 231

JDBC之连接池DBCP与c3p0的简单使用

JDBC之连接池DBCP与c3p0的简单使用 一背景 二常用的开源数据库连接池 1 dbcp 2 c3p0 三dbcp与c3p0对比JDBC之连接池DBCP与c3p0的简单使用提示:本内容通过慕课网学...
  • u014292162
  • u014292162
  • 2017年04月07日 17:44
  • 879
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java类调用第三方连接池 (c3p0)
举报原因:
原因补充:

(最多只允许输入30个字)