본문 바로가기
Web/JSP

JSP #20 DBCP

by 언덕너머에 2015. 2. 17.

DBCP(DataBase Connection Pool)

접속 인원이 많은 웹페이지에서 데이터베이스의 효율성과 속도를 높이기 위해서 사용.

DBCP 매니저가 어느 정도의 연결을 확보해 놓고 있다가 클라이언트의 요청이 들어오면 연결해 주고,

클라이언트의 작업이 끝나면 연결을 다시 DBCP 매니저에게 반환하도록 만드는것.

 

 

클라이언트가 접속할 때마다 데이타베이스에 연결을 시도할 경우에 비해서 데이터베이스 연결 부하가 월등하게 적어지는 구조.

 

- 설정

 Tomcat 서버의 server.xml을 수정

    <Context docBase="webStudy09" path="/webStudy09" reloadable="true"
     source="org.eclipse.jst.jee.server:webStudy09" >
     <Resource name="jdbc/myoracle"

                    auth="Container"
                   
type="javax.sql.DataSource"   

                    driverClassName="oracle.jdbc.OracleDriver"

                    url="jdbc:oracle:thin:@127.0.0.1:1521:TestDB"
      
             username="사용자" password="비밀번호" maxActive="20" maxIdle="10"
                    maxWait="-1"/>
    </Context>

 해당 웹프로젝트의 <Context>태그 안에 <Resource>태그를 추가 한다. TestDB는 각자 연결할

 DB서버명을 입력하고 사용자와 비밀번호를 설정값에 맞게 수정한다.

 

 JSP

<%@page import="java.sql.Connection" %>
<%@page import="javax.sql.DataSource" %>
<%@page import="javax.naming.InitialContext" %>
<%@page import="javax.naming.Context" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>DB 연동</title>
</head>
<body>
<h4>DB 연동</h4>
<%
 Context initContext = new InitialContext();
 Context envContext  = (Context)initContext.lookup("java:/comp/env");
 DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
 Connection conn = ds.getConnection();
 out.println("DBCP 연동 성공");
%>
</body>
</html>