c 3 p 0構成


<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&amp;useUnicode=TRUE&amp;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;
}