文档章节

druid连接池配置

liu13430
 liu13430
发布于 2014/09/10 20:51
字数 651
阅读 16274
收藏 33

 基于纯Java代码使用:

package demo.test;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSourceFactory;


public class DBUtil {

	private static DataSource ds = null;	
	
	static {
		try{
			InputStream in = DBUtil.class.getClassLoader()
					               .getResourceAsStream("ds.properties");
            Properties props = new Properties();
			props.load(in);
			ds = DruidDataSourceFactory.createDataSource(props);
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	public static Connection openConnection() throws SQLException{
		return ds.getConnection();
	}	
	
}

 ds.properties内容: 

driverClassName = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:thin:@127.0.0.1:1521:ORCL
username = ******
password = ******

initialSize = 5
maxActive = 10
minIdle = 3
maxWait = 60000
removeAbandoned = true
removeAbandonedTimeout = 180
timeBetweenEvictionRunsMillis = 60000
minEvictableIdleTimeMillis = 300000
validationQuery = SELECT 1 FROM DUAL
testWhileIdle = true 
testOnBorrow = false
testOnReturn = false
poolPreparedStatements = true
maxPoolPreparedStatementPerConnectionSize = 50
filters = stat

 基于Spring的配置: 

<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource"
		init-method="init" destroy-method="close">
		<!-- 数据库基本信息配置 -->
		<property name="driverClassName" value="${oracle.driver}" />
		<property name="url" value="${oracle.url}" />
		<property name="username" value="${oracle.username}" />
		<property name="password" value="${oracle.password}" />		
		<!-- 初始化连接数量 -->
		<property name="initialSize" value="${druid.initialSize}" />
		<!-- 最大并发连接数 -->
		<property name="maxActive" value="${druid.maxActive}" />
		<!-- 最大空闲连接数 -->
		<property name="maxIdle" value="${druid.maxIdle}" />
		<!-- 最小空闲连接数 -->
		<property name="minIdle" value="${druid.minIdle}" />
		<!-- 配置获取连接等待超时的时间 -->		
		<property name="maxWait" value="${druid.maxWait}" />
		<!-- 超过时间限制是否回收 -->
		<property name="removeAbandoned" value="${druid.removeAbandoned}" />
		<!-- 超过时间限制多长; -->
		<property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" />
		<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
		<property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />
		<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
		<property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />
		<!-- 用来检测连接是否有效的sql,要求是一个查询语句-->	
		<property name="validationQuery" value="${druid.validationQuery}" />
		<!-- 申请连接的时候检测 -->
		<property name="testWhileIdle" value="${druid.testWhileIdle}" />
		<!-- 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 -->
		<property name="testOnBorrow" value="${druid.testOnBorrow}" />
		<!-- 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能  -->
		<property name="testOnReturn" value="${druid.testOnReturn}" />
		<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
		<property name="poolPreparedStatements" value="${druid.poolPreparedStatements}" />		
		<property name="maxPoolPreparedStatementPerConnectionSize" value="${druid.maxPoolPreparedStatementPerConnectionSize}" />
		<!--属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:  				
				监控统计用的filter:stat
				日志用的filter:log4j
 				防御SQL注入的filter:wall -->
		<property name="filters" value="${druid.filters}" />		
	</bean>

 启用Web监控统计功能需要在Web应用的web.xml中加入以下内容: 

<filter>
      <filter-name>DruidWebStatFilter</filter-name>
      <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
      <init-param>
	   <param-name>exclusions</param-name>
	   <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
      </init-param>
</filter>
<filter-mapping>
     <filter-name>DruidWebStatFilter</filter-name>
     <url-pattern>/*</url-pattern>
</filter-mapping>	
<servlet>
    <servlet-name>DruidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>	
</servlet>	
<servlet-mapping>
    <servlet-name>DruidStatView</servlet-name>
    <url-pattern>/druid/*</url-pattern>
</servlet-mapping>

 访问监控页面:http://ip:port/projectName/druid/index.html

 

© 著作权归作者所有

liu13430
粉丝 18
博文 48
码字总数 35010
作品 0
深圳
高级程序员
私信 提问
加载中

评论(2)

庄稼步冰
庄稼步冰
797979797979
浪腾度易SB
浪腾度易SB
感谢分享!
阿里巴巴开源项目 Druid 负责人温少访谈

Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、...

donkeyMeng
2016/12/17
246
0
阿里Druid数据连接池在SSM框架中的配置使用

Druid数据连接池简介 首先可以参考阿里在GitHub给出的一些说明: Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 性能好,同时自带监控页面,可以实时监控应用的...

似水的流年
2017/12/31
0
0
阿里巴巴开源项目 Druid 负责人温少访谈

挡住去路的,往往不是大树,而是小藤! 阿里巴巴开源项目 Druid 负责人温少访谈 本文是由转载而来. Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和 SQL解析 器组...

李永china
2016/08/08
65
0
quartz异常:Couldn't rollback jdbc connection

最近工作发现,有个项目偶尔会报,项目技术选型如下: 数据库mysql 连接池druid quartz 从异常来看,是jdbc连接关闭后,代码中依然拿出来使用了,从而报错。进一步了解到,mysql连接默认的最...

Funcy1122
2018/09/10
0
0
Druid 1.1.5 修复 testWhileIdle 某些场景不起作用的问题

阿里开源数据库连接池Druid发布1.1.5版本,这个版本涉及连接池两个重要BUG修复,包括testWhileIdle某些场景不起作用和网络中断时重连时间过长(15分钟)的问题,建议升级。 Issues 修复连接池...

wenshao
2017/10/27
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

任正非对华为热点问题的回应亮了,终于知道华为为什么能扛过这一次的冲击!

任正非对华为热点问题的回应亮了,终于知道华为为什么能扛过这一次的冲击! 如果你是华为的老板,看到一条传遍网络的“美国封锁华为”、“华为禁令”的消息,你会怎么办? 昨天上午,华为创始...

forespider
35分钟前
1
0
Java HTTP 组件库选型看这篇就够了

最近项目需要使用 Java 重度调用 HTTP API 接口,于是想着封装一个团队公用的 HTTP client lib. 这个库需要支持以下特性: 连接池管理,包括连接创建和超时、空闲连接数控制、每个 host 的连...

Java面经
36分钟前
2
0
nginx 重启

在 nginx.config 配置目录下 输入命令: nginx -s reload 在 nginx 中,如果我修改了一个配置文件,或者新增了一个配置文件。按照群里网友的描述,我需要关闭 nginx,或者重启 nginx,比较麻...

MrBoyce
37分钟前
0
0
Cesium中级5 - Terrain 地形

Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ CesiumJS支持对与水流相关的海洋、湖泊和河流以及全球高分辨率地形进行流式处理和可视化。查看山峰、山谷...

Cesium中文网
50分钟前
0
0
搭建jupyter+nginx服务

Tips:该文章面向Mac和centos用户,如果是Windows用户,请先安装虚拟机。 概述 Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter ...

阿dai学长
51分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部