Tomcat DBCP를 이용한 Connection Pooling
tomcat의 server.xml 설정
<!--==================== Main Context 프로그램 작업 entry ======================-->
<Context path="/exam" docBase="/home/WWW" debug="0"
reloadable="true" crossContext="true">
<!--==================== Main Context 프로그램 작업 entry ======================-->
<!-- ==================== java의 DBCP를 이용하기 위해서 ==============-->
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/myoracle">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver </value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@111.111.111.111:1521:ORCL</value>
</parameter>
</parameter>
<parameter>
<name>username</name>
<value>tmp_user</value>
</parameter>
<parameter>
<name>password</name>
<value>tmp1234</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
</ResourceParams>
</Context>
<!-- ==================== java의 DBCP를 이용하기 위해서 ==============-->
server.xml에 설정된 내용을 /home/WWW/WEB-INF/web.xml 파일에
다음의 내용을 추가한다. <res-ref-name>의 값을 server.xml에 있는 값인 jdbc/myoracle 로
채운다.
<web-app>
............. 생략.....
<!-- KIM SANG HYUN Oracle Connection Pool을 하기 위해서 -->
<resource-ref>
<description>Oracle Connection pooling </description>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
............... 생략 ...................
</web-app>
다음은 test용 jsp 파일이다.
conpool.jsp
<%@ page contentType="text/html;charset=MS949"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.Statement"%>
<%@ page import="java.sql.ResultSet"%>
<%@ page import="java.sql.SQLException"%>
<%@ page import="org.apache.commons.dbcp.BasicDataSource"%>
<%
//Context initCtx = new InitialContext();
//Context envCtx = (Context) initCtx.lookup("java:comp/env");
// Look up our data source
/*
String connectURI = "jdbc:oracle:thin:@localhost:1521:ORCL";
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("oracle.jdbc.OracleDriver");
ds.setUsername("mnkruser");
ds.setPassword("mnkruser8420");
ds.setUrl(connectURI);
*/
Context initContext = new InitialContext();
Context envCtx = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/myoracle");
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
try {
out.println("Creating connection.<br>");
// conn = dataSource.getConnection();
conn = ds.getConnection();
out.println("Creating statement.<br>");
stmt = conn.createStatement();
out.println("Executing statement.<br>");
//rset = stmt.executeQuery("SELECT zipcode1, dong FROM htzipcode WHERE ROWNUM < 2000");
rset = stmt.executeQuery("SELECT juminno, name FROM htorder WHERE ROWNUM < 2000");
out.println("Results:<br>");
while(rset.next()) {
out.println(rset.getString("juminno") + " " + rset.getString("name") + "<br>");
}
} catch(SQLException e) {
e.printStackTrace();
out.println("<H1>" + e.getMessage() + "</h1>");
} finally {
try { rset.close(); } catch(Exception e) { }
try { stmt.close(); } catch(Exception e) { }
try { conn.close(); } catch(Exception e) { }
}
%>