마케팅스프린트
[ GitHub ]

[ jungyijun@naver.com ]


  • Category
    • 마케팅 자동화
    • old posting
      • ChatGPT
      • Java
      • MySQL
      • JSP
      • Spring Framework
      • Node.js
Total
Today
Yesterday
hELLO · Designed By 정상우.
old posting/JSP

[JSP]커넥션 풀(Connection Pool)

2021. 6. 12. 04:29
  • 커넥션 풀(Connection Pool)
    • 데이터베이스와 연결된 커넥션을 미리 만들어서 풀(Pool) 속에 저장해두고 필요할 때 커넥션을 가져다 쓰고 다시 풀에 반환하는 기능을 의미한다.
    • 사용 순서
      1. 풀에서 커넥션을 가져온다.
      2. 커넥션을 사용한다.
      3. 풀에 커넥션을 반납한다.
    • 장점
      • 미리 만들어져 있기 때문에 커넥션을 생성하는 시간이 소비 되지 않는다.
      • 커넥션을 계속해서 재사용하기 때문에 생성되는 커넥션 수가 많지 않다.
      • 커넥션을 생성하고 닫는 시간을 줄일 수 있기 때문에 그만큼 어플리케이션 실행속도가 빨라진다.
      • 한번에 생성할 수 있는 커넥션의 수를 정할 수 있기 때문에 동시에 접속자 수가 몰려도 웹 어플리케이션이 쉽게 다운되지 않는다.
    • 동시 접속자 처리 방법
      • 커넥션 풀에서 생성되어 있는 커넥션의 개수는 한정적이므로 동시에 접속자 수가 많아지면 남아있는 커넥션이 없기 때문에 클라이언트는 대기 상태로 전환된다.
      • 커넥션이 반환되면 대기하고 있는 순서대로 커넥션이 제공된다.
  • 커넥션 풀의 속성
    • 커넥션 풀은 여러 속성을 이용하여 설정할 수 있다.
      • maxActive
        • 커넥션 풀이 제공할 수 있는 커넥션의 개수
      • whenExhaustedAction
        • 커넥션 풀에서 가져올 수 있는 커넥션이 없는 때 어떻게 동작할지 설정하는 속성
          • 0일 경우 에러발생
          • 1일 경우 maxWait 속성에서 지정한 시간만큼 커넥션을 얻을 때까지 기다림
          • 2일 경우 일시적으로 커넥션을 생성해서 사용
      • maxWait
        • whenExhaustedAction 속성 값이 1일 때 사용되는 대기시간을 지정
        • 단위 1/1000초, 0보다 작을 경우 무한대기
      • maxIdle
        • 사용되지 않고 저장될 수 있는 커넥션의 최대 개수
        • 음수일 경우 제한이 없다.
      • minIdle
        • 사용되지 않고 풀에 저장될 수 있는 커넥션의 최소 개수
      • testOnBorrow
        • true일 경우 커넥션 풀에서 커넥션을 가져올 때 커넥션의 유효성 여부를 검사한다.
      • testOnReturn
        • true일 경우 커넥션 풀에 커넥션을 반환 할 때 커넥션의 유효성 여부를 검사한다.
  • 커넥션 풀을 사용하기 위한 톰캣 컨테이너 설정 방법
    • 톰캣 Context.xml 파일에 코드를 추가한다.
  • Java 프로그램에서 DB 접속하는 방법
    1. JDBC를 이용하는 방법 (ConnectionPoolBean을 이용)
      • 데이터베이스에서 제공하는 DB커넥션 클래스를 이용해서 DB에 접속하는 방법
      • 개발자가 직접 코드에 아이디와 비밀번호, IP등을 입력해서 커넥션 객체를 생성하고 그 커넥션을 이용해서 DB를 제어하는 방법
    2. WAS에서 제공하는 Connection Pool을 사용하는 방법
      • 개발자가 코드에서 직접 DB에 연결하는 것이 아닌 연결을 WAS(톰캣, 제우스, Weblogic)가 하고, 사용자는 WAS가 연결한 커넥션을 이용하는 방법
      • WAS가 시작하면서 동시에 데이터베이스 커넥션 객체를 미리 생성하고 개발자는 그 객체를 그냥 가져다 사용하며 DataSource를 이용하는 방법이다.
      • 당연히 아이디와 비밀번호는 필요없다. (WAS가 알아서 접속한다.)
      • WAS가 만들어 놓은 커넥션은 각각 커넥션마다 이름이 있다.
      • 톰캣에서 제공하는 커넥션풀 사용 순서
        1. Context 객체를 생성한다.
        2. lookup()을 이용해서 매칭되는 커넥션을 찾는다.
        3. DataSource.getConnection()를 이용해서 커넥션을 확보한다.
저작자표시 (새창열림)
'old posting/JSP' 카테고리의 다른 글
  • [JSP] Statement와 PreparedStatment 그리고 ResultSet
  • [JSP] 자바 빈(bean)
  • [JSP] 웹어플리케이션에서의 예외처리란
  • [JSP] 세션 (Session) 그리고 세션(Session)과 쿠키(Cookie)의 차이점
마케팅스프린트
마케팅스프린트
쿠팡, 스마트스토어 자동화 솔루션

티스토리툴바