The Jakarta Project
      The Tomcat Servlet/JSP Container

Links

Getting Started

Administrators

Application Developers

Catalina Developers

Jasper Developers

JNDI Resources HOW-TO

¼Ò°³ Introduction

Tomcat 4¿¡¼­´Â ¿î¿µÇÏ´Â À¥ ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ JNDI InitialContext ±¸Çö ÀνºÅϽº¸¦ Á¦°øÇÕ´Ï´Ù. Áö¿ø ¹æ½ÄÀº Java2 Enterprise Edition ¿¡¼­ Á¦°øµÇ´Â °Í°ú ȣȯµË´Ï´Ù. ÀÌ InitialContext ¿¡ ÀÖ´Â ¿£Æ®¸®µéÀº $CATALINA_HOME/conf/server.xml ¿¡¼­ ¼³Á¤µÇ°í, À¥ ¾îÇø®ÄÉÀ̼ǿ¡ ÀÖ´Â À¥ ¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ Áö½ÃÀÚ(/WEB-INF/web.xml)¿¡ ÀÖ´Â ´ÙÀ½ÀÇ ¿ä¼Ò µé¿¡ ÀÇÇØ ÂüÁ¶µÉ °ÍÀÔ´Ï´Ù:

  • <env-entry> - ȯ°æ ¿£Æ®¸® Environment entry, ¾îÇø®ÄÉÀ̼ÇÀÌ ¾î¶»°Ô µ¿ÀÛÇÒ Áö ¼³Á¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â ´ÜÀÏ-°ª ÆÄ¶ó¸ÞÅÍ.
  • <resource-ref> - ÀÚ¿ø ·¹ÆÛ·±½º Resource reference, ÀüÇüÀûÀ¸·Î Tomcat 4 ¿¡ ¼³Á¤µÈ JDBC DataSource, JavaMail Session, ¶Ç´Â »ç¿ëÀÚ °´Ã¼ ÆÑÅ丮µé °°Àº ÀÚ¿øÀÇ °´Ã¼ ÆÑÅ丮¿¡ ´ëÇÑ °ÍÀÔ´Ï´Ù.
  • <resource-env-ref> - ÀÚ¿ø ȯ°æ Âü°í Resource environment reference, ¼­ºí¸´ 2.3 ¿¡ Ãß°¡µÈ resource-refÀÇ »õ·Î¿î º¯È¯ÇüÅÂÀ̸ç ÀÎÁõÁ¤º¸°¡ ÇÊ¿äÇÏÁö ¾ÊÀº ÀÚ¿ø¿¡ ´ëÇÑ º¸´Ù ¼³Á¤ÀÌ °£´ÜÇÏ´Ù.

InitialContext ´Â À¥ ¾îÇø®ÄÉÀ̼ÇÀÌ Ã³À½À¸·Î ¹èÄ¡µÉ ¶§, ¼³Á¤µÇ°í, (ÀбâÀü¿ë ¸ðµå·Î Á¢±Ù°¡´ÉÇÑ) À¥ ¾îÇø®ÄÉÀÌ¼Ç ÄÄÆ÷³ÍÆ®¿¡ ´ëÇØ À¯È¿ÇÏ°Ô µË´Ï´Ù. ¸ðµç ¼³Á¤µÈ ¿£Æ®¸®¿Í ÀÚ¿øÀº JNDI namespace ÀÇ java:comp/env ºÎºÐ ¿¡ ³õÀÌ°Ô µÇ°í, ÀÚ¿ø¿¡ ´ëÇÑ ÀüÇüÀûÀÎ Á¢±ÙÀº - ÀÌ °æ¿ì, JDBC DataSource ¿¡ ´ëÇØ¼­- ´ÙÀ½°ú °°ÀÌ Æ¯Á¤ÇÑ °ÍÀ» ã½À´Ï´Ù:


// ÇöÀç ȯ°æÀÇ naming Context ȹµæÇϱâ

Context initCtx = new InitialContext();

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



// data source ã±â

DataSource ds = (DataSource)

  envCtx.lookup("jdbc/EmployeeDB");



// Ç®·ÎºÎÅÍ connection ÇÒ´çÇÏ°í »ç¿ëÇϱâ

Connection conn = ds.getConnection();

... db¿¡ Á¢±ÙÇϱâ À§Çؼ­ ÀÌ connection »ç¿ëÇϱâ ...

conn.close();

JNDI¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¡¹Ö API¿¡ °üÇØ¼­, ¶Ç´Â TomcatÀÌ ¿¡¹Ä·¹ÀÌÆ®ÇÏ´Â Java2 Enterprise Edition (J2EE)¼­¹ö¿¡¼­ Áö¿øµÇ´Â Ư¡µé¿¡ ´ëÇØ ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾ò±â À§Çؼ­´Â ´ÙÀ½ÀÇ »ç¾ç¼­¸¦ Âü°íÇϱ⠹ٶø´Ï´Ù:

JNDI ÀÚ¿ø ¼³Á¤Çϱâ Configuring JNDI Resources

°¢°¢ÀÇ À¯È¿ÇÑ JNDI ÀÚ¿øÀº $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡ ´ÙÀ½ ¿ä¼Ò¸¦ Æ÷ÇÔÇÏ´Â °Í¿¡ ±Ù°ÅÇÏ¿© ¼³Á¤µË´Ï´Ù:

  • <Environment> - JNDI InitialContext¸¦ ÅëÇØ À¥¾îÇø®ÄÉÀ̼ǿ¡ ³ëÃâµÇ´Â ½ºÄ®¶ó ȯ°æ ¿£Æ®¸®¿¡ ´ëÇÑ À̸§µé°ú °ªµéÀ» ¼³Á¤ÇÕ´Ï´Ù. (À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ Áö½ÃÀÚ¿¡ ÀÖ´Â <env-entry> ¿ä¼Ò¸¦ Æ÷ÇÔÇÑ °Í°ú °°À¾´Ï´Ù).
  • <Resource> - À̸§°ú ¾îÇø®ÄÉÀ̼ǿ¡¼­ À¯È¿ÇÑ ÀÚ¿øÀÇ µ¥ÀÌÅÍ ÇüÀ» ÁöÁ¤ÇÕ´Ï´Ù. (À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ Áö½ÃÀÚ¿¡¼­ <resource-ref> ¿ä¼Ò¸¦ Æ÷ÇÔÇÑ °Í°ú °°À¾´Ï´Ù).
  • <ResourceParams> - »ç¿ëÇÒ ÀÚ¿ø factory implementation ÀÇ Àڹ٠Ŭ·¡½º¸í°ú ÀÚ¿ø factory ¸¦ ¼³Á¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â JavaBeans ÇÁ·ÎÆÛƼ¸¦ ¼³Á¤ÇÕ´Ï´Ù.

