c3p0详细配置(c3p0-config.xml)及使用

article/2025/8/31 9:39:49
参数详细说明请跳转: 数据库连接池c3p0常用配置说明
<c3p0-config>
<default-config>
                <!-- 数据库驱动名 --> 

                <property name="driverClass" ></properties>

                <!-- 数据库的url --> 

                   <property name="jdbcUrl"  ></properties>  
 
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">3</property>

<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts">30</property>

<!--两次连接中间隔时间,单位毫秒。Default: 1000 -->
<property name="acquireRetryDelay">1000</property>

<!--连接关闭时默认将所有未提交的操作回滚。Default: false -->
<property name="autoCommitOnClose">false</property>

<!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么 属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试 
使用。Default: null -->
<property name="automaticTestTable"></property>

<!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效 保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试 
获取连接失败后该数据源将申明已断开并永久关闭。Default: false -->
<property name="breakAfterAcquireFailure">false</property>

<!--当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出 SQLException,如设为0则无限期等待。单位毫秒。Default:  0 -->
<property name="checkoutTimeout">0</property>

<!--通过实现ConnectionTester或QueryConnectionTester的类来测试连接。类名需制定全路径。 Default: 
com.mchange.v2.c3p0.impl.DefaultConnectionTester -->
<property name="connectionTesterClassName"></property>

<!--指定c3p0 libraries的路径,如果(通常都是这样)在本地即可获得那么无需设置,默认null即可 Default: null -->
<property name="factoryClassLocation">null</property>

<!--Strongly disrecommended. Setting this to true may lead to subtle and 
bizarre bugs. (文档原文)作者强烈建议不使用的一个属性 -->
<property name="forceIgnoreUnresolvedTransactions">false</property>

<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod">0</property>

<!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize">3</property>

<!--最大空闲时间,指定的时间内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime">0</property>

<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize">15</property>

<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements 属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。 
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
<property name="maxStatements">0</property>

<!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
<property name="maxStatementsPerConnection">0</property>

<!--c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能 通过多线程实现多个操作同时被执行。Default: 3 -->
<property name="numHelperThreads">3</property>

<!--当用户调用getConnection()时使root用户成为去获取连接的用户。主要用于连接池连接非c3p0 的数据源时。Default:  null -->
<property name="overrideDefaultUser"></property>

<!--与overrideDefaultUser参数对应使用的一个参数。Default: null -->
<property name="overrideDefaultPassword"></property>

<!--密码。Default: null -->
<property name="password"></property>

<!--定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。注意: 测试的表必须在初始数据源的时候就存在。Default:  null -->
<property name="preferredTestQuery"></property>

<!--用户修改系统配置参数执行前最多等待300秒。Default: 300 -->
<property name="propertyCycle">300</property>

<!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的 时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable 
等方法来提升连接测试的性能。Default: false -->
<property name="testConnectionOnCheckout">false</property>

<!--如果设为true那么在取得连接的同时将校验连接的有效性。Default: false -->
<property name="testConnectionOnCheckin">false</property>

<!--用户名。Default: null -->
<property name="user"></property>
 
                <!-- 连接超时时间, default: 0。如果是0,表示无限等待 --> 

                <property name="checkoutTimeout">0</property>
 
                <!-- 
测试空闲连接的间隔时间 default: 0  --> 
                <property name="idleConnectionTestPeriod ">0</property>
 
                   <!-- 初始化时连接数,default: 3   -- >    
                <property name="initialPoolSize">3</property>
 
                   <!-- 连接的最大空闲时间,default: 0   -- >    
                <property name="maxIdleTime">0</property>
 
                   <!-- 连接池中最大连接数,default: 15   -- >    
                <property name="maxPoolSize">15</property>
 
                     <!-- 连接池中最小连接数,default: 3   -- >    
                <property name="minPoolSize">3</property>
 
                   <!--  连接池为数据源缓存的PreparedStatement的总数   -- >    
                <property name="maxStatements">0</property>  
</default-config>
</c3p0-config>

------------------------我是一条可爱的分割线-----------------------
使用方法:
1、使用 c3p0-config.xml
<!-- 自定义的c3p0-config.xml -->
<?xml version="1.0" encoding="UTF-8"?><c3p0-config><default-config>   <property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property><property name="user">root</property><property name="password">java</property><property name="initialPoolSize">10</property><property name="maxIdleTime">30</property><property name="maxPoolSize">100</property><property name="minPoolSize">10</property></default-config><named-config name="mySource"><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/bookstore</property><property name="user">root</property><property name="password">xxxx</property><property name="initialPoolSize">10</property><property name="maxIdleTime">30</property><property name="maxPoolSize">100</property><property name="minPoolSize">10</property></named-config>
</c3p0-config>

