커넥션 풀(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와 연동
...
생략
'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 |
댓글