<Context> ¿ä¼Ò(ƯÁ¤ÇÑ À¥ ¾îÇø®ÄÉÀ̼ǰú ¿¬°üµÈ) ¶Ç´Â <DefaultContext> ¿ä¼Ò( ÀÚµ¿À¸·Î ¹èÄ¡µÈ ¾îÇø®ÄÉÀ̼ÇÀ» À§ÇÑ default ¼³Á¤ Ư¼ºµéÀ» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â) ¾È¿¡ ÀÌµé ¿ä¼ÒµéÀÌ ¸î °³¶óµµ ÁßøµÉ ¼ö ÀÖ½À´Ï´Ù.

´õ¿ì±â, À¥ ¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ Áö½ÃÀÚ(/WEB-INF/web.xml)¿¡ Æ÷ÇÔµÈ ¸ðµç <env-entry>ÀÇ À̸§µé°ú °ªµéÀº Ãʱâ ÄÁÅØ½ºÆ®¿¡ ¼³Á¤µÇ°í, ¸¸ÀÏ ´ëÀÀµÇ´Â <Environment> ¿ä¼Ò¿¡¼­ ( override ¼Ó¼ºÀÌ "true" ·Î ÁöÁ¤ÇÔÀ¸·Î) Çã°¡µÇ¾ú´Ù¸é conf/server.xml ·ÎºÎÅÍ ´ëÀÀµÇ´Â °ªµéÀÌ ¿À¹ö¶óÀ̵ùµË´Ï´Ù.

Tomcat Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮 Tomcat Standard Resource Factories

Tomcat 4´Â À¥ ¾îÇø®ÄÉÀ̼ǿ¡ ¼­ºñ½º¸¦ Á¦°øÇϴ ǥÁØ ÀÚ¿ø ÆÑÅ丮 ½Ã¸®Á Æ÷ÇÔÇÕ´Ï´Ù. À¯¿¬¼ºÀ» °®±â À§Çؼ­ À¥ ¾îÇø®ÄÉÀ̼ÇÀ̳ª ¼³Ä¡Áö½ÃÀÚ¸¦ ¼öÁ¤ÇÏÁö ¾Ê°í ($CATALINA_HOME/conf/server.xml ¿¡¼­) ȯ°æ¼³Á¤À» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ÀÇ °¢ ¼­ºê¼½¼ÇÀº ȯ°æ¼³Á¤°ú Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮ÀÇ »ç¿ë¿¡ ´ëÇØ¼­ ÀÚ¼¼È÷ ¼³¸íÇÕ´Ï´Ù.

»ç¿ëÀÚ ÀÚ¿ø ÆÑÅ丮 Ãß°¡Çϱâ Adding Custom Resource Factories ¸¦ º¸¸é, ¾î¶»°Ô ¸¸µé°í, ¼³Ä¡Çϰí, ¼³Á¤Çϰí, »ç¿ëÀÚÀÇ ÀÚ¿øÆÑÅ丮 Ŭ·¡½º¸¦ Tomcat 4¿¡¼­ »ç¿ëÇÏ´Â ¹ýÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.

NOTE - Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮 Áß¿¡¼­, "JDBC Data Source" ¿Í "User Transaction" ÆÑÅ丮´Â ´Ù¸¥ Ç÷§Æû¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï µÇ¾î ÀÖ½À´Ï´Ù¸¸ ±× Ç÷§ÆûÀÌ Java2 Enterprise Edition (J2EE) ½ºÆå¿¡ µû¸¦ °æ¿ì¸¸ ÇØ´çµË´Ï´Ù. Á÷Á¢ Á¦ÀÛÇÑ »ç¿ëÀÚ ÀÚ¿ø ÆÑÅ丮¸¦ Æ÷ÇÔÇØ¼­ ´Ù¸¥ ¸ðµç Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮µéÀº Tomcat ¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ´Ù¸¥ ÄÁ Å×À̳ʿ¡¼­ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï µÇ¾îÀÖÁö´Â ¾Ê½À´Ï´Ù.

ÀÏ¹Ý JavaBean ÀÚ¿ø Generic JavaBean Resources

0. ¼Ò°³ Introduction

ÀÌ ÀÚ¿ø ÆÑÅ丮´Â Ç¥ÁØ JavaBeans ³×ÀÌ¹Ö ±Ô¾àÀ» µû¸£´Â ¾î¶² Àڹ٠Ŭ·¡½ºÀÇ °´Ã¼¸¦ ¸¸µå´Âµ¥ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. (Áï, zero-argumentsÀÇ »ý¼ºÀÚ¿Í setFoo() ³×ÀÌ¹Ö ÆÐÅÏÀ» µû¸£´Â ÇÁ·ÎÆÛƼ ¼¼Å͸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù.) ÀÚ¿ø ÆÑÅ丮´Â ¸¸µé¾îÁø ÀÌ ¿£Æ®¸®¿¡ ´ëÇØ lookup() ÇÒ ¶§¸¶´Ù ÀûÀýÇÑ ºó Ŭ·¡½ºÀÇ »õ·Î¿î ÀνºÅϽº¸¦ »ý¼ºÇÕ´Ï´Ù.

À̰Ϳ¡ ´ëÇÑ °úÁ¤µéÀº ¾Æ·¡ ¼³¸íÇϰڽÀ´Ï´Ù.

1. Java Bean Ŭ·¡½º¸¦ ¸¸µì´Ï´Ù. Create Your JavaBean Class

ÀÚ¿ø ÆÑÅ丮¸¦ ãÀ» ¶§¸¶´Ù °´Ã¼»ý¼ºµÉ(instantiated) JavaBean Ŭ·¡½º ¸¦ ¸¸µì´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼­´Â com.mycompany.MyBean À̶ó´Â Ŭ·¡½º¸¦ ¸¸µç´Ù°í ÇØº¾½Ã´Ù. ´ÙÀ½°ú °°½À´Ï´Ù:


package com.mycompany;



public class MyBean {



  private String foo = "Default Foo";



  public String getFoo() {

    return (this.foo);

  }



  public void setFoo(String foo) {

    this.foo = foo;

  }



  private int bar = 0;



  public int getBar() {

    return (this.bar);

  }



