JNDI·Î jdbc »ç¿ëÇϱâ(Tomcat4)

kenu
2002-02-04 2:45¿ÀÀü

Tomcat 4 ÀÇ JNDI howto ¹®¼­¸¦ º¸¸é Tomcat 4 ¿¡¼­ °³¹ßµÈ ¼Ò½º°¡ J2EE ÀÇ È¯°æÀ¸·Î Æ÷ÆÃÇÒ °æ¿ì¿¡µµ JNDI ¸¦ ÀÌ¿ëÇØ¼­ jdbc ¿¬°áÇÏ°Ô µÈ´Ù¸é jdbc ºÎºÐÀÇ ¼Ò½º¸¦ ¹Ù²ÙÁö ¾Ê¾Æµµ µÈ´Ù°í ÇÕ´Ï´Ù. mysql¿¡ ¿¬°áÀ» ÇØº¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¼³Ä¡¸¦ ¸¶Ä£ ȯ°æÀº ´ÙÀ½°ú °°½À´Ï´Ù. mysql Àº mysql ÀÎÁõ¼³Á¤°­Á¸¦ ÀÌ¿ëÇØ¼­ okjsp °èÁ¤¿¡ kenu1234 ºñ¹Ð¹øÈ£¸¦ ¸¸µé°í, okjspdb ¶ó´Â database ¸¦ ¸¸µé¾ú½À´Ï´Ù. (ÀÌ ¹®¼­´Â tomcat 3.* ¿¡¼­´Â ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.)
½ÇÇàȯ°æ
windows 2000 professional, Tomcat 4.0.2-b2, mysql 3.23.47, mm.mysql-2.0.11-bin.jar
		


´Ù¿î¹ÞÀº mysql µå¶óÀ̹ö¸¦ ¾ÐÃàÀ» Ǭ µÚ(www.alzip.com µµ µË´Ï´Ù.)¿¡ mm.mysql-2.0.11-bin.jar ÆÄÀÏÀ» Tomcat4 °¡ ¼³Ä¡µÈ µð·ºÅ丮ÀÇ common/lib ¿¡ º¹»çÇÕ´Ï´Ù. Tomcat4 Àç½Ãµ¿Çϸé ÀνÄÀ» ÇÕ´Ï´Ù. classpath ¿¡ Ãß°¡ÇØÁÖÁö ¾Ê¾Æµµ¿ä.

´ÙÀ½À¸·Î ÇØ´ç Context ÀÇ web.xml À» ÆíÁýÇÕ´Ï´Ù. conf/web.xml ¿¡ ÀÖ´Â ³»¿ëÀ» Âü°íÇÏ½Ã¸é µË´Ï´Ù. ÇѰ¡Áö ¾Ë¾ÆµÎ½Ç °ÍÀº conf/web.xml Àº Tomcat4 ¿¡ ¾Æ¹« ¿µÇâµµ ÁÖÁú ¾Ê½À´Ï´Ù. ÇØ´ç ContextÀÇ WEB-INF/web.xml ·Î ÀÖ¾î¾ß ¼³Á¤ÇÑ °ÍÀÌ ¿µÇâÀ» ÁÝ´Ï´Ù. ROOT ¿¡ ÀÖ´Â À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëÇÏ·Á¸é webapps/ROOT/WEB-INF/web.xml ÆÄÀÏÀÌ ÇÊ¿äÇÕ´Ï´Ù. WEB-INF ´Â ¸ðµÎ ´ë¹®ÀÚ¿©¾ß ÇÕ´Ï´Ù. ´ÙÀ½°ú °°ÀÌ JNDI ¼³Á¤À» ÇØÁÝ´Ï´Ù.
c:/tomcat4/webapps/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <resource-ref>
    <description>
      Resource reference to a factory for java.sql.Connection
      instances that may be used for talking to a particular
      database that is configured in the server.xml file.
    </description>

    <res-ref-name>
      jdbc/OkjspDB
    </res-ref-name>

    <res-type>
      javax.sql.DataSource
    </res-type>

    <res-auth>
      Container
    </res-auth>
  </resource-ref>
</web-app>
		


±âÁ¸ web.xml ¿¡ Ãß°¡ÇØÁà¾ß ÇÒ ºÎºÐÀº <resource-ref> ÅÂ±×¿Í ±× ¾È¿¡ ÀÖ´Â ³»¿ëµéÀÔ´Ï´Ù. resource reference name Àº jdbc/OkjspDB ·Î Á¤ÇØÁÖ¾ú°í, resource Type Àº javax.sql.DataSource ÀÔ´Ï´Ù. jdbc 2.0 ¿¡ ÀÖ´Â class·Î ¾Æ½Ã¸é µË´Ï´Ù. resource auth ´Â Container Àε¥, ÀÚ¼¼ÇÑ ³»¿ëÀº Àúµµ ´Ù¸¥ ¹®¼­¸¦ ã¾ÆºÁ¾ßÇÕ´Ï´Ù.(Åö ±î³õ°í ¾ê±âÇϸé, ¾ÆÁ÷ Àúµµ ¸ð¸¨´Ï´Ù. ^^) web.xml ÆÄÀÏÀÌ º¯°æÀÌ µÇ¸é tomcatÀ» Àç½Ãµ¿ÇؾߵǴµ¥, ¾ÆÁ÷ server.xml À» º¯°æÇؾßÇÏ´Ï±î ±× ÈÄ·Î ¹Ì·çÁÒ. ^^

