甜咖啡

          我的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;
          }
          }

                  //測試方法
          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();
          }
          }
          }


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

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

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

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

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

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

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

          問題原因:Oracle驅動版本不對

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

          (ojdbc14.jar在classes12.jar前面)

           

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


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

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

          統計

          常用鏈接

          留言簿(1)

          我參與的團隊

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 五华县| 年辖:市辖区| 平邑县| 津南区| 齐齐哈尔市| 福清市| 贺兰县| 安丘市| 溆浦县| 长治县| 太仆寺旗| 龙泉市| 敦化市| 永定县| 黑龙江省| 静乐县| 布尔津县| 手游| 浑源县| 陇南市| 兴文县| 屏南县| 汪清县| 无极县| 分宜县| 黄平县| 尤溪县| 陇西县| 会同县| 循化| 三河市| 年辖:市辖区| 临颍县| 尖扎县| 磐石市| 泰和县| 自治县| 平昌县| 巧家县| 澳门| 济源市|