  public void setBar(int bar) {

    this.bar = bar;

  }





}

2. ÀÚ¿ø ¿ä°Ç ¼±¾ðÇϱâ Declare Your Resource Requirements

´ÙÀ½À¸·Î, À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ (/WEB-INF/web.xml) ¸¦ ¼öÁ¤Çؼ­ ÀÌ ºóÀÇ »õ·Î¿î ÀνºÅϽº¸¦ ¿äûÇÒ ¶§ ¾µ JNDI ¸íÀ» ¼±¾ðÇÕ´Ï´Ù. °¡Àå °£´ÜÇÑ Á¢±ÙÀº ´ÙÀ½°ú °°ÀÌ <resource-env-ref> ¿ä¼Ò ¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù:


<resource-env-ref>

  <Description>

    Object factory for MyBean instances.

  </Description>

  <resource-env-ref-name>

    bean/MyBeanFactory

  </resource-env-ref-name>

  <resource-env-ref-type>

    com.mycompany.MyBean

  </resource-env-ref-type>

<resource-env-ref>

ÁÖÀÇ WARNING - À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚÀÇ DTD ¿¡ ¿ä±¸µÇ´Â ¿ä¼ÒÀÇ ¼ø¼­°¡ Á¦´ë·ÎÀÎÁö È®ÀÎÇϽʽÿÀ. ÀÚ¼¼ÇÑ ³»¿ëÀº Servlet Specification ¸¦ È®ÀÎÇϽʽÿÀ.

3. ÀÌ ÀÚ¿øÀ» »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀÌ¼Ç ÄÚµùÇϱâ
Code Your Application's Use Of This Resource

ÀÌ ÀÚ¿ø ȯ°æ ÂüÁ¶(resource environment reference)ÀÇ »ç¿ëÀº ´ÙÀ½°ú °°½À´Ï´Ù:


Context initCtx = new InitialContext();

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

MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");



writer.println("foo = " + bean.getFoo() + ", bar = " +

               bean.getBar());

4. TomcatÀÇ ÀÚ¿ø ÆÑÅ丮 ȯ°æ¼³Á¤ Configure Tomcat's Resource Factory

TomcatÀÇ ÀÚ¿ø ÆÑÅ丮 ȯ°æ¼³Á¤¸¦ Çϱâ À§Çؼ­´Â, $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡¼­ ÀÌ À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ Context ¿ä¼Ò(or nested inside a DefaultContext element for the surrounding <Host> or <Engine> element.) ¾È¿¡ ´ÙÀ½ÀÇ ¿ä¼Ò¸¦ Ãß°¡ÇÕ´Ï´Ù.


<Context ...>

  ...

  <Resource name="bean/MyBeanFactory" auth="Container"

            type="com.mycompany.MyBean"/>

  <ResourceParams name="bean/MyBeanFactory">

    <parameter>

      <name>factory</name>

      <value>org.apache.naming.factory.BeanFactory</value>

    </parameter>

    <parameter>

      <name>bar</name>

      <value>23</value>

    </parameter>

  </ResourceParams>

  ...

</Context>

ÁÖÀÇÇÒ Á¡Àº ÀÚ¿ø À̸§(¿©±â¼­, bean/MyBeanFactory)Àº ¹Ýµå½Ã À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ¿¡ ÁöÁ¤µÈ °ª°ú ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ bar ÇÁ·ÎÆÛƼÀÇ °ªÀ» ÃʱâÈ­ÇÕ´Ï´Ù, À̰ÍÀº »õ·Î¿î ºóÀÌ ¹ÝȯµÇ±â Àü¿¡ setBar(23) °¡ È£ÃâµÇ°Ô ÇÕ´Ï´Ù. foo ÇÁ·ÎÆÛƼ¸¦ ÃʱâÈ­ ÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡, ºóÀº ±âº»°ªÀÌ ¹«¾ùÀÌµç ±×°ÍÀÇ »ý¼ºÀÚ¿¡ ÀÇÇØ ¸¸µé¾îÁø °ªÀ» °®°Ô µÉ °ÍÀÔ´Ï´Ù.

JavaMail Sessions

0. ¼Ò°³ Introduction

¸¹Àº À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­, email ¸Þ½ÃÁö º¸³»±â´Â ½Ã½ºÅÛ ±â´É¿¡¼­ ¿äûµÇ´Â ºÎºÐÀÔ´Ï´Ù. Java Mail API ´Â »ó´ëÀûÀ¸·Î ½±°Ô ó¸®ÇÒ ¼ö ÀÖ°Ô Çß½À´Ï´Ù¸¸, ¸¹Àº Ŭ¶óÀÌ¾ðÆ® ¾îÇà ¸®ÄÉÀ̼ÇÀÌ ¾Ë°í ÀÖ¾î¾ß ÇÒ ¸¹Àº ȯ°æ¼³Á¤À» ÇÊ¿ä·Î ÇÕ´Ï´Ù. (¿¹¸¦ µé¸é ¸Þ½ÃÁö¸¦ º¸³»´Â µ¥ »ç¿ëµÇ´Â SMTP È£½ºÆ® ¸í °°Àº °ÍÀÔ´Ï´Ù.)

Tomcat 4 ´Â javax.mail.Session ¼¼¼Ç ÀνºÅϽº¸¦ ¸¸µå´Â Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮¸¦ Æ÷ÇÔÇÕ´Ï´Ù, server.xml ¿¡ SMTP ¼­¹ö°¡ ¼³Á¤/¿¬°áµÇ¾î ÀÖ´Ù¸é ¸»ÀÌÁÒ. À̰°Àº ¹æ¹ýÀ¸·Î ¾îÇø®ÄÉÀ̼ÇÀº email ¼­¹ö ¼³Á¤ ȯ°æ¿¡¼­ ¿ÏÀüÈ÷ °Ý¸®µË´Ï´Ù - ÇÊ¿äÇÒ ¶§¸¶´Ù ´Ü¼øÈ÷ ¹Ì¸® ¼³Á¤µÈ ¼¼¼ÇÀ» ¿äûÇϰí, ¹Þ¾Æ¿À¸é µË´Ï´Ù.

À̰Ϳ¡ ´ëÇÑ °úÁ¤µéÀº ¾Æ·¡ ¼³¸íÇϰڽÀ´Ï´Ù.

1. ÀÚ¿ø ¿ä°Ç ¼±¾ðÇϱâ Declare Your Resource Requirements

