728x90

Connection pool 개요

 

데이터 베이스를 연결하기 위한 커넥션 객체이다

이 객체는 새롭게 만들어 질 때 많은 시스템 자원을 요구 된다

 

객체는 메모리에 적재되는데, 메모리에 객체를 할당할 자리를만들고

객체가 사용할 여러 자원들에 대한 초기화 작업과

객체가 필요 없게되면 거두어 들어야 하는 작업등이 요구 되어서 객체의 생성 작업은 많은 비용을 요구한다

 

 

데이터베이스 커넥션은 데이터베이스를 한번 연결하기 위한작업인데

이러한 작업들을 매번 새로운 데이터 베이스 연결에 대한 요청이 들어 올때마다

수행 해야 한다면 많은 부담이 된다

 

이런 케넥션 객체를 생성하고 관리하는 방법에는 3 가지 방법이 있다

 

구현 1  : service method( doGet , doPost) 에서 커넥션 객체를 생성,

이 경우는 시스템 무하가 커지고, 메모리 낭비가 된다

 

구현2 : init method 에서 커넥션 객체를 생성

           하나의 커넥션을 쓰면 커넥션 쿼리가 쌓이게 되어 응답 시간이 증가 한다

 

구현3 : 커넥션 풀에서 커넥션 생성 및 관리하기

           이 방법은 자원을 쓰고, 회수하는 방법을 쓴다

 

          즉 한번 만들어져서 사용된 커넥션 객체는 다시 커넥션 풀로 회수되는 것이다

          이 방법을 사용하면 커넥션 생성 갯수를 결정 할 수 있다

 

         커넥션 풀은 끊임없이 생성되는 커넥션 문제를 해결하기 위한 목적이다

         반드시 컨테이너에 1 개만 만들어지도록 패턴을 만들어야 한다

 

 

        만약 컨테이너가 자동지원을 못해서 커넥션 풀을 작성해야 하는 경우에는

       커넥션 객체를 저장하고 있는 저장소인 커넥션 풀은 Vector 를사용해서 구현 한다

 

커넥션 풀의 전략은 다음과 같다

1. service() 메서드당 1 개씩은 가지고 쓰게 한다

2. 커넥션 개수를 제한한다

3. 커넥션 객체관리자는 다 쓰면 자원을 회수 한다

 

374  그림

1. 클라이언트 요청

2. connection 을 할당 받는다

3. connection 이 없을때 ( 커넥션이 반환 될때까지 기다리거나 , 임시로 생성 )

 

4. Connection 사용

5. Connection 반환

 

==셋팅 작업================

1. jar 파일 설치 ( tomcat5 버전 부터 제공 됩니다 )

tomcat5 버전은  c:\Tomcat5 \ common \ lib \ naming-factory-dbcp.jar

tomcat6 은  c:\tomcat6\lib\tomcat-dbcp.jar

 

2. DBCP에 관한 정보 설정 : tomcat6\ conf\ server.xml 파일에 셋팅 해야 합니다

 

3. JNDI 리소스 사용 설정  : 현재 사용중인 웹 어플리케이션 의 WEB-INF/ web.xml 에 설정

 

     webapps / study / WEB-INF / web.xml

                                            

4. JSP 페이지에서  커넥션 풀 사용

 

=== 작업 =========================

1. DB 작업

C:\MySQL5\bin>mysql -u root -p

 

mysql> create database ch19;

 

mysql> use ch19;

 

create  table test( name varchar(20) not null , email varchar(30) not null , addr varchar(50));

 

desc test;

 

insert into test values('정경호','jung@hanmail.net','서울 종로구');

insert into test values('이연희','lee1@hanmail.net','서울 여의도');

insert into test values('이민정','lee2@hanmail.net','서울 강남구');

 

select * from test;

 

2. 웹 어플리케이션 만들기

   C:\Tomcat 6.0\webapps \ study

                                                     WEB-INF

                                                          lib

                                                          classes

                                                          web.xml 복사 ( ROOT \ WEB-INF 에 있는것 )

                                                          tags

                                                          tlds

 

3. 이클립스

  1)  새프로젝트    Project.....선택  == Web== Dynamic Web Project 선택

         Project Name : study

 

 2) WEB-INF/ classes 폴거 작성 하기

 

 study 프로젝트에서 == 우측 버튼 == properties === 왼쪽(Java Build Path 선택하고)== source 탭 ==

 

 Broswer 버튼 클릭하고 == WebContent/ WEB-INF 선택하고

 

Create New Folder 버튼 클릭 하고 ===== classes 입력하고 == OK ===OK ===OK

 

< 잠시 JSP 작성 합니다>

WebContent 에서 == 우측 버튼 == new ==  JSP작성하여 === 실행 하고 ==

server.xml 에     Context 작업이 자동으로 됩니다 ( 확인 합니다)

 

 

4. server.xml 셋팅

 

<Context path="/study" docBase="C:\Tomcat 6.0\webapps\study" crossContext="true">

          <Logger  className="org.apache.catalina.logger.FileLogger" prefix="localhost_JspTest_log." suffix=".txt" timestamp="true"/>

         

          <Resource name="jdbc/jsptest"

            auth="Container"

            type="javax.sql.DataSource"

            driverClassName="com.mysql.jdbc.Driver"

           

            loginTimeout="10"

            maxWait="5000"

            username="root"

            password="12345"

            testOnBorrow="true"

            url="jdbc:mysql://localhost:3306/ch19"

            />

        </Context>

 

<설명>

----------------------------------------------------------------------------

 <Resource name="jdbc/jsptest"    ...( JNDI 이름 )

            auth="Container"  ....................(자원제어 => Container , Application, servlet )

            type="javax.sql.DataSource" ...( 자원 데이터  형 )

         

             driverClassName="com.mysql.jdbc.Driver" .... 드라이버

            loginTimeout="10" ................................

            maxWait="5000"  ............................

            username="root"

            password="12345"

            testOnBorrow="true" ............커넥션 풀 에서 커넥션을 가져올때 커넥션이 유효한지 검사를 합니다

            url="jdbc:mysql://localhost:3306/ch19"

            />

           maxActive : 데이터 베이스 최대 연결 갯수 지정 , 0 으로 하면 무제한으로 연결 가능

----------------------------------------------------------------------------

 

5.  study/WEB-INF/web.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

 

  <resource-ref>

    <description>jsptest db</description>

    <res-ref-name>jdbc/jsptest</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

  </resource-ref>

 

</web-app>

 

 

 

+ Recent posts