server.xml ÆÄÀÏÀº Tomcat ÀüüÀÇ È¯°æ¼³Á¤¿¡ °üÇÑ ÆÄÀÏÀÔ´Ï´Ù. server.xml ÆÄÀÏ¿¡¼­ ´ÙÀ½ ºÎºÐÀ» ¼öÁ¤ÇØÁÝ´Ï´Ù. ÁÖ¼®Ã³¸®¿¡¼­ ¹þ°Ü ³½ ´ÙÀ½ child ³»¿ëÀ» Ãß°¡ÇØÁÝ´Ï´Ù. Context tag°¡ »õ³¢¸¦ Ä¡´Â °ÍÀÔ´Ï´Ù.
c:/tomcat4/conf/server.xml Áß ÀϺÎ

...
        <!-- Tomcat Root Context -->
        <!--
        -->
        <Context path="" docBase="ROOT" debug="0">
  <Resource name="jdbc/OkjspDB" auth="Container"
            type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/OkjspDB">
    <parameter>
      <name>user</name>
      <value>okjsp</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>kenu1234</value>
    </parameter>

    <parameter>
      <name>driverClassName</name>
      <value>org.gjt.mm.mysql.Driver</value>
    </parameter>

    <parameter>
      <name>driverName</name>
      <value>jdbc:mysql://localhost:3306/okjspDB</value>
    </parameter>
  </ResourceParams>
        </Context>  

...
		


web.xml ¿¡¼­ ¼³Á¤ÇÑ °ªµé°ú °øÅëÀûÀÎ ºÎºÐÀÌ ¸¹ÀÌ ³ª¿É´Ï´Ù. ±×¸®°í, database Á¢¼Ó¿¡ ÇÊ¿äÇÑ ¾ÆÀ̵ð(user), ºñ¹Ð¹øÈ£(password), jdbc µå¶óÀ̹ö(driverClassName), jdbc Á¢¼Ó URL(driverName) ÀÌ ÁöÁ¤µË´Ï´Ù. ¿©±âÀÇ ¼³Á¤Àº "ROOT" Context ¿¡¼­¸¸ È¿·ÂÀÌ ¹ß»ýÇÕ´Ï´Ù. ÀÌÁ¦ ¼¼ÆÃÀº ´Ù ³¡³µ½À´Ï´Ù. ´ÙÀ½À¸·Î Å×½ºÆ®ÇÒ ¼Ò½º¸¦ º¸°Ú½À´Ï´Ù.

server.xml ÆÄÀÏÀº Tomcat ÀüüÀÇ È¯°æ¼³Á¤¿¡ °üÇÑ ÆÄÀÏÀÔ´Ï´Ù. server.xml ÆÄÀÏ¿¡¼­ ´ÙÀ½ ºÎºÐÀ» ¼öÁ¤ÇØÁÝ´Ï´Ù. ÁÖ¼®Ã³¸®¿¡¼­ ¹þ°Ü ³½ ´ÙÀ½ child ³»¿ëÀ» Ãß°¡ÇØÁÝ´Ï´Ù. Context tag°¡ »õ³¢¸¦ Ä¡´Â °ÍÀÔ´Ï´Ù.
c:/tomcat4/webapps/ROOT/jndi01.jsp

<%@ page 
import="java.sql.*, javax.naming.*, javax.sql.*"%><%

Context initCtx = new InitialContext();

Context envCtx = (Context) initCtx.lookup("java:comp/env");

DataSource ds = (DataSource) envCtx.lookup("jdbc/OkjspDB");

Connection conn = ds.getConnection();

Statement stmt = conn.createStatement();

String query = "select now()";

ResultSet rs = stmt.executeQuery(query);

if(rs.next()) {
  out.println(rs.getTimestamp(1));
}

rs.close();

stmt.close();

conn.close();
%>
		