óÀ½¿¡ À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ(/WEB-INF/web.xml) ¸¦ ¼öÁ¤Çؼ­ ¹Ì¸® ¼³Ä¡µÈ ¼¼¼ÇÀ» ã´Â JNDI ¸íÀ» ¼±¾ðÇÕ´Ï´Ù. ±Ô¾à¿¡ ÀÇÇϸé, ¸ðµç À̸§Àº mail ¼­ºêÄÁÅØ½ºÆ®·Î °á¸»Áö¾îÁ®¾ß ÇÕ´Ï´Ù.(Á¦°øµÈ ¸ðµç ÀÚ¿ø ÆÑÅ丮ÀÇ ·çÆ®°¡ µÇ´Â Ç¥ÁØ java:comp/env ³×ÀÌ¹Ö ÄÁÅØ½ºÆ®¿¡ »ó´ëÀûÀÔ´Ï´Ù.) ÀüÇüÀûÀÎ web.xml ¿£Æ®¸®´Â ´ÙÀ½°ú °°½À´Ï´Ù:


<resource-ref>

  <description>

    javax.mail.Session ÀνºÅϽºÀÇ ÆÑÅ丮¿¡ ´ëÇÑ ÀÚ¿ø ÂüÁ¶ÀÔ´Ï´Ù.
    
    Àû´çÇÑ SMTP ¼­¹ö¿¡ ¿¬°áµÇ¾î ÀÖ´Ù¸é email À» º¸³¾ ¶§ »ç¿ë
    
    µË´Ï´Ù.
    
    Resource reference to a factory for javax.mail.Session

    instances that may be used for sending electronic mail

    messages, preconfigured to connect to the appropriate

    SMTP server.

  </description>

  <res-ref-name>

    mail/Session

  </res-ref-name>

  <res-type>

    javax.mail.Session

  </res-type>

  <res-auth>

    Container

  </res-auth>

</resource-ref>

°æ°í WARNING - À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚÀÇ DTD¿¡ ¿ä±¸µÇ´Â ¿ä¼ÒÀÇ ¼ø¼­°¡ Á¦´ë·Î µÇ¾îÀÖ´ÂÁö È®½ÇÈ÷ ÇØ¾ß ÇÕ´Ï´Ù! ÀÚ¼¼ÇÑ ³»¿ëÀº Servlet Specification ¸¦ º¸½Ê½Ã¿À.

2. ÀÌ ÀÚ¿øÀ» »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀÌ¼Ç ÄÚµùÇϱâ
Code Your Application's Use Of This Resource

ÀÌ ÀÚ¿ø ÂüÁ¶(resource reference)ÀÇ »ç¿ë¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù:


Context initCtx = new InitialContext();

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

Session session = (Session) envCtx.lookup("mail/Session");



Message message = new MimeMessage(session);

