* ȸ¿ø°¡ÀÔ * ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ ã±â   ID PW
Last Modified : 2008.07.11

DBCP

¿©±â¼­´Â Tomcat ¿¡¼­ Á¦°øÇÏ´Â Pool À» ÀÌ¿ëÇÏ´Â DBCP ¿¬°á¹æ¹ýÀ» ¹è¿ì°í Struts °Ô½ÃÆÇ¿¡ Àû¿ëÇØ º¸°Ú½À´Ï´Ù.
¸¸ÀÏ ÀÌ´ë·Î ¾ÈµÈ´Ù¸é Tomcat Admin ÅøÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.

server.xml ¼öÁ¤

server.xml ÆÄÀÏÀ» ¿­°í GlobalNamingResources ¿¤¸®¸ÕÆ®ÀÇ ÀÚ½Ä ¿¤¸®¸ÕÆ®°¡ µÇµµ·Ï ¾Æ·¡ Resource ¿¤¸®¸ÕÆ®¸¦ Ãß°¡ÇÕ´Ï´Ù.

server.xml

<Resource
  name="jdbc/orcl"
  type="javax.sql.DataSource"
  maxActive="4"
  maxIdle="2"
  username="scott"
  maxWait="5000"
  driverClassName="oracle.jdbc.driver.OracleDriver"
  password="tiger"
  url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>

dadam.xml ¼öÁ¤

dadam.xml ÆÄÀÏÀ» ¿­°í À§ÀÇ ³»¿ëÀ» ±×´ë·Î Ãß°¡ÇÕ´Ï´Ù.
(ÆÄÀÏÀÇ À§Ä¡´Â {TOMCAT_HOME}/conf/Catalina/localhost/dadam.xml)

dadam.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context
    docBase="C:/www/jsp/dadam"
    reloadable="true">
    <Resource
      name="jdbc/soctt"
      type="javax.sql.DataSource"
      maxActive="4"
      maxIdle="2"
      username="soctt"
      maxWait="5000"
      driverClassName="oracle.jdbc.driver.OracleDriver"
      password="tiger"
      url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
</Context>

web.xml ¼öÁ¤

web.xml ÆÄÀÏÀ» ¿­°í ¾Æ·¡ ³»¿ëÀ» Ãß°¡ÇÕ´Ï´Ù.

web.xml


.. Áß°£ »ý·« ..

   <resource-ref>
      <description>Oracle Datasource</description>
      <res-ref-name>jdbc/scott</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
   </resource-ref> 
   
</web-app>

DBCP ¸¦ ÀÌ¿ëÇÏ´Â Ä¿³Ø¼Ç °ü¸®ÀÚ Å¬·¡½º ÀÛ¼º

Áö±Ý±îÁö »ç¿ëÀÚ Á¤ÀÇ Ä¿³Ø¼Ç Ç®À» ÀÌ¿ëÇÏ´Â OracleConnectionManager Ŭ·¡½º¸¦ ÀÌ¿ëÇß½À´Ï´Ù.
ÀÌÁ¦ DBCP ¸¦ ÀÌ¿ëÇÏ´Â Ä¿³Ø¼Ç Ç® °ü¸®ÀÚ Å¬·¡½º¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

JSConnectionManager.java

package net.java_school.db.dbpool;

import java.sql.*;
import javax.sql.*;
import javax.naming.*;

public class JSConnectionManager {
   static private JSConnectionManager instance = null;
   private DataSource ds;

   private JSConnectionManager () {
      Context ic = null;
      try {
         ic = new InitialContext();
         ds = (DataSource)ic.lookup("java:comp/env/jdbc/blue");
      } catch ( NamingException e ) {
         System.out.println( e.getMessage() );
      }
   }

   static synchronized public JSConnectionManager getInstance() {
      if ( instance == null ) {
         instance = new JSConnectionManager();
      }
      return instance;
   }

   public Connection getConnection() {
      Connection con = null;
      try {
         con = ds.getConnection();
      } catch ( Exception e ) {
         System.out.println( e.getMessage() );
      }

      return con;

   }
	
}

MyServletContextListener Ŭ·¡½º ¼öÁ¤

À¥ App °¡ ·ÎµåµÇ¸é¼­ Ä¿³Ø¼Ç °ü¸®ÀÚ Å¬·¡½º¸¦ ¸Þ¸ð¸®¿¡ ·ÎµùÇÏ´Â ¿ªÇÒÀ» ÇÏ´Â MyServletContextListener Ŭ·¡½º°¡ ÀÌÁ¦´Â JSConnectionManager ¸¦ ¸Þ¸ð¸®¿¡ ¿Ã¸®´Â ¿ªÇÒÀ» Çϵµ·Ï ¼Ò½º¸¦ ¼öÁ¤ÇÕ´Ï´Ù.

MyServletContextListener.java

package net.java_school.db.dbpool;

import javax.servlet.*;

public class MyServletContextListener implements ServletContextListener {
   public void contextInitialized ( ServletContextEvent event) {
      
      ServletContext sc = event.getServletContext();
      // OracleConnectionManager dbMgr = OracleConnectionManager.getInstance();
      JSConnectionManager dbMgr = JSConnectionManager.getInstance();
      sc.setAttribute("dbMgr", dbMgr);

   }

   public void contextDestroyed ( ServletContextEvent event ) {}
}

Data Acess Object(DAO) Ŭ·¡½º ¼öÁ¤

JDBC Äڵ带 Àü´ãÇÏ´Â GulDAO Ŭ·¡½º°¡ Connection À» ¾òÀ» ¶§ JSConnectionManager¸¦ ÀÌ¿ëÇϵµ·Ï ¼Ò½º¸¦ ¼öÁ¤ÇÕ´Ï´Ù.
Connection À» ¹ÝȯÇÏ´Â Äڵ嵵 con.close(); °¡ µÇµµ·Ï ¼öÁ¤ÇÕ´Ï´Ù.

GulDAO.java

package com.dadam.board;

import java.util.*;
import net.java_school.db.dbpool.*;
import java.sql.*;
import net.java_school.util.*;
public class GulDAO {
   // private OracleConnectionManager dbMgr;
   private JSConnectionManager dbMgr;
	
   public GulDAO() {
      // dbMgr = OracleConnectionManager.getInstance();
      dbMgr = JSConnectionManager.getInstance();>


.. Áß°£ »ý·« ..


} finally {
   try {
      if ( rs != null ) rs.close();
      if ( pstmt != null) pstmt.close();
      // if ( con != null) dbMgr.freeConnection(con);
      if ( con != null) con.close();
      log.close();
   } catch ( SQLException e ) {}
}

.. Áß°£ »ý·« ..