본문 바로가기
JAVA/JSP

커넥션 풀

by KkingKkang 2023. 3. 17.

커넥션 풀

  • 커넥션 객체를 미리 생성해 풀에 넣어놓고, 요청이 있을 때 이미 생성된 커넥션 객체를 가져다 사용하는 기법
  • 대부분 WAS는 커넥션 풀을 비롯한 여러 자원을 JNDI 서비스로 제공한다.
    • JNDI(Java Naming and Directory Interface)
  • WAS의 JNDI를 통해 커넥션 풀을 사용하는 절차
    • WAS가 시작할 때 server.xml과 context.xml에 설정한 대로 커넥션 풀을 생성한다.
    • JSP 코드에서 JNDI 서버로부터 데이터소스 객체를 얻어온다.
    • 데이터소스로부터 커넥션 객체를 가져온다.
    • DB작업을 수행한다.
    • 모든 작업이 끝나면 커넥션 객체를 풀로 반환한다.

server.xml

<Resource auth="Container"
driverClassName="oracle.jdbc.OracleDriver" --JDBC드라이버 클래스 명
type="javax.sql.DataSource" --데이터소스로 사용할 클래스명
initialSize="0" -- 풀의 최초 초기화 과정에서 미리 만들어 놓을 연결의 개수
minIdle="5" --최소한으로 유지할 연결 개수 
maxTotal="20" --동시에 사용할 수 있는 최대 연결 개수
maxIdle="20" -- 풀에 반납할 때 최대로 유지될 수 있는 연결 개수
maxWaitMillis="5000" -- 새로운 요청이 들어왔을 때 대기 시간(밀리초)
url="jdbc:oracle:thin:@localhost:1521:xe" --오라클 연결을 위한 URL
name="dbcp_myoracle" --생성할 자원의 이름
username="musthave" --계정 아이디
password="1234" /> --계정 패스워드

 

context.xml

<ResourceLink global="dbcp_myoracle" name="dbcp_myoracle" type="javax.sql.DataSource"/>

 

커넥션 풀 이용

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class DBConnPool {
	public Connection con;
	public Statement stmt;
	public PreparedStatement pstmt;
	public ResultSet rs;

	public DBConnPool(){
		try {
			// 커넥션 풀 얻기
			Context initCtx = new InitialContext();
			Context ctx = (Context)initCtx.lookup("java:comp/env");
			DataSource source = (DataSource)ctx.lookup("dbcp_myoracle");

			//커넥션 풀을 통해 연결 얻기
			con = source.getConnection();

			System.out.println("DB 커넥션 풀 연결 성공");

		}catch(Exception e){
			System.out.println("DB 커넥션 풀 연결 실패");
			e.printStackTrace();
		}
	}

	public void close() {
		try {
			if(rs != null) rs.close();
			if(stmt != null) stmt.close();
			if(psmt != null) psmt.close();
			if(con != null) con.close();

			System.out.println("DB 커넥션 풀 자원 반납");
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
}
<%@ page import="common.JDBConnect" %>
<%@ page import="common.DBConnPool" %>

<%
	DBConnPool pool = new DBConnPool();
	pool.close();
%>

 

반응형

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

JSTL 5가지 태그  (0) 2023.03.17
표현언어 EL  (0) 2023.03.17
액션 태그  (0) 2023.03.17
JSP 파일 업로드  (0) 2023.03.17
JSP 자바 빈즈(Beans)  (0) 2023.03.17

댓글