음 .. 여러군데서 막힌다 ^^ Tomcat 5 설정및 자바 커넥션 연구 .

대부분의 어플리캐이션에서 가장 부하가 많이 걸리는 부분은 DB 에 접속 하는 부분이라고 합니다. 그에따라 대부분의 상용 사이트 혹은 동시접속자가 생기는 솔루션의 경우에는 DataBase Pool 이라는 기법을 이용하여 Connection 되어있는 객체를 생성하고, 요구사항이 있을때 임대해 주는 방식을 많이 사용합니다. 이 부분을 직접 작성해 보는것 또한 많은 것을 학습할 수 있는 기회가 되지만, 실제 서비스되는 곳에 실험적으로 만들어진 코드를 사용하기는 현실적으로 많이 어려운것 같습니다.

따라서 apache 재단의 Java 서브 프로젝트인 jakarta 에서 DBCP 라는 프레임워크(?) 많이들 이용하고 있습니다. 물론, 학습시에 말이죠. :-)


자바를 배워 나아간다는것은, 영업직들의 화려한 활약으로 인해서 EJB 가 필수적인 스킬이 되어 가고 있는 상황이고 EJB 라는 녀석 자체가 초기 투자비용이 워낙 큰 녀석이다보니 WAS 에서 학습시에 세팅에 열을 올리는 대부분의 것들을 자체적으로 지원해 주기 마련입니다. 그래서 DBCP(DB Connection Pool) 에 대한 전반적인 지식이 없이 EJB 로 넘어가는 사례를 많이 보곤 합니다. 하지만 제가 항상 강조하듯이 지식을 끌어안지 못하고 과정을 학습하는것은, 차후에 그것을 기반으로 한 상위의 무언가를 배울때 걸림돌이 될 것이 확실하다고 생각합니다.

그래서 결론은, 'DBCP 에 대한 전반적인 지식을 끌어안고 상위로 나아가자' 가 되겠죠. :-)


항상 포스팅을 할 때마다 느끼는것이지만, 사설이 너무 길어지는거 같습니다.

1> 라이브러리 복사.
2> server.xml ==> <Resource /> 추가
3> context.xml 혹은 server.xml ==> <ResourceLink /> 추가
4> web.xml ==> <resource-ref> ... </resource-ref> 추가
5> TEST!!


1-1> DBCP 라이브러리 복사.
common-collections-3.2.jar
common-dbcp-1.2.1.jar
common-pool-1.3

위의 3개 파일을 <context>/WEB-INF/lib 디렉토리에 복사.


1-2> oracle JDBC 드라이버 파일 복사.
ojdbc14.jar
위 파일을 <context>/WEB-INF/lib 디렉토리에 복사.
[<TOMCAT_HOME>/common/lib 디렉토리에 복사]


2> server.xml 파일의 <GlobalNamingResources> 의 내부태그로 <Resource /> 추가

<Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver" maxActive="20" maxIdle="10" maxWait="-1" name="jdbc/project" password="tiger" type="javax.sql.DataSource" url="jdbc:oracle:thin:@127.0.0.1:1521:xe" username="scott" />


3> context.xml 혹은 server.xml 파일의 <Context> 의 내부태그로 <ResourceLink /> 추가

<ResourceLink global="jdbc/project" name="jdbc/project" type="javax.sql.DataSource" />


4> web.xml 파일에 <resource-ref> 추가.

 <resource-ref>
  <description>DB Connection</description>
  <res-ref-name>jdbc/project</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>


5> TEST!!

<%@ page contentType="text/html" pageEncoding="UTF-8"
         import="java.sql.*"
         import="javax.sql.*"
         import="javax.naming.*"
%>
<html>
<head>
 <title></title>
</head>


<body>
<%
  try {
   Context initCtx = new InitialContext();
   Context envCtx = (Context)initCtx.lookup("java:/comp/env");
   DataSource ds = (DataSource)envCtx.lookup("jdbc/project");

   Connection conn = ds.getConnection();
   out.write("DB Connection..");
 
   conn.close();
  }
  catch(Exception e) {
   e.printStackTrace();
  }
%>
</body>

</html>

퍼온곳 http://blog.rooine.com/trackback/8 입니다.