java 数据库连接池
1. About
java利用jdbc直接连接数据库,经常取得连接,用完释放,很浪费系统资源
2. Code
Java代码
- package com.cdv.mam.db;
- import java.sql.Connection;
- import java.sql.DatabaseMetaData;
- import java.sql.SQLException;
- import java.util.Properties;
- import javax.sql.DataSource;
- import org.apache.commons.dbcp.BasicDataSourceFactory;
- 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
- *
- */
- 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);
- }
- }
- }
properties文件(dbcp.properties)
- #数据库驱动
- driverClassName=com.mysql.jdbc.Driver
- #数据库连接地址
- url=jdbc:mysql://192.168.1.41:3306/dmc
- #用户名
- username=root
- #密码
- password=root
- #连接池的最大数据库连接数。设为0表示无限制
- maxActive=
- #最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
- #接将被标记为不可用,然后被释放。设为0表示无限制
- maxIdle=
- #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
- maxWait=
- #超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false,调整为true)
- removeAbandoned=true
- #超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
- removeAbandonedTimeout=
用到的jar
java 数据库连接池的更多相关文章
- Java数据库连接池封装与用法
Java数据库连接池封装与用法 修改于抄袭版本,那货写的有点BUG,两个类,一个用法 ConnectionPool类: package com.vl.sql; import java.sql.Conn ...
- Java数据库连接池
转载过来的,最近在做一个小网站,准备使用这种方法. Java jdbc数据库连接池总结! 1. 引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及, ...
- 一个JAVA数据库连接池实现源码
原文链接:http://www.open-open.com/lib/view/open1410875608164.html // // 一个效果非常不错的JAVA数据库连接池. // from:htt ...
- Java数据库连接池的几种配置方法(以MySQL数据库为例)
Java数据库连接池的几种配置方法(以MySQL数据库为例) 一.Tomcat配置数据源: 前提:需要将连接MySQL数据库驱动jar包放进Tomcat安装目录中common文件夹下的lib目录中 1 ...
- Java数据库连接池详解
http://www.javaweb1024.com/java/JavaWebzhongji/2015/06/01/736.html 对于共享资源,有一个很著名的设计模式:资源池(Resource P ...
- 主流Java数据库连接池分析(C3P0,DBCP,TomcatPool,BoneCP,Druid)
主流数据库连接池 常用的主流开源数据库连接池有C3P0.DBCP.Tomcat Jdbc Pool.BoneCP.Druid等 C3p0: 开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDB ...
- [转帖]为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用
为什么HikariCP被号称为性能最好的Java数据库连接池,如何配置使用 原创Clement-Xu 发布于2015-07-17 15:53:14 阅读数 57066 收藏 展开 HiKariCP是 ...
- 从零开始学 Java - 数据库连接池的选择 Druid
我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...
- java数据库连接池技术原理(浅析)
在执行数据库SQL语句时,我们先要进行数据连接:而每次创建新的数据库的连接要消耗大量的资源,这样,大家就想出了数据库连接池技术.它的原理是,在运行过程中,同时打开着一定数量的数据库连接,形成数据连接池 ...
- [数据库连接池二]Java数据库连接池--C3P0和JDNI.
前言:上一篇文章中讲了DBCP的用法以及实现原理, 这一篇再来说下C3P0和JDNI的用法. 1.1.C3P0数据源 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规 ...
随机推荐
- iOS-数据持久化基础-沙盒机制
沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...
- SQL SERVER 查询性能优化——分析事务与锁(五)
SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...
- gulp/grunt和browserify/webpack的区别
Gulp应该和Grunt比较,他们的区别我就不说了,说说用处吧.Gulp / Grunt 是一种工具,能够优化前端工作流程.比如自动刷新页面.combo.压缩css.js.编译less等等.简单来说, ...
- Microsoft Visual Studio正忙解决办法
问题描述 前段时间用vs2015进行开发.出现如下问题,关闭vs进程重启vs还是无法解决. 如何解决 进入本地项目.vs文件夹 这个文件夹下有个.suo文件,删除该文件,用任务管理器杀掉vs的进程,重 ...
- Spring注意事项(各部分理解)
(1),每一个bean属性,就是一个普通的java类. 类有属性,有方法,如何交给容器管理.(注解的方式,xml方式配置) (2),通过Bean来实例化对象的方式 1.通过构造器(一般是无参的默认构造 ...
- 贪心算法-Huffman编码
伪代码: 例子:
- jxl读取excel实现导入excel写入数据库
@RequestMapping(params = "method=import", method = RequestMethod.POST) @ResponseBody publi ...
- Node.js的学习--使用cheerio抓取网页数据
打算要写一个公开课网站,缺少数据,就决定去网易公开课去抓取一些数据. 前一阵子看过一段时间的Node.js,而且Node.js也比较适合做这个事情,就打算用Node.js去抓取数据. 关键是抓取到网页 ...
- CSS 魔法系列:纯 CSS 绘制各种图形《系列五》
我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...
- Windows Azure Service Bus (2) 队列(Queue)入门
<Windows Azure Platform 系列文章目录> Service Bus 队列(Queue) Service Bus的Queue非常适合分布式应用.当使用Service Bu ...