자카르타 DBCP API를 이용한 커넥션 풀(Connection Pool) 사용하기


1. 다음의 파일을 최신버전으로 다운받는다.


2. 다운받은 네개의 바이너리 압축파일 해제한 후 생성된 폴더 안에 있는 다음의 파일들을 Eclipse 작업프로젝트폴더\WebContent\WEB-INF\lib 폴더에 복사한다.

  • mysql-connector-java-5.1.22-bin.jar파일을 C:\Program Files\Java\jre7\lib\ext 와 C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib 에 각각 복사
  • commons-collections-3.2.1.jar
  • commons-dbcp-1.4.jar
  • commons-pool-1.6.jar


3. 작업프로젝트폴더\WebContent\META-INF\context.xml 파일을 작성한다.

<Context> 
	<Resource name="jdbc/리소스명" 
		auth="Container"
		type="javax.sql.DataSource" 
		username="DB접속아이디" 
		password="DB접속비밀번호"
		driverClassName="com.mysql.jdbc.Driver"
 		/* Oracle DB라면 driverClassName="oracle.jdbc.driver.OracleDriver" */
		factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
		url="jdbc:mysql://localhost:3306/DB이름"
		/* Oracle DB라면 url="jdbc.oracle:thin:@localhost:1521:DB이름" */
		logintimeout="100"
		maxActive="500"
		maxIdle="100"/>
</Context>


4. 작업프로젝트폴더\WebContent\WEB-INF\web.xml 파일에 다음의 코드를 추가한다.

<web-app ...="">
  ...
<resource-ref>
        <description>Connection</description>
        /* 다음이 바로 리소스의 이름 */
        <res-ref-name>jdbc/리소스명</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
</resource-ref>
  ...
</web-app>


5. Connection 객체와 JNDI를 사용하기 위한 package를 import한다.

<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>


6. Servlet이든 JSP이든 JNDI를 이용하여 연결된 Connection 객체를 가져온다.

...
Context init = new InitialContext();
DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/리소스이름");
ds.getConnection();
...