C3p0的参数设置:
ComboPooledDataSource和BasicDataSource一样提供了一个用于关闭数据源的close()方法,这样我们就可以保证Spring容器关闭时数据源能够成功释放。 
C3P0拥有比DBCP更丰富的配置属性,通过这些属性,可以对数据源进行各种有效的控制: 
acquireIncrement:当连接池中的连接用完时,C3P0一次性创建新连接的数目; 
acquireRetryAttempts:定义在从数据库获取新连接失败后重复尝试获取的次数,默认为30; 
acquireRetryDelay:两次连接中间隔时间,单位毫秒,默认为1000; 
autoCommitOnClose:连接关闭时默认将所有未提交的操作回滚。默认为false; 
automaticTestTable: C3P0 将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数,那么属性preferredTestQuery将被忽略。你 不能在 这张Test表上进行任何操作,它将中为C3P0测试所用,默认为null; 
breakAfterAcquireFailure:获取 连接失败将会引起所有等待获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调   用getConnection()的时候继续尝试获取连接。如 果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认为 false; 
checkoutTimeout:当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒,默认为0; 
connectionTesterClassName: 通 过实现ConnectionTester或QueryConnectionTester的类来测试连接,类名需设置为全限定名。默认 为 com.mchange.v2.C3P0.impl.DefaultConnectionTester; 
idleConnectionTestPeriod:隔多少秒检查所有连接池中的空闲连接,默认为0表示不检查; 
initialPoolSize:初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值。默认为3; 
maxIdleTime:最大空闲时间,超过空闲时间的连接将被丢弃。为0或负数则永不丢弃。默认为0; 
maxPoolSize:连接池中保留的最大连接数。默认为15; 
maxStatements:JDBC 的标准参数,用以控制数据源内加载的PreparedStatement数量。但由于预缓存的Statement属 于单个Connection而不是整 个连接池。所以设置这个参数需要考虑到多方面的因素,如果maxStatements与 maxStatementsPerConnection均为0, 则缓存被关闭。默认为0; 
maxStatementsPerConnection:连接池内单个连接所拥有的最大缓存Statement数。默认为0; 
numHelperThreads:C3P0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能,通过多线程实现多个操作同时被执行。默认为3; 
preferredTestQuery:定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个参数能显著提高测试速度。测试的表必须在初始数据源的时候就存在。默认为null; 
propertyCycle: 用户修改系统配置参数执行前最多等待的秒数。默认为300; 
testConnectionOnCheckout: 因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的时候都 将校验其有效性。建议使用 idleConnectionTestPeriod或automaticTestTable 
等方法来提升连接测试的性能。默认为false; 
testConnectionOnCheckin:如果设为true那么在取得连接的同时将校验连接的有效性。默认为false。
 
 
***************************************************************************************************************************************************
 
hibernate默认使用自带的连接池
[org.hibernate.connection.DriverManagerConnectionProvider]-[INFO] 
Using Hibernate built-in connection pool (not for production use!)

hibernate使用c3p0的连接池
[com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource]-[INFO] 
Initializing c3p0 pool...

c3p0数据库连接池自动重连的配置(2008-07-07 15:01:40)
标签:跟着火炬看中国 c3p0 重新连接 连接池 it      分类:Notes

在Tomcat中配置c3p0数据库连接池的时候,如果数据库重启,或者网络原因造成服务器和数据库断开连接,Tomcat便再也不能和数据库连接,

除非Tomcat服务重启。

解决办法是在c3p0的配置中增加两个参数

<parameter>
<name>testConnectionOnCheckin</name>
<value>true</value>
</parameter>
<parameter>
<name>idleConnectionTestPeriod</name>
<value>60</value>
</parameter>

这样配置之后,连接池每隔60秒自动检测数据库连接情况,如果断开则自动重连。

c3p0连接mysql 数据库(解决掉线问题)
2009年06月24日 星期三 下午 01:48
最近项目用到了hibernate3.0   c3po mysql的数据层组合,开发部署非常顺利,但每天早上访问应用都抛出 Could not open Hibernate

session for transaction 异常,Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure due to