DataSource ds = new  ComboPooledDataSource(" mySource ");//参数对应使用哪个config,如果不写,表示使用默认的config,即default-config里的配置,否则使用参数指定的named-config里的配置。
Connection conn = ds.getConnection(); 
conn.close(); 
--------------------------------------------------------------------------------------------------------------------
2、使用c3p0.properties配置文件
(1)在静态初始化中使用Properties类来加载c3p0.properties,并将读取到的property设置到DataSource上去。
代码如下:
ComboPooledDataSource ds = new ComboPooledDataSource();
Properties props = new Properties();
props.load(类名.class.getClassLoader().getResourceAsStream("c3p0.properties"));
ds.setDriverClass(props.getProperty("driverClass"));
ds.setJdbcUrl(props.getProperty("jdbcUrl"));
//...
Connection conn = ds.getConnection(); 
conn.close(); 

(2) 在静态初始化中使用
ResourceBundle类来加载properties文件, 并将读取到的property设置到DataSource上去。
代码如下:
ComboPooledDataSource ds = new ComboPooledDataSource();
ResourceBundle rb = ResourceBundle.getBundle("c3p0");//c3p0对应c3p0.properties
ds.setDriverClass(rb.getString(" driverClass ") );
ds.setJdbcUrl(rb.getString("jdbcUrl"));
//...
Connection conn = ds.getConnection(); 
conn.close(); 

====================打个广告,欢迎关注====================

QQ:412425870
csdn博客:
http://blog.csdn.net/caychen
码云:
https://gitee.com/caychen/
github:
https://github.com/caychen

点击群号或者扫描二维码即可加入QQ群:

328243383(1群)



点击群号或者扫描二维码即可加入QQ群:

180479701(2群)




http://chatgpt.dhexx.cn/article/4AOQZJ6T.shtml

相关文章

3.FXBLUE跟单原理

3.1 FXBLUE跟单速度 fxblue喊单EA一旦发现其MT4账户中有新的订单&#xff0c;就会向fxblue跟单EA发送一条消息。然后&#xff0c;fxblue跟单EA将尝试进行相同的交易&#xff0c;也就是实时跟单&#xff0c;复制订单。这个过程是快速立即马上响应&#xff0c;但复制交易所需的时…

介绍几种电路上常用的塑料插接件(1)

介绍几种电路上常用的插接件&#xff08;1&#xff09; 最近在做几个电路方面的小项目。做这做这发现有好多小零件都不知道叫什么。比如上面用到的大大小小的插接件。都经常见&#xff0c;但是就是不知道名字。所以就专门花了点时间调研了一番。 这篇博客就来总结几种常见的塑…

t460p加固态硬盘 thinkpad_不仅是硬件升级!ThinkPad T460p评测

原标题:不仅是硬件升级!ThinkPad T460p评测 ThinkPad旗下的T4x0p系列产品一直是追求性能的小黑粉丝们非常关注的一款产品,ThinkPad今年正式推出了最新的T460p商务笔记本,由于T450p的缺席,大家对这款机器有着非常高的期待值。今天的评测将带您了解升级了Skylake处理器的它具…

oracle存储过程动态sql单引号拼接和变量拼接

1.单引号的作用 在oracle中单引号主要有两个作用: 一是字符串都用单引号引用,例如abc;二是转义符,转义符在使用时一般会出现多个连在一起的单引号,相对难理解一些。下面举例说明。 实例1:select from dual; 实例1结果: 实例2:select oracle from dual; 实例2结果: 实…

51单片机并行接口P0~P3

文章目录 前言一、并行接口P0&#xff08;1&#xff09;P0口(2)、P0口作为通用I/O口 二、并行接口P1三、并行接口P2四、并行接口P3P3口的第二特殊功能引脚分配&#xff1a; 归纳四个并行口使用的注意事项如下&#xff1a; 前言 学习51单片机&#xff0c;IO口可以说是重中之重&…

FPGA接口-PMOD,FMC与SYZYGY

现代FPGA 功能强大&#xff0c;它通过芯片的可编程引脚与外围电路相连。比如AD/DA,数字IO以及以太网&#xff0c;USB&#xff0c;CAN &#xff0c;视频I/O 等接口电路。人们将这些接口称为夹层模块&#xff08;Mezzanine Module&#xff09;。为了实现FPGA 系统的模块化设计&am…

校园接单网站源码/跑腿网源码

介绍&#xff1a; 项目功能&#xff1a; 1.校园服务&#xff1a;打印、快递代取、校园跑腿、上门维修、代替服务 等等可自定义 2.添加校园代理 3.提现 4.接单 5.申请接单 6.数据分析 7.广告管理 8.用户管理 实现技术&#xff1a; 1.后台服务端&#xff1a;nodejskoa2mysql 2.后…

程序员接单当渠道

接单之前&#xff0c;先简单说一下接私活的几种项目类型&#xff0c;之后直接上渠道&#xff0c;你可以对照着去找项目~程序员兼职主要分为三种&#xff1a;项目外协、项目整包和自由职业者驻场。所谓的项目外协&#xff0c;指的是需求方这边有自有工程师配合&#xff0c;只需要…

