📄 jmdboconnectionmanager.java
字号:
package jm.dbo;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Map;
import jm.util.JMMap;
import jm.util.JMVector;
/**
* DBConnectionManager
* @author fu_changyong(1shome)
* @see jdk1.5.2
* @version 1.5.2.2
*
*/
public class JMDBOConnectionManager implements JMDBOCommandKeys {
public static final String CLASS_NAME = "DBConnectionManager";
private static int clients = 0;
private static JMDBOConnectionManager instance;
private JMVector<JMDBOConntionInfoKeyValue> drivers = new JMVector<JMDBOConntionInfoKeyValue>();
private JMMap<String, JMDBOConnectionPool> pools = new JMMap<String, JMDBOConnectionPool>();
private JMDBOConnectionManager() {
init();
}
public static synchronized JMDBOConnectionManager getInstance() {
if (instance == null) {
instance = new JMDBOConnectionManager();
}
clients++;
return instance;
}
private void init() {
loadDrivers();
createPools();
}
public void freeConnection(String name, Connection con) {
JMDBOConnectionPool pool = pools.get(name);
if (pool != null) {
pool.freeConnection(con);
}
}
public Connection getConnection(String name) {
if (pools == null||pools.size()==0) {
return null;
}
JMDBOConnectionPool pool = pools.get(name);
if (pool == null) {
return null;
}
return pool.getConnection();
}
public Connection getConnection(String name, long time) {
JMDBOConnectionPool pool = pools.get(name);
if (pool != null) {
return pool.getConnection(time);
}
return null;
}
public synchronized void release() {
if (--clients != 0) {
return;
}
Map.Entry entry = null;
for (Iterator iter = pools.entrySet().iterator(); iter.hasNext();) {
entry = (Map.Entry) iter.next();
JMDBOConnectionPool pool = (JMDBOConnectionPool) entry.getValue();
pool.release();
}
for (Iterator iter = drivers.iterator(); iter.hasNext();) {
Driver driver = (Driver) iter.next();
try {
DriverManager.deregisterDriver(driver);
} catch (SQLException e) {
}
}
}
private final String DATABASE_CONFIG_FILE_NAME = "database.xml";
private void loadDrivers() {
try {
drivers = JMDBOConntionDriversManger.getInstance(DATABASE_CONFIG_FILE_NAME).getDbDrivers();
for (JMDBOConntionInfoKeyValue dbset : drivers) {
Driver driver = (Driver) Class.forName(dbset.getDriver())
.newInstance();
DriverManager.registerDriver(driver);
}
} catch (Exception e) {
}
}
private void createPools() {
try {
for (JMDBOConntionInfoKeyValue dbset : drivers) {
JMDBOConnectionPool pool = new JMDBOConnectionPool(dbset);
pools.put(dbset.getDatabase().toUpperCase(), pool);
}
} catch (Exception e) {
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -