본문 바로가기

IT 이야기/웹

#DBCP

■■■ DBCP(DataBase Connection pool)■■■

○ 커넥션 풀(Connection Pool) 기법이란,
  데이터베이스와 연결된 커넥션을 미리 만들어 풀(pool) 속에 저장해 두고 있다가.
  필요할 때에 커넥션을 풀에서 꺼내어 가져다 쓰고
  사용이 끝나면 다시 풀에 반환하는 기법을 말한다.

○ 데이터베이스를 연결하기 위한 커넥션(Connection)은 객체이다.
   이 객체는 새롭게 만들어지는 과정에서 많은 시스템을 자원을 요구하게 된다.
   객체가 메모리에 할당되고, 객체에 사용할 여러 자원들에 대한 초기화 작업
   그리고 객체가 더 이상 필요하지 않게 되었을 때 메모리를 회수하는 과정
   등에서 많은 비용이 발생하고 요구되는 것이다.

○ JSP 페이지를 생성할 때 마다 커넥션을 생성해서 사용하게 되면
  커넥션을 생성하고 회수하는데 많은 시스템 자원을 요구하게 되기 때문에
  동시 접속자 수가 많은 웹 어플리케이션의 경우 전체 성능을 떨어뜨리는 원인이 될 수 있다.
 이러한 성능 저하 문제를 해결하기 위해 사용하는 일반적인 방식이
  커넥션 풀(Connection Pool) 기법인것이다.

○ DBCP 를 사용하기 위해서는 기본적으로 세 개의 패키지가 필요하다.
  - Jakarta-Commons DBCP 1.2.1 (commons-dbcp-1.2.1 jar)
  - Jakarta-Commons Collections 3.1 (commons-collections-3.1.jar)
  - Jakarta-Commons Pool 1.2 (commons-pool-1.2.jar)

  ※ 하지만, 톰캣 6.x 부터 톰캣 서버 내부에 기본적으로 제공되기 때문에
    (경로 : Tomcat Root\lib 또는 Tomcat Root\common\lib)
    (파일 : tomcat-dbcp.jar) 
    다른 파일을 추가하거나 변경하지 않아도 무방하다.

○ 실습 환경 설정

 1. Eclips > Project Explorer > Server > Tomcat ... > context.xml
    파일 접근 및 열기

 2. 해당 파일의 맨 아래에... 즉, 『</Context>』 직전에 
    (Context 엘리먼트가 닫히기 전에...)
    -----------------------------------------------------------------------
    <Resource name="jdbc/myOracle" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:xe"
username="scott" password="tiger"
maxActive="20" maxIdle="10" maxWait="-1">
    </Resource>
    -----------------------------------------------------------------------
    내용을 추가한다.

    - name
      :리소스 식별을 위한 이름
    - auth
      :해당 리소스를 사용하게 되는 주체
    - type
      :리소스의 타입(패키지 경로 포함)
    - driverClassName
      :사용할 JDBC Driver 의 클래스 이름
    - url
      :JDBC Driver 에 의해 연결할 Connection 에 대한 URL
    - username
      : Connection 을 연결할 사용자 이름(오라클 사용자)
    - password
      : Connection 을 연결할 사용자 이름에 따른 비밀번호(오라클 암호)
    - maxActive
      : Connection Pool 이 제공할 최대 Connection 의 갯수
        (사이트 최대 커넥션 사용량을 기준으로 지정
         동시 접속자 수에 따라 지정)
    - maxIdle
      :사용되지 않고 풀(pool)에 저장될 수 있는 최대 Connection 의 갯수
    - maxWait
      :대기시간.(단위는 1/1000초)
       0보다 작게 설정할 경우 무한히 대기.

'IT 이야기 > ' 카테고리의 다른 글

# CSS  (0) 2025.03.17
#AJAX  (1) 2025.03.17