网络安全知识之什么是网络安全?

网络安全的概念&#xff0c;有很多不同的定义。在一些场合中&#xff0c;我们最多的考虑的还是网络的技术安全&#xff0c;但是技术延伸出来的安全又会涉及到社会安全、文化安全、国家安全等等。 网络安全的概念&#xff0c;有很多不同的定义。在一些场合中&#xff0c;我们最多…

计算机网络安全技术复习知识点总结

文章目录 1.网络安全的概念网络安全的定义网络安全的属性网络攻击主动攻击被动攻击 2.网络协议基础协议层次协议分析ARP协议SMTP协议POP3协议HTTP协议 3.消息鉴别与身份认证消息鉴别协议身份认证方式Kerberos认证系统PKI技术PKI提供的服务PKI的主要组件 数字证书 4.密码学在网络…

计算机网络安全基础知识(超详细)

目录 一、http与https的区别 二、HTTP响应码 三、渗透测试和WEB安全漏洞的区别&#xff1f; 四、网络连接的核心-IP地址和端口 五、HTTP超文本传输协议 一、http与https的区别 1、HTTPS 协议需要到 CA &#xff08;Certificate Authority&#xff0c;证书颁发机构&#x…

网络安全重点知识

单选&#xff08;抽20个&#xff09;、判断&#xff08;抽5个&#xff09; 第二章&#xff1a; 第三章&#xff1a; 第四章&#xff1a; 第五章&#xff1a; 第六章&#xff1a; 第八章&#xff1a; 填空&#xff08;抽3个&#xff09; 1、网络安全&#xff1a; 是在网络各个…

三级计算机信息安全基础知识

三级信息安全我过了呜呜呜呜,虽然只是良好,但终于有胆子发当时做的笔记了QVQVQ 目录 历史基础概念访问控制实现方法访问控制依赖原则访问控制类型分布式访问控制&#xff08;Distributed access control&#xff09;自主访问控制模型(Discretionary Access Control)强制访问控…

计算机三级信息安全知识点

Heap Spary技术是在 shellcode 的前面加上大量的滑板指令&#xff0c;非常占用内存&#xff0c;系统开启 DEP 进行防范 DEP 数据执行保护&#xff0c;数据不能执行 ASLR 地址随机化 信息安全的五个基本属性 机密 可用 可控 不可否认 完整性 信息系统安全可以划分以下四个层…

Kubernetes 调度器详解

kube-scheduler是 kubernetes 系统的核心组件之一&#xff0c;主要负责整个集群资源的调度功能&#xff0c;根据特定的调度算法和策略&#xff0c;将 Pod 调度到最优的工作节点上面去&#xff0c;从而更加合理、更加充分的利用集群的资源&#xff0c;这也是我们选择使用 kubern…

操作系统之调度

目录 什么是调度 进程调度的时机、切换、过程与方式 调度器/调度程序 调度算法 先来先服务算法 短作业优先算法 高响应比优先算法 时间片轮转算法 优先级调度算法 多级反馈队列调度算法 什么是调度 调度的三个层次 高级调度 中级调度 低级调度 总结如下&#xff1a; …

操作系统——线程调度

0.关注博主有更多知识 操作系统入门知识合集 目录 6.1线程调度概念 思考题&#xff1a; 6.2典型调度算法 思考题&#xff1a; 6.3Linux线程调度 6.1线程调度概念 在第四章曾经介绍过&#xff0c;线程是操作系统调度的基本单位&#xff0c;那么本篇就不再以进程的视角去…

【分布式任务调度】(四)XXL-JOB的任务调度执行流程及实现原理

文章目录 1.概述2.调度中心流程2.1.任务配置扫描流程2.2.计算任务触发时机2.2.1.已超时5秒以上2.2.2.超时未超过5秒2.2.3.还未到触发时间 2.3.任务触发流程2.3.1.任务触发线程池2.3.2.参数处理2.3.3.任务触发2.3.4.分片广播策略&#xff08;补充&#xff09; 3.执行器流程3.1.任…

分布式任务调度

一、概述 1、定义 业务场景 - 某电商系统需要在每天上午10点&#xff0c;下午3点&#xff0c;晚上8点发放一批优惠券。 - 某银行系统需要在信用卡到期还款日的前三天进行短信提醒。 - 某财务系统需要在每天凌晨0:10结算前一天的财务数据&#xff0c;统计汇总。 - 12306会根据…

【操作系统篇】第五篇——调度(概念,层次,调度时机,切换与过程,方式,评价指标)

​基本概念 ​三个层次 ​高级调度(作业调度) ​中级调度(内存调度) ​低级调度(进程调度) ​三层调度的联系&#xff0c;对比 ​补充知识 ​进程的"挂起态"与七状态模型 ​时机 ​什么时候需要进程调度 ​什么时候不能进行进程调度 ​切换与过程 ​&qu…