一個Oracle數據庫鏈接的JavaBean實例

字號:

一個Oracle數據庫鏈接的JavaBean實例
    public class OracleConnectionManager {
    private DBConnectionManager connMgr;
    private final String poolName="Oracle";
    private Connection conn;
    public OracleConnectionManager() {
    String userID = "system";
    String password = "manager";
    String JDBCDriver = "oracle.jdbc.driver.OracleDriver";
    String JDBCDriverType = "jdbc:oracle:thin";
    String DBHost = "127.0.0.1";
    String Port = "1521";
    String SID="sid";
    String url = JDBCDriverType+":@"+DBHost + ":" + Port + ":" +SID;
    connMgr = DBConnectionManager.getInstance();
    if (DBConnectionManager.clients == 1){
    connMgr.init(poolName, JDBCDriver, url, userID, password);
    connMgr.init("egongOracle", JDBCDriver, JDBCDriverType+":@110.7.6.22:1521:egong", "abcusername", "abcpasswd");
    }
    }
    public Connection getConnection() {
    return (conn=connMgr.getConnection(poolName));
    }
    public Connection getConnection(String newOracle) {
    return (conn=connMgr.getConnection(newOracle));
    }
    public void freeConnection() {
    connMgr.freeConnection(poolName,conn);
    }
    public void freeConnection(String newOracle) {
    connMgr.freeConnection(newOracle,conn);
    }
    }
    public class DBConnectionManager {
    static private DBConnectionManager instance=null; // The single instance
    static public int clients=0;
    private Vector drivers = new Vector();
    private PrintWriter log;
    private Hashtable pools = new Hashtable();
    private final int MAX_CONN = 1000;
    /**
    * Returns the single instance, creating one if it´s the
    * first time this method is called.
    *
    * @return DBConnectionManager The single instance.
    */
    static synchronized public DBConnectionManager getInstance() {
    if (instance == null) {
    instance = new DBConnectionManager();
    }
    clients++;
    return instance;
    }
    /**
    * A private constructor since this is a Singleton
    */
    private DBConnectionManager() {
    // init();
    }
    /**
    * Returns a connection to the named pool.
    *
    * @param name The pool name as defined in the properties file
    * @param con The Connection
    */
    public void freeConnection(String name, Connection con) {
    DBConnectionPool pool = (DBConnectionPool) pools.get(name);
    if (pool != null) {
    pool.freeConnection(con);
    }
    }
    /**
    * Returns an open connection. If no one is available, and the max
    * number of connections has not been reached, a new connection is
    * created.
    *
    * @param name The pool name as defined in the properties file
    * @return Connection The connection or null
    */
    public Connection getConnection(String name) {
    DBConnectionPool pool = (DBConnectionPool) pools.get(name);
    if (pool != null) {
    return pool.getConnection();
    }
    return null;
    }
    /**
    * Returns an open connection. If no one is available, and the max
    * number of connections has not been reached, a new connection is
    * created. If the max number has been reached, waits until one
    * is available or the specified time has elapsed.
    *
    * @param name The pool name as defined in the properties file
    * @param time The number of milliseconds to wait
    * @return Connection The connection or null
    */
    public Connection getConnection(String name, long time) {
    DBConnectionPool pool = (DBConnectionPool) pools.get(name);
    if (pool != null) {
    return pool.getConnection(time);
    }
    return null;
    }
    /**
    * Closes all open connections and dereGISters all drivers.
    */
    public synchronized void release() {
    // Wait until called by the last client
    if (--clients != 0) {
    return;
    }