개발/JSP

[JSP]DB커넥션 풀(DBCP)

윤_ve 2021. 4. 5. 23:18

DBCP란?

 

커넥션 풀 사용 하기 전에는 db를 엑세스 하기 위해서는 DBconnection한 뒤 사용 한 후 close를 통해 사용을 종료하는 방법을 반복해서 사용해야하는 불편함이 있었다. 간단한 프로그램이면 모르지만 db에 많은 접근이 필요한 프로그램의 경우 이런 반복된 사용은 결국에는 프로그램의 부하로 작용하게 된다.

 

 Connection pool은 이러한 불편함을 해소하기 위해 connection을 일정 개수 미리 만들어 두고, 웹서버가 db에 접근이 필요할 때마다 하나씩 빌리고 반납하는 방식으로 처리하여 위 문제를 해결한다. 


Connection pool 연결테스트

 

우선 연결 하기 위해서는 tomcat의 server.xml 파일에 아래의 코드를 집어 넣어야 합니다.

 

<Resource name="jdbc/oracle" auth="Container"
              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@localhost:1521:xe"
              username="scott" password="tiger" maxActive="100" maxIdle="30"
              maxWait="10000"/>

 

최대 100명의 인원을 수용 할수 있고 10초의 대기시간이 지나면 30명의 대기 인원은 연결중 상태에서 팅겨나가게 되게끔 설정한 것이다.

 

 

Context태그 안에 본인이 만든 jsp프로젝트가 자동으로 들어가있습니다.

태그 사이에 위 코드를 복사 해야만 tomcat서버가 jdbc/oracle 데이터 베이스로 접근 할 수있습니다.

 

그다음 dbConn.jsp파일을 생성 한 뒤

 

<%@page import="javax.naming.Context"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.naming.NamingException"%>
<%@page import="java.sql.SQLException"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%!
		Connection con = null;
		DataSource ds = null;
	%>
	<%
		try{
			Context ctx = new InitialContext(); //업캐스팅
			ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");
			con = ds.getConnection();
			System.out.println("DBCP 연동 성공");
		}catch(NamingException ne){ 
			ne.printStackTrace();
		}catch(SQLException se){
			se.printStackTrace();
		}finally{
			try{
				if(con != null) con.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	%>
</body>
</html>

위 코드를 입력합니다.

이를 실행 하면

 

연동이 성공했다는 메세지가 출력됩니다.

 

다음 글에서 커넥션 풀을 활용한 db정보 업데이트 코드를 작성해 보겠습니다.