甜咖啡

          我的IT空間

          c3p0連接池

          package db;
          import java.beans.PropertyVetoException;
          import java.sql.Connection;
          import java.sql.SQLException;
          import com.mchange.v2.c3p0.ComboPooledDataSource;
          public class DBPool {
          private ComboPooledDataSource dataSource;
          public static Connection con;
          public DBPool() {
          try {
          dataSource = new ComboPooledDataSource();
          dataSource.setUser("test");
          dataSource.setPassword("test");
          dataSource.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");
          dataSource.setDriverClass("oracle.jdbc.driver.OracleDriver");
          dataSource.setInitialPoolSize(2);
          dataSource.setMinPoolSize(1);
          dataSource.setMaxPoolSize(10);
          dataSource.setMaxStatements(50);
          dataSource.setMaxIdleTime(60);
          dataSource.setAcquireRetryAttempts(3);   
          } catch (PropertyVetoException e) {
          }
          }
          public final static DBPool getInstance() {
          return new DBPool();
          }
          public final Connection getConnection() {
          try {
          return dataSource.getConnection();
          } catch (SQLException e) {
          return null;
          }
          }

                  //測(cè)試方法
          public static void main(String[] args) throws SQLException {
          con = DBPool.getInstance().getConnection();
          System.out.println(con);
          try {
          if (con != null){con.close();}
          } catch (SQLException e) {
          e.printStackTrace();
          }
          }
          }


             //初始化時(shí)獲取三個(gè)連接,取值應(yīng)在minPoolSize與maxPoolSize之間。Default: 3 initialPoolSize  
              cpds.setInitialPoolSize(initialPoolSize);   
              //連接池中保留的最大連接數(shù)。Default: 15 maxPoolSize   
              cpds.setMaxPoolSize(maxPoolSize);
              //連接池中保留的最小連接數(shù)。   
              cpds.setMinPoolSize(minPoolSize);
              //獲得連接的最大等待毫秒數(shù)。Default: 1000 acquireRetryDelay
              cpds.setAcquireRetryDelay(acquireRetryDelay);
              //最大空閑時(shí)間,60秒內(nèi)未使用則連接被丟棄。若為0則永不丟棄。Default: 0 maxIdleTime   
              cpds.setMaxIdleTime(maxIdleTime);
              //當(dāng)連接池中的連接耗盡的時(shí)候c3p0一次同時(shí)獲取的連接數(shù)。Default: 3 acquireIncrement   
              //cpds.setAcquireIncrement(3);   
              //每60秒檢查所有連接池中的空閑連接。Default: 0 idleConnectionTestPeriod   
              //cpds.setIdleConnectionTestPeriod(60);
              //連接關(guān)閉時(shí)默認(rèn)將所有未提交的操作回滾。Default: false autoCommitOnClose   
              //cpds.setAutoCommitOnClose(true);
              //JDBC的標(biāo)準(zhǔn)參數(shù),用以控制數(shù)據(jù)源內(nèi)加載的PreparedStatements數(shù)量。但由于預(yù)緩存的statements屬于單個(gè)connection而不是整個(gè)連接池。所以設(shè)置這個(gè)參數(shù)需要考慮到多方面的因素。如果maxStatements與maxStatementsPerConnection均為0,則緩存被關(guān)閉。Default: 0
              //cpds.setMaxStatements(1);

              //maxStatementsPerConnection定義了連接池內(nèi)單個(gè)連接所擁有的最大緩存statements數(shù)
              //cpds.setMaxStatementsPerConnection(100);

              //定義所有連接測(cè)試都執(zhí)行的測(cè)試語句。在使用連接測(cè)試的情況下這個(gè)一顯著提高測(cè)試速度。注意:測(cè)試的表必須在初始數(shù)據(jù)源的時(shí)候就存在。Default: null preferredTestQuery  
              //cpds.setPreferredTestQuery("select sysdate from dual");   
              // 因性能消耗大請(qǐng)只在需要的時(shí)候使用它。如果設(shè)為true那么在每個(gè)connection提交的   
              // 時(shí)候都將校驗(yàn)其有效性。建議使用idleConnectionTestPeriod或automaticTestTable   
              // 等方法來提升連接測(cè)試的性能。Default: false testConnectionOnCheckout   
              //cpds.setTestConnectionOnCheckout(true);
              //如果設(shè)為true那么在取得連接的同時(shí)將校驗(yàn)連接的有效性。Default: false testConnectionOnCheckin   
              //cpds.setTestConnectionOnCheckin(true);   
              //定義在從數(shù)據(jù)庫獲取新連接失敗后重復(fù)嘗試的次數(shù)。Default: 30 acquireRetryAttempts   
              //cpds.setAcquireRetryAttempts(30);     
              //獲取連接失敗將會(huì)引起所有等待連接池來獲取連接的線程拋出異常。但是數(shù)據(jù)源仍有效   
              //保留,并在下次調(diào)用getConnection()的時(shí)候繼續(xù)嘗試獲取連接。如果設(shè)為true,那么在嘗試   
              //獲取連接失敗后該數(shù)據(jù)源將申明已斷開并永久關(guān)閉。Default: false breakAfterAcquireFailure   
              //cpds.setBreakAfterAcquireFailure(false);   

            //兩次連接中間隔時(shí)間,單位毫秒。Default: 1000 acquireRetryDelay
            cpds.setAcquireRetryDelay(60000);

          java.lang.AbstractMethodError: oracle.jdbc.driver.OracleResultSetImpl.getClob(異常解決辦法

          最近遇到了一個(gè)頭痛的問題,可能大家也遇到過。經(jīng)過多番的詢問與查找,終于知道問題原因的所在:異常內(nèi)容如下:

          java.lang.AbstractMethodError: oracle.jdbc.driver.OracleResultSetImpl.getClob(Ljava/lang/String;)Ljava/sql/Clob;

          問題原因:Oracle驅(qū)動(dòng)版本不對(duì)

          解決辦法:在Oracle服務(wù)器上找到這個(gè)驅(qū)動(dòng),然后cp到Apache的lib目錄下,并同是修改環(huán)境變量classpath,保證這個(gè)lib/classes12.jar在最前面;修改完后,重新啟動(dòng)服務(wù),問題就可以解決。

          (ojdbc14.jar在classes12.jar前面)

           

          posted on 2012-09-20 15:21 甜咖啡 閱讀(5964) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          我參與的團(tuán)隊(duì)

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 隆安县| 巴彦县| 安国市| 江陵县| 会昌县| 太谷县| 永胜县| 探索| 广东省| 榆社县| 扬中市| 剑川县| 房山区| 墨玉县| 临城县| 辽源市| 开鲁县| 镇赉县| 武安市| 新乐市| 绵竹市| 新郑市| 肇东市| 乌苏市| 米泉市| 洪江市| 密山市| 龙胜| 韶关市| 三都| 兴义市| 调兵山市| 固阳县| 大方县| 额济纳旗| 额敏县| 镇江市| 佛山市| 镇安县| 金平| 高邑县|