안녕하세요 몇분의 요청으로 이렇게 소스를 올립니다
ORACLE DB SESSION POOL 또는 ORACLE DB CONNECTION POOL이라고 애기하죠
무슨일을 하느냐면 오라클과 미리 세션을 맺고 있다가 사용자APP의 요청이 있으면 차례 차례 연결하는 역할이죠(POOLING) 사실 아주 간단해요
여기서 중요한것은 OracleConnectionCacheImpl CLASS 입니다 ORACLE OAS에서 제공하는 DB SESSIONPOOL은 이것을 상속받아 구현되었습니다
그러나 IAS 에서는 이것을 직접제작해서 써야됩니다. 아마 IAS 를 쓰시면 GLOBALS.JSA에 넣으면됩니다. JSP를 쓰면 USEBEAN 형태로 불렀쓰면되고 그냥 BEANS에서 쓰시면 IMPLEMENTATION 으로 불러 쓰시면 됩니다.
package com.dbpool;
import java.sql.*;
import javax.sql.*;
import oracle.jdbc.driver.*;
import oracle.jdbc.pool.*;
public class Trx {
public Trx() {
// 생성자
}
public Connection getConnection() {
try {
Connection conn = hdb.getConnection();
return conn;
} catch (Exception e) {
e.printStackTrace(System.out);
return null;
}
}
public void setURL(String s) {
try {
hdb = (OracleConnectionCacheImpl ) new OracleConnectionCacheImpl();
} catch (Exception e) {
e.printStackTrace(System.out);
}
hdb.setURL(s);
}
public void setUser(String s) {
hdb.setUser(s);
}
public void setPassword(String s) {
hdb.setPassword(s);
}
public void setMaxLimit(int i) throws SQLException {
hdb.setMaxLimit(i);
}
public void setMinLimit(int i) throws SQLException{
hdb.setMaxLimit(i);
}
public void close(Connection pConn) {
try {
pConn.close();
pConn = null;
} catch (Exception e) {
e.printStackTrace(System.out);
pConn = null;
}
}
public void close(Statement pStmt) {
try {
pStmt.close();
pStmt = null;
} catch (Exception e) {
e.printStackTrace(System.out);
pStmt = null;
}
}
public void close(ResultSet prs) {
try {
prs.close();
prs = null;
} catch (Exception e) {
e.printStackTrace(System.out);
prs = null;
}
}
public int getActiveSize() {
return hdb.getActiveSize();
}
public int getCacheSize() {
return hdb.getCacheSize();
}
private static OracleConnectionCacheImpl hdb;
}
서블릿/JSP Q&A란에 김창헌 [freehun@mercuros.com ] 님께서 올려주신 내용이었습니다.
|