c 3 p 0構成
10010 ワード
<c3p0-config>
<default-config>
<!– 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">Test</property>
<!–
。
, getConnection() 。 true,
。Default: false
–>
<property name="breakAfterAcquireFailure">false</property>
<!–
getConnection() ,
SQLException, 0 。 。Default: 0
–>
<property name="checkoutTimeout">100</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">60</property>
<!– , minPoolSize maxPoolSize 。Default: 3 –>
<property name="initialPoolSize">3</property>
<!– ,60 。 0 。Default: 0 –>
<property name="maxIdleTime">60</property>
<!– 。Default: 15 –>
<property name="maxPoolSize">15</property>
<!–
JDBC , PreparedStatements 。 statements
connection 。 。
maxStatements maxStatementsPerConnection 0, 。Default: 0
–>
<property name="maxStatements">100</property>
<!–
maxStatementsPerConnection statements 。Default: 0
–>
<property name="maxStatementsPerConnection"></property>
<!–
c3p0 , JDBC 。
。Default: 3
–>
<property name="numHelperThreads">3</property>
<!–
getConnection() root 。 c3p0 。Default:
null
–>
<property name="overrideDefaultUser">root</property>
<!– overrideDefaultUser 。Default: null–>
<property name="overrideDefaultPassword">password</property>
<!– 。Default: null–>
<property name="password"></property>
<!–
。 。 :
。Default: null
–>
<property name="preferredTestQuery">select id from test where id=1
</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">true</property>
<!– 。Default: null–>
<property name="user">root</property>
<!–
c3p0 JDBC 。 。 , 。 , 。 Default:
false。
–>
<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>
c 3 p 0の実現
<!–
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.class">
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 = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql1");
conn = ds.getConnection();
} catch (NamingException e) {
e.printStackTrace();
return null;
} catch (SQLException e) {
e.printStackTrace();
return null;
}