message.setFrom(new InternetAddress(request.getParameter("from"));

InternetAddress to[] = new InternetAddress[1];

to[0] = new InternetAddress(request.getParameter("to"));

message.setRecipients(Message.RecipientType.TO, to);

message.setSubject(request.getParameter("subject"));

message.setContent(request.getParameter("content"), "text/plain");

Transport.send(message);

¾Ë¾ÆµÑ Á¡Àº ¾îÇø®ÄÉÀ̼ÇÀÌ À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ¿¡¼­ ¼±¾ðµÈ °°Àº ÀÚ¿øÂüÁ¶ À̸§À» »ç¿ëÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº $CATALINA_HOME/conf/server.xml ¿¡¼­ ¼³Á¤µÈ ÀÚ¿ø ÆÑÅ丮¿Í ¾Æ·¡Ã³·³ ´ëÄ¡µÉ ¼ö ÀÖ½À´Ï´Ù.

3. Tomcat ÀÇ ÀÚ¿ø ÆÑÅ丮 ¼³Á¤Çϱâ

TomcatÀÇ ÀÚ¿ø ÆÑÅ丮 ȯ°æ¼³Á¤¸¦ Çϱâ À§Çؼ­´Â, $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡¼­ ÀÌ À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ Context ¿ä¼Ò(or nested inside a DefaultContext element for the surrounding <Host> or <Engine> element.) ¾È¿¡ ´ÙÀ½ÀÇ ¿ä¼Ò¸¦ Ãß°¡ÇÕ´Ï´Ù.


<Context ...>

  ...

  <Resource name="mail/Session" auth="Container"

            type="javax.mail.Session"/>

  <ResourceParams name="mail/Session">

    <parameter>

      <name>mail.smtp.host</name>

      <value>localhost</value>

    </parameter>

  </ResourceParams>

  ...

</Context>

ÁÖÀÇÇÒ Á¡Àº ÀÚ¿ø À̸§(¿©±â¼­, mail/Session)Àº ¹Ýµå½Ã À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ¿¡ ÁöÁ¤µÈ °ª°ú ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. ÇöÀç »ç¿ëÇÏ´Â ³×Æ®¿÷ÀÇ SMTP ¼­ºñ½º¸¦ Á¦°øÇÏ´Â ¼­¹öÀÇ ÁÖ¼Ò¸¦ mail.smtp.host ÆÄ¶ó¸ÞÅÍÀÇ °ª¿¡ º¯°æÇØ ÁֽʽÿÀ.

Example ¾îÇø®ÄÉÀ̼Ç

Tomcat¿¡ Æ÷ÇԵǾî ÀÖ´Â /examples ¾îÇø®ÄÉÀ̼ÇÀº ÀÌ ÀÚ¿ø ÆÑÅ丮¸¦ »ç¿ëÇÏ´Â ¿¹Á¦¸¦ °®°í ÀÖ½À´Ï´Ù. "JSP Examples" ¸µÅ© ¸¦ ÅëÇØ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ÇÁ¦·Î ¸ÞÀÏ ¸Þ½ÃÁö¸¦ º¸³»´Â ¼­ºí¸´ÀÇ ¼Ò½º ÄÚµå´Â /WEB-INF/classes/SendMailServlet.java ¿¡ ÀÖ½À´Ï´Ù.

°æ°í WARNING - ±âº» ¼³Á¤È¯°æÀº SMTP ¼­¹ö°¡ localhost ÀÇ 25¹ø Æ÷Æ®¸¦ »ç¿ëÇϰí ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù. ±×·¸Áö ¾Ê´Ù¸é, $CATALINA_HOME/conf/server.xml ÆÄÀÏÀ» ¿­¾î¼­, mail.smtp.host ÆÄ¶ó¸ÞÅÍ¿¡ ¸Â´Â °ª¿¡ ÇöÀç »ç¿ëÇÏ´Â ³×Æ®¿öÅ©¿¡¼­ »ç¿ë°¡´ÉÇÑ SMTP ¼­¹öÀÇ À̸§À¸·Î ¼öÁ¤ÇØÁֽʽÿÀ.

JDBC µ¥ÀÌÅÍ ¼Ò½º JDBC Data Sources

0. ¼Ò°³ Introduction

¸¹Àº À¥ ¾îÇø®ÄÉÀ̼ÇÀº ¿©·¯ ±â´ÉÀ» Áö¿øÇϱâ À§ÇØ, JDBC µå¶óÀ̹ö¸¦ ÅëÇØ database¿¡ Á¢¼ÓÇÏ´Â °ÍÀÌ ÇÊ¿äÇÕ´Ï´Ù. J2EE Ç÷§Æû ½ºÆåÀº ÀÌ ¶§¹®¿¡ J2EE ¾îÇø®ÄÉÀÌ¼Ç ¼­¹ö¿¡¼­ DataSource ±¸Çö(Áï, JDBC ¿¬°áÀÇ Ä¿³Ø¼Ç Ç®)ÀÌ °¡´ÉÇÒ °ÍÀ» ¿ä±¸Çϰí ÀÖ½À´Ï´Ù. Tomcat 4 ´Â ¶È°°Àº ±â´ÉÀ» Áö¿øÇϱ⠶§¹®¿¡, database±â¹ÝÀÇ ¾îÇø®ÄÉÀ̼ÇÀ» Tomcat ±â¹Ý¿¡¼­ °³¹ßÀ» ÇÑ µÚ¿¡ J2EE ¼­¹ö¿¡ ¿Ã·Áµµ ¹Ù²îÁö ¾Ê½À´Ï´Ù.

JDBC ¿¡ ´ëÇÑ ´õ »ó¼¼ÇÑ Á¤º¸´Â ¾Æ·¡ ¸µÅ©¿¡¼­ ã¾Æº¸½Ê½Ã¿À:

ÁÖÀÇ NOTE - Tomcat ¿¡¼­ÀÇ ±âº» data source Áö¿øÀº Tyrex ¸¦ Áö¿øÇÕ´Ï´Ù. ±×·¯³ª, javax.sql.DataSource ¸¦ ±¸ÇöÇÏ´Â ¾î´À ´Ù¸¥ Ä¿³Ø¼Ç Ç®µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡¿¡ ±â¼úµÈ ´ë·Î »ç¿ëÀÚ ÀÚ¿ø ÆÑÅ丮¸¦ ±¸¼ºÇÏ¸é µË´Ï´Ù.

1. JDBC µå¶óÀ̹ö ¼³Ä¡Çϱâ

JDBC Data Sources JNDI ÀÚ¿ø ÆÑÅ丮¸¦ »ç¿ëÇÏ·Á¸é Tomcat ³»ºÎ classµé°ú À¥¾îÇø®ÄÉÀ̼ǿ¡ Àû´çÇÑ JDBC µå¶óÀ̹ö¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù. À̰°Àº ÀÛ¾÷Àº µå¶óÀ̹ö jar ÆÄÀÏÀ» $CATALINA_HOME/common/lib µð·ºÅ丮 ¿¡ ¼³Ä¡ÇØ ³õÀ¸¸é ½±°Ô ³¡³³´Ï´Ù. ÀÌ µð·ºÅ丮´Â ÀÚ¿ø ÆÑÅ丮¿Í À¥ ¾îÇø®ÄÉÀÌ¼Ç ¾çÂÊ¿¡¼­ ¸ðµÎ ÀνÄÇÒ ¼ö ÀÖ½À´Ï´Ù.

2. ÀÚ¿ø ¿ä°Ç ¼±¾ðÇϱâ Declare Your Resource Requirements

´ÙÀ½À¸·Î, À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ (/WEB-INF/web.xml) ¸¦ ¼öÁ¤Çؼ­ ÀÌ ºóÀÇ »õ·Î¿î ÀνºÅϽº¸¦ ¿äûÇÒ ¶§ ¾µ JNDI ¸íÀ» ¼±¾ðÇÕ´Ï´Ù. º¸ÅëÀº, °¡Àå °£´ÜÇÑ Á¢±ÙÀº ´ÙÀ½°ú °°ÀÌ <resource-env-ref> ¿ä¼Ò ¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ±Ô¾à¿¡ ÀÇÇϸé, ¸ðµç À̸§Àº jdbc ¼­ºêÄÁÅØ½ºÆ®·Î °á¸»Áö¾îÁ®¾ß ÇÕ´Ï´Ù. Á¦°øµÈ ¸ðµç ÀÚ¿ø ÆÑÅ丮ÀÇ ·çÆ®°¡ µÇ´Â Ç¥ÁØ java:comp/env ³×ÀÌ¹Ö ÄÁÅØ½ºÆ®¿¡ »ó´ëÀûÀÔ´Ï´Ù.) ÀüÇüÀûÀÎ web.xml ¿£Æ®¸®´Â ´ÙÀ½°ú °°½À´Ï´Ù:


<resource-ref>

  <description>

    java.sql.Connection ÀνºÅϽºÀÇ ÆÑÅ丮¿¡ ´ëÇÑ ÀÚ¿ø ÂüÁ¶ÀÔ´Ï´Ù.
    
    server.xml ÆÄÀÏ¿¡ ¼³Á¤µÈ ƯÁ¤ÇÑ database ¿Í Åë½ÅÇϴµ¥ 
    
    ¾²ÀÔ´Ï´Ù.

    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/EmployeDB

  </res-ref-name>

  <res-type>

    javax.sql.DataSource

  </res-type>

  <res-auth>

    Container

  </res-auth>

</resource-ref>

ÁÖÀÇ WARNING - À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚÀÇ DTD ¿¡ ¿ä±¸µÇ´Â ¿ä¼ÒÀÇ ¼ø¼­°¡ Á¦´ë·ÎÀÎÁö È®ÀÎÇϽʽÿÀ. ÀÚ¼¼ÇÑ ³»¿ëÀº Servlet Specification ¸¦ È®ÀÎÇϽʽÿÀ.

3. ÀÌ ÀÚ¿øÀ» »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀÌ¼Ç ÄÚµùÇϱâ
Code Your Application's Use Of This Resource

ÀÌ ÀÚ¿ø ÂüÁ¶(resource reference)ÀÇ »ç¿ë¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù:


