使用了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;
}
}