天道酬勤,学无止境

c3p0连接池配置模板,SSM中使用c3p0连接池配置属性

文章目录

    • 1. SSM使用c3p0连接池
      • 1.1 配置c3p0.properties属性文件
      • 1.2 Spring核心配置文件中配置applicationContext.xml
    • 2. c3p0-config.xml

1. SSM使用c3p0连接池

1.1 配置c3p0.properties属性文件

#c3p0连接池属性文件
# 四大基本信息
c3p0.driverClass=com.mysql.jdbc.Driver
#这里需要改成你自己的数据库名称 和 数据库连接用户名和密码
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&useSSL=false
c3p0.user=root
c3p0.password=root

# 初始化连接数  取值要在minPoolSize和maxPoolSize之间(可包含,闭区间) 默认值:3
c3p0.initialPoolSize=10
# 最大连接数 (连接池中的连接数不能超过maxPoolSize最大连接数) 默认值:15
c3p0.maxPoolSize=50
#最小连接数  默认值:3
c3p0.minPoolSize=5
#c3p0连接池中数据连接不够时(无空闲连接可用),一次增长的个数(增长不能超过maxPoolSize最大连接个数) 默认值:3
c3p0.acquireIncrement=5
#连接的最大空闲时间,如果超过这个时间还没有被使用,就断开这个连接(设置为0或负数,就永远都不会被断开) 单位:秒  默认值 :0
c3p0.maxIdleTime=600
#从数据库获取新连接失败后重复尝试的次数。小于等于0表示无限次  默认值: 30
c3p0.acquireRetryAttempts=30
#两次连接的中间间隔时间(重新尝试的时间间隔)  单位:毫秒  默认值:1000
c3p0.acquireRetryDelay=1000
#连接关闭时,是否将所有未提交的操作进行事务回滚  默认值:false
c3p0.autoCommitOnClose = false
#当连接池用完时,客户端调用getConnection()后等待获取新连接的时间  单位:毫秒  默认值:0 (无限期等待)  按照设置的值,超时将抛出SQLException异常
c3p0.checkoutTimeout = 0
#每隔多少秒检查所有连接池中的空闲连接  单位:秒   默认值:0
c3p0.idleConnectionTestPeriod=60
#配置PreparedStatement缓存,设置连接池为数据源缓存的PreparedStatement的总数,为0的时候不缓存,同时maxStatementsPerConnection的配置无效。
# 由于PreparedStatement属于单个Connection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement来计算
c3p0.maxStatements=1000

# 连接池为数据源单个Connection缓存的PreparedStatement数,这个配置比maxStatements更有意义,因为它缓存的服务对象是单个数据连接,如果设置的好,肯定是可以提高性能的。为0的时候不缓存。
# c3p0.maxStatementsPerConnection
#配置连接的生存时间,超过这个时间的连接将由连接池自动断开丢弃掉。当然正在使用的连接不会马上断开,而是等待它close再断开。配置为0的时候则不会对连接的生存时间进行限制。默认值0
#c3p0.maxConnectionAge
#这个配置主要是为了减轻连接池的负载,配置不为0,则会将连接池中的连接数量保持到minPoolSize,为0则不处理。
#maxIdleTimeExcessConnections

