zoukankan      html  css  js  c++  java
  • spring下,druid,c3p0,proxool,dbcp四个数据连接池的使用和配置

    由于那天Oracle的数据连接是只能使用dbcp的数据库连接池才连接上了,所以决定试一下当下所有得数据库连接池连接orcale和mysql,先上代码

    配置文件的代码

     1 #=================dbcp连接池======================#
     2 #Oracle数据库连接
     3 #jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
     4 #jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
     5 #jdbc_username=renboqieqie
     6 #jdbc_password=xxxxx
     7 #myssql数据库配置
     8 
     9 #jdbc_driverClassName = com.mysql.jdbc.Driver
    10 #validationQuery = SELECT 1 FROM DUAL
    11 #jdbc_url = jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
    12 #jdbc_username = root
    13 #jdbc_password = root
    14 #=================dbcp连接池end======================#
    15 
    16 
    17 #=================druid连接池的配置=================#
    18 #Oracle数据库连接
    19 #jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
    20 #jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
    21 #jdbc_username=renboqieqie
    22 #jdbc_password=xxxx
    23 #myssql数据库配置
    24 #jdbc_driverClassName = com.mysql.jdbc.Driver
    25 #validationQuery = SELECT 1 FROM DUAL
    26 #jdbc_url = jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
    27 #jdbc_username = root
    28 #jdbc_password = root
    29 #=================druid连接池的配置end=================#
    30 
    31 
    32 #===================c3p0连接池的配置===================#
    33 #Oracle数据库连接
    34 #jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
    35 #jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
    36 #jdbc_username=renboqieqie
    37 #jdbc_password=xxxxx
    38 #myssql数据库配置
    39 #jdbc_driverClassName=com.mysql.jdbc.Driver
    40 #jdbc_url=jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
    41 #jdbc_username=root
    42 #jdbc_password=root
    43 #===================c3p0连接池的配置===================#
    44 #===================proxool连接池的配置===================#
    45 #Oracle数据库连接
    46 #jdbc_driverClassName=oracle.jdbc.driver.OracleDriver
    47 #jdbc_url=jdbc:oracle:thin:@localhost:1521:mydatabase
    48 #jdbc_username=renboqieqie
    49 #jdbc_password=xxxxxx
    50 #myssql数据库配置
    51 jdbc_driverClassName=com.mysql.jdbc.Driver
    52 jdbc_url=jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
    53 jdbc_username=root
    54 jdbc_password=root
    55 #===================proxool连接池的配置===================#

    下面是spring-mybatis.xml的配置,即spring文件中的配置

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <beans xmlns="http://www.springframework.org/schema/beans"
      3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
      4     xmlns:aop="http://www.springframework.org/schema/aop"
      5     xsi:schemaLocation="
      6 http://www.springframework.org/schema/beans 
      7 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      8 http://www.springframework.org/schema/tx 
      9 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     10 http://www.springframework.org/schema/aop 
     11 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
     12 ">
     13 
     14     <!-- JNDI方式配置数据源 -->
     15     <!-- <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     16         <property name="jndiName" value="${jndiName}"></property> </bean> -->
     17     <!-- ========================================配置数据源========================================= -->
     18     <!-- 配置数据源,使用的是alibaba的Druid(德鲁伊)数据源 -->
     19     <!-- <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" 
     20         init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url}" 
     21         /> <property name="username" value="${jdbc_username}" /> <property name="password" 
     22         value="${jdbc_password}" /> 初始化连接大小 <property name="initialSize" value="0" 
     23         /> 连接池最大使用连接数量 <property name="maxActive" value="20" /> 连接池最大空闲 <property 
     24         name="maxIdle" value="20" /> 连接池最小空闲 <property name="minIdle" value="0" /> 
     25         获取连接最大等待时间 <property name="maxWait" value="60000" /> <property name="poolPreparedStatements" 
     26         value="true" /> <property name="maxPoolPreparedStatementPerConnectionSize" 
     27         value="33" /> <property name="validationQuery" value="${validationQuery}" 
     28         /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" 
     29         value="false" /> <property name="testWhileIdle" value="true" /> 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 
     30         <property name="timeBetweenEvictionRunsMillis" value="60000" /> 配置一个连接在池中最小生存的时间,单位是毫秒 
     31         <property name="minEvictableIdleTimeMillis" value="25200000" /> 打开removeAbandoned功能 
     32         <property name="removeAbandoned" value="true" /> 1800秒,也就是30分钟 <property 
     33         name="removeAbandonedTimeout" value="1800" /> 关闭abanded连接时输出错误日志 <property 
     34         name="logAbandoned" value="true" /> 监控数据库 <property name="filters" value="stat" 
     35         /> </bean> -->
     36 
     37     <!-- ========================================分隔线========================================= -->
     38     <!-- ========================================dbcp数据源========================================= -->
     39     <!-- mysql的数据库中,localhost可以写成127.0.0.1,但是orcale的数据库不行,只能是localhost才能连接 -->
     40     <!-- 配置dbcp数据源 -->
     41     <!-- <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> 
     42         <property name="driverClassName" value="${jdbc_driverClassName}"/> <property 
     43         name="url" value="${jdbc_url}"/> <property name="username" value="${jdbc_username}"/> 
     44         <property name="password" value="${jdbc_password}"/> 池启动时创建的连接数量 <property 
     45         name="initialSize" value="5"/> 同一时间可以从池分配的最多连接数量。设置为0时表示无限制。 <property name="maxActive" 
     46         value="30"/> 池里不会被释放的最多空闲连接数量。设置为0时表示无限制。 <property name="maxIdle" value="20"/> 
     47         在不新建连接的条件下,池中保持空闲的最少连接数。 <property name="minIdle" value="3"/> 设置自动回收超时连接 
     48         <property name="removeAbandoned" value="true" /> 自动回收超时时间(以秒数为单位) <property 
     49         name="removeAbandonedTimeout" value="200"/> 设置在自动回收超时连接的时候打印连接的超时错误 <property 
     50         name="logAbandoned" value="true"/> 等待超时以毫秒为单位,在抛出异常之前,池等待连接被回收的最长时间(当没有可用连接时)。设置为-1表示无限等待。 
     51         <property name="maxWait" value="100"/> </bean> -->
     52     <!-- ========================================分隔线========================================= -->
     53     <!-- ========================================c3p0数据源的配置=============================== -->
     54     <!--2 配置C3P0数据源 -->
     55     <!-- c3p0连接池配置 -->  
     56      <!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
     57           用户名  
     58           <property name="user" value="${jdbc_username}"/>  
     59           用户密码  
     60           <property name="password" value="${jdbc_password}"/>  
     61           <property name="driverClass" value="${jdbc_driverClassName}"/>  
     62           <property name="jdbcUrl" value="${jdbc_url}"/>  
     63   
     64            连接池中保留的最大连接数。默认值: 15   
     65           <property name="maxPoolSize" value="20"/>  
     66           连接池中保留的最小连接数,默认为:3  
     67           <property name="minPoolSize" value="2"/>  
     68           初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3  
     69           <property name="initialPoolSize" value="2"/>  
     70   
     71           最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0   
     72           <property name="maxIdleTime" value="60"/>
     73             
     74           当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0   
     75           <property name="checkoutTimeout" value="3000"/>  
     76             
     77           当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3   
     78           <property name="acquireIncrement" value="2"/>  
     79   
     80          定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次   
     81           <property name="acquireRetryAttempts" value="0"/>  
     82   
     83           重新尝试的时间间隔,默认为:1000毫秒   
     84           <property name="acquireRetryDelay" value="1000" />  
     85   
     86           关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务   
     87           <property name="autoCommitOnClose" value="false"/>  
     88   
     89           c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。默认值: null   
     90           <property name="automaticTestTable" value="Test"/>  
     91   
     92           如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false   
     93           <property name="breakAfterAcquireFailure" value="false"/>  
     94   
     95           每60秒检查所有连接池中的空闲连接。默认值: 0,不检查   
     96           <property name="idleConnectionTestPeriod" value="60"/>  
     97           c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0   
     98           <property name="maxStatements" value="100"/> 
     99           maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0   
    100           <property name="maxStatementsPerConnection" value="0"/>  
    101      </bean>   -->
    102 
    103     <!-- ========================================分隔线========================================= -->
    104     <!-- ========================================proxool数据源================================== -->
    105 <bean id="dataSource"
    106     class="org.logicalcobwebs.proxool.ProxoolDataSource">
    107     <property name="driver" value="${jdbc_driverClassName}"/>
    108     <property name="driverUrl" value="${jdbc_url}"/>
    109     <property name="user" value="${jdbc_username}" />
    110     <property name="password" value="${jdbc_password}" />
    111     <property name="alias" value="Pool_dbname" />
    112     <property name="houseKeepingSleepTime" value="90000" />
    113     <property name="prototypeCount" value="0" />
    114     <property name="maximumConnectionCount" value="50" />
    115     <property name="minimumConnectionCount" value="2" />
    116     <property name="simultaneousBuildThrottle" value="50" />
    117     <property name="maximumConnectionLifetime" value="14400000" />
    118     <property name="houseKeepingTestSql" value="select CURRENT_DATE" />
    119 </bean>
    120     <!-- ========================================分隔线========================================= -->
    121     <!-- ========================================针对myBatis的配置项============================== -->
    122     <!-- 配置sqlSessionFactory -->
    123     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    124         <!-- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL映射文件 -->
    125         <property name="dataSource" ref="dataSource" />
    126         <!-- 自动扫描me/gacl/mapping/目录下的所有SQL映射的xml文件, 省掉Configuration.xml里的手工配置 value="classpath:me/gacl/mapping/*.xml"指的是classpath(类路径)下me.gacl.mapping包中的所有xml文件 
    127             UserMapper.xml位于me.gacl.mapping包下,这样UserMapper.xml就可以被自动扫描 -->
    128         <property name="mapperLocations" value="classpath:win/qieqie/mapping/*.xml" />
    129     </bean>
    130     <!-- 配置扫描器 -->
    131     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    132         <!-- 扫描me.qieqie.dao这个包以及它的子包下的所有映射接口类 -->
    133         <property name="basePackage" value="win.qieqie.dao" />
    134         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    135     </bean>
    136 
    137     <!-- ========================================分隔线========================================= -->
    138     <!-- 配置Spring的事务管理器 -->
    139     <bean id="transactionManager"
    140         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    141         <property name="dataSource" ref="dataSource" />
    142     </bean>
    143 
    144     <!-- 注解方式配置事物 -->
    145     <!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->
    146 
    147     <!-- 拦截器方式配置事物 -->
    148     <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
    149         <tx:attributes>
    150             <tx:method name="add*" propagation="REQUIRED" />
    151             <tx:method name="append*" propagation="REQUIRED" />
    152             <tx:method name="insert*" propagation="REQUIRED" />
    153             <tx:method name="save*" propagation="REQUIRED" />
    154             <tx:method name="update*" propagation="REQUIRED" />
    155             <tx:method name="modify*" propagation="REQUIRED" />
    156             <tx:method name="edit*" propagation="REQUIRED" />
    157             <tx:method name="delete*" propagation="REQUIRED" />
    158             <tx:method name="remove*" propagation="REQUIRED" />
    159             <tx:method name="repair" propagation="REQUIRED" />
    160             <tx:method name="delAndRepair" propagation="REQUIRED" />
    161 
    162             <tx:method name="get*" propagation="SUPPORTS" />
    163             <tx:method name="find*" propagation="SUPPORTS" />
    164             <tx:method name="load*" propagation="SUPPORTS" />
    165             <tx:method name="search*" propagation="SUPPORTS" />
    166             <tx:method name="datagrid*" propagation="SUPPORTS" />
    167 
    168             <tx:method name="*" propagation="SUPPORTS" />
    169         </tx:attributes>
    170     </tx:advice>
    171     <aop:config>
    172         <aop:pointcut id="transactionPointcut"
    173             expression="execution(* win.qieqie.service..*Impl.*(..))" />
    174         <aop:advisor pointcut-ref="transactionPointcut"
    175             advice-ref="transactionAdvice" />
    176     </aop:config>
    177 
    178 
    179     <!-- 配置druid监控spring jdbc -->
    180     <bean id="druid-stat-interceptor"
    181         class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
    182     </bean>
    183     <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"
    184         scope="prototype">
    185         <property name="patterns">
    186             <list>
    187                 <value>me.gacl.service.*</value>
    188             </list>
    189         </property>
    190     </bean>
    191     <aop:config>
    192         <aop:advisor advice-ref="druid-stat-interceptor"
    193             pointcut-ref="druid-stat-pointcut" />
    194     </aop:config>
    195 
    196 </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.才型

  • 相关阅读:
    Eagle+微力同步实现素材资源协同共享
    Eagle+欧奥PicHome创建私有的pinterest网站
    C# 从Json中获取byte[] 二进制数据
    Vivado SDK 2016.4改JTAG速度
    启动jmeter,提示:unable to access jarfile apacheJmeter.jar
    直播来啦!亮相微软平台,聊聊Dapr的落地应用
    互斥锁、自旋锁、读写锁...理清它们的区别和应用
    行云创新:云原生技术助力企业数字化转型
    行云创新亮相“OSCAR开源产业大会”:云调试加速应用创新
    Actor模型是如何让编写并发系统变得更简单的?
  • 原文地址:https://www.cnblogs.com/renboqie/p/5665454.html
Copyright © 2011-2022 走看看