频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

一个Oracle数据库链接的JavaBean实例

来源: 作者: 出处:巧巧读书 2006-08-05 进入讨论组
下一页 1 2 

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

Enumeration allPools = pools.elements();
while (allPools.hasMoreElements()) {
DBConnectionPool pool = (DBConnectionPool) allPools.nextElement();
pool.release();
}
Enumeration allDrivers = drivers.elements();
while (allDrivers.hasMoreElements()) {
Driver driver = (Driver) allDrivers.nextElement();
try {
DriverManager.deregisterDriver(driver);
log("Deregistered JDBC driver " + driver.getClass().getName());
}
catch (SQLException e) {
log(e, "Can´t deregister JDBC driver: " + driver.getClass().getName());
}
}
log.close();
}

/**
* Creates instances of DBConnectionPool based on the properties.
* A DBConnectionPool can be defined with the following properties:
* <PRE>
* <poolname>.url The JDBC URL for the database
* <poolname>.user A database user (optional)
* <poolname>.password A database user password (if user specified)
* <poolname>.maxconn The maximal number of connections (optional)
* </PRE>
*
* @param props The connection pool properties
*/
private void createPools(String poolName, String url, String user, String password, int max) {
/*
Enumeration propNames = props.propertyNames();
while (propNames.hasMoreElements()) {
String name = (String) propNames.nextElement();
if (name.endsWith(".url")) {
String poolName = name.substring(0, name.lastIndexOf("."));
String url = props.getProperty(poolName + ".url");
if (url == null) {
log("No URL specified for " + poolName);
continue;
}
String user = props.getProperty(poolName + ".user");
String password = props.getProperty(poolName + ".password");
String maxconn = props.getProperty(poolName + ".maxconn", "0");
int max;
try {
max = Integer.valueOf(maxconn).intValue();
}
catch (NumberFormatException e) {
log("Invalid maxconn value " + maxconn + " for " + poolName);
max = 0;
}
DBConnectionPool pool =
new DBConnectionPool(poolName, url, user, password, max);
pools.put(poolName, pool);
log("Initialized pool " + poolName);
}
}
*/
DBConnectionPool pool =
new DBConnectionPool(poolName, url, user, password, max);
pools.put(poolName, pool);
log("Initialized pool " + poolName);
}

public void init(String poolName, String driver, String url, String user, String passwd) {
init(poolName, driver, url, user, passwd, MAX_CONN);
}

转 载:http://www.qqread.com/oracle/2006/08/c261191052.html 更多文章 更多内容请看数据库专栏数据库处理专题城域网专题专题,或进入讨论组讨论。
下一页 1 2 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章