DB接続について
JAVA初心者です。
DB接続についてなのですが、いままで設定ファイルより<url>,<user>,<password>等の情報を取得してDB接続していたのですが、今後、『WebSphere』のデータソースの設定から取得する方式に変更となり、プログラム例として次のコードをもらったのですが…
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("登録したJNDI名");
Connection conn = ds.getConnection();
これを以下のコードにどう組み込んでよいかわかりません…
どうかご教授お願いします。
public class ConnectionCache{
private static final string This_Name = "jp.co.ise.filetransfer.server.common.ConnectionCache";
private static ConnectionCache instance = null;
private static ObjectPool pool = null;
private DataSource ds = null;
// java.lang.Object#Object()
private ConnectionCache(){}
// Method ConnectionCache
// @param ds
private ConnectionCache(DataSource ds){
this.ds = ds;
}
// Method getDataSource
// @return DataSource
public static DataSource getDataSource(){
return instance.ds;
}
public static void init(Properties prop) throws Exception {
try {
class.formName(prop.getProperty("drive"));
// プールするアイドルコネクション数の上限
int maxIdleNum = Integer.parselnt(prop.getProperty("maxIdle"));
// プール初期化時のアイドルコネクション数
int initIdleCapacityNum = Integer.parselnt(prop.getProperty("initIdleCapacity"));
// ObjectPoolインスタンスを生成
int initIdleCapacityNum = Integer.parselnt(prop.getProperty("initIdleCapacity"));
// Connectionオブジェクトを生成するためのConnectionFactoryインスタンスの生成
ConnectionFactory conFactory = new DriverManagerConnectionFactory(
prop.getProperty("url"), prop.getProperty("user"), prop.getProperty("password")
);
// PoolableConnectionFactoryインスタンスの生成
new PoolableConnectionFactory(
conFactory, pool, null, prop.getProperty("validationQuery"), true, true
);
// プーリング機能を持つDataSourceインスタンスの生成
DataSource ds = new PoolingDataSource(pool);
// 初期サイズ指定分のコネクションをプール
ArrayList initConnections = new ArrayList();
// 新規接続
for(int i = 0; i < initIdleCapacityNum; i++){
initConnections.add(ds.getConnection());
}
// プールへ返却
for(int i = 0; i < initIdleCapacityNum; i++){
((Connection)initConnections.get(i)).close();
}
instance = new AppleConnectionCache(ds);
system.out.println( THIS_NAME
+ "DB接続プールを初期化しました。:プール内のコネクション数 = "
+ pool.getNumIdle());
} catch (Throwable t) {
throw new Exception ( THIS_NAME
+ "DB接続プールの初期化に失敗しました。:" + t.getMessage());
}
}
//Method getInstance.
//@return AppleConnectionCache
public static synchronized AppleConnectionCache getInstance() {
return instance;
}
//Method getConnection.
//@return Connection
public synchronized Connection getConnection() throws Exception {
Connection conn = null;
try{
conn = ds.getConnection();
} catch (SQLException e) {
throw new Exception ( THIS_NAME + "DB接続に失敗しました。:"
+ e.getMessage());
}
return conn;
}
//Method closeCache.
public synchronized void closeCache() {
try{
pool.close();
system.out.println(THIS_NAME + "DB接続プールのリソースを開放しました。");
} catch (Exception e) {
}
}