[JDBC Connection Pool]티베로(Tibero), 오라클(Oracle), 톰캣(Tomcat) 레진(Resin), 제우스(Jeus), 웹로직(Weblogic) 커넥션풀 설정 및 사용방법
아래 문건은 국산데이터베이스인 Tibero ( www.tibero.com ) 데이터베이스용 Tomcat 커넥션풀을 설정하기위해서 작성되었고, 오라클 운영시도 동일하게 했었다.
https://blog.naver.com/jaegoan/30118884691 에서 옮겨왔다.
※ 오라클(Oracle) 도 아래에서 driverClass Name만 변경하면 똑같이 적용된다.
######################################
# 제목 : Tomcat에서 connection Pool활용
# 2011.09.22
# 작성자 : 박재관
######################################
■ 톰캣/레진 등에서 사용하는 방법
public class DBConnection {
private void getDataSource() {
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
GlobalVariable.DATA_SOURCE = (DataSource) envCtx.lookup("jdbc/ora9");
} catch (Exception e) {
Utility.error(e);
}
}
public Connection getConnection() {
java.sql.Connection conn = null;
try {
if(GlobalVariable.DATA_SOURCE==null) getDataSource();
conn = GlobalVariable.DATA_SOURCE.getConnection();
} catch (Exception e) {
}
return conn;
}
※ 주의사항...반드시 반환하기전 prepared statement, statement,connection 모두 close시켜야 함. 만약 그리하지 않으면 Cursor갯수를 초과한다든지..
커넥션 풀 부족현상을 겪을 수 있습니다.
절대로 finally 절에 넣지 마세요... was에서는 작동안된다고 봐야 합니다.
사용후 아래 예와 같이..
if (rs!=null) { rs.close(); rs=null;}
if (pstmt!=null) { pstmt.close(); pstmt=null;} 또는 if (stmt!=null) { stmt.close(); stmt=null;}
if (con!=null) { con.close(); con=null}
확실히 클로즈 하고 반환해주셔야 합니다. 초보들이 많이 범하는 실수가...
Exception 이 발생해서 catch() 절에 갔을때 위의 사항을 놓지는 경우가 많습니다.
try {
java.util.Properties props = new java.util.Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,"jeus.jndi.JEUSContextFactory");
props.put(Context.PROVIDER_URL,"127.0.0.1");
Context ctx = new InitialContext(props);
DATA_SOURCE = (DataSource) ctx.lookup("DS");
} catch (Exception e) {
}
}
cf. 웹로직의 경우
try {
java.util.Properties p=new java.util.Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL,"t3://localhost:7001/");
ctx=new javax.naming.InitialContext(p);
} catch (Exception e) {
}
}
■ 톰캣 커넥션풀 설정
1. server.xml파일의 <GlobalNamingResources></GlobalNamingResources> 태그 사이에 아래 삽입
<Resource name="DataSource이름"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.tmax.tibero.jdbc.TbDriver"
loginTimedout="10"
maxWait="5000"
username="db유저명"
password="db유저패스워드"
testOnBorrow="true"
url="jdbc:tibero:thin:@(DESCRIPTION=(FAILOVER=ON)(LOAD_BALANCE=ON)(ADDRESS_LIST=(ADDRESS=(HOST=아이피 또는 도메인명)(PORT=8629))))"
/>
2. <host></host> 태그안 <Context></Context> 태그 사이에 위의 내용 붙여넣기
3. wb.xml 파일 (사용할 컨텍스트 루트의 WEB-INF directory에 위치) <resource-ref></resource-ref> 태그집어넣기
<resource-ref>
<description>설명</description>
<res-ref-name>Datasource이름</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<resource-ref>
■ RESIN에서 커넥션풀활용법
RESIN에서는 커넥션연결은 톰캣과 동일하다.
다만, 톰캣과 같이 web.xml, server.xml에 설정하는 것과 다르게..
아래와 같이 만 설정해주면 어플리케이션에서 connection Pool을 사용할 수 있다.
<resource-ref>
<res-ref-name>Datasource이름</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<init-param driver-name="com.tmax.tibero.jdbc.TbDriver"/>
<init-param url="jdbc:tibero:thin:@(DESCRIPTION=(FAILOVER=ON)(LOAD_BALANCE=ON)(ADDRESS_LIST=(ADDRESS=(HOST=db서버ip또는도메인명)(PORT=8629))))"/>
<init-param user="db유저명"/>
<init-param password="db유저패스워드"/>
<init-param max-connections="20"/>
<init-param max-idle-time="30"/>
</resource-ref>
.....
'IT 개발관련' 카테고리의 다른 글
[Windows10]키보드 자모음 분리, 커서브라우징을 사용하시겠습니까? (0) | 2023.04.12 |
---|---|
울트라에디트 음표(♪) 문제 (0) | 2023.02.10 |
[ZOOM]Migrate your JWT app by June 1, 2023 (0) | 2022.12.07 |
[Escape Character]Java에서 특수기호 처리방법 (0) | 2022.07.04 |
댓글