1. DB Connection Pool 이란?
대부분의 사람들이 DB Connection Pool이란 것을 알고 있을 것이다. 보통의 경우에는 DB에 연결을 하고 결과를 가져온 후에
연결을 끊어 버리게 된다. DB에 연결하는 과정은 시간이 많이 소요되는 Cost가 비싼 연산이다. 물론 퍼포먼스도 많이 떨어진다.
연결을 끊어 버리게 된다. DB에 연결하는 과정은 시간이 많이 소요되는 Cost가 비싼 연산이다. 물론 퍼포먼스도 많이 떨어진다.
이러한 문제점을 해결하기 위해 DB Connection Pool 이라는 것을 사용한다.
DB Connection Pool이란 DB Connection Pool 매니저가 일정의 컨넥션을 연결하고 있다가, 요청이 들어오면 컨넥션을 할당을 해주고 없으면 기다리게 한다. 요청한 클라이언트는 컨넥션을 다쓰면 다시 반납하는 구조로 이루어 진다.
따라서 속도면이나 퍼포먼스 부분에서 조금은 향상을 바랄수 있을 것이다.
DB Connection Pool이란 DB Connection Pool 매니저가 일정의 컨넥션을 연결하고 있다가, 요청이 들어오면 컨넥션을 할당을 해주고 없으면 기다리게 한다. 요청한 클라이언트는 컨넥션을 다쓰면 다시 반납하는 구조로 이루어 진다.
따라서 속도면이나 퍼포먼스 부분에서 조금은 향상을 바랄수 있을 것이다.
1)조건
WAS : 톰캣 4.1.X 이상
J2SDK : 1.4.X 이상
OS:원도우,리눅
JDBC드라이버:mysql-connector-java-3.0.16-ga-bin.jar
2)세팅
해당 톰캣의 COMMON/LIB에 DBCP에 관련된 다음의 3가지 라이브러리가 존재하는지 검사
commons-collections.jar,commons-dbcp-1.1.jar,commons-pool-1.1.jar
해당 콤캣의 COMMON/LIB에 MYSQL관련 라이브러리를 넣어준다.
mysql-connector-java-3.0.16-ga-bin.jar
conf/server.xml을 수정한다. JNDI 네임설정
scope="Shareable" type="javax.sql.DataSource"/>
url
jdbc:mysql://localhost/접속db명
각 context 의 WEB-INF/web.xml 파일을 설정한다.mysql의경우 따로 해야한다.
3)소스
모든세팅이 끝나면 아파치와 톰캣을 재가동합니다.
<%@ page import="javax.sql.*,java.sql.*,javax.naming.*" contentType="text/html;charset=euc-kr" %>
<%
Connection con = null;
//방법1
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("dbcp명");
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("dbcp명");
//방법2
Context ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/mysql");
con = ds.getConnection();
DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/mysql");
con = ds.getConnection();
Statement Stmt = con.createStatement();
ResultSet Rs = Stmt.executeQuery("SELECT * from user;");
Rs.next();
out.println("회원수 : " + Rs.getString(1) + " 명");
ResultSet Rs = Stmt.executeQuery("SELECT * from user;");
Rs.next();
out.println("회원수 : " + Rs.getString(1) + " 명");
%>
* tomcat 에서 JNDI 관련 에러메시지별 대처 방법
- Cannot load JDBC driver class 'com.mysql.jdbc.Driver', cause: com.mysql.jdbc.Driver 또는
Null Pointer Exception '', cause: No suitable driver
==> 해당 jdbc 드라이버(위의경우 mysql 드라이버) 가 없기 때문입니다.
해당 드라이버 파일을 $CATALINA_HOME/common/lib 디렉토리로 복사합니다.
- Name xxxx is not bound in this Context
==> server.xml 과 web.xml 에서 해당 JNID가 설정되지 않은 경우입니다.
server.xml 과 web.xml 에 JNDI resource 를 설정하고 이름을 동일하게 설정하도록 합니다.
댓글 없음:
댓글 쓰기