<?xml version="1.0" encoding="euc-kr" ?>
<?xml-stylesheet type="text/xsl" href="../okjsplec_c.xsl" ?>
<lecture>
	<title>JNDI·Î jdbc »ç¿ëÇÏ±â(Tomcat4)</title>
	<who>kenu</who>
	<when>2002-02-04 2:45¿ÀÀü</when>
	<what>
		<text>
		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
		</¼Ò½º>
		</text>
		<image>/images/spacer.gif
		</image>
	</what>
	<what>
		<text>´Ù¿î¹ÞÀº mysql µå¶óÀÌ¹ö¸¦ ¾ÐÃàÀ» Ç¬ µÚ(www.alzip.com µµ µË´Ï´Ù.)¿¡ mm.mysql-2.0.11-bin.jar ÆÄÀÏÀ» Tomcat4 °¡ ¼³Ä¡µÈ µð·ºÅä¸®ÀÇ common/lib ¿¡ º¹»çÇÕ´Ï´Ù. Tomcat4 Àç½Ãµ¿ÇÏ¸é ÀÎ½ÄÀ» ÇÕ´Ï´Ù. classpath ¿¡ Ãß°¡ÇØÁÖÁö ¾Ê¾Æµµ¿ä.
		</text>
		<image>http://www.okjsp.pe.kr/lecture/lec03/jndijdbc01_01.gif
		</image>
	</what>
	<what>
		<text>´ÙÀ½À¸·Î ÇØ´ç 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">
<![CDATA[<?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>
]]>		</¼Ò½º>
		</text>
	</what>

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

	<what>
		<text>server.xml ÆÄÀÏÀº Tomcat ÀüÃ¼ÀÇ È¯°æ¼³Á¤¿¡ °üÇÑ ÆÄÀÏÀÔ´Ï´Ù. server.xml ÆÄÀÏ¿¡¼­ ´ÙÀ½ ºÎºÐÀ» ¼öÁ¤ÇØÁÝ´Ï´Ù. ÁÖ¼®Ã³¸®¿¡¼­ ¹þ°Ü ³½ ´ÙÀ½ child ³»¿ëÀ» Ãß°¡ÇØÁÝ´Ï´Ù. Context tag°¡ »õ³¢¸¦ Ä¡´Â °ÍÀÔ´Ï´Ù.
		<¼Ò½º ÆÄÀÏ¸í="c:/tomcat4/conf/server.xml Áß ÀÏºÎ">
<![CDATA[
...
        <!-- 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>  

...
]]>		</¼Ò½º>
		</text>
	</what>

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

	<what>
		<text>server.xml ÆÄÀÏÀº Tomcat ÀüÃ¼ÀÇ È¯°æ¼³Á¤¿¡ °üÇÑ ÆÄÀÏÀÔ´Ï´Ù. server.xml ÆÄÀÏ¿¡¼­ ´ÙÀ½ ºÎºÐÀ» ¼öÁ¤ÇØÁÝ´Ï´Ù. ÁÖ¼®Ã³¸®¿¡¼­ ¹þ°Ü ³½ ´ÙÀ½ child ³»¿ëÀ» Ãß°¡ÇØÁÝ´Ï´Ù. Context tag°¡ »õ³¢¸¦ Ä¡´Â °ÍÀÔ´Ï´Ù.
		<¼Ò½º ÆÄÀÏ¸í="c:/tomcat4/webapps/ROOT/jndi01.jsp">
<![CDATA[
<%@ 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();
%>
]]>		</¼Ò½º>
		</text>
	</what>

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

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

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

    <refer>
      <link>http://sourceforge.net/project/showfiles.php?group_id=15923</link>
      <comment>mm.mysql jdbc µå¶óÀÌ¹ö</comment>
    </refer>
    <refer>
      <link>http://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-resources-howto.html</link>
      <comment>JNDI resources howto ¹®¼­</comment>
    </refer>
    <refer>
      <link>http://okjsp.pe.kr/doc/tomcat/tomcat-4.0-doc/jndi-resources-howto.html</link>
      <comment>JNDI resources howto ¹ø¿ª¹®¼­</comment>
    </refer>
</lecture>