1.2 Spring核心配置文件中配置applicationContext.xml

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 连接池4大组件 -->
        <property name="driverClass" value="${c3p0.driverClass}"/>
        <property name="jdbcUrl" value="${c3p0.jdbcUrl}"/>
        <property name="user" value="${c3p0.user}"/>
        <property name="password" value="${c3p0.password}"/>

        <!--初始化连接数  取值要在minPoolSize和maxPoolSize之间(可包含,闭区间) 默认值:3 -->
        <property name="initialPoolSize" value="${c3p0.initialPoolSize}"/>
        <!-- 最大连接数 (连接池中的连接数不能超过maxPoolSize最大连接数) 默认值:15-->
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
        <!--最小连接数  默认值:3  -->
        <property name="minPoolSize" value="${c3p0.minPoolSize}"/>
        <!-- c3p0连接池中数据连接不够时(无空闲连接可用),一次增长的个数(增长不能超过maxPoolSize最大连接个数) 默认值:3 -->
        <property name="acquireIncrement" value="${c3p0.acquireIncrement}"/>
        <!-- 连接的最大空闲时间,如果超过这个时间还没有被使用,就断开这个连接(设置为0或负数,就永远都不会被断开) 单位:秒  默认值 :0 -->
        <property name="maxIdleTime" value="${c3p0.maxIdleTime}"/>

        <!-- 从数据库获取新连接失败后重复尝试的次数。小于等于0表示无限次  默认值: 30-->
        <property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
        <!-- 两次连接的中间间隔时间(重新尝试的时间间隔)  单位:毫秒  默认值:1000 -->
        <property name="acquireRetryDelay" value="${c3p0.acquireRetryDelay}"/>
        <!-- 连接关闭时,是否将所有未提交的操作进行事务回滚  默认值:false -->
        <property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
        <!-- 当连接池用完时,客户端调用getConnection()后等待获取新连接的时间  单位:毫秒  默认值:0
                如果值设为 0,将无限期等待,直到有空闲连接。  否则按照设置的值,超时将抛出SQLException异常
                时间设置过小时会出现连接超时,这样会抛出SQLException异常,设置时间时需要小心,按照实际情况设置适当的值-->
        <property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
        <!-- 每隔多少秒检查所有连接池中的空闲连接  单位:秒   默认值:0 -->
        <property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}"/>

        <!-- 配置PreparedStatement缓存,设置连接池为数据源缓存的PreparedStatement的总数
                为0的时候不缓存,同时maxStatementsPerConnection的配置无效。
               由于PreparedStatement属于单个Connection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement来计算-->
        <property name="maxStatements" value="${c3p0.maxStatements}"/>

    </bean>

2. c3p0-config.xml

这种通过创建自己的连接池工具类使用

<c3p0-config>
    <!-- c3p0连接池配置 -->
    <default-config>
        <!--默认是mysql数据库-->
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/ssm?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</property>
        <!-- 数据库的用户名  默认值:null -->
        <property name="user">root</property>
        <!-- 数据库的密码  默认值:null -->
        <property name="password">861221293</property>


        <!--初始化连接数  取值要在minPoolSize和maxPoolSize之间(可包含,闭区间) 默认值:3 -->
        <property name="initialPoolSize">5</property>
        <!-- 最大连接数 (连接池中的连接数不能超过maxPoolSize最大连接数) 默认值:15-->
        <property name="maxPoolSize">50</property>
        <!--最小连接数  默认值:3  -->
        <property name="minPoolSize">10</property>

        <!-- c3p0连接池中数据连接不够时(无空闲连接可用),一次增长的个数(增长不能超过maxPoolSize最大连接个数) 默认值:3 -->
        <property name="acquireIncrement">5</property>
        <!-- 连接的最大空闲时间,如果超过这个时间还没有被使用,就断开这个连接(设置为0或负数,就永远都不会被断开) 单位:秒  默认值 :0 -->
        <property name="maxIdleTime">600</property>

        <!-- 从数据库获取新连接失败后重复尝试的次数。小于等于0表示无限次  默认值: 30-->
        <property name="acquireRetryAttempts" value="30"/>
        <!-- 两次连接的中间间隔时间(重新尝试的时间间隔)  单位:毫秒  默认值:1000 -->
        <property name="acquireRetryDelay">1000</property>
        <!-- 连接关闭时,是否将所有未提交的操作进行事务回滚  默认值:false -->
        <property name="autoCommitOnClose">false</property>
        <!-- 当连接池用完时,客户端调用getConnection()后等待获取新连接的时间  单位:毫秒  默认值:0
                如果值设为 0,将无限期等待,直到有空闲连接。  否则按照设置的值,超时将抛出SQLException异常
                时间设置过小时会出现连接超时,这样会抛出SQLException异常,设置时间时需要小心,按照实际情况设置适当的值-->
        <property name="checkoutTimeout">0</property>
        <!-- 每隔多少秒检查所有连接池中的空闲连接  单位:秒   默认值:0 -->
        <property name="idleConnectionTestPeriod">60</property>

        <!-- 配置PreparedStatement缓存,设置连接池为数据源缓存的PreparedStatement的总数
                为0的时候不缓存,同时maxStatementsPerConnection的配置无效。
               由于PreparedStatement属于单个Connection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement来计算-->
        <property name="maxStatements">1000</property>

    </default-config>
