ksouth9

Connection Pool(커넥션 풀) 설정 본문

Web/JSP

Connection Pool(커넥션 풀) 설정

ksouth9 2022. 12. 13. 22:14

톰캣에서 커넥션 풀을 사용할 수 있도록 server.xml과 context.xml 두 개의 파일을 수정해야한다.

server.xml에 커넥션 풀을 전역 자원으로 선언하고, context.xml에서는 참조하는 링크를 추가한다.

server.xml


server.xml - 서버 전체와 관련한 설정을 담고있다.

 

  • 이클립스에서 Servers 폴더안의 server.xml 파일을 선택한다.
  • <GlobalNamingResources> 엘리먼트를 찾는다.

<GlobalNamingResources>는 전역 자원을 등록하는 영역이다. 따라서 이 엘리먼트 안에 등록한 자원은 이 서버에서 구동되는 모든 웹 애플리케이션에서 사용할 수 있다.

  • driverClassName : JDBC 드라이버의 클래스명
  • type : 데이터소스로 사용할 클래스명
  • initialSize : 풀의 최초 초기화 과정에서 미리 만들어놓을 연결의 개수(기본값 0)
  • minIdle : 최소한으로 유지할 연결 개수(기본값 0)
  • maxTotal : 동시에 사용할 수 있는 최대 연결 개수(기본값 8)
  • maxIdle : 풀에 반납할 때 최대로 유지될 수 있는 연결 개수(기본값 8)
  • maxWaitMillis : 새로운 요청이 들어왔을 때 얼만큼 대기할지를 밀리초 단위로 기술
  • url : DB 연결을 위한 URL
  • name : 생성할 자원(커넥션 풀)의 이름
  • username : 계정 아이디
  • password : 계정 패스워드

Oracle DB 기준

<GlobalNamingResources>
	...
    <Resource auth="Container"
    	      driverClassName="oracle.jdbc.OracleDriver"
              type="javax.sql.DataSource"
              initialSize="0"
              minIdle="5"
              maxTotal="20"
              maxIdle="20"
              maxWaitMillis="5000"
              url="jdbc:oracle:thin:@localhost:1521:xe"
              name="dbcp_myoracle"
              username="root"
              password="1234" />
</GlobalNamingResources>

MySQL DB 기준

<GlobalNamingResources>
	...
    <Resource auth="Container"
    	      driverClassName="com.mysql.cj.jdbc.Driver"
              type="javax.sql.DataSource"
              initialSize="0"
              minIdle="5"
              maxTotal="20"
              maxIdle="20"
              maxWaitMillis="5000"
              url="jdbc:mysql://localhost:3306/스키마name"
              name="dbcp_mysql"
              username="root"
              password="1234" />
</GlobalNamingResources>

type 속성으로 지정한 javax.sql.DataSource물리적인 데이터소스와의 연결을 생성해주는 자바 표준 인터페이스이다.

driverClassName 속성으로 지정한 oracle.jdbc.OracleDriver / com.mysql.cj.jdbc.Driver 클래스가 이 인터페이스를 구현하고 있다.

즉, 오라클, MySQL이 제공하는 OracleDriver, MySQLDriver 클래스가 커넥션 풀기능을 구현하며, 사용자는 자바 표준 인터페이스인 DataSource 형태로 받아 이용하는 것이다.

context.xml


context.xml - 각각의 웹 애플리케이션마다 하나씩 주어지는 자원을 설정한다.

 

 

  • 이클립스에서 Servers 폴더안의 context.xml 파일을 선택한다.
  • <GlobalNamingResources> 엘리먼트를 찾는다.
<Context>
	...
    <ResourceLink global=생성할 자원(커넥션 풀)의 이름 name=생성할 자원(커넥션 풀)의 이름
		  type=데이터소스로 사용할 클래스명 />
</Context>

예시

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

이 엘리먼트에는 풀의 이름과 데이터소스로 사용할 클래스명을 기술한다.

여기서 global 속성에는 앞서 server.xml에서 등록한 커넥션 풀 전역 자원의 이름을 명시한다.

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

Connection Pool(커넥션 풀)  (0) 2022.12.12
JSP DB Connection  (0) 2022.08.01
DAO(Data Access Object)  (0) 2022.07.03
DTO(Data Transfer Object)  (0) 2022.06.16
MVC 패턴  (0) 2022.06.16