우선 톰켓 5.5* 이상 부터는 Connection Pool 설정시에 server.xml 과 web.xml 에
별도로 내용을 설정할 필요없이 context.xml 설정만 하면 된다 .
그래서 tomcat 6.0 에서는
conf 디렉토리의 context.xml에 파일에 설정하면된다.
server.xml에 설정하지 마라 안된다.
참고사이트 : http://webprogrammer.tistory.com/1288
http://disse77.tistory.com/65
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
<Resource name="jdbc/SpringDS"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/디비명"
username="아이디"
password="사용자암호"
maxActive="20"
maxIdle="10"
maxWait="3000"/>
</Context>
===>그리고 web.xml에
<resource-ref>
<description>MySQL DB Connection</description>
<res-ref-name>jdbc/SpringDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
와 같이 선언안해줘도 사용할수 있다.
===>스프링에서 사용하려면 아래와 같이 dataSource.xml에 선언해주면된다.
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" scope="singleton">
<property name="jndiName" value="java:comp/env/jdbc/SpringDS" />
<property name="resourceRef" value="true" />
</bean>
1. 첨부된 파일은 받는다. (Link)
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 파일을 생성한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?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 실행하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <%@ 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> |
6. 결과 화면
혹시 잘 안보이면
pool.zip
그림캡쳐파일입니다.
출처 : http://youngman.kr/?p=1025