본문 바로가기
language/JSP

DBCP API를 이용한 커넥션 풀

by 스파이디웹 2020. 11. 15.
728x90

커넥션 풀(Connection pools)

-커넥션은 객체이다. 이 객체가 만들어질 때마다 많은 시스템 자원이 필요하다.

따라서 메모리에 객체를 할당할 자리를 만들고 또 객체가 사용할 여러 자원들에 대한 초기화 작업, 또한 이 객체가 더 이상 필요 없을 때 객체를 거둬들이는 작업이 필요하다.

 

-위의 시스템 자원에 대한 문제를 해결하기 위해 커넥션 풀에 커넥션 객체들을 만들어 놓은 후, 커넥션 객체가 필요한 경우 작성한 객체를 할당해 주고, 사용이 끝난 후에는 다시 커넥션 풀로 회수하는 방법을 사용한다.

 

-커넥션 풀은 끊임없이 생성되는 커넥션 문제 해결이 목적으로, 반드시 컨테이너(container)에 1개만 만들어지도록 해야 한다.

 

-커넥션 풀의 전략

1.service()메소드(사용자 요청)당 1개씩 할당한다.

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

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


자카르타 DBCP API를 이용한 커넥션 풀

1.DBCP API 관련 jar 파일 설치

2.DBCP에 관한 정보 설정 - context.xml

3.JNDI 리소스 사용 설정 - web.xml

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

 

1.DBCP API 관련 jar 파일은 톰캣 5.0.x버전부터 포함되어 있으므로 톰캣의 tomcat-dbcp.jar파일을 lib에 포함시킨다.

 

2.DBCP에 관한 정보 설정은 이클립스의 [Project Explorer]뷰의 [Servers]-[Tomcat v버젼 Server~]안에 있는 context.xml에 정보를 설정하는데,</Context> 엘리먼트 안에 <Resource> 엘리먼트를 정의한다.

 

ex)

<Resource

name="jdbc/DB이름"

auth="Container"

type="javax.sql.DataSource"

driverClassName="com.mysql.cj.jdbc.Driver"

username="root"

password="root"

url="jdbc:mysql://localhost:3306/DB이름?serverTimezone=UTC"

maxWait="5000"

/>

 

3.JNDI 리소스 사용을 이클립스의 [Project Explorer]qbdml [Servers]-[Tomcat v버젼 Server~]안에 있는 web.xml에 다음과 같이 기술한다.

 

ex)

<resource-ref>

  <description>jsptest db</description>

  <res-ref-name>jdbc/DB이름</res-ref-name>

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

  <res-auth>Containter</res-auth>

</resource-ref>

 

4.JSP 페이지에서 DBCP API를 사용한 커넥션 풀을 사용하려면 JNDI를 사용해 프로그래밍한다.

 

ex)

<%@ page contentType= "text/html; charset=euc-kr" %>

<%@ page import = "java.sql.*,javax.sql.*,javax.naming.*" %> <%-- 필요한 클래스를 사용하기 위해 javax.sql패키지와 javax.naming패키지를 import 받는다. --%>

 

중략

...

 

try{

Context initCtx = new InitialContext(); //InitialContext 객체 initCtx를 생성

Context envCtx = (Context) initCtx.lookup("java:comp/env"); //initCtx의 lookup("java:comp/env")메소드를 사용해 큰따옴표안에 기술된 이름 "java:comp/env"에 해당하는 객체를 찾아서 envCtx 변수에 넣는다

DataSource ds= (DataSource)envCtx.lookup("jdc/DB이름"); // lookup("java:comp/env")메소드를 사용해 "jdbc/DB이름"를 가지고 객체를 얻어내서 DataSource 객체 타입으로 형 변환 후 ds 변수에 저장

Connection conn = ds.getConnection(); //ds 객체의 getConnection()메소드를 사용해서 커넥션 풀로부터 커넥션 객체를 얻어내어 conn 변수에 저장한다. conn객체를 사용해서 DB와 연동

...

생략

 

 

728x90

'language > JSP' 카테고리의 다른 글

쿠키(Cookie)와 세션(Session)  (0) 2020.11.15
JQuery 사용법  (0) 2020.11.15
Ajax+JQuery  (0) 2020.11.15
액션 태그(Action tag)  (0) 2020.11.14
JSP 내장 객체(Implied Object)  (0) 2020.11.13

댓글