underlying exception,但经过几次访问后又恢复正常,datasource配置如下:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="jdbcUrl">
<value><![CDATA[jdbc:mysql://localhost:3306/WAP2?useUnicode=true&amp;characterEncoding=latin1]></value>
</property>  
<property name="user">
<value>root</value>
</property>
<property name="password">
<value>zznode</value>
</property>  
<property name="minPoolSize">
<value>3</value>
</property>
<property name="maxPoolSize">
<value>20</value>
</property>
<property name="maxStatements">
<value>50</value>
</property>
<property name="maxIdleTime">
<value>6000000</value>
</property>   
</bean>

根据问题现象初步认为是数据库连接出现问题,逐用异常作为关键词google(这是我遇见不能解决的问题时惯用的方法);得到了相关信息:1

、mysql 数据库链接默认的超时时长为28800秒,2、c3p0 的几个参数意思;

通过以上信息的收集隐隐知道了问题所在(mysql经过28800秒也就是8个小时后关掉空闲链接,而c3p0是经过6000000妙才断开链接,就

有可能出现c3po保持的连接有可能已经被mysql关掉了,自然就出现了hibernate不能打开session,并且都是第二天一早就出错);为了验证我

的想法,决定在开发机上重现这个错误;首先在mysql配置文件my.ini 加上 wait_timeout=30 让mysql经过30妙就关掉链接,重启应用,第一

次访问成功,等待一分钟后访问果然出现同样的错误,说明问题诊断正确,着手修改配置如下:

<property name="maxIdleTime">
<value>28000</value>
</property>
<property name="idleConnectionTestPeriod">
<value>28000</value>
</property>

配置解释:28000<28800 使c3p0 在mysql关不连接之前关闭自己持有的链接,配置idleConnectionTestPeriod 参数使c3po每隔28000检查已有

的连接是否可用,这样应该确保拿到的连接都是可用的,如果还不放心可以加 上 testConnectionOnCheckout参数每当拿出连接的时候就检查

一下是否可以,这个可能会使mysql有一定的性能牺牲;
<property name="testConnectionOnCheckout">
<value>true</value>
</property>
通过以上修改检测一段时间没有出现同样问题,问题解决!总结解决问题的三个步骤:收集相关信息、重现问题、解决测试

让Hibernate自动重新连接数据库——使用c3p0连接池
June 7, 2009 | tags java  hibernate  s2sh  数据库   | views
Comments 0

Hibernate没有自动重新连接数据库,原因很可能是因为你使用了Hibernate内置的连接池,这个连接池不会自动重新连接。使用Mysql

时,默认过8小时没有数据交换,Mysql就会单方面断开数据库连接,所以有些时候你会发现过了8小时(或者一晚上)再访问网站,程序就会抛

出数据库链接错误,而重启服务器容器(Tomcat等)之后程序又恢复正常。

细心的你应该会发现,如果使用默认的连接池,在Hibernate的日志记录(INFO级别)中会提示:Using Hibernate built-in

connection pool (not for production use!)(“你现在使用的是Hibernate内置的连接池,请不要在产品中使用它!”)如果你不听劝告,

仍然使用它,就会出现上面所说的数据库单方面断开连接而无法访问的问题。

解决此方法就是使用其他的连接池,比如此c3p0,在Hibernate官网的参考手册(reference)的3.3节中有简单的介绍①:

Hibernate's own connection pooling algorithm is however quite rudimentary. It is intended to help you get started and is

not intended for use in a production system or even for performance testing. You should use a third party pool for best

performance and stability. Just replace the hibernate.connection.pool_size property with connection pool specific settings.

This will turn off Hibernate's internal pool. For example, you might like to use C3P0.

C3P0 is an open source JDBC connection pool distributed along with Hibernate in the lib directory. Hibernate will use its

org.hibernate.connection.C3P0ConnectionProvider for connection pooling if you set hibernate.c3p0.* properties. If you'd like

to use Proxool refer to the packaged hibernate.properties and the Hibernate web site for more information.

Here is an example hibernate.properties file for C3P0:

hibernate.connection.driver_class = org.postgresql.Driverhibernate.connection.url =

jdbc:postgresql://localhost/mydatabasehibernate.connection.username = myuserhibernate.connection.password =

secrethibernate.c3p0.min_size=5hibernate.c3p0.max_size=20hibernate.c3p0.timeout=1800hibernate.c3p0.max_statements=50hibernate

.dialect = org.hibernate.dialect.PostgreSQLDialect

到这里还没结束,如果你按上面的方法添加了,不一定可以成功使用c3p0连接池(至少我测试时没有成功),你还需要添加一句话:

hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider

官方参考文档指出connection.provider_class属性是在自定义连接提供者时使用的,并没有说使用c3p0时也要加这句话。但我测试时不加这句

话就没有效果,所以还是加上吧!

完整的设置方法:

(属性文件)

# Database connection settings
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/mydb
hibernate.connection.username=username
hibernate.connection.password=password
# configuration pool
hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=15
hibernate.c3p0.timeout=3600
hibernate.c3p0.max_statements=50
# SQL dialect
hibernate.dialect=org.hibernate.dialect.MySQLDialect
# Enable Hibernate's automatic session context management
hibernate.current_session_context_class=thread
# Echo all executed SQL to stdout
hibernate.show_sql=true
# Drop and re-create the database schema on startup
hibernate.hbm2ddl.auto=update

如果你想把properties放到xml中,使用hibernate.c3p0.min_size等4项,(而不是c3p0.min_size)不然可能会扔出警告。

<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">15</property>
<property name="hibernate.c3p0.timeout">3600</property> <!-- seconds -->
<property name="hibernate.c3p0.max_statements">50</property>

关于更多c3p0的用法请你自己到网上搜索吧!这里不再重述。

<!-- Connection Pool -->
<property name="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_statements">0</property>
<property name="hibernate.c3p0.acquire_increment">5</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<!-- 连接池每隔60秒自动检测数据库连接情况,如果断开则自动重连 -->
<property name="idleConnectionTestPeriod">60</property>
<property name="testConnectionOnCheckout">true</property>

C3p0的参数设置的更多相关文章

  1. mysql Communications link failure,C3p0的参数详解

    MySQL默认一个连接空闲8小时候就会自动断开,而这时程序以为连接还能使用,然后在使用的时候就会出现Communications link failure异常. 这时需要进行两步设置,有时候只设置My ...

  2. C3p0的参数

    C3p0的参数设置:ComboPooledDataSource和BasicDataSource一样提供了一个用于关闭数据源的close()方法,这样我们就可以保证Spring容器关闭时数据源能够成功释 ...

  3. Hibernate 参数设置一览表

    Hibernate 参数设置一览表 属性名 用途 hibernate.dialect 一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL. 取值 fu ...

  4. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(二)-Hexo参数设置

    前言 前文手把手教从零开始在GitHub上使用Hexo搭建博客教程(一)-附GitHub注册及配置介绍了github注册.git相关设置以及hexo基本操作. 本文主要介绍一下hexo的常用参数设置. ...

  5. jqGrid的autoencode参数设置为true在客户端可能引发的编码问题

    不久前使用jqGrid+MVC做过一段时间开发. 一开始,分页参数几乎都是默认值,jqGrid的分页功能很好用. 考虑到each input is evil,我们的系统对安全性又有较高要求,所以,为了 ...

  6. 使用MEF实现通用参数设置

    通用后台管理系统必备功能模块包含日志管理,权限管理,数据字典,参数配置等功能.参数设置主要用于设置系统运行所需的一些基础性配置项,比如redis缓存,mq消息队列,系统版本等信息.好的参数设置需要达到 ...

  7. MySQL Database on Azure 参数设置

    在使用MySQL过程中,经常会根据需要对MySQL的参数进行一些设置和调整.作为PaaS版本的MySQL,MySQL Database on Azure在参数设置方面有一些限制,客户不能像使用on-p ...

  8. SSRS报表参数设置

    一.日期时间类型的参数注意事项: 关于数据类型的选择:(只有数据类型设置为日期/时间格式,在查询的时候才会显示日期控件,提示信息一般改成汉字) 指定默认值:指定开始日期为前10天,

  9. Lattice 的 Framebuffer IP核使用调试笔记之IP核生成与参数设置

    本文由远航路上ing 原创,转载请标明出处. 这节笔记记录IP核的生成以及参数设置. 先再IP库里下载安装Framebuffer 的ipcore 并安装完毕. 一.IP核的生成: 1.先点击IP核则右 ...

随机推荐

  1. Java虚拟机专题

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/5160083. ...

  2. 输入参数varargin

    一种特别的输入参数varargin 可以在自定义函数中得到,这种函数支持输入参数的变量的个数.这个参数显在输入参数列表的最后一项,它返回一个单元阵列,所以一个输入实参可以包括任意数目的实参.每一个实参 ...

  3. 【字符串排序,技巧!】UVa 10905 - Children’s Game

    There are lots of number games for children. These games are pretty easy to play but not so easy to ...

  4. 使用VS建立Web网站及IIS

    一:网站运行的一般原理: 1.所有WEB程序运行都需要一个东西:Web服务器软件. 2. 网站分为动态页面和静态页面 3. web服务器软件的作用:接收请求,响应请求. 被动——无请求则无响应. Ja ...

  5. ttt

    <style> .head1{ background:rgb(51,51,51); height:49px; min-width:1241px; width:100%; z-index:1 ...

  6. js实现图片滑动显示效果

    js实现图片滑动显示效果 今天用户提出一个需求,要实现一个滑动显示新闻列表的效果,具体就是图片新闻自动滑动显示,鼠标移上去就停止滑动,移开就继续滑动:效果如下: 第一:先用HTML和CSS实现显示,主 ...

  7. Open Flash Chart在php中的使用教程

    http://www.cnblogs.com/huangcong/archive/2013/01/27/2878650.html 为了画一个漂亮的表格,我从网上找到了OpenFlashChart(of ...

  8. 区分.net、c#、asp.net三者间的关系

    1..net(dot net) .net是一个平台,抽象的平台概念. 实现形式是库:①定义了基本的类型(通用类型系统CTS,common type system).   ②包含.net公共语言运行库( ...

  9. undrop for innodb c_parser 源码分析

    一,主函数功能: 1,分析命令行参数,保存在全局变量中; 2,打开文件,加载表定义sql,调用分析函数开始处理; 3,打印导入数据的sql语句; 二,文件处理函数,void process_ibfil ...

  10. C#与C++相比较之STL篇(续一)

    本篇接<C#与C++相比较之STL篇>,主要探索C++STL的两个组件:算法和仿函数,以及C#的linq和拉姆达表达式.委托. STL的算法与仿函数 算法是个庞大的主题,STL包含了超过1 ...