JSP를 처음 접하고 Connection Pool 부분에서 막히더군요. 거의 이틀 동안 삽질한듯 싶네요 ㅠ.ㅜ.
이러한 일이 다시 일어나지 않기를 기원하며 이렇게 글을 올립니다.
다른 강좌들 보단 최대한 자세히 쓰려고 노력했으니 분명히 도움이 되시리라 생각됩니다.
그리고 이 문제로 몇 일동안 힘들어했던 저에게 정말 많은 도움을 주셨던 기로로님에게 감사의 말씀을 드립니다.
본 강좌는 Eclipse J2EE, Tomcat 6.0 과 My-SQL 기준으로 작성된 것임을 미리 알려드립니다.
그리고 Tomcat의 버전이 맞지 않으면 설정 환경이 조금씩 다를 수 있다는 것 또한 알려드립니다.
1. 첨부된 파일들을 다운 받는다.
2. 다음 순서대로 받은 파일들을 해당 폴더에 넣는다.
commons-collections-3.1.jar
commons-dbcp-1.2.1.jar
commons-pool-1.2.jar
이 파일들을 자신이 이클립스에서 만들어둔 프로젝트/WebContent/WEB-INF/lib 폴더에 복사한다..
mysql-connector-java-3.0.14-production-bin.jar
그리고 위의 JDBC 라이브러리는 설치된 톰캣의 lib 폴더 안에 복사한다.
3. 프로젝트/WebContent/META-INF 폴더에 context.xml 파일을 생성한다.
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/프로젝트" docBase="프로젝트" reloadable="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/임의의 DBCP명"
auth="Container"
type="javax.sql.DataSource"
driverClassName="드라이브명"
url="DB URL"
username="DB 아이디"
password="DB 비밀번호"
<!-- 사용 하고 있는 커넥션의 최대수 -->
maxActive="20"
<!-- 사용 안하고 있는 커넥션의 최대수 -->
maxIdle="10"
<!-- 커넥션을 열기위해 최대 기다리는 시간 "-1" 이라면 무기한 기다림 -->
maxWait="-1"
/>
</Context>
4. 프로젝트/WebContent/WEB-INF 폴더에 web.xml 파일의 web-app 태그 안에 코드를 추가한다.
<web-app .... 이하 중략...>
<resource-ref>
<description>MySQL DB Connection</description>
<res-ref-name>jdbc/임의의 DBCP명</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
5. DBCPTest.jsp 실행하기.
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.sql.*, javax.naming.*, javax.naming.Context, javax.naming.InitialContext, javax.sql.DataSource" %>
<html>
<head>
<title>DBCP Test</title>
</head>
<body>
<%
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:/comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/임의의 DBCP명");
conn = ds.getConnection();
out.write("DBCP Connection..<br><br>");
String sQuery = "select 1 + 1";
stmt = conn.createStatement();
rs = stmt.executeQuery(sQuery);
while (rs.next())
{
out.write("1 + 1 = " + rs.getString(1) + "<br>");
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try {rs.close(); } catch (Exception ex2) {}
if (stmt != null) try {stmt.close(); } catch (Exception ex3) {}
if (conn != null) try {conn.close(); } catch (Exception ex4) {}
}
%>
</body>
</html>
[ 결과 화면 ]