본문 바로가기
IT 개발관련

[JDBC Connection Pool]티베로(Tibero), 오라클(Oracle), 톰캣(Tomcat) 레진(Resin), 제우스(Jeus), 웹로직(Weblogic) 커넥션풀 설정 및 사용방법

by 현혜사랑 2022. 7. 4.
728x90

[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() 절에 갔을때 위의 사항을 놓지는 경우가 많습니다.

반응형
cf. 제우스의 경우
private void getDataSource() {
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. 웹로직의 경우
private void getDataSource() {
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);
  DATA_SOURCE  = (DataSource) ctx.lookup("DS");
} catch (Exception e) {
  //.....
}
}
※ DS : ConnectionPool 설정한 이름
 

 

 

■ 톰캣 커넥션풀 설정
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>

 

.....

■ Jeus Weblogic ConnectionPool 설정방법은 그리 어렵지 않다.
    제우스의 경우 JeusMain.xml 파일에 커넥션풀 설정을 하는데, 샘플소스를 보고 하면 된다.

 

728x90
반응형

댓글