zoukankan      html  css  js  c++  java
  • c3p0、dbcp、tomcat jdbc pool 连接池区别(推荐使用jdbc pool)

     

    转载:

    c3p0、dbcp、tomcat jdbc pool 连接池区别(推荐使用jdbc pool) 

     分类:
       

    查看资料,得知dbcp和c3p0都是单线程的,在高并发的环境下性能会非常低下,

    决定换用tomcat自带的jdbc-pool,关于jdbc-pool的项目介绍

    区别参考链接:http://www.open-open.com/lib/view/open1329182303124.html

       <!--  class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" -->
        <!--  class="org.springframework.jdbc.datasource.DriverManagerDataSource" -->
           <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" parent="c3p0DataSource">
    
    
    
    
    

    Tomcat 在 7.0 以前的版本都是使用 commons-dbcp 做为连接池的实现,但是 dbcp 饱受诟病,原因有:

    1. dbcp 是单线程的,为了保证线程安全会锁整个连接池
    2. dbcp 性能不佳
    3. dbcp 太复杂,超过 60 个类
    4. dbcp 使用静态接口,在 JDK 1.6 编译有问题
    5. dbcp 发展滞后

    因此很多人会选择一些第三方的连接池组件,例如 c3p0 , bonecpdruid (@wenshao ) 等。

    为此,Tomcat 从 7.0 开始引入一个新的模块:Tomcat jdbc pool

    1. tomcat jdbc pool 近乎兼容 dbcp ,性能更高
    2. 异步方式获取连接
    3. tomcat jdbc pool 是 tomcat 的一个模块,基于 tomcat JULI,使用 Tomcat 的日志框架
    4. 使用 javax.sql.PooledConnection 接口获取连接
    5. 支持高并发应用环境
    6. 超简单,核心文件只有8个,比 c3p0 还
    7. 更好的空闲连接处理机制
    8. 支持 JMX
    9. 支持 XA Connection

    tomcat jdbc pool 的优点远不止这些,详情请看这里

    tomcat jdbc pool 可在 Tomcat 中直接使用,也可以在独立的应用中使用。

    推荐使用
    [html] view plain copy
    1. <!-- JDBC连接池 、数据源 -->  
    2.   
    3. <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource">  
    4.   <property name="driverClassName" value="${jdbc.driverClassName}" />  
    5.   <property name="url" value="${jdbc.url}" />  
    6.   <property name="username" value="${jdbc.username}" />  
    7.   <property name="password" value="${jdbc.password}" />  
    8.   <property name="testWhileIdle" value="true" />  
    9.   <property name="testOnBorrow" value="true" />  
    10.   <property name="testOnReturn" value="false" />  
    11.   <property name="validationQuery" value="SELECT 1" />  
    12.   <property name="validationInterval" value="30000" />  
    13.   <property name="timeBetweenEvictionRunsMillis" value="30000" />  
    14.   <property name="maxActive" value="100" />  
    15.   <property name="minIdle" value="2" />  
    16.   <property name="maxWait" value="10000" />  
    17.   <property name="initialSize" value="4" />  
    18.   <property name="removeAbandonedTimeout" value="60" />  
    19.   <property name="removeAbandoned" value="true" />  
    20.   <property name="logAbandoned" value="true" />  
    21.   <property name="minEvictableIdleTimeMillis" value="30000" />  
    22.   <property name="jmxEnabled" value="true" />  
    23. </bean>  

    引入Maven依赖:
    [html] view plain copy
    1. <dependency>  
    2.     <groupId>org.apache.tomcat</groupId>  
    3.     <artifactId>tomcat-jdbc</artifactId>  
    4.     <version>7.0.29</version>  
    5. </dependency>  
    6. <dependency>  
    7.     <groupId>org.apache.tomcat</groupId>  
    8.     <artifactId>tomcat-juli</artifactId>  
    9.     <version>7.0.29</version>  
    10. </dependency>  


    tomcat-dbcp与commons-dbcp有什么区别

    The default database connection pool implementation in Apache Tomcat relies on the libraries from the Apache Commons project. The following libraries are used:
    Commons DBCP
    Commons Pool
    These libraries are located in a single JAR at $CATALINA_HOME/lib/tomcat-dbcp.jar. However, only the classes needed for connection pooling have been included, and the packages have been renamed to avoid interfering with applications.
    以上是tomcat7.x的帮助文档,大意是tomcat-dbcp.jar包含了commons-dbcp和Commons Pool的内容,当然也只仅仅包含了需要数据库连接的部分,而不是全部
  • 相关阅读:
    窗口宽高 滚动条滚动距离 元素的文档坐标和窗口坐标
    parentNode parentElement childNodes children
    ffmpeg 提取mp3
    Linux修改时区的正确方法
    pip
    wireguard
    Nextcloud挂载谷歌云盘搭建
    ts合并
    screen
    google drive
  • 原文地址:https://www.cnblogs.com/cci8go/p/8683254.html
Copyright © 2011-2022 走看看