分享

c3p0数据源配置

 dtl乐学馆 2014-10-27
Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www./dtd/spring-beans-2.0.dtd">  
  3. <beans default-lazy-init="true">  
  4.     <!-- 数据源 -->  
  5.     <bean id="xgerpDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">  
  6.         <property name="driverClass">  
  7.             <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>  
  8.         </property>  
  9.         <property name="jdbcUrl">  
  10.             <value>jdbc:sqlserver://172.168.16.23:1433;databaseName=xgerp</value>  
  11.         </property>  
  12.         <property name="user">  
  13.             <value>sa</value>  
  14.         </property>  
  15.         <property name="password">  
  16.             <value>xgerp</value>  
  17.         </property>  
  18.         <!--连接池中保留的最小连接数。-->  
  19.         <property name="minPoolSize">  
  20.             <value>10</value>  
  21.         </property>  
  22.         <!--连接池中保留的最大连接数。Default: 15 -->  
  23.         <property name="maxPoolSize">  
  24.             <value>100</value>  
  25.         </property>  
  26.         <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->  
  27.         <property name="initialPoolSize">  
  28.             <value>20</value>  
  29.         </property>  
  30.         <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->  
  31.         <property name="maxIdleTime">  
  32.             <value>60</value>  
  33.         </property>  
  34.         <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->  
  35.         <property name="acquireIncrement">  
  36.             <value>10</value>  
  37.         </property>  
  38.         <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。  
  39.         但由于预缓存的statements属于单个connection而不是整个连接池。  
  40.         所以设置这个参数需要考虑到多方面的因素。     
  41.         如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->  
  42.         <property name="maxStatements">  
  43.             <value>0</value>  
  44.         </property>  
  45.         <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->  
  46.         <property name="idleConnectionTestPeriod">  
  47.             <value>60</value>  
  48.         </property>  
  49.         <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->  
  50.         <property name="acquireRetryAttempts">  
  51.             <value>30</value>  
  52.         </property>  
  53.         <!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,  
  54.         并在下次调用getConnection()的时候继续尝试获取连接。  
  55.         如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。  
  56.         Default: false-->  
  57.         <property name="breakAfterAcquireFailure">  
  58.             <value>true</value>  
  59.         </property>  
  60.         <!--因性能消耗大请只在需要的时候使用它。  
  61.         如果设为true那么在每个connection提交的时候都将校验其有效性。  
  62.         建议使用idleConnectionTestPeriod或automaticTestTable等方法来提升连接测试的性能。  
  63.         Default: false -->  
  64.         <property name="testConnectionOnCheckout">  
  65.             <value>false</value>  
  66.         </property>  
  67.     </bean>  
  68. </beans>  

测试范例
Java代码  收藏代码
  1. import javax.sql.DataSource;  
  2. import java.sql.Connection;  
  3. import java.sql.ResultSet;  
  4. import java.sql.SQLException;  
  5. import java.sql.Statement;  
  6.   
  7. import org.junit.Test;  
  8. import org.springframework.context.ApplicationContext;  
  9. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  10.   
  11. public class TestSpring {  
  12.     @Test  
  13.     public void testSprint() {  
  14.         ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-database.xml");  
  15.         DataSource ds = (DataSource)ctx.getBean("xgerpDataSource");  
  16.         Connection conn = null;  
  17.         Statement st = null;  
  18.         ResultSet rs = null;  
  19.         try {  
  20.             conn = ds.getConnection();  
  21.             st = conn.createStatement();  
  22.             rs = st.executeQuery("select count(*) from comm_workshop");  
  23.             if (rs.next()) {  
  24.                 System.out.println("workshops :" + rs.getInt(1));  
  25.             }  
  26.                   
  27.         } catch (SQLException e) {  
  28.             e.printStackTrace();  
  29.         } finally {  
  30.             if (rs != null)  
  31.                 try {  
  32.                     rs.close();  
  33.                 } catch (SQLException e) {  
  34.                     e.printStackTrace();  
  35.                 }  
  36.             if (st != null) {  
  37.                 try {  
  38.                     st.close();  
  39.                 } catch (SQLException e) {  
  40.                     e.printStackTrace();  
  41.                 }  
  42.             }  
  43.             if (conn != null) {  
  44.                 try {  
  45.                     conn.close();  
  46.                 } catch (SQLException e) {  
  47.                     e.printStackTrace();  
  48.                 }  
  49.             }  
  50.         }  
  51.     }  
  52. }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多