mysql ¿¡ Á¢¼ÓÇØ¼­ ÇöÀç ½Ã°£À» ºÒ·¯¿À´Â °£´ÜÇÑ ±â´ÉÀÔ´Ï´Ù. ÇÊ¿äÇÑ ÆÐŰÁö´Â javax.naming.Context, javax.naming.InitialContext, javax.sql.DataSource ÀÔ´Ï´Ù. ÀÌ ¹æ½ÄÀº º¹ÀâÇÕ´Ï´Ù¸¸ J2EE ¿¡¼­ »ç¿ëÇÏ´Â JNDI ¸¦ ÅëÇØ¼­ JDBC ¿¬°áÇÏ´Â ¹æ½Ä°ú ÀÏÄ¡Çϱ⠶§¹®¿¡ Tomcat ¿¡¼­ °³¹ßÇÑ ¼Ò½º¸¦ ½±°Ô Àû¿ëÇÒ ¼ö ÀÖ´Â ÀÕÁ¡À» °®°í ÀÖ½À´Ï´Ù. jsp ¼Ò½º¿¡ ÀÖ´Â ³»¿ëÀÌ¾ß ½±°Ô ¼öÁ¤ÀÌ µÇÁö¸¸ servlet À̳ª bean À¸·Î µÇ¾îÀÖ´Â Compile ÀÌ ÇÊ¿äÇÑ ÆÄÀÏÀ̶ó¸é ÀçÄÄÆÄÀÏÇÏÁö ¾Ê°í »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

J2EE ¸¦ ²À ½á¾ßµÇ´ÂÁö ¾Æ´Ï¸é °æ·® Container ·Î ¿î¿µÇصµ °¡´ÉÇÑÁö¿¡ °üÇØ¼­´Â ÀÚÁÖ ³íÀǵǰí ÀÖ½À´Ï´Ù¸¸, J2EE ȯ°æÀº »çÀÌÆ®°¡ Ä¿Á®¹ö¸°´Ù¸é ¹Ýµå½Ã ÇÊ¿äÇÑ È¯°æÀ̱⠶§¹®¿¡ ÁغñÇØ ³õ´Â °ÍÀÌ ¼ÕÇØ´Â ¾Æ´Ò °ÍÀÔ´Ï´Ù. ¹°·Ð °Å½ÃÀûÀ¸·Î º»´Ù¸é¾ß MSÀÇ .NET ÀÌ java ¸¦ »çÀå½ÃÄÑ ¹ö¸®´Â ¾îó±¸´Ï ¾ø´Â ÀÏÀÌ »ý±â°Å³ª, Lindows °¡ MS ¸¦ Àμö ÇÕº´Çϰí Apache °¡ IIS ¸¦ ¸Ô¾î¹ö¸®°í apache¿¡¼­ asp, php, jsp °¡ µ¿½Ã¿¡ ½ÇÇàÀÌ µÇ´Â °³¹ßÀÚ¿¡°Ô Á¤¸» X°°Àº ÀÏÀÌ »ý±æ ¼öµµ Àְųª, ¾Æ´Ï¸é TV ÄÄÇ»ÅÍ ¼±Àü¿¡ ³ª¿À´Â ¿Ü°èÀÎÀÌ Ä§°øÇؼ­ !#@$*@#%)!# ÆÜ! ¾Ö±¸, Àâ¼Ò¸® ±×¸¸ÇÏ°í ³¡³»°Ú½À´Ï´Ù. ÀоîÁּż­ °¨»çÇÕ´Ï´Ù.

JDBC ¿Ü¿¡µµ SMTP, Factory resourceµîÀ» JNDI ¸¦ »ç¿ëÇØ¼­ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ ¸µÅ©ÇÑ ¹®¼­¸¦ Àо¼¼¿ä. Á¦¹ß... Á¦°¡ «À» ³»¼­ ¹ø¿ªÇÑ ¹®¼­ÀÔ´Ï´Ù. ÀÌÇØ ¾È °¡´Â °ÍÀº ¿µ¹®»çÀÌÆ®¸¦ °øºÎÇϽðí(ÀúÇÑÅ× ¹¯Áö¸¶¼¼¿ä. Àúµµ JNDI °øºÎ¸¹ÀÌ ¸øÇß½À´Ï´Ù.), ¹ø¿ªÀÌ À߸øµÈ °Í¸¸ ¾Ë·ÁÁÖ¼¼¿ä. °øºÎ ¸øÇÑ°Ô ÀÚ¶ûÀº ¾Æ´ÏÁö¸¸, ¿äÁò ¼­ºí¸´ Ã¥º¸°í ¿­½ÉÈ÷ ´Ù¸¥ °Í ÁغñÁßÀ̰ŵç¿ä. ÇູÇϼ¼¿ä.

°ü·Ã »çÀÌÆ®
¡áhttp://sourceforge.net/project/showfiles.php?group_id=15923
mm.mysql jdbc µå¶óÀ̹ö
¡áhttp://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-resources-howto.html
JNDI resources howto ¹®¼­
¡áhttp://okjsp.pe.kr/doc/tomcat/tomcat-4.0-doc/jndi-resources-howto.html
JNDI resources howto ¹ø¿ª¹®¼­
xml-typed document
http://okjsp.pe.kr