데이터베이스와 연결된 커넥션을 미리 만들어서 저장해두고 있다가저장된 공간(pool) 에서 가져다 쓰고 반환하는 기법.커넥션을 미리 만들어 두고 사용하기 때문에사용자가 요청할 경우 드라이버를 로드하고, 커넥션 객체를 생성해 연결하는 비효율적인 작업을 하지 않아도 된다.데이터베이스 부하를 줄일 수 있고, 효율적으로 관리할 수 있다.DBCP에 이름을 붙여 관리할 수 있는 인터페이스데이터 및 객체를 발견하고참고하기 위한 자바 APIDB connetion을 위한 DB 연결 객체를 자바코드로 만들어왔는데,WAS 단인 tomcat으로 옮기는 것이다.naming을 통해 이 connetion pool에 접근하여 커넥션을 넘겨받아야한다.DB Pool을 미리 Naming 시켜두는 방법 (DB 연결 방법 중 하나)WAS 의 데이터베이스 정보에 JNDI를 설정해 놓으면, 웹 어플리케이션은 JNDI만 호출하면 간단해진다.개발을 한 사람과 실제 서비스를 운영하는 사람은 다른 경우가 많기 때문에, 소스 레벨에서 설정되어 있는 것보다
WAS 에서 설정되어 있는 것을 선호한다.
(자바소스코드로 되어있다면, 엔지니어가 배포 시 마다,
소스코드를 수정해야하기 때문 )
자바 서버 폴더에서, 프로젝트에 맞는 폴더 안에 있는 context.xml 파일에서 생성!
🗝️ WAS에 DB Connection 생성하기!
- context.xml



<Resource name="jdbc/oracle" auth="Container" type="javax.sql.DataSource" driverClassName = "oracle.jdbc.driver.OracleDriver" url= "jdbc:oracle:thin:@localhost:1521:xe" username= "jsp" // DB ID password="jsp" // DB pw maxActive="20" // 동시 접속 가능한 Connection 수 maxIdle= "20" // 사용한 Connction을 사용 후 Pool에 반납 시 // 최대로 유지할 개수 -> maxActive와 동일! maxWait= "-1" // Connection pool에 연결가능한 Connection이 // 없을 때, 유저를 얼마나 기다리게 할 것인지 />

<resource-ref> <description>Connection</description> <res-ref-name>jdbc/oracle</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>

🗝️ 라이브러리 추가하기
tomcat- dbcp 라이브러리 경로



<%@page import="javax.naming.InitialContext"%> <%@page import="java.util.Date"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.Connection"%> <%@page import="javax.sql.DataSource"%> <%@page import="javax.naming.directory.InitialDirContext"%> <%@page import="javax.naming.Context"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% //dbcp를 이용하는 방법 Context context = new InitialContext(null); DataSource dataSource = (DataSource)context.lookup("java:comp/env/jdbc/oracle"); Connection conn = dataSource.getConnection(); %> <%=conn %> </body> </html>
connection 정보 출력되면 연결 성공!

DB select문으로 날짜 출력해보기!
<%@page import="javax.naming.spi.DirStateFactory.Result"%> <%@page import="javax.naming.InitialContext"%> <%@page import="java.util.Date"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.Connection"%> <%@page import="javax.sql.DataSource"%> <%@page import="javax.naming.directory.InitialDirContext"%> <%@page import="javax.naming.Context"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% //dbcp를 이용하는 방법 Context context = new InitialContext(null); DataSource dataSource = (DataSource)context.lookup("java:comp/env/jdbc/oracle"); Connection conn = dataSource.getConnection(); String sql = "select sysdate from dual"; PreparedStatement pstm = conn.prepareStatement(sql); ResultSet rs = pstm.executeQuery(); Date date = null; if(rs.next()){ date = rs.getDate(1); } %> <%-- <%=conn %> --%> <%=date %> </body> </html>