커넥션 풀(Connection Pool)

essential·2023년 8월 9일
0

JSP

목록 보기
21/21

커넥션 풀의 개요

  • 커넥션 풀
    • 데이터베이스와 연결된 Connection 객체를 미리 생성하여 풀(Pool) 속에 저장해
      두고 필요할 때마다 이 풀에 접근하여 Connection 객체를 사용하고, 작업이
      끝나면 다시 반환하는 것을 말한다.
  • 사용자가 웹 사이트에 요청을 하는데 이 때마다 매번 Connection
    객체를 생성하여 연결한다면 매우 비효율적일 것이다. 이 커넥션 풀을 사용하면 풀 속에 미리 커넥션이 생성되어 있기 때문에 커넥션을 생성하는 데 드는 연결 시간이 소비되지 않는다. 또 커넥션 재사용이 가능하기 때문에 사용자가 접속할 때마다 계속해서 커넥션을 생성할 필요가 없어 커넥션 풀을 사용한다면 프로그램 효율과 성능이 전체적으로 증가하게 된다.

커넥션 풀이 사용되는 구조

JNDI의 개요

  • JNDI(Java Naming and Directory Interface)란?
    • 명명 서비스 및 디렉토리 서비스에 접근하기 위한 API

자카르타 DBCP API를 이용한 커넥션 풀

  • 사용 절차
    • 자카르타 DBCP API를 사용하기 위해서는 먼저 자카르타 DBCP API 관련 jar 파일을 설치한다.
    • DBCP에 관한 정보 설정을 위해 context.xml 파일을 작성 한다.
    • 그 다음에는 JNDI 리소스 사용 설정을 위해 web.xml(최신버전은 수정 안 해도 됨)을 수정한다.
    • JSP 페이지에서 커넥션 풀을 가져다 쓰는 작업 수행
  • http://commons.apache.org 에서 다운로드 할 수 있다.
    • commons-collections-4.4.4-bin.zip
    • commons-dbcp2-2.9.0.zip
    • commons-pool2-2.11.1.zip
    • Releases 에서 다운로드 (Binaries 로) 받고 압축 풀기

    • WEB-INT/lib 에 .jar 파일 넣기 (세 개 다)

      META-INF/context.xml 파일 생성

      <Context>
      	<Resource name="jdbc/MysqlDB"
      	auth="Container"
      	type="javax.sql.DataSource"
      	username="root"
      	password="123456"
      	driverClassName="com.mysql.cj.jdbc.Driver"
      	factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
      	url="jdbc:mysql://localhost:3306/jpa?characterEncoding=utf-8"
      	maxActive="500"
      	maxIdle="100"/>
      </Context>
    • maxActive 동시에 연결할 수 있는 커넥션의 개수

    • maxIdle 사용하지 않고 존재하고 있는 (유휴) 커넥션 개수

      WEB-INT/web.xml 파일 생성

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
        <display-name>IntranetProject</display-name>
        <welcome-file-list>
          <welcome-file>index.html</welcome-file>
          <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
      
      </web-app>
    • web 과 관련된 설정 파일

    • welcome-file-list 는 디폴트로 보여줄 페이지 설정

JSP파일에서 DB와 연동하는 작업하기

예제

dbcpAPITest.jsp

<%@page import="javax.sql.DataSource"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
	Connection conn = null;

	try {
		Context initCtx = new InitialContext();
		//DataSource ds =(DataSource) initCtx.lookup("java:comp/env/jdbc/MysqlDB");
		//위 문장과 아래 문장은 동일한 기능
		Context envCtx = (Context) initCtx.lookup("java:comp/env");
		//ds context.xml 에 있는 name 을 반환
		DataSource ds = (DataSource) envCtx.lookup("jdbc/MysqlDB");
		//이미 만들어져있는 커넥션 객체를 할당
		conn = ds.getConnection();
		
		out.print("<h3>연결되었습니다.</h3>");
	}catch(Exception e){
	out.print("<h3>연결에 실패하였습니다.</h3>");
	e.printStackTrace();
	}	
%>
  • DB 사용할 때마다 기본적으로 작성해야 함
profile
essential

0개의 댓글