一个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;
}