</c3p0-config>

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Spring Boot使用hikari、druid、c3p0等数据库连接池详解
    文章目录 前言Hikari连接池Druid连接池Druid(新版starter)连接池C3P0连接池(1C3P0连接池(2扩展 前言 截至Spring Boot V2.0为止,官方仅为下列数据库连接池产品提供了自动配置的支持。 # Hikari 数据库连接池 spring.datasource.hikari.* # Tomcat 数据库连接池 spring.datasource.tomcat.* # DBCP2 数据库连接池 spring.datasource.dbcp2.* Hikari连接池 Spring Boot V2.0以后默认数据库连接池是Hikari,所以引用spring-boot-starter-parent依赖后就无需加专门依赖了。Hikari是速度最快、性能最强的连接池,但功能没有druid连接池齐全 spring: datasource: # jdbc配置 driver-class-name: com.mysql.cj.jdbc.Driver username: root password: root url: jdbc:mysql://localhost:3306/o2o?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC 👉新建个测试类👉打断点Debug测试一下
  • Javaweb 之 数据库连接池
    数据库连接池 一、数据库连接池 1. 数据库连接池的概念 用池来管理Connection,这可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。 2. JDBC数据库连接池接口(DataSource) Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商可以让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池! 二、DBCP 1. 什么是DBCP? DBCP是Apache提供的一款开源免费的数据库连接池! 2. DBCP的使用 /** * DBCP连接池 */ public void test() throws SQLException { //创建新的连接池对象 BasicDataSource ds = new BasicDataSource(); //配置基本参数 ds.setUsername("root"); ds.setPassword("0000"); ds.setUrl("jdbc:mysql://localhost:3306/test")
  • 主流数据库连接池配置信息梳理
    前言: 本文主要针对c3p0、dbcp、druid、hikariCP主流数据库连接池,进行参数配置信息梳理。 基础的参数配置: name:连接池用户自定义名称(经测试c3p0无该属性,hikariCP为poolname)driverClass : 数据库驱动(比如com.mysql.cj.jdbc.Driver,或者oracle数据库的驱动)jdbcUrl: jdbc数据库连接地址(例如jdbc:mysql://localhost:3306/test)username:数据库用户名password:和数据库用户名对应的数据库密码 **连接数信息的相关配置: 注意事项: DBCP连接池中maxIdle值与maxActive值应配置的接近,当连接数超过maxIdle值后,结束使用的连接会立即被销毁个人觉得是因为maxIdle和maxActive两个参数太过于烧脑,druid中maxIdle参数已取消使用,即使配置了也不生效 连接池名称参数参数解释默认值druid、dbcp、c3p0initialSize、initialSize、initialPoolSize初始化连接数0、0、3druid、dbcp、c3p0、hikariCPmaxActive、maxActive、maxPoolSize、maximumPoolSize最大连接数8、8、15、10druid、dbcp、c3p0
  • 数据库连接池技术之C3p0和Druid
    数据库连接池 基本思想: 就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。 数据库连接池的技术优点: 资源重用 更快的系统反应速度统一的连接管理,避免数据库连接泄漏 简单介绍多种开源的数据库连接池 JDBC 的数据库连接池使用 javax.sql.DataSource 来表示,DataSource 只是一个接口,它与Driver类似,该接口通常由服务器(Weblogic, WebSphere, Tomcat)提供实现,也有一些开源组织提供 实现 。 DBCP 是Apache提供的数据库连接池。tomcat 服务器自带dbcp数据库连接池。速度相对c3p0较快,但因自身存在BUG,Hibernate3已不再提供支持C3P0 是一个开源组织提供的一个数据库连接池,速度相对较慢,稳定性还可以。hibernate官方推荐使用Druid 是阿里提供的数据库连接池,据说是集DBCP 、C3P0 、Proxool 优点于一身的数据库连接池,但是速度不确定是否有BoneCP快BoneCP 是一个开源组织提供的数据库连接池,速度快 DataSource DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把 DataSource
  • 数据库连接池Druid &与dbcp、c3p0的区别
    Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 1. DruidDataSource配置 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性 url、user、password --> <property name="url" value="${jdbc_url}" /> <property name="username" value="${jdbc_user}" /> <property name="password" value="${jdbc_password}" /> <!-- 配置监控统计拦截的filters, 监控统计:"stat",防SQL注入:"wall",组合使用: "stat,wall" --> <property name="filters" value="stat" /> <!-- 配置初始化连接数、最大连接数、最小连接数 --> <property name="initialSize" value="1" /> <property name="maxActive" value="20" /> <property name=
  • SSM项目配置文件模板:spring配置模板,springmvc配置模板,web.xml模板,数据库配置文件,log4j配置文件
    SSM项目和springboot.相比,其中SSM项目的配置文件一般都比较麻烦,这里是我自己使用的SSM项目的配置模板,大家可以参考一下 1.spring配置文件 文件名:applicationContext.xml <?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context
  • 数据库连接池c3p0和Druid
    数据库连接池c3p0和Druid 2018/8/10 今天将数据库连接池进行整理笔记 数据库连接池 1简介 概念:其实就是一个容器(集合),存放数据库连接的容器。 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。 好处: 节约资源用户访问高效 实现: 标准接口:DataSource javax.sql包下的 方法: 获取连接:getConnection()归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还连接 一般我们不去实现它,有数据库厂商来实现 C3P0:数据库连接池技术Druid:数据库连接池实现技术,由阿里巴巴提供的 接下来分别进行数据库连接池的操作 使用的数据库为SQLServer数据库 1.c3p0数据库连接池 步骤: 1. 导入jar包 (两个) c3p0-0.9.5.2.jar 和mchange-commons-java-0.2.12.jar * 不要忘记导入数据库驱动jar包 2. 定义配置文件: * 名称: c3p0.properties 或者 c3p0-config.xml * 路径:直接将文件放在src目录下即可(记住必须放在src目录下)。
  • c3p0 连接池,未对签入或签出进行测试(c3p0 connection pool without testing on either check-in or check-out)
    问题 来自 c3p0 文档: 对于某些应用程序,高性能比偶尔出现数据库异常的风险更重要。 在其默认配置中,c3p0 根本不进行连接测试。 设置一个相当长的idleConnectionTestPeriod ,并且根本不测试结帐和签入是一种出色的高性能方法。 如果我正确理解了 c3p0 配置属性的含义,如果数据库在短时间内变得不可用然后恢复(例如它重新启动或出现网络问题),并且如果连接的使用率相当高,在 c3p0 中汇集,以便没有连接空闲时间超过idleConnectionTestPeriod ,那么这些连接都不会被测试有效性,并且所有使用它们的尝试都将失败。 基本上,连接池不会从数据库不可用中自动恢复。 是否只是文档中的措辞不好,说明这是一种出色的高性能方法,而没有警告连接池失去从无效连接中自动恢复的能力,或者我误解了相关配置属性的含义? 回答1 呵呵。 我写的,可能是十多年前,你是对的,这不是一个好建议。 最初,c3p0 中的连接测试通常非常昂贵(因为 dbms/驱动程序独立性和完整有效性测试的确定性,它使用了昂贵的元数据 getTables(...) 测试),我强烈建议人们确保异步测试,在签入和空闲测试中。 一旦preferredTestQuery和 jdbc4 Connection.isValid() 使高效可靠的测试成为可能,我修改了文档以消除同步检查的阻碍。
  • Mysql超时重连解决方案3: 配置c3p0连接池(终极方案)
    前面的文章中,我介绍了修改mysql默认超时时间和配置proxool连接池的方法来解决Mysql超时重连的问题。方案1不推荐,它并没有从根本上解决问题;方案2可用,但配置相对复杂;所有才有了方案3,它既解决了关键问题,并且配置简单易懂。 c3p0连接池的testConnectionOnCheckout属性,类似于autoReconnect属性可自动保持数据库的连接,在获取连接时先检查连接是否有效(即检查Connection是否被mysql数据库关闭了),如果连接无效就重新建立一个新的连接。 C3P0连接池配置如下: 1、下载相关JAR包; 在Maven Repository中下载c3p0相关jar包,将c3p0-0.9.2.1.jar 拷贝至项目中。 2、在hibernate配置文件中,添加c3p0连接池配置,配置如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session
  • 数据库连接池(DBCP、C3P0、Druid); Commons DbUtils工具类库
    文章目录 数据库连接池一、DBCP连接池使用步骤:1、导入 jar包(commons-dbcp-1.4.jar和commons-pool-1.5.6.jar)2、配置信息采用硬编码方式采用配置文件方式Java代码配置文件 3、获取连接对象 二、C3P0连接池使用步骤:1、导入jar包(c3p0-0.9.1.2.jar)2、配置信息采用硬编码方式采用配置文件方式c3p0.propertiesc3p0-config.xml 3、获取连接对象 三、Druid 阿里德鲁伊连接池使用步骤:1、导入jar包(druid-1.1.9.jar)2、配置信息采用硬编码方式采用配置文件方式配置文件 3、获取连接对象 DBUtils 工具类库 数据库连接池 为什么要有连接池? ​ 由于建立数据库连接是一种非常耗时、耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,使用完毕后再归还到连接池中,能明显提高对数据库操作的性能。 一、DBCP连接池 ​ DBCP(DataBase Connection Pool)数据库连接池,是Java数据库连接池的一种,由Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开。 使用步骤: 1、导入 jar包(commons-dbcp-1.4.jar和commons-pool-1.5
  • c3p0连接池能否确保最大池大小?(Does c3p0 connection pooling ensures max pool size?)
    问题 我经历了几个问题,这有点相关,但没有回答我的问题。 c3p0连接池maxPoolSize是否可确保在特定时间的连接数不会超过此限制? 如果maxPoolSize=5并且10个用户完全同时开始使用该应用程序怎么办? 我的应用程式。 构型 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass"><value>${database.driverClassName}</value>/property> <property name="jdbcUrl"><value>${database.url}</value></property> <property name="user"><value>${database.username}</value></property> <property name="password"><value>${database.password}</value></property> <property name="initialPoolSize"><value>${database.initialPoolSize}</value>/property>
  • c3p0数据库连接池的配置与使用
    什么是数据库连接池? 用我自己的话理解,相当于在一个池子里获取到一些数据库连接对象, 随拿随用,用完不是丢掉,而是放回池子,实现了数据库操作对象的复用。 以前都是获取完一个数据库操作对象,用完就调用 .close()方法释放了资源, 下次用的时候,必须重新请求获取,频繁的请求和丢弃,造成程序运行效率低下。 最常用的数据库连接池有哪些? - c3p0(入门级,也是最常用的数据库连接池技术) - Druid(阿里巴巴, 目前最 NB 的数据库连接池技术) 使用 c3p0 前的配置? c3p0数据库连接池技术: 1.导入两个 jar 包 c3p0-0.9.5.2.jar 和 mchange-comments-java-0.2.12.jar 1.1 不要忘记导入数据库的驱动 jar 包 mysql-connector.jar 1.2 下载地址:c3p0下载:https://www.mchange.com/projects/c3p0 2.定义配置文件: 2.1 名称:c3p0.properties 或者 c3p0-config.xml(推荐) 2.2 路径:直接放在 src 目录下即可 3.创建核心对象 ==> 数据库连接池对象 ComboPooledDataSource 4.获取连接 getConnection 配置文件代码模板:提示: 超时时间单位是毫秒 ms , 我们设置为
  • 第8章:数据库连接池
    第8章:数据库连接池 8.1 JDBC数据库连接池的必要性8.2 数据库连接池技术8.3 多种开源的数据库连接池8.3.1 C3P0数据库连接池8.3.2 DBCP数据库连接池8.3.3 Druid(德鲁伊)数据库连接池 8.1 JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet、beans)中建立数据库连接进行sql操作断开数据库连接 这种模式开发,存在的问题: 普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s~1s的时间)。需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接。这样的方式将会消耗大量的资源和时间。数据库的连接资源并没有得到很好的重复利用若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将占用很多的系统资源,严重的甚至会造成服务器的崩溃。对于每一次数据库连接,使用完后都得断开否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将导致重启数据库。(回忆:何为Java的内存泄漏?)这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。 8.2 数据库连接池技术
  • 如何监视c3p0连接(How to monitor c3p0 connections)
    问题 我在JBoss战争中使用的是Hibernate,使用c3p0进行连接池,两者均在我的类路径的hibernate.cfg.xml配置文件中配置 <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 我看过server.log生成包含有关连接池的有趣信息的行: 调试[com.mchange.v2.resourcepool.BasicResourcePool]跟踪com.mchange.v2.resourcepool.BasicResourcePool@63f5e4b6 [管理:10,未使用:9,排除:0] 对于我的监视池(我正在使用nagios),我想提供一个JSP来告知正在使用的连接数和空闲的连接数,如日志文件所述。 我怎样才能问c3p0有多少个托管和未使用的连接? 回答1 您可以通过JMX监视连接池。 从文档中: 通过JMX配置和管理c3p0 如果您的环境中提供了JMX库和JMX MBeanServer(它们包含在JDK 1.5及更高版本中),则可以通过JMX管理工具(例如与jdk 1.5捆绑在一起的jconsole)检查和配置c3p0数据源。 您会发现c3p0在com.mchange.v2.c3p0下注册了MBean
  • JDBC - 第8章:数据库连接池
    数据库连接池 1 JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet、beans)中建立数据库连接进行sql操作断开数据库连接 这种模式开发,存在的问题: 普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection加载到内存中,再验证用户名和密码(得花费0.05s~1s的时间)。需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接。这样的方式将会消耗大量的资源和时间。数据库的连接资源并没有得到很好的重复利用。若同时有几百人甚至几千人在线,频繁的进行数据库连接操作将占用很多的系统资源,严重的甚至会造成服务器的崩溃。对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将导致重启数据库。(回忆:何为Java的内存泄漏?)这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。 2 数据库连接池技术 为解决传统开发中的数据库连接问题,可以采用数据库连接池技术。**数据库连接池的基本思想:**就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去
  • c3p0常用配置整理
    最新博客:牧云者 www.muyunzhe.com连接池基本配置initialPoolSize, minPoolSize, maxPoolSize定义了由池管理的连接数量。请确保minPoolSize<=maxPoolSize。不合理的initialPoolSize值将会被忽略,然后使用 minPoolSize来替代。容量和连接寿命配置 maxIdleTime定义了连接因在多少秒内未被使用而被连接池剔除的时间。maxConnectionAge决定了所有从数据库中获取的连接将在多少秒后被连接池剔除。maxIdleTimeExcessConnections用来最小化 c3p0 欠载(under load)时的连接数。默认情况下,在 c3p0 欠载时,c3p0 只会因连接测试失败或者连接过期而缩小池中的连接数。有一些用户需要在一些突然增大会连接数的操作之后快速地释放不必要的连接。你可以通过把maxIdleTimeExcessConnetions设定为一个比 maxIdleTime小得多的值来达到这个目的。超过最小连接数的那些连接会在较小的一段空闲时间之后被连接池剔除。连接测试配置idleConnetionTestPeriod, testConnectionOnCheckout和testConnectionOnCheckin 决定了连接何时被测试。automaticTestTable
  • 数据库连接池(C3P0,Druid)、Spring JDBC的基本使用(二)
    Content: 数据库连接池 C3P0:数据库连接池技术Druid:数据库连接池实现技术,由阿里巴巴提供的 Spring JDBC : JDBC Template 概念: 1)DBCP   DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。 2)c3p0   c3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。 3)Druid   阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个 SQL Parser。支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。Druid针对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,这是一个手写的高性能SQL Parser,支持Visitor模式
  • Spring 配置连接池丶JdbcTemplate丶事务丶HibernateTemplate
    1. 配置数据库连接池1.1 配置Spring的内置的连接池1.2 配置DBCP连接池1.3 配置C3P0连接池1.4 使用属性文件存储数据库信息 2. JdbcTemplate2.1 配置Spring的JDBC模版实例2.2 使用的JdbcTemplate的增删改操作2.3 查询返回单个值2.4 查询返回封装成对象的数据 3.Spring声明式事务(AOP)3.1 Spring配置3.2 转账例子3.3 注解事务 4. HibernateTemplate4.1 配置SSH环境4.2 Hibernate方法4.2 HibernateTemplate特有方法 1. 配置数据库连接池 1.1 配置Spring的内置的连接池 <!-- 配置Spring的内置的连接池 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test04"/> <property name="username" value="root"/
  • C3P0 的多个数据源(Multiple Data sources for C3P0)
    问题 我正在开发一个工具,它接收不同的连接参数来测试不同数据库中的值(jNRPE 中 Nagios 的一个插件,它保持与不同数据库的开放连接)。 因为配置是动态的(可能有更多的数据库或者它们可以被删除)我不能有一个配置文件。 我想知道每个数据库是否应该有一个 C3P0 实例,或者我是否可以使用相同的实例并在每次请求连接时更改 URL? 代码在 github:https://github.com/angoca/db2-jnrpe/blob/master/src/main/java/com/github/angoca/db2_jnrpe/database/pools/c3p0/DBCP_c3p0.java 如果没有,如何动态获取多个数据库的多个池? 回答1 您需要为每个 JDBC url 使用不同的 c3p0 数据源。 连接池必须包含同类连接:从客户端的角度来看,所有检出的连接必须是等效的。 如果来自多个数据库的连接包含在同一个池中,客户端将无法指定或知道它们正在与哪个数据库通信。 (如果您正在复制只读数据库,并且您确实希望来自多个源的连接存在于单个池中,因为从客户端的角度保证它们是等效的,您可以通过定义自定义, unpooled DataSource 循环或随机选择一个复制者,然后通过 c3p0 的 DataSources factory 将 DataSource 池化。)
  • Tomcat-bdcp连接池、dbcp、c3p0连接池的配置与使用
    写在前面: 为什么使用连接池? 减少计算机性能消耗 连接池的核心? 将连接指向改了,指向数据源而不是直接指向数据库 什么是JNDI? java命名与目录接口,将某一个资源(对象),以配置文件的形式写入,通过配置文件拿到资源(对象)信息 文章目录 Tomcat-bdcp连接池1.导入jar包(版本自选)2.配置tomcat中context.xml文件3.配置项目工程中web.xml文件4.使用:将访问数据库的连接指向数据源 dbcp连接池1.导入jar包(版本自选)2.使用 c3p0连接池1.导入jar包(版本自选)2.使用 Tomcat-bdcp连接池 1.导入jar包(版本自选) mysql-connector-java-8.0.19.jar 点击进入maven库下载 2.配置tomcat中context.xml文件 进入tomcat安装目录,tomcat/conf/context.xml添加配置信息 <Resource name="Demo" auth="Container" type="javax.sql.DataSource" username="root" password="123456" maxIdle="30" maxWait="10000" maxActive="100" driverClassName="com.mysql.cj.jdbc.Driver" url