728x90
커넥션 풀
- 커넥션 객체를 미리 생성해 풀에 넣어놓고, 요청이 있을 때 이미 생성된 커넥션 객체를 가져다 사용하는 기법
- 대부분 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();
%>
728x90
'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 |
댓글