Context initCtx = new InitialContext();

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

DataSource ds = (DataSource)

  envCtx.lookup("jdbc/EmployeeDB");



Connection conn = ds.getConnection();

... ÀÌ Ä¿³Ø¼ÇÀ¸·Î database ¿¡ Á¢¼ÓÇÕ´Ï´Ù. ...

conn.close();

¾Ë¾ÆµÑ Á¡Àº ¾îÇø®ÄÉÀ̼ÇÀÌ À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ¿¡¼­ ¼±¾ðµÈ °°Àº ÀÚ¿øÂüÁ¶ À̸§À» »ç¿ëÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº $CATALINA_HOME/conf/server.xml ¿¡¼­ ¼³Á¤µÈ ÀÚ¿ø ÆÑÅ丮¿Í ¾Æ·¡Ã³·³ ´ëÄ¡µÉ ¼ö ÀÖ½À´Ï´Ù.

4. TomcatÀÇ ÀÚ¿ø ÆÑÅ丮 ȯ°æ¼³Á¤ Configure Tomcat's Resource Factory

TomcatÀÇ ÀÚ¿ø ÆÑÅ丮 ȯ°æ¼³Á¤¸¦ Çϱâ À§Çؼ­´Â, $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡¼­ ÀÌ À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ Context ¿ä¼Ò(or nested inside a DefaultContext element for the surrounding <Host> or <Engine> element.) ¾È¿¡ ´ÙÀ½ÀÇ ¿ä¼Ò¸¦ Ãß°¡ÇÕ´Ï´Ù.


<Context ...>

  ...

  <Resource name="jdbc/EmployeeDB" auth="Container"

            type="javax.sql.DataSource"/>

  <ResourceParams name="jdbc/EmployeeDB">

    <parameter>

      <name>user</name>

      <value>dbusername</value>

    </parameter>

    <parameter>

      <name>password</name>

      <value>dbpassword</value>

    </parameter>

    <parameter>

      <name>driverClassName</name>

      <value>org.hsql.jdbcDriver</value>

    </parameter>

    <parameter>

      <name>driverName</name>

      <value>jdbc:HypersonicSQL:database</value>

    </parameter>

  </ResourceParams>

  ...

</Context>

ÁÖÀÇÇÒ Á¡Àº ÀÚ¿ø À̸§(¿©±â¼­, jdbc/EmployeeDB)Àº ¹Ýµå½Ã À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ¿¡ ÁöÁ¤µÈ °ª°ú ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. ÇöÀç »ç¿ëÇÏ´Â ³×Æ®¿÷ÀÇ SMTP ¼­ºñ½º¸¦ Á¦°øÇÏ´Â ¼­¹öÀÇ ÁÖ¼Ò¸¦ mail.smtp.host ÆÄ¶ó¸ÞÅÍÀÇ °ª¿¡ º¯°æÇØ ÁֽʽÿÀ.

ÀÌ ¿¹Á¦´Â HypersonicSQL database JDBC µå¶óÀ̹ö¸¦ »ç¿ëÇÑ´Ù°í °¡Á¤ÇÕ´Ï´Ù. driverClassName ¿Í driverName ÆÄ¶ó¸ÞÅ͸¦ »ç¿ëÇϰí ÀÖ´Â JDBCµå¶óÀ̹ö¿Í Connection URL·Î ¹Ù²ãÁֽʽÿÀ.

»ç¿ëÀÚ Æ®·£Àè¼Ç User Transactions

JDBC ÀÚ¿øÆÑÅ丮¸¦ À§ÇØ Tyrex ¸¦ À§Ã³·³ »ç¿ëÇÏ·Á¸é, (XA-capable À̱⠶§¹®¿¡) Tyrex °¡ Á¦°øÇÏ´Â java.transaction.UserTransaction ÀÚ¿øµµ Áö¿øÇϵµ·Ï µË´Ï´Ù. ÀÌ ±â´ÉÀ» »ç¿ëÇÏ·Á¸é, ´ÙÀ½°ú °°ÀÌ ¾îÇø®ÄÉÀ̼ÇÀ» ÄÚµùÇϽʽÿÀ:


Context initCtx = new InitialContext();

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

Transaction tx = (Transaction) envCtx.lookup("UserTransaction");



tx.begin();

... µ¥ÀÌÅÍ¿¡ ´ëÇÑ Æ®·£Àè¼Ç ÀÛ¾÷µéÀ» ¼öÇàÇÕ´Ï´Ù ...

tx.commit();

Çϳª ÀÌ»óÀÇ database ¿¡ °ÉÃļ­ "µÎ»óÅÂÀÇ commit" À» ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. ¸ðµç ¿¬°üµÈ databaseµé¿¡ °ÉÃļ­ ¿ÏÀüÈ÷ ¼º°øÇϰųª, ¿ÏÀüÈ÷ ½ÇÆÐÇÏ´Â °æ¿ìÀÔ´Ï´Ù. ÀÌ ±â´ÉÀº JDBC µå¶óÀ̹ö°¡ XA ±â´ÉÀ» Áö¿øÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â J2EE ¿Í JDBC ¹®¼­¸¦ º¸½Ê½Ã¿À.

Ä¿½ºÅÒ ÀÚ¿ø ÆÑÅ丮 Ãß°¡Çϱâ Adding Custom Resource Factories

Ç¥ÁØ ÀÚ¿ø ÆÑÅ丮ÀÇ ¾î´À°Íµµ ÇÊ¿äÇÏÁö ¾Ê´Â´Ù¸é, Á÷Á¢ ÆÑÅ丮¸¦ ¸¸µé¾î¼­ Tomcat 4 ¿¡ ÅëÇÕÇÒ ¼ö ÀÖ°í, ÀÌ ÆÑÅ丮¸¦ »ç¿ëÇϱâ À§ÇØ conf/server.xml ȯ°æÆÄÀÏ¿¡ ¼³Á¤ÇØ ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ ¿¹Á¦¿¡¼­ ÆÑÅ丮¸¦ Çϳª ¸¸µé¾î º¸°Ú½À´Ï´Ù. À§¿¡ ÀÖ´Â ÀϹÝÀûÀÎ JavaBean ÀÚ¿ø À¸·ÎºÎÅÍ com.mycompany.MyBean ºóÀ» ¾î¶»°Ô »ý¼ºÇÏ´ÂÁö ¾Æ´Â ÆÑÅ丮ÀÔ´Ï´Ù.

