c3p0

JDBC连接池

你。 提交于 2020-02-04 07:57:17
一.数据库连接池 1. 概念:其实就是一个容器(集合),存放数据库连接的容器。 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。 2. 好处: 1. 节约资源 2. 用户访问高效 3. 实现: 1. 标准接口:DataSource javax.sql包下的 1. 方法: * 获取连接:getConnection() * 归还连接:Connection.close()。如果连接对象Connection是从连接池中获取的,那么调用Connection.close()方法,则不会再关闭连接了。而是归还连接 2. 一般我们不去实现它,有数据库厂商来实现 1. C3P0:数据库连接池技术 2. Druid:数据库连接池实现技术,由阿里巴巴提供的 4. C3P0:数据库连接池技术 * 步骤: 1. 导入jar包 (两个) c3p0-0.9.5.2.jar mchange-commons-java-0.2.12.jar , * 不要忘记导入数据库驱动jar包 2. 定义配置文件: * 名称: c3p0.properties 或者 c3p0-config.xml * 路径:直接将文件放在src目录下即可。 3. 创建核心对象 数据库连接池对象 ComboPooledDataSource 4. 获取连接:

java -数据库连接池-c3p0/druid

最后都变了- 提交于 2020-02-03 11:53:41
CP30笔记 : 连接池 javax.sql.Datasource数据库连接池 具体是实现由厂商提供,跟JDBC一样,必须导入jar包,这样以后就不用每次都有DriverManager创建连接了,而且这个连接池是针对这个数据库而定义的一个工厂,也就是必须初始化, 注册驱动,添加路径,url用户名等等 ,可以理解为一口气多创几个连接。 这里我们使用的是 C3P0-v0.9.5.2 来开始学习这个数据库连接池实现技术,相同的步骤,先导入jar包。 Configuration files are normally looked up under standard names (c3p0.properties or c3p0-config.xml) at the top level of an application’s classpath, but the XML configuration can be placed anywhere in an application’s file system or classpath, if the system property com.mchange.v2.c3p0.cfg.xml is set. 上面的配置文件介绍了存放的位置(默认)与文件,即src文件下即可。 ComboPooledDataSource(

Can I use multiple C3P0 datasources for DB instance?

那年仲夏 提交于 2020-02-01 05:41:10
问题 I was wondering if I can run multiple c3p0 datasources for one DB, something like: <bean id="dataSource1" class = "com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${db.driverClassName}"/> <property name="jdbcUrl" value="${db.url}/schema1"/> <property name="user" value="${db.username}"/> <property name="password" value="${db.password}"/> <property name="acquireIncrement" value="1" /> <property name="idleConnectionTestPeriod" value="100"/>

数据库连接池原理

牧云@^-^@ 提交于 2020-02-01 04:23:48
在不使用数据库连接池的情况下,我们做操作都是直接操作数据库的。每进行一次操作就会创建一个jdbc连接,如果并发量大的时候同时创建几百或者几千个jdbc连接可能会导致服务器宕机。这个时候我们就需要引入连接池来进行处理。 基本原理 在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法。 如外部使用者可通过getConnection方法获取数据库连接,使用完毕后再通过releaseConnection方法将连接返回,注意此时的连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。可以实现复用的效果。 数据库连接池的参数: 空闲线程数:初始化线程,还没有被使用。 活动线程数:正在使用的线程数量。 最大线程数:最多可以创建的线程数量。 数据库连接池中如果连接(JDBC)使用完毕之后,它是如何关闭的? 连接使用完毕之后,会将连接放入到空闲连接。空闲连接+1,活动线程-1。 线程池作用 ①资源重用 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,增进了系统环境的平稳性(减少内存碎片以级数据库临时进程、线程的数量) ②更快的系统响应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于线程池内备用。此时连接池的初始化操作均已完成。对于业务请求处理而言,可以直接使用现有的可用连接

Caused by: org.postgresql.util.PSQLException: FATAL: remaining connection slots are reserved for non-replication superuser connections

末鹿安然 提交于 2020-01-30 04:36:17
问题 I use c3p0-0.9.5.2.jar and mchange-commons-java-0.2.11.jar to manage the pool connection, And I use postgreSql 9.3. I get these messages at least once a day in my Prod environment : Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database! at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:692) at com.mchange.v2.c3p0.impl

hibernate配置数据库连接信息

若如初见. 提交于 2020-01-28 04:49:02
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 连接数据库的基本信息 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hibernate5</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- hibernate里的配置,数据库使用的方言

How I can use FlexyPool with HikariCPFactory?

白昼怎懂夜的黑 提交于 2020-01-24 09:00:52
问题 I want measure metrics on my datasource comparing HikariCP and C3pO. I don’t understand how I can use FlexyPool in my project. I have Tomcat context.xml and HikariCP: <Resource name="jdbc/dictionaryDB" auth="Container" factory="com.zaxxer.hikari.HikariJNDIFactory" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" jdbcUrl="jdbc:postgresql://localhost:5432/deversdb" username="user" password="pass" maxActive="8" maxIdle="4"/> Please help me, i’am very newbie in connection

Java Hibernate/C3P0 error: “Could not obtain connection metadata. An attempt by a client to checkout a Connection has timed out.”

≡放荡痞女 提交于 2020-01-22 17:46:27
问题 I'm trying to get some code I was passed up and running. It appears to use the Hibernate framework. I've gotten past most of the errors tweaking the configuration, but this one has me dead stumped. It's trying to connect to two databases: gameapp and gamelog. Both exist. It seems to have issues connecting to gamelog, but none connecting to gameapp (later in the init, it connects to and loads other DBs just fine). Below, I've pasted the error and exception stack dump. I imaging there's

解读dbcp自动重连那些事

℡╲_俬逩灬. 提交于 2020-01-22 15:49:12
转载自: http://agapple.iteye.com/blog/791943 可以后另一篇做对比: http://agapple.iteye.com/blog/772507 同样的内容,不同的描述方式,不一样的效果. Hi all : 最近在做 offerdetail 优化时,替换了数据库驱动,从 c3p0 0.9.1 -> dbcp 1.4 , 顺便研究了下 dbcp 的自动重连的一套机制,也做一下分享,大家周知一下。 数据库链接 常见的问题: 1. 数据库意外重启后,原先的数据库连接池能自动废弃老的无用的链接,建立新的数据库链接 2. 网络异常中断后,原先的建立的 tcp 链接,应该能进行自动切换。比如网站演习中的交换机重启会导致网络瞬断 3. 分布式数据库中间件,比如 cobar 会定时的将空闲链接异常关闭,客户端会出现半开的空闲链接。 大致思考解决思路: 1. sql 心跳检查 ( 主动式 ) 2. 拿链接尝试一下,发现处理失败丢弃链接,探雷的请求会失败几个  ( 牺牲小我,完成大我的精神 ) 3. 设置合理的空闲链接的超时时间,避免半开链接 ( 懒模式,解决半开链接 ) 下面我们来看看,在 dbcp 中是如何实现。 sql 心跳检查 sql validate 配置 <property name= "testWhileIdle" ><value> true <

Hibernate连接池配置实例

与世无争的帅哥 提交于 2020-01-20 04:41:30
Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP。在Hibernate连接池配置时需要注意的有三点: 一、Apche的DBCP在Hibernate2中受支持,但在Hibernate3中已经不再推荐使用,官方的解释是这个连接池存在缺陷。如果你因为某种原因需要在Hibernate3中使用DBCP,建议采用JNDI方式。 二、默认情况下(即没有配置连接池的情况下),Hibernate会采用内建的连接池。但这个连接池性能不佳,且存在诸多BUG(笔者就曾在Mysql环境下被八小时连接悬空问题困扰过),因此官方也只是建议仅在开发环境下使用。 三、Hibernate2和Hibernate3的命名空间有所变化。例如,配置C3P0时的provider_class有Hibernate2环境下使用net.sf.hibernate.connection.C3P0ConnectionProvider,在Hibernate3环境下使用org.hibernate.connection.C3P0ConnectionProvider。 下面是Hibernate环境下几种常见的连接池配置: 1.默认Hibernate连接池配置 <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration