Oracle連接池的實現

使用了Oracle連接池包

import java.util.*;
import java.sql.*;
import java.io.*;
import oracle.jdbc.pool.*;

public class DBPoolConnection {

  private String url = new String();
  private String user = new String();
  private String password = new String();
  private int imin = 0;
  private int imax = 0;
  private OracleConnectionPoolDataSource ocpds;
  private Connection conn = null;
  private OracleConnectionCacheImpl dbpool;
//使用 private static final 屬性只產生一個連接池
  private static final DBPoolConnection dbpoolconn = new DBPoolConnection();
//使用private屬性的構造函數保證構造函數不被調用
  private DBPoolConnection() {
    if (dbpool == null) {
      getConnectionInfo();
      setOraConnPoolDataSource();
      setOraConnCacheImpl(ocpds);
      setConn(dbpool);
    }
  }

  public static DBPoolConnection getdbpool() {
    return dbpoolconn;
  }

  private boolean getConnectionInfo() {
    Properties prop = new Properties();
    try {
      InputStream is = getClass().getResourceAsStream(
          "/database-conf.properties");
      prop.load(is);
      if (is != null) {
        is.close();
      }

    }
    catch (Exception ex) {
      System.out.println(ex.toString());
    }

    url = prop.getProperty("url");
    user = prop.getProperty("user");
    password = prop.getProperty("password");
    imin = Integer.parseInt(prop.getProperty("min"));
    imax = Integer.parseInt(prop.getProperty("max"));
    return true;
  }

  private OracleConnectionPoolDataSource setOraConnPoolDataSource() {
    Properties prop = new Properties();
    try {
      ocpds = new OracleConnectionPoolDataSource();
      ocpds.setURL(url);
      ocpds.setUser(user);
      ocpds.setPassword(password);
    }
    catch (Exception ex) {
    }
    return ocpds;
  }

  private OracleConnectionCacheImpl setOraConnCacheImpl(
      OracleConnectionPoolDataSource ds) {
    try {
      dbpool = new OracleConnectionCacheImpl(ds);
      dbpool.setCacheScheme(OracleConnectionCacheImpl.FIXED_WAIT_SCHEME);
      dbpool.setMinLimit(imin);
      dbpool.setMaxLimit(imax);
    }
    catch (Exception ex) {

    }
    return dbpool;
  }

  private void setConn(OracleConnectionCacheImpl oraconnImpl) {
    try {
      conn = oraconnImpl.getConnection();
    }
    catch (Exception ex) {
    }
  }

  public Connection getConn() {
    return conn;
  }

}

發佈了26 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章