1. ÀÚ¿ø ÆÑÅ丮 Ŭ·¡½º ¸¸µé±â Write A Resource Factory Class

JNDI ¼­ºñ½º Á¦°øÀÚ javax.naming.spi.ObjectFactory ÀÎÅÍÆäÀ̽º ¸¦ ±¸ÇöÇϴ Ŭ·¡½º¸¦ ¸¸µé¾î¾ß ÇÕ´Ï´Ù. À¥ ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÌ ÆÑÅ丮¿¡ ¿¬°áµÈ ÄÁÅØ½ºÆ® ¿£Æ®¸®¿¡ lookup() À» È£ÃâÇÒ ¶§¸¶´Ù, getObjectInstance() ¸Þ¼Òµå°¡ ´ÙÀ½ argumentµé°ú ÇÔ²² È£ÃâµË´Ï´Ù:

  • Object obj - °´Ã¼¸¦ »ý¼ºÇÏ´Â µ¥ »ç¿ëµÇ´Â À§Ä¡³ª ·¹ÆÛ·±½º Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â (nullÀÏ ¼öµµ ÀÖ´Â) object. Tomcat ¿¡¼­´Â, À̰ÍÀº Ç×»ó javax.naming.Reference ŸÀÔÀÇ °´Ã¼°¡ µË´Ï´Ù. ÀÌ ÆÑÅ丮 Ŭ·¡½ºÀÇ Å¬·¡½º¸í°ú ¹ÝȯµÉ °´Ã¼¸¦ ¸¸µå´Âµ¥ »ç¿ëÇÒ È¯°æ ÇÁ·ÎÆÛƼ(conf/server.xml¿¡ ÀÖ´Â)¸¦ °®°í ÀÖ´Â °ÍÀÔ´Ï´Ù.
  • Name name - ÁöÁ¤µÈ À̸§ÀÌ ¾ø´Ù¸é ÀÌ ÆÑÅ丮°¡ nameCtx, ¶Ç´Â null¿¡ »ó´ëÀûÀ¸·Î ¿¬°áµÉ À̸§.
  • Context nameCtx - name ÆÄ¶ó¸ÞÅÍ·Î ÁöÁ¤µÈ °ÍÀ̳ª, nameÀÌ ±âº» Ãʱâ ÄÁÅØ½ºÆ®¿¡ »ó´ëÀûÀ̶ó¸é null ¿¡ »ó´ëÀûÀÎ ÄÁÅØ½ºÆ®.
  • Hashtable environment - (nullÀÏ ¼öµµ ÀÖ´Â) ÀÌ °´Ã¼¸¦ »ý¼ºÇϴµ¥ »ç¿ëµÇ´Â ȯ°æ. À̰ÍÀº ÀϹÝÀûÀ¸·Î Tomcat °´Ã¼ ÆÑÅ丮¿¡¼­ ¹«½ÃµË´Ï´Ù.

MyBean ÀνºÅϽº¸¦ ¸¸µé¼ö ÀÖ´Â ÀÚ¿øÆÑÅ丮¸¦ »ý¼ºÇÏ·Á¸é Ŭ·¡½º¸¦ ÀÌó·³ ¸¸µé¾î¾ß ÇÕ´Ï´Ù:


package com.mycompany;



import java.util.Enumeration;

import java.util.Hashtable;

import javax.naming.Context;

import javax.naming.Name;

import javax.naming.NamingException;

import javax.naming.RefAddr;

import javax.naming.Reference;

import javax.naming.spi.ObjectFactory;



public class MyBeanFactory implements ObjectFactory {



  public Object getObjectInstance(Object obj,

      Name name, Context nameCtx, Hashtable environment)

      throws NamingException {



      // Acquire an instance of our specified bean class

      MyBean bean = new MyBean();



      // Customize the bean properties from our attributes

      Reference ref = (Reference) obj;

      Enumeration addrs = ref.getAll();

      while (addrs.hasMoreElements()) {

          RefAddr addr = (RefAddr) addrs.nextElement();

          String name = addr.getType();

          String value = (String) addr.getContent();

          if (name.equals("foo")) {

              bean.setFoo(value);

          } else if (name.equals("bar")) {

              try {

                  bean.setBar(Integer.parseInt(value));

              } catch (NumberFormatException e) {

                  throw new NamingException("Invalid 'bar' value " + value);

              }

          }

      }



      // Return the customized instance

      return (bean);



  }



}

ÀÌ ¿¹Á¦¿¡¼­, ¹«Á¶°ÇÀûÀ¸·Î »õ·Î¿î com.mycompany.MyBean Ŭ·¡½º ÀÇ ÀνºÅϽº¸¦ ¸¸µé¾ú°í, (¾Æ·¡ Âü°í) ÀÌ ÆÑÅ丮¸¦ ±¸¼ºÇÏ´Â <ResourceParams> ¿ä¼Ò¿¡ Æ÷ÇÔµÈ ÆÄ¶ó¸ÞÅ͵鿡 ±Ù°ÅÇÏ¿© ÇÁ·ÎÆÛƼµéÀ» populating Çß½À´Ï´Ù. ¾Ë¾ÆµÑ °ÍÀº factory·Î ¸í¸íµÈ ¾î¶² ÆÄ¶ó¸ÞÅ͵µ ±×³É ³Ñ¾î°¡¾ß ÇÕ´Ï´Ù. - ±× ÆÄ¶ó¸ÞÅÍ´Â ÆÑÅ丮 Ŭ·¡½º ÀÚ½ÅÀÇ À̸§À» ÁöĪÇϴµ¥ »ç¿ëµË´Ï´Ù. (ÀÌ ¿¹Á¦¿¡¼±, com.mycompany.MyBeanFactory) ¼³Á¤µÈ beanÀÇ ÇÁ·ÎÆÛƼ¿¡ »ç¿ëµÇÁö´Â ¾Ê½À´Ï´Ù.

ObjectFactory ¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â JNDI 1.2 Service Provider Interface (SPI) SpecificationÀ» º¸½Ê½Ã¿À.

