본문 바로가기

JSP, Servlet/JSP, Oracle 기초

[JSP] DBCP 소개

 DBCP(Database Connection Pool)의 약자로 데이터베이스와 연결을 맺고 있는 객체를 관리하는 역할을 수행.

 JDBC의 단점
 데이터베이스 연결 시 마다, DB접속을 위한 JDBC 드라이버 로드하고 Connection 객체를 얻는 작업을 반복 수행함.

 DBCP의 장점
 WAS 실행 시, 미리 일정량의 DB Connection 객체를 생성하고 Pool이라는 공간에 저장해 둔다.
 데이터베이스 연결 요청이 있으면, Pool이라는 공간에서 Connection 객체를 가져다 쓰고 반환하게 됨.

 

 DBCP 커넥션 풀은 톰캣 서버의 컨텍스트 패스의 서브 태그로 추가한다.

 Dynamic Web Project 생성 => 프로젝트명:jsp-study-09

  JDBC드라이버 ojdbcX.jar 와 JSTL을 위한 jar(jstl.jar)를 WEB-INF\lib에 복사한다.

 

 이클립스에 컨텍스트 패스를 자동으로 추가하기 위해 웹 프로젝트 실행

  소스명: "01_dbcp.jsp"을 생성하고 추가작업 없이 실행

 

 프로젝트 탐색기 화면에서 “Servers” 폴더에서 server.xml 파일을 연다.

   소스의 맨 아래로 내려가 “jsp-study-09” 프로젝트에 대한 <Context>를 찾는다.

   찾은 컨텍스트 패스를 <Context></Context> 형태로 태그를 변경한다.

 

 아파치홈페이지(http://tomcat.apache.org/) 접속하여 DBCP <Resource>를 복사한다.

   화면 왼쪽 [Documentation] -> [Tomcat 9.0]을 선택
   전환된 화면 왼쪽에서 “JDBC Resources” 항목을 선택
   목차에서 “4.Oracle 8i, 9i & 10g”항목을 선택
   전환된 화면에서 “<Resource name=“jdbc/myoracle” . . . . .” 내용을 복사하여 <Context>와 </Context> 사이에 붙여 넣는다.
   오라클 서버 이름을 mysid에서 XE로 변경하고 사용자이름도 변경한다.

 

그리고 01_dbcp.jsp <body>부분에 code Example을 추가한다.

	// Code Example
	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 연결 성공");

 

 

그리고 01_dbcp.jsp를 실행해서 잘 연결됐는지 확인한다.

<01_dbcp.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="javax.naming.Context"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>DBCP 사용 예제</h3>
	<%
		// Code Example
	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>

 

728x90
반응형