DBCP(DataBase Conncetion Pool), 커넥션풀이란
데이터베이스와 Connection을 맺는 작업은 많은 자원을 소모한다.
따라서, 사용자가 요청할 때마다 Connection이 생성된다면 많은 서버에 과부하가 걸리게 된다. 이러한 상황을 예방하기 위해 미리 일정 갯수의 Connection을 만들어 Pool에 저장을 해두고 사용자의 요청이 발생하면 제공한 뒤 연결이 종료되면 다시 반환하여 보관하는 것이 커넥션풀.
사용자의 요청이 있더라고 커넥션풀에 이미 생성이 되어있기 때문에 새로운 Connection객체를 생성할 필요가 없어 자원 소모가 더 적다.
설치방법
1. 라이브러리 설치
2022.11.23 - [JSP] - [JSP] Apache Commons - Apache Commons Library
[JSP] Apache Commons - Apache Commons Library
https://commons.apache.org/ Apache Commons – Apache Commons Welcome to Apache Commons Apache Commons is an Apache project focused on all aspects of reusable Java components. The Apache Commons project is composed of three parts: The Commons Proper - A re
jjh93.com
2. 커넥션 풀 연동
우선 연동에 앞서서 Apache Tomcat9에서 제공하는 다큐먼트 사이트에 접속한다.
https://tomcat.apache.org/tomcat-9.0-doc/jndi-datasource-examples-howto.html#Installation
Apache Tomcat 9 (9.0.69) - JNDI Datasource How-To
JNDI Datasource configuration is covered extensively in the JNDI-Resources-HOWTO. However, feedback from tomcat-user has shown that specifics for individual configurations can be rather tricky. Here then are some example configurations that have been poste
tomcat.apache.org
스크롤을 내리다보면
마지막 리소스 코드만 있으면 된다. 이 코드를 server.xml에 추가해야한다.
Servers폴더에 server.xml 파일을 클릭
하단으로 스크롤하면 Context코드들을 볼 수 있다. 지금까지 서버에서 돌아간 채널들의 리스트들이 나오는 것.
커넥션풀을 설치하고자하는 Context를 선택하여
<Context docBase="CH08" path="/CH08" reloadable="true" source="org.eclipse.jst.jee.server:CH08"/>
Context 사이에 Resource코드를 추가 해준다.
<Context docBase="CH08" path="/CH08" reloadable="true" source="org.eclipse.jst.jee.server:CH08">
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxTotal="100" maxIdle="30" maxWaitMillis="10000"
username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javatest"/>
</Context>
아이디, 패스워드, 데이터베이스 이름을 자신이 사용하는 값으로 수정해준다.
<Context docBase="CH08" path="/CH08" reloadable="true" source="org.eclipse.jst.jee.server:CH08">
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxTotal="100" maxIdle="30" maxWaitMillis="10000"
username="root" password="1234" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb"/>
</Context>
++
만약 xml을 클릭했는데 이런 화면이 나온다면
하단에 Source선택
3. 연동확인
연동을 했으니 연동이 잘 되었는지 확인해보자.
DBCPTest.jsp
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.InitialContext"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<%@page import="javax.sql.*"%>
<%@page import="javax.naming.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>디비 연동 확인</h2>
<%
//아파치의 Context를 스캔하라
Context init = new InitialContext();
//읽은 Context 중 java에 관련된 환경변수 불러오라. 오브젝트 형태로 불러와 지기 때문에 Context로 형변환해주어야 함.
Context env = (Context)init.lookup("java:/comp/env");
//
DataSource ds = (DataSource)env.lookup("jdbc/TestDB");
Connection conn = ds.getConnection();
out.print("DBCP 연동 성공");
%>
</body>
</html>
다음과 같이 뜨면 DBCP연결 성공
'Spring > JSP' 카테고리의 다른 글
[JSP] Servlet 맵핑 (0) | 2022.11.23 |
---|---|
[JSP] 싱글톤과 EL표현을 활용한 멤버생성자 (0) | 2022.11.23 |
[JSP] 표현 언어(EL : Expression Language) (0) | 2022.11.23 |
[JSP] Apache Commons Library (2) | 2022.11.23 |
[JSP] JDBC 데이터 입력 (0) | 2022.11.22 |
댓글