ÀÌ Å¬·¡½º¸¦ ÄÄÆÄÀÏ ÇÒ ¶§ $CATALINA_HOME/common/lib ¿Í $CATALINA_HOME/server/lib µð·ºÅ丮¿¡ ÀÖ´Â ¸ðµç JAR ÆÄÀÏÀ» Æ÷ÇÔÇÑ class path °¡ ÇÊ¿äÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·² °æ¿ì, ÆÑÅ丮 Ŭ·¡½º( ±×¸®°í »ó°üµÈ bean Ŭ·¡½º)¸¦ $CATALINA_HOME/common/classes ¶Ç´Â JAR ÆÄÀÏÀ» $CATALINA_HOME/common/lib ¿¡ À§Ä¡½ÃŰ½Ê½Ã¿À. ÀÌ·± ¹æ½ÄÀ¸·Î, ÇÊ¿äÇÑ Å¬·¡½º ÆÄÀϵéÀº Catalina ³»ºÎ ÀÚ¿øµé°ú À¥ ¾îÇø®ÄÉÀÌ¼Ç ¸ðµÎ ¹Ý¿µµÉ ¼ö ÀÖ½À´Ï´Ù.

2. ÀÚ¿ø ¿ä°Ç ¼±¾ðÇϱâ Declare Your Resource Requirements

´ÙÀ½À¸·Î, À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ (/WEB-INF/web.xml) ¸¦ ¼öÁ¤Çؼ­ ÀÌ ºóÀÇ »õ·Î¿î ÀνºÅϽº¸¦ ¿äûÇÒ ¶§ ¾µ JNDI ¸íÀ» ¼±¾ðÇÕ´Ï´Ù. °¡Àå °£´ÜÇÑ Á¢±ÙÀº ´ÙÀ½°ú °°ÀÌ <resource-env-ref> ¿ä¼Ò ¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù:


<resource-env-ref>

  <description>

    Object factory for MyBean instances.

  </description>

  <resource-env-ref-name>

    bean/MyBeanFactory

  </resource-env-ref-name>

  <resource-env-ref-type>

    com.mycompany.MyBean

  </resource-env-ref-type>

<resource-env-ref>

ÁÖÀÇ WARNING - À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚÀÇ DTD ¿¡ ¿ä±¸µÇ´Â ¿ä¼ÒÀÇ ¼ø¼­°¡ Á¦´ë·ÎÀÎÁö È®ÀÎÇϽʽÿÀ. ÀÚ¼¼ÇÑ ³»¿ëÀº Servlet Specification ¸¦ È®ÀÎÇϽʽÿÀ.

3. ÀÌ ÀÚ¿øÀ» »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀÌ¼Ç ÄÚµùÇϱâ
Code Your Application's Use Of This Resource

ÀÌ ÀÚ¿ø ȯ°æ ÂüÁ¶(resource environment reference)ÀÇ »ç¿ëÀº ´ÙÀ½°ú °°½À´Ï´Ù:


Context initCtx = new InitialContext();

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

MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");



writer.println("foo = " + bean.getFoo() + ", bar = " +

               bean.getBar());

4. TomcatÀÇ ÀÚ¿ø ÆÑÅ丮 ȯ°æ¼³Á¤ Configure Tomcat's Resource Factory

TomcatÀÇ ÀÚ¿ø ÆÑÅ丮 ȯ°æ¼³Á¤¸¦ Çϱâ À§Çؼ­´Â, $CATALINA_HOME/conf/server.xml ÆÄÀÏ¿¡¼­ ÀÌ À¥ ¾îÇø®ÄÉÀ̼ÇÀÇ Context ¿ä¼Ò(or nested inside a DefaultContext element for the surrounding <Host> or <Engine> element.) ¾È¿¡ ´ÙÀ½ÀÇ ¿ä¼Ò¸¦ Ãß°¡ÇÕ´Ï´Ù.


<Context ...>

  ...

  <Resource name="bean/MyBeanFactory" auth="Container"

            type="com.mycompany.MyBean"/>

  <ResourceParams name="bean/MyBeanFactory">

    <parameter>

      <name>factory</name>

      <value>com.mycompany.MyBeanFactory</value>

    </parameter>

    <parameter>

      <name>bar</name>

      <value>23</value>

    </parameter>

  </ResourceParams>

  ...

</Context>

ÁÖÀÇÇÒ Á¡Àº ÀÚ¿ø À̸§(¿©±â¼­, bean/MyBeanFactory)Àº ¹Ýµå½Ã À¥ ¾îÇø®ÄÉÀÌ¼Ç ¼³Ä¡ Áö½ÃÀÚ¿¡ ÁöÁ¤µÈ °ª°ú ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ bar ÇÁ·ÎÆÛƼÀÇ °ªÀ» ÃʱâÈ­ÇÕ´Ï´Ù, À̰ÍÀº »õ·Î¿î ºóÀÌ ¹ÝȯµÇ±â Àü¿¡ setBar(23) °¡ È£ÃâµÇ°Ô ÇÕ´Ï´Ù. foo ÇÁ·ÎÆÛƼ¸¦ ÃʱâÈ­ ÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡, ºóÀº ±âº»°ªÀÌ ¹«¾ùÀÌµç ±×°ÍÀÇ »ý¼ºÀÚ¿¡ ÀÇÇØ ¸¸µé¾îÁø °ªÀ» °®°Ô µÉ °ÍÀÔ´Ï´Ù.

¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀÚÀÇ °üÁ¡°ú ÀÚ¿øÈ¯°æÂüÁ¶ÀÇ ¼±¾ðÇÒ ¶§, »õ·Î¿î ÀνºÅϽº¸¦ ¿äûÇÏ´Â µ¥ »ç¿ëµÉ ÇÁ·Î±×·¡¹ÖÇÒ ¶§ ¾Ë¾ÆµÎ¾î¾ß ÇÒ °ÍÀº Generic JavaBean Resources ¿¹Á¦¿¡ »ç¿ëµÈ Á¢±Ù¹æ½Ä°ú µ¿ÀÏÇÕ´Ï´Ù. À̰ÍÀÌ ¸»ÇÏ´Â ¹Ù´Â JNDI ÀÚ¿ø »ç¿ëÀÇ ÀåÁ¡ÁßÀÇ Çϳª´Â ±â´ÉÀÇ Ä¸½¶È­(encapsulate funtionality) ÀÔ´Ï´Ù. - ÀÚ¿øÀ» »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ¼Ò½º¸¦ ¼öÁ¤ÇÒ ÇÊ¿ä¾øÀÌ ±â¹Ý ±¸ÇöÀ» ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ´Ü, ȣȯµÇ´Â API¸¦ À¯ÁöÇØ¾ß ÇÕ´Ï´Ù.

¿øº»:http://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-resources-howto.html

Copyright © 1999-2001, Apache Software Foundation
¹ø¿ª: Ç㱤³², contact: kenu@okjsp.pe.kr http://okjsp.pe.kr