spring下,druid,c3p0,proxool,dbcp四个数据连接池的使用和配置
由于那天Oracle的数据连接是只能使用dbcp的数据库连接池才连接上了,所以决定试一下当下所有得数据库连接池连接orcale和mysql,先上代码
配置文件的代码
#=================dbcp连接池======================#
#Oracle数据库连接
#jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
#jdbc_username=renboqieqie
#jdbc_password=xxxxx
#myssql数据库配置 #jdbc_driverClassName = com.mysql.jdbc.Driver
#validationQuery = SELECT 1 FROM DUAL
#jdbc_url = jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
#jdbc_username = root
#jdbc_password = root
#=================dbcp连接池end======================# #=================druid连接池的配置=================#
#Oracle数据库连接
#jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
#jdbc_username=renboqieqie
#jdbc_password=xxxx
#myssql数据库配置
#jdbc_driverClassName = com.mysql.jdbc.Driver
#validationQuery = SELECT 1 FROM DUAL
#jdbc_url = jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
#jdbc_username = root
#jdbc_password = root
#=================druid连接池的配置end=================# #===================c3p0连接池的配置===================#
#Oracle数据库连接
#jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
#jdbc_username=renboqieqie
#jdbc_password=xxxxx
#myssql数据库配置
#jdbc_driverClassName=com.mysql.jdbc.Driver
#jdbc_url=jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
#jdbc_username=root
#jdbc_password=root
#===================c3p0连接池的配置===================#
#===================proxool连接池的配置===================#
#Oracle数据库连接
#jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
#jdbc_username=renboqieqie
#jdbc_password=xxxxxx
#myssql数据库配置
jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
jdbc_username=root
jdbc_password=root
#===================proxool连接池的配置===================#
下面是spring-mybatis.xml的配置,即spring文件中的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
"> <!-- JNDI方式配置数据源 -->
<!-- <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="${jndiName}"></property> </bean> -->
<!-- ========================================配置数据源========================================= -->
<!-- 配置数据源,使用的是alibaba的Druid(德鲁伊)数据源 -->
<!-- <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url}"
/> <property name="username" value="${jdbc_username}" /> <property name="password"
value="${jdbc_password}" /> 初始化连接大小 <property name="initialSize" value="0"
/> 连接池最大使用连接数量 <property name="maxActive" value="20" /> 连接池最大空闲 <property
name="maxIdle" value="20" /> 连接池最小空闲 <property name="minIdle" value="0" />
获取连接最大等待时间 <property name="maxWait" value="60000" /> <property name="poolPreparedStatements"
value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize"
value="33" /> <property name="validationQuery" value="${validationQuery}"
/> <property name="testOnBorrow" value="false" /> <property name="testOnReturn"
value="false" /> <property name="testWhileIdle" value="true" /> 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
<property name="timeBetweenEvictionRunsMillis" value="60000" /> 配置一个连接在池中最小生存的时间,单位是毫秒
<property name="minEvictableIdleTimeMillis" value="25200000" /> 打开removeAbandoned功能
<property name="removeAbandoned" value="true" /> 1800秒,也就是30分钟 <property
name="removeAbandonedTimeout" value="1800" /> 关闭abanded连接时输出错误日志 <property
name="logAbandoned" value="true" /> 监控数据库 <property name="filters" value="stat"
/> </bean> --> <!-- ========================================分隔线========================================= -->
<!-- ========================================dbcp数据源========================================= -->
<!-- mysql的数据库中,localhost可以写成127.0.0.1,但是orcale的数据库不行,只能是localhost才能连接 -->
<!-- 配置dbcp数据源 -->
<!-- <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc_driverClassName}"/> <property
name="url" value="${jdbc_url}"/> <property name="username" value="${jdbc_username}"/>
<property name="password" value="${jdbc_password}"/> 池启动时创建的连接数量 <property
name="initialSize" value="5"/> 同一时间可以从池分配的最多连接数量。设置为0时表示无限制。 <property name="maxActive"
value="30"/> 池里不会被释放的最多空闲连接数量。设置为0时表示无限制。 <property name="maxIdle" value="20"/>
在不新建连接的条件下,池中保持空闲的最少连接数。 <property name="minIdle" value="3"/> 设置自动回收超时连接
<property name="removeAbandoned" value="true" /> 自动回收超时时间(以秒数为单位) <property
name="removeAbandonedTimeout" value="200"/> 设置在自动回收超时连接的时候打印连接的超时错误 <property
name="logAbandoned" value="true"/> 等待超时以毫秒为单位,在抛出异常之前,池等待连接被回收的最长时间(当没有可用连接时)。设置为-1表示无限等待。
<property name="maxWait" value="100"/> </bean> -->
<!-- ========================================分隔线========================================= -->
<!-- ========================================c3p0数据源的配置=============================== -->
<!--2 配置C3P0数据源 -->
<!-- c3p0连接池配置 -->
<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
用户名
<property name="user" value="${jdbc_username}"/>
用户密码
<property name="password" value="${jdbc_password}"/>
<property name="driverClass" value="${jdbc_driverClassName}"/>
<property name="jdbcUrl" value="${jdbc_url}"/> 连接池中保留的最大连接数。默认值: 15
<property name="maxPoolSize" value="20"/>
连接池中保留的最小连接数,默认为:3
<property name="minPoolSize" value="2"/>
初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3
<property name="initialPoolSize" value="2"/> 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0
<property name="maxIdleTime" value="60"/> 当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0
<property name="checkoutTimeout" value="3000"/> 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3
<property name="acquireIncrement" value="2"/> 定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次
<property name="acquireRetryAttempts" value="0"/> 重新尝试的时间间隔,默认为:1000毫秒
<property name="acquireRetryDelay" value="1000" /> 关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务
<property name="autoCommitOnClose" value="false"/> c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。默认值: null
<property name="automaticTestTable" value="Test"/> 如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false
<property name="breakAfterAcquireFailure" value="false"/> 每60秒检查所有连接池中的空闲连接。默认值: 0,不检查
<property name="idleConnectionTestPeriod" value="60"/>
c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0
<property name="maxStatements" value="100"/>
maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0
<property name="maxStatementsPerConnection" value="0"/>
</bean> --> <!-- ========================================分隔线========================================= -->
<!-- ========================================proxool数据源================================== -->
<bean id="dataSource"
class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver" value="${jdbc_driverClassName}"/>
<property name="driverUrl" value="${jdbc_url}"/>
<property name="user" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />
<property name="alias" value="Pool_dbname" />
<property name="houseKeepingSleepTime" value="90000" />
<property name="prototypeCount" value="0" />
<property name="maximumConnectionCount" value="50" />
<property name="minimumConnectionCount" value="2" />
<property name="simultaneousBuildThrottle" value="50" />
<property name="maximumConnectionLifetime" value="14400000" />
<property name="houseKeepingTestSql" value="select CURRENT_DATE" />
</bean>
<!-- ========================================分隔线========================================= -->
<!-- ========================================针对myBatis的配置项============================== -->
<!-- 配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL映射文件 -->
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描me/gacl/mapping/目录下的所有SQL映射的xml文件, 省掉Configuration.xml里的手工配置 value="classpath:me/gacl/mapping/*.xml"指的是classpath(类路径)下me.gacl.mapping包中的所有xml文件
UserMapper.xml位于me.gacl.mapping包下,这样UserMapper.xml就可以被自动扫描 -->
<property name="mapperLocations" value="classpath:win/qieqie/mapping/*.xml" />
</bean>
<!-- 配置扫描器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 扫描me.qieqie.dao这个包以及它的子包下的所有映射接口类 -->
<property name="basePackage" value="win.qieqie.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean> <!-- ========================================分隔线========================================= -->
<!-- 配置Spring的事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> <!-- 注解方式配置事物 -->
<!-- <tx:annotation-driven transaction-manager="transactionManager" /> --> <!-- 拦截器方式配置事物 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="append*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="repair" propagation="REQUIRED" />
<tx:method name="delAndRepair" propagation="REQUIRED" /> <tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="load*" propagation="SUPPORTS" />
<tx:method name="search*" propagation="SUPPORTS" />
<tx:method name="datagrid*" propagation="SUPPORTS" /> <tx:method name="*" propagation="SUPPORTS" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionPointcut"
expression="execution(* win.qieqie.service..*Impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut"
advice-ref="transactionAdvice" />
</aop:config> <!-- 配置druid监控spring jdbc -->
<bean id="druid-stat-interceptor"
class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
</bean>
<bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"
scope="prototype">
<property name="patterns">
<list>
<value>me.gacl.service.*</value>
</list>
</property>
</bean>
<aop:config>
<aop:advisor advice-ref="druid-stat-interceptor"
pointcut-ref="druid-stat-pointcut" />
</aop:config> </beans>
下面来说jar,有很多次测试不通过,
druid,是因为mybatis的dao和xml没有匹配,需要druid.jar就可以
dbcp,这个比较顺利,只需要一个commons-dbcp.jar就可以了
c3p0,这个最不顺利,网上好多教程都至引入了一个包其实是需要两个包的,c3p0.jar和mchange-commons-java
proxool,这个最开始的时候是不顺利的后来也是引入了两个jar,proxool-cglib.jar和proxool.jar.才型
spring下,druid,c3p0,proxool,dbcp四个数据连接池的使用和配置的更多相关文章
- JDBC、DBCP、C3P0、jdbc-pool--链接方式?连接池?
连接方式: java连接数据库的四种方式 - Cece_2012的专栏 - CSDN博客http://blog.csdn.net/cece_2012/article/details/7485482 J ...
- spring boot配置druid数据连接池
Druid是阿里巴巴开源项目中一个数据库连接池. Druid是一个jdbc组合,包含三个部分, 1.DruidDriver代理Driver,能够提供基于Filter-Chain模式得插件体系2.Dru ...
- C3P0连接池详解及配置
C3P0连接池详解及配置 本人使用的C3P0的jar包是:c3p0-0.9.1.jar <bean id = "dataSource" class = "com.m ...
- SpringBoot整合Druid数据连接池
SpringBoot整合Druid数据连接池 Druid是什么? Druid是Alibaba开源的的数据库连接池.Druid能够提供强大的监控和扩展功能. 在哪里下载druid maven中央仓库: ...
- 记录一个简单的dbcp数据连接池
这个示例用到了ThreadLocal与dbcp,我觉得有点意思,就整理了下.使用dbcp,肯定要导入commons-dbcp.jar包.下面直接贴DBUtil代码: public class DBUt ...
- jdbc数据连接池dbcp要导入的jar包
jdbc数据连接池dbcp要导入的jar包 只用导入commons-dbcp-x.y.z.jarcommons-pool-a.b.jar
- c3p0 数据连接池 流行开源
注意事项:配置文件规定命名,不能更改 c3p0-config <?xml version="1.0" encoding="UTF-8"?>< ...
- DBCP连接池原理分析及配置用法
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...
- 【SpringBoot笔记】SpringBoot整合Druid数据连接池
废话少说,按SpringBoot的老套路来. [step1]:添加依赖 <!-- 数据库连接池 --> <dependency> <groupId>com.alib ...
随机推荐
- iOS使用正则匹配限制输入密码格式
1.代码实现"密码至少为9位,并需包含大写字母.小写字母.数字或特殊字符等三种" 返回0.1.2为格式不正确,返回4为密码格式正确 -(int)checkIsHaveNumAndL ...
- Java基础 - 输出
输出在各个开发语言中起着至关重要的作用,方便编写代码时进行调试,在java中使用 System.out.println 进行输出 public class Main { public static v ...
- ElasticSearch(三十)基于scoll+bulk+索引别名实现零停机重建索引
1.为什么要重建索引? 总结,一个type下的mapping中的filed不能被修改,所以如果需要修改,则需要重建索引 2.怎么zero time重建索引? 一个field的设置是不能被修改的,如果要 ...
- [note]BSGS & exBSGS
BSGS (感觉这东西还是要写一下) BSGS主要用于求解形如\(x^k=y\pmod p\)(注意这里p与x互质)这样的方程的最小正整数解的问题 设\(m=\lceil\sqrt p\rceil,k ...
- 用cocos2d-html5做的消除类游戏《英雄爱消除》(3)——游戏主界面
游戏主界面,同时也是主程序,包括sprite的生成加入以及游戏状态的控制. 下面同样贴下源码再讲解; /** * Power by html5中文网(html5china.com) * author: ...
- php添加或升级扩展模块步骤
php添加或升级扩展模块步骤: 1).下载对应扩展的稳定版源码包2).进入到解压后的源码包执行: sudo /usr/local/php/bin/phpize //对应安装到哪个php版本 sudo ...
- SDUT 1048 Digital Roots
Digital Roots Time Limit: 1000ms Memory limit: 65536K 题目描述 The digital root of a positive integer ...
- java入门了解06
1.进程 : (一)正在执行的程序称作为一个进程. 进程负责了内存空间的划分. (二)问题: windows号称是多任务的操作系统,那么windows是同时运行多个应用程序吗? 从宏观的角度: ...
- 复选框 ajax取得后台页面
首先判断是否勾选了复选框 $("input[name='product']").click(function () { if($(this).prop("checked& ...
- Codeforces Round #250 (Div. 2) A, B, C
A. The Child and Homework time limit per test 1 second memory limit per test 256 megabytes input sta ...