왼쪽 그림과 같이 설정이 되어야 한다.
먼저 Connection Pools를 만들고 만들어진 Connection Pools(여기선 ibisPool)을 이용해서 Data Sources를 만든다.
그리고 Java쪽에서는 만들어진 Data Sources(여기서는 ibisDS)를 사용하여 DB에 연결한다.
디비 연결 클래스를 보자.
// Weblogic DBConnection Class
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class DBConnection {
public DBConnection() {
}
public Connection getConnection() throws Exception {
return getConnection("jdbc/ibisDS");
}
public Connection getConnection(String dsName) throws Exception {
Context ctx = null;
DataSource ds = null;
try {
ctx = new InitialContext();
ds = (DataSource) ctx.lookup(dsName);
} catch (NamingException e) {
e.printStackTrace();
return null;
} finally {
try {
if (ctx != null)
ctx.close();
} catch (NamingException ne) {
System.err.println("comm.util.conPoool : can't close context resource !!");
}
}
return (Connection) ds.getConnection();
}
public void disConnection(ResultSet rs, PreparedStatement pstmt, Statement cstmt, Connection conn) {
try { if(rs != null) rs.close() ; rs = null; } catch(Exception e) { rs = null;}
try { if(pstmt!= null) pstmt.close(); pstmt = null; } catch(Exception e) { pstmt = null;}
try { if(cstmt!= null) cstmt.close(); cstmt = null; } catch(Exception e) { cstmt = null;}
try { if(conn != null) conn.close() ; conn = null; } catch(Exception e) { conn = null;}
}
}
기존의 JDBC 연결 클래스와 거의 동일하기 때문에 JDBC로 연결을 해본 사람이라면 웹로직에서도 크게 무리가 없으리라고 본다. (내가 그랬기 때문에.....)
일단 생성자인 DBConnection()에서는 아무것도 안하고 있고 오버로딩된 메서드 getConnection()이 2개 정의 되어 있다. 데이터소스 이름을 던져주면 2번째것이 실행되어서 데이터소스에서 해당이름으로 된것이 있는지 검색해서 커넥션을 리턴하고 파라미터를 던지지 않으면 기본으로 설정된 ibisDS(위에서 만든 이름이다. 당연히 각자 웹로직에서 사용한 이름으로...)의 커넥션을 리턴해준다. disConnection메서드에서는 사용한 디비자원을 닫아준다.
Comments