자카르타 DBCP API를 이용한 커넥션 풀(Connection Pool) 사용하기
1. 다음의 파일을 최신버전으로 다운받는다.
- http://dev.mysql.com/downloads/connector/j/ 에서 MySQL Connector/J .zip파일 다운받기
- http://commons.apache.org/collections/ 에서 commons-collections-3.2.1-bin.zip 다운받기
- http://commons.apache.org/dbcp/ 에서 commons-dbcp-1.4-bin.zip 다운받기
- http://commons.apache.org/pool/ 에서 commons-pool-1.6-bin.zip 다운받기
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(); ...