c3p0连接池:C3P0连接池详细配置和实现来源: 发布时间:星期四, 2009年2月12日 浏览:87次 评论:0
<c3p0-config> <default-config> <!--当连接池中 ![]() ![]() ![]() ![]() ![]() <property name="acquireIncrement">3</property> <!--定义在从数据库获取新连接失败后重复尝试 ![]() ![]() <property name="acquireRetryAttempts">30</property> <!--两次连接中间隔时间 ![]() ![]() <property name="acquireRetryDelay">1000</property> <!--连接关闭时默认将所有未提交 ![]() ![]() <property name="autoCommitOnClose">false</property> <!--c3p0将建 ![]() ![]() ![]() ![]() ![]() 属性preferredTestQuery将被忽略 ![]() ![]() 使用 ![]() <property name="automaticTestTable">Test</property> <!--获取连接失败将会引起所有等待连接池来获取连接 ![]() ![]() 保留 ![]() ![]() ![]() ![]() ![]() ![]() 获取连接失败后该数据源将申明已断开并永久关闭 ![]() <property name=" ![]() <!--当连接池用完时客户端 ![]() ![]() ![]() ![]() SQLException,如设为0则无限期等待 ![]() ![]() <property name="checkoutTimeout">100</property> <!--通过实现ConnectionTester或QueryConnectionTester ![]() ![]() ![]() Default: com.mchange.v2.c3p0.impl.DefaultConnectionTester--> <property name="connectionTesterClassName"></property> <!--指定c3p0 libraries ![]() ![]() ![]() 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秒检查所有连接池中 ![]() ![]() <property name="idleConnectionTestPeriod">60</property> <!-- ![]() ![]() ![]() <property name="initialPoolSize">3</property> <!--最大空闲时间,60秒内未使用则连接被丢弃 ![]() ![]() <property name="maxIdleTime">60</property> <!--连接池中保留 ![]() ![]() <property name="maxPoolSize">15</property> <!--JDBC ![]() ![]() ![]() ![]() ![]() 属于单个connection而不是整个连接池 ![]() ![]() ![]() 如果maxStatements和maxStatementsPerConnection均为0 ![]() ![]() <property name="maxStatements">100</property> <!--maxStatementsPerConnection定义了连接池内单个连接所拥有 ![]() ![]() <property name="maxStatementsPerConnection"></property> <!--c3p0是异步操作 ![]() ![]() ![]() ![]() ![]() 通过多线程实现多个操作同时被执行 ![]() <property name="numHelperThreads">3</property> <!--当用户 ![]() ![]() ![]() ![]() ![]() ![]() <property name="overrideDefaultUser">root</property> <!--和overrideDefaultUser参数对应使用 ![]() ![]() ![]() <property name="overrideDefaultPassword">password</property> <!--密码 ![]() <property name="password"></property> <!--定义所有连接测试都执行 ![]() ![]() ![]() ![]() ![]() 测试 ![]() ![]() ![]() ![]() <property name="preferredTestQuery">select id from test where id=1</property> <!--用户修改系统配置参数执行前最多等待300秒 ![]() <property name="propertyCycle">300</property> <!--因性能消耗大请只在需要 ![]() ![]() ![]() 时候都将校验其有效性 ![]() 等思路方法来提升连接测试 ![]() ![]() <property name="testConnectionOnCheckout">false</property> <!--如果设为true那么在取得连接 ![]() ![]() ![]() <property name="testConnectionOnCheckin">true</property> <!--用户名 ![]() <property name="user">root</property> <!--早期 ![]() ![]() ![]() 允许用户恢复到动态反射代理以解决不稳定 ![]() ![]() ![]() 广泛 ![]() ![]() ![]() ![]() ![]() 支持 ![]() ![]() ![]() <property name="usesTraditionalReflectiveProxies">false</property> <property name="automaticTestTable">con_test</property> <property name="checkoutTimeout">30000</property> <property name="idleConnectionTestPeriod">30</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">25</property> <property name="minPoolSize">10</property> <property name="maxStatements">0</property> <user-overrides user="swaldman"> </user-overrides> </default-config> <named-config name="dumbTestConfig"> <property name="maxStatements">200</property> <user-overrides user="poop"> <property name="maxStatements">300</property> </user-overrides> </named-config> </c3p0-config> c3p0 ![]() <!-- 全局使用c3p0 1. server.xml中GlobalNamingResources 2. context.xml中ResourceLink 3. web.xml --> 全局使用c3p0 1. server.xml中GlobalNamingResources <Resource auth="Container" description="DB Connection" driverClass="org.gjt.mm.mysql.Driver" maxPoolSize="10" minPoolSize="2" acquireIncrement="2" name="jdbc/mysql1" user="root" password="xxxxxx" factory="org.apache.naming.factory.BeanFactory" type="com.mchange.v2.c3p0.ComboPooledDataSource" jdbcUrl="jdbc:mysql://localhost:3306/noticemanager?characterEncoding=UTF-8&useUnicode=TRUE&autoReconnect=true" /> 2. context.xml中ResourceLink <ResourceLink name="jdbc/mysql1" global="jdbc/mysql1" type="javax.sql.DataSource"/> 3. web.xml <resource-ref> <description>Tomcat Datasource</description> <res-ref-name>jdbc/mysql1</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 4.Hibernate中 ![]() <?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"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="c3p0.min_size">5</property> <property name="c3p0.max_size">100</property> <property name="c3p0.time_out">1800</property> <property name="c3p0.max_statement">100</property> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="jndi.url"> jdbc:mysql://localhost:3306/noticemanager </property> <!-- <property name="jndi. ![]() org.gjt.mm.mysql.Driver </property> --> <property name="connection.datasource"> java:comp/env/jdbc/mysql1 </property> <property name="connection.username">root</property> <property name="connection.password">xxxxxxxxx</property> <property name="hibernate.show_sql">true</property> <!-- <property name="hibernate.use_outer_join">true</property> --> <mapping resource="com/dpoo/pojo/Notice.hbm.xml" /> </session-factory> </hibernate-configuration> JDBC实现:和DateSource相同 try { Context ctx = ![]() ![]() ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql1"); conn = ds.getConnection ![]() } catch (NamingException e) { e.pr ![]() ![]() ![]() } catch (SQLException e) { e.pr ![]() ![]() ![]() } 0
相关文章
读者评论发表评论 |