The Jakarta Project
    The Tomcat Servlet/JSP Container

Links

Top Level Elements

Connectors

Containers

Nested Components

The Context Container

¼Ò°³(Introduction)

Context ¿¤¸®¸ÕÆ®´Â ƯÁ¤ °¡»óÈ£½ºÆ® ³»¿¡¼­ ½ÇÇàµÇ´Â À¥¾îÇø®ÄÉÀ̼ÇÀ» ³ªÅ¸³À´Ï´Ù. °¢ À¥¾îÇø®ÄÉÀ̼ÇÀº À¥¾îÇø®ÄÉÀÌ¼Ç ¾ÆÄ«À̺ê(Web Application Archive) (WAR) ÆÄÀÏ ¶Ç´Â, ÆÐÅ·ÇÏÁö ¾ÊÀº ä·Î ±×¿¡ »óÀÀÇÏ´Â ³»¿ëÀ» ´ã°í ÀÖ´Â µð·ºÅ丮¸¦ ±âÁØÀ¸·Î Çϸç, ÀÌ·¯ÇÑ ³»¿ëÀº ¼­ºí¸´ ½ºÆå(¹öÀü 2.2 ¶Ç´Â ±× ÀÌ»ó)¿¡ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. À¥¾îÇø®ÄÉÀÌ¼Ç ¾ÆÄ«À̺꿡 °üÇÑ ´õ ¸¹Àº Á¤º¸¸¦ ¿øÇÏ½Ã¸é ¼­ºí¸´ ½ºÆåÀ» ´Ù¿î·ÎµåÇØ¼­ Âü°íÇϽʽÿÀ. ±×¸®°í Tomcat ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀÚ °¡À̵å(Application Developer's Guide)¸¦ °ËÅäÇϽñ⠹ٶø´Ï´Ù.

°¢ HTTP ¿äûÀ» ó¸®Çϴµ¥ »ç¿ëÇÒ À¥¾îÇø®ÄÉÀ̼ÇÀÇ ¼±ÅÃÀº, °¢°¢ Á¤ÀÇµÈ ContextÀÇ ÄÁÅØ½ºÆ® °æ·Î(context path)¿¡ ´ëÇØ ¿äû URIÀÇ °¡´ÉÇÑ ÀüÄ¡¾î(prefix) Áß °¡Àå ±æ°Ô ¸Åΰ¡´ÉÇÑ ÄÁÅØ½ºÆ® °æ·Î¸¦ °¡Áø ÄÁÅØ½ºÆ®¸¦ ¼±ÅÃÇÔÀ¸·Î½á ÀÌ·ç¾îÁý´Ï´Ù. ¼±ÅÃµÈ Context´Â ¼ö½ÅµÈ ¿äûÀ» ó¸®Çϱâ À§ÇØ ÀûÀýÇÑ ¼­ºí¸´À» ¼±ÅÃÇÕ´Ï´Ù. ¼­ºí¸´ ¼±Åà ÀÛ¾÷Àº À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍ(web application deployment descriptor) ÆÄÀÏ(¹Ýµå½Ã À¥¾îÇø®ÄÉÀÌ¼Ç µð·ºÅ丮 ÇÏÀ§ÀÇ /WEB-INF/web.xml¿¡ À§Ä¡ÇÔ)¿¡ Á¤ÀÇµÈ ¼­ºí¸´ ¸ÅÇÎ Á¤º¸¿¡ µû¶ó¼­ ÀÌ·ç¾îÁý´Ï´Ù.

Context ¿¤¸®¸ÕÆ®´Â Ƚ¼öÀÇ Á¦ÇÑ ¾øÀÌ Á¤ÀÇÇÒ ¼ö ÀÖÀ¸¸ç, conf/server.xmlÀÇ Host ¿¤¸®¸ÕÆ® ³»¿¡ Áßø½ÃŰ¸é µË´Ï´Ù. °¢°¢ÀÇ Context´Â ¹Ýµå½Ã À¯ÀÏÇÑ ÄÁÅØ½ºÆ® °æ·Î¸¦ °¡Á®¾ß Çϸç, ÄÁÅØ½ºÆ® °æ·Î´Â path ¼Ó¼ºÀ¸·Î Á¤Àǵ˴ϴÙ. ¶Ç ÄÁÅØ½ºÆ® °æ·ÎÀÇ ¹®ÀÚ¿­ ±æÀ̰¡ 0ÀÎ Context¸¦ Ãß°¡·Î ÁöÁ¤ÇØ¾ß Çϴµ¥, ÀÌ·¸°Ô Á¤ÀÇÇÑ Context´Â ÀÌ °¡»ó È£½ºÆ®¿¡ ´ëÇÏ¿© default À¥¾îÇø®ÄÉÀ̼ÇÀÌ µÇ¾î, ´Ù¸¥ ¾î¶² ContextÀÇ ÄÁÅØ½ºÆ® °æ·Î¿¡µµ ¸ÅεÇÁö ¾Ê´Â ¸ðµç ¿äûÀ» ó¸®Çϴµ¥ »ç¿ëµË´Ï´Ù.

Context ¿¤¸®¸ÕÆ®¸¦ Host ¿¤¸®¸ÕÆ®¿¡ Áßø½ÃŰ´Â ¹æ¹ý ¿Ü¿¡µµ, HostÀÇ appBase·Î ÁöÁ¤µÈ µð·ºÅ丮 ¾È¿¡ À̵éÀ» °¢°¢ÀÇ ÆÄÀÏ(È®ÀåÀÚ´Â ".xml")·Î ÀúÀåÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀÇ ÀÚµ¿¹èÄ¡(Automatic Application Deployment)¿¡¼­ ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù.

¸í½ÃÀûÀ¸·Î Context ¿¤¸®¸ÕÆ®¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ý »Ó¸¸ ¾Æ´Ï¶ó, ´ç½ÅÀ» À§ÇØ ÀÚµ¿À¸·Î Context ¿¤¸®¸ÕÆ®¸¦ »ý¼ºÇØ ÁÖ´Â ¸î°¡Áö Å×Å©´Ðµµ Á¸ÀçÇÕ´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀÇ ÀÚµ¿¹èÄ¡(Automatic Application Deployment)¿Í »ç¿ëÀÚ À¥¾îÇø®ÄÉÀ̼Ç(User Web Applications)¿¡¼­ ´õ ¸¹Àº Á¤º¸¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù.

ÀÌÇÏÀÇ ¼³¸í¿¡¼­´Â $CATALINA_HOME º¯¼ö¸íÀ» »ç¿ëÇÏ¿© ´ç½ÅÀÌ Tomcat 4¸¦ ¼³Ä¡ÇÑ µð·ºÅ丮¸¦ ÂüÁ¶Çϸç, ÀÌ µð·ºÅ丮°¡ ´ëºÎºÐÀÇ »ó´ë°æ·Î¿¡ ´ëÇÑ ±âÁØ µð·ºÅ丮(base directory)°¡ µË´Ï´Ù. ±×·¯³ª ¸¸¾à CATALINA_BASE µð·ºÅ丮¸¦ ¼³Á¤ÇÏ¿© Tomcat 4¸¦ ¿©·¯°³ ¼³Ä¡Çß´Ù¸é, ÀÌ·¯ÇÑ µð·ºÅ丮 º¯¼ö ÂüÁ¶¿¡ ´ëÇØ $CATALINA_HOME ´ë½Å $CATALINA_BASE ¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

¼Ó¼º(Attributes)
°øÅë¼Ó¼º(Common Attributes)

ContextÀÇ ¸ðµç ±¸Çöü´Â ´ÙÀ½ ¼Ó¼ºµéÀ» Á¦°øÇÏ°Ô µË´Ï´Ù:

¼Ó¼º¼³¸í
className

»ç¿ëÇÒ Java ±¸Çöü Ŭ·¡½ºÀÇ À̸§. ÀÌ Å¬·¡½º´Â ¹Ýµå½Ã org.apache.catalina.Context ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é Ç¥Áذª (¾Æ·¡¿¡ Á¤Àǵ˴ϴÙ)ÀÌ »ç¿ëµË´Ï´Ù.

cookies

true(µðÆúÆ®)·Î ÁöÁ¤Çϸé Ŭ¶óÀÌ¾ðÆ®°¡ Äí۸¦ Áö¿øÇÏ´Â °æ¿ì ¼¼¼ÇÈ®ÀÎÀÇ Åë½Å¼ö´Ü(session identifier communication)À¸·Î Äí۸¦ »ç¿ëÇÕ´Ï´Ù. false·Î ÁöÁ¤ÇÏ¸é ¼¼¼ÇÈ®ÀÎÀÇ Åë½Å¼ö´ÜÀ¸·Î ÄíŰ »ç¿ëÀ» ÇÏÁö ¾Ê°í, ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇÑ URL ´Ù½Ã¾²±â(URL rewriting)¿¡¸¸ ÀÇÁ¸ÇÑ´Ù´Â ÀǹÌÀÔ´Ï´Ù.

crossContext

true·Î ÁöÁ¤Çϸé ÀÌ ¾îÇø®ÄÉÀ̼ǿ¡¼­ ServletContext.getContext() È£ÃâÀ» ÅëÇØ, ÀÌ °¡»óÈ£½ºÆ®¿¡¼­ ½ÇÇàÁßÀÎ ´Ù¸¥ À¥¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ ¿äûµð½ºÆÐÃÄ(request dispatcher)¸¦ ¼º°øÀûÀ¸·Î ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. º¸¾È»óÀÇ ÀÌÀ¯·Î false(µðÆúÆ®)·Î ÁöÁ¤Çϸé getContext()´Â ¾ðÁ¦³ª nullÀ» ¹ÝȯÇÏ°Ô µË´Ï´Ù.

docBase

ÀÌ À¥¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ Document Base (Context Root·Îµµ ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù) µð·ºÅ丮, ¶Ç´Â À¥¾îÇø®ÄÉÀÌ¼Ç ¾ÆÄ«ÀÌºê ÆÄÀÏÀÇ °æ·Î¸í(À¥¾îÇø®ÄÉÀ̼ÇÀ» WAR ÆÄÀÏ·Î Á÷Á¢ ½ÇÇàÇÏ´Â °æ¿ì)À» ³ªÅ¸³À´Ï´Ù. ÀÌ µð·ºÅ丮³ª WAR ÆÄÀÏ¿¡¿¡ ´ëÇÑ Àý´ë°æ·Î¸íÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ°í, ÀÌ Context°¡ Á¤ÀÇµÈ HostÀÇ appBase µð·ºÅ丮¿¡ ´ëÇÑ »ó´ë°æ·Î¸íÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

override

ÀÌ Context°¡ Á¤ÀÇµÈ HostÀÇ DefaultContext¿¡ Á¤ÀÇµÈ °¢ ¼³Á¤³»¿ëÀ», ÀÌ Context ¿¤¸®¸ÕÆ®¿¡¼­ ÀçÁ¤ÀÇ(override) ÇÒ ¼ö ÀÖµµ·Ï ÇÏ·Á¸é true·Î ÁöÁ¤ÇÕ´Ï´Ù. µðÆúÆ®·Î´Â DefaultContext ¿¤¸®¸ÕÆ®ÀÇ ¼³Á¤ÀÌ »ç¿ëµÇµµ·Ï µÇ¾î ÀÖ½À´Ï´Ù.

privileged

true·Î ¼³Á¤Çϸé ÀÌ ÄÁÅØ½ºÆ®´Â °ü¸®ÀÚ¼­ºí¸´(manager servlet) °°Àº ÄÁÅ×ÀÌ³Ê ¼­ºí¸´À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

path

ÀÌ À¥¾îÇø®ÄÉÀ̼ÇÀÇ ÄÁÅØ½ºÆ® °æ·Î(context path)¸¦ ³ªÅ¸³»¸ç, °¢ ¿äû URIÀÇ ½ÃÀۺκÐÀÌ ÄÁÅØ½ºÆ® °æ·Î¿Í °°À» ¶§ ÇØ´ç À¥¾îÇø®ÄÉÀ̼ÇÀÌ ±× ¿äûÀ» ó¸®ÇÏ°Ô µË´Ï´Ù. ÇϳªÀÇ Æ¯Á¤ Host ³»ÀÇ ÄÁÅØ½ºÆ® °æ·ÎµéÀº ¸ðµÎ °¢°¢ À¯ÀÏÇØ¾ß ÇÕ´Ï´Ù. ¸¸¾à ÄÁÅØ½ºÆ® °æ·Î¸¦ ºó ½ºÆ®¸µ("")À¸·Î ÁöÁ¤Çϸé, ÀÌ Context´Â ÀÌ Host¿¡ ´ëÇÑ µðÆúÆ® À¥¾îÇø®ÄÉÀ̼ÇÀ¸·Î Á¤ÀÇµÈ °ÍÀÔ´Ï´Ù. µðÆúÆ® À¥¾îÇø®ÄÉÀ̼ÇÀº ´Ù¸¥ Context µé¿¡ ÇØ´çµÇÁö ¾Ê´Â ¸ðµç ¿äûÀ» ó¸®ÇÒ °ÍÀÔ´Ï´Ù.

reloadable

true·Î ÁöÁ¤Çϸé, Catalina´Â /WEB-INF/classes/¿Í /WEB-INF/lib ¾È Ŭ·¡½º µéÀÇ º¯°æ¿©ºÎ¸¦ °¨½ÃÇÏ´Ù°¡, º¯°æÀÌ ¹ß°ßµÇ¸é À¥¾îÇø®ÄÉÀ̼ÇÀ» ÀÚµ¿À¸·Î ÀçÀûÀç(reload)ÇÕ´Ï´Ù. ÀÌ ±â´ÉÀº °³¹ßÁß¿¡´Â ¸Å¿ì À¯¿ëÇÏÁö¸¸ ¾ó¸¶°£ÀÇ ½ÇÇàºÎÇÏ(runtime overhead)°¡ ¹ß»ýÇϹǷÎ, ½ÇÁ¦ ¿î¿µÇÒ ¿ëµµ·Î ¾îÇø®ÄÉÀ̼ÇÀ» ¹èÄ¡(deploy)ÇÒ ¶§´Â »ç¿ëÇÏÁö ¾Êµµ·Ï ÇÕ´Ï´Ù. ±×·¯³ª ÀÌ¹Ì ¹èÄ¡°¡ ³¡³­ ¾îÇø®ÄÉÀ̼ÇÀÌ¶óµµ Manager À¥¾îÇø®ÄÉÀ̼ÇÀ» ÀÌ¿ëÇϸé ÇÊ¿äÇÒ ¶§ ÀçÀûÀç Çϵµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù.

wrapperClass

ÀÌ Context·Î °ü¸®ÇÒ ¼­ºí¸´ µé¿¡ ´ëÇØ »ç¿ëÇÒ org.apache.catalina.Wrapper ±¸Çöü Ŭ·¡½ºÀÇ Java Ŭ·¡½º¸íÀÔ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é Ç¥ÁذªÀÌ »ç¿ëµË´Ï´Ù.

Ç¥Áر¸Çöü(Standard Implementation)

ContextÀÇ Ç¥Áر¸Çöü Ŭ·¡½º´Â org.apache.catalina.core.StandardContext ÀÔ´Ï´Ù. ÀÌ Å¬·¡½º´Â À§¿¡ ³ª¿­ÇÑ °øÅë¼Ó¼º ¿Ü¿¡µµ ´ÙÀ½°ú °°Àº Ãß°¡ÀûÀÎ ¼Ó¼ºÀ» Á¦°øÇÕ´Ï´Ù:

¼Ó¼º¼³¸í
debug

ÀÌ Context°¡ ÇØ´ç Logger¿¡ µð¹ö±ë ·Î±×¸¦ Ãâ·ÂÇÏ´Â »ó¼¼¼öÁØÀ» ÀǹÌÇÕ´Ï´Ù. ¼ýÀÚ°¡ ³ôÀ» ¼ö·Ï ´õ ÀÚ¼¼ÇÑ Ãâ·ÂÀ» »ý¼ºÇÕ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, µð¹ö±ë »ó¼¼¼öÁØÀÇ µðÆúÆ® °ªÀº 0 ÀÔ´Ï´Ù.

swallowOutput

ÀÌ °ªÀÌ true À̸é, À¥¾îÇø®ÄÉÀ̼ǿ¡¼­ System.out°ú System.err À¸·Î º¸³»Áö´Â ¹ÙÀÌÆ® Ãâ·ÂÀº ¸ðµÎ À¥¾îÇø®ÄÉÀ̼ÇÀÇ ·Î°Å(logger)·Î ÀçÁöÁ¤(redirect)µË´Ï´Ù. ÀÌ °ªÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é false·Î ÀνÄÇÕ´Ï´Ù.

useNaming

ÀÌ À¥¾îÇø®ÄÉÀ̼ǿ¡¼­ Java2 Enterprise Edition (J2EE) Ç÷§Æû ±Ô¾à¿¡ ¸Â´Â JNDI InitialContext¸¦ »ç¿ë°¡´ÉÇÏ°Ô Çϵµ·Ï ¼³Á¤ÇÏ·Á¸é true(µðÆúÆ®°ª)·Î ÁöÁ¤ÇÕ´Ï´Ù.

workDir

ÀÌ Context¿¡¼­ »ç¿ëÇÒ Àӽà µð·ºÅ丮¿¡ ´ëÇÑ °æ·Î¸íÀÔ´Ï´Ù. ÀÌ µð·ºÅ丮´Â °ü·Ã À¥¾îÇø®ÄÉÀ̼ÇÀÇ ¼­ºí¸´µéÀÌ Àӽ÷ΠÀбâ-¾²±â ÀÛ¾÷À» ÇÏ´Â ¿ëµµ·Î »ç¿ëÇÕ´Ï´Ù. À¥¾îÇø®ÄÉÀ̼ÇÀÇ ¼­ºí¸´ µéÀº À̸§ÀÌ javax.servlet.context.tempdirÀÎ ¼­ºí¸´-ÄÁÅØ½ºÆ® ¼Ó¼º(ŸÀÔÀº java.io.File)À» ÅëÇØ ÀÌ µð·ºÅ丮¸¦ º¼ ¼ö ÀÖÀ¸¸ç, ÀÌ ³»¿ëÀº ¼­ºí¸´ ½ºÆå¿¡ ±â¼úµÇ¾î ÀÖ½À´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â ÀûÀýÇÑ µð·ºÅ丮°¡ $CATALINA_HOME/work ¾Æ·¡¿¡ Á¦°øµË´Ï´Ù.

³»ºÎ ÄÄÆ÷³ÍÆ®(Nested Components)

¾Æ·¡ÀÇ À¯Æ¿¸®Æ¼ ÄÄÆ÷³ÍÆ®µéÀº ÇØ´ç ¿¤¸®¸ÕÆ®¸¦ Context ¿¤¸®¸ÕÆ® ¾È¿¡ ÃÖ´ë Çϳª±îÁö Æ÷ÇÔ½Ãų ¼ö ÀÖ½À´Ï´Ù:

  • Loader - ÀÌ À¥¾îÇø®ÄÉÀ̼ÇÀÇ ¼­ºí¸´°ú ºó Ŭ·¡½ºµéÀ» ·ÎµåÇÏ´Â À¥¾îÇø®ÄÉÀÌ¼Ç Å¬·¡½º ·Î´õ¸¦ ¼³Á¤ÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î µðÆúÆ®·Î ¼³Á¤µÇ¾î ÀÖ´Â °ÍÀ» ±×³É »ç¿ëÇÏ´Â °ÍÀ¸·Î ÃæºÐÇÕ´Ï´Ù.
  • Logger - ÀÌ Context¿¡ ´ëÇÑ ¸ðµç ·Î±× ¸Þ½ÃÁö¸¦ ¹Þ¾Æ¼­ ó¸®ÇÒ ·Î°Å(logger)¸¦ ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ·Î°Å´Â ServletContext.log() È£ÃâÀ» ÅëÇØ ±â·ÏµÉ ¾îÇø®ÄÉÀÌ¼Ç ·Î±× ¸Þ½ÃÁöµµ ó¸®ÇÕ´Ï´Ù.
  • Manager - ÀÌ À¥¾îÇø®ÄÉÀ̼ÇÀÇ HTTP ¼¼¼ÇÀ» »ý¼º/ÆÄ±«/À¯Áö ½Ã۴µ¥ »ç¿ëµÉ ¼¼¼Ç°ü¸®ÀÚ¸¦ ¼³Á¤ÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î µðÆúÆ®·Î ¼³Á¤µÇ¾î ÀÖ´Â ¼¼¼Ç°ü¸®ÀÚ¸¦ ±×³É »ç¿ëÇÏ´Â °ÍÀ¸·Î ÃæºÐÇÕ´Ï´Ù.
  • Realm - ÀÌ À¥¾îÇø®ÄÉÀ̼Ǹ¸À» À§ÇÑ »ç¿ëÀÚ/¿ªÇÒ µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿µ¿ª(realm)À» ¼³Á¤ÇÕ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ÀÌ À¥¾îÇø®ÄÉÀ̼ÇÀº ÀÌ Context°¡ Á¤ÀÇµÈ Host³ª Engine ¿¡ Á¤ÀÇµÈ RealmÀ» »ç¿ëÇÒ °ÍÀÔ´Ï´Ù.
  • Resources - ÀÌ À¥¾îÇø®ÄÉÀ̼ǿ¡ °ü·ÃµÈ Á¤Àû ÀÚ¿ø¿¡ Á¢±ÙÇϴµ¥ »ç¿ëÇÒ ÀÚ¿ø°ü¸®ÀÚ¸¦ ¼³Á¤ÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î µðÆúÆ®·Î ¼³Á¤µÇ¾î ÀÖ´Â ÀÚ¿ø°ü¸®ÀÚ¸¦ ±×³É »ç¿ëÇÏ´Â °ÍÀ¸·Î ÃæºÐÇÕ´Ï´Ù.
Ưº°±â´É(Special Features)
Access Logs

À¥¼­¹ö¸¦ ¿î¿µÇÒ ¶§ ÀϹÝÀûÀ¸·Î »ý¼ºµÇ´Â Ãâ·Â ÆÄÀÏÁß Çϳª°¡ ¾×¼¼½º ·Î±×(access log)ÀÔ´Ï´Ù. ÀÌ ·Î±×´Â ¼­¹ö°¡ ó¸®ÇÏ´Â °¢ ¿äû¸¶´Ù Ç¥ÁØ Æ÷¸Ë¿¡ µû¶ó ÇÑ ¶óÀξ¿ Ãâ·ÂÇÕ´Ï´Ù. Catalina¿¡¼­´Â Valve ±¸Çöü¸¦ »ç¿ëÀÚ°¡ ÀÓÀÇ·Î ¼±ÅÃÇÏ¿©, À¥¼­¹öµéÀÌ Ç¥ÁØ Æ÷¸Ë¿¡ µû¶ó »ý¼ºÇÏ´Â ¾×¼¼½º ·Î±×¿Í °°Àº Æ÷¸ËÀÇ ·Î±×¸¦ »ý¼ºÇÒ ¼öµµ ÀÖ°í ¶Ç´Â ´Ù¾çÇÑ Ä¿½ºÅÒ Æ÷¸ËÀ¸·Î ·Î±×¸¦ »ý¼ºÇÒ ¼ö ÀÖµµ·Ï Çϰí ÀÖ½À´Ï´Ù.

´ç½ÅÀº Catalina¿¡ Engine, Host, ¶Ç´Â Context°¡ ó¸®ÇÏ´Â ¸ðµç ¿äû¿¡ ´ëÇÑ ¾×¼¼½º ·Î±×¸¦ »ý¼ºÇϵµ·Ï Áö½ÃÇÒ ¼ö Àִµ¥, ÀÌ´Â ´ÙÀ½°ú °°ÀÌ Valve ¿¤¸®¸ÕÆ®¸¦ Áßø½ÃŰ¸é µË´Ï´Ù:

<Context path="/examples" ...>
  ...
  <Valve className="org.apache.catalina.valves.AccessLogValve"
         prefix="localhost_access_log." suffix=".txt"
         pattern="common"/>
  ...
</Context>

Á¦°øµÇ´Â ¼³Á¤ ¼Ó¼º¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸´Â ¾×¼¼½º ·Î±× ¹ëºê(Access Log Valve)¿¡¼­ º¼ ¼ö ÀÖ½À´Ï´Ù.

ÄÁÅØ½ºÆ®ÀÇ ÀÚµ¿¼³Á¤(Automatic Context Configuration)

¸¸¾à Ç¥ÁØ Context ±¸Çöü¸¦ »ç¿ëÇϰí ÀÖ´Ù¸é, Catalina°¡ ±âµ¿µÉ ¶§ ¶Ç´Â ÀÌ À¥¾îÇø®ÄÉÀ̼ÇÀÌ ÀçÀûÀçµÉ ¶§ ´ÙÀ½ÀÇ ¼³Á¤´Ü°è µéÀÌ ÀÚµ¿À¸·Î ¼öÇàµË´Ï´Ù. ÀÌ ±â´ÉÀº Ưº°ÇÑ ¼³Á¤ÀÌ ÇÊ¿äÄ¡ ¾Ê½À´Ï´Ù.

  • ¸¸ÀÏ Loader ¿¤¸®¸ÕÆ®¸¦ ¼±¾ðÇÏÁö ¾Ê¾Ò´Ù¸é Ç¥ÁØ À¥¾îÇø®ÄÉÀÌ¼Ç Å¬·¡½º·Î´õ·Î ¼³Á¤µË´Ï´Ù.
  • ¸¸ÀÏ Manager ¿¤¸®¸ÕÆ®¸¦ ¼±¾ðÇÏÁö ¾Ê¾Ò´Ù¸é Ç¥ÁØ ¼¼¼Ç°ü¸®ÀÚ·Î ¼³Á¤µË´Ï´Ù.
  • ¸¸ÀÏ Resources ¿¤¸®¸ÕÆ®¸¦ ¼±¾ðÇÏÁö ¾Ê¾Ò´Ù¸é Ç¥ÁØ ÀÚ¿ø°ü¸®ÀÚ·Î ¼³Á¤µË´Ï´Ù.
  • conf/web.xml¿¡ ³ª¿­µÈ À¥¾îÇø®ÄÉÀÌ¼Ç ÇÁ·ÎÆÛƼµéÀÌ ÀÌ À¥¾îÇø®ÄÉÀ̼ÇÀÇ µðÆúÆ® °ªÀ¸·Î 󸮵˴ϴÙ. ÀÌ ÆÄÀÏÀº µðÆúÆ® ¸ÅÇÎ(*.jsp È®ÀåÀÚ¸¦ ÇØ´ç JSP ¼­ºí¸´À¸·Î ¸ÅÇÎÇÏ´Â µîÀÇ), ±×¸®°í ¸ðµç À¥¾îÇø®ÄÉÀ̼ǿ¡ Àû¿ëµÉ ´Ù¸¥ Ç¥ÁØ ±â´ÉµéÀ» Á¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.
  • ÀÌ À¥¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ /WEB-INF/web.xml ÆÄÀÏ¿¡ ³ª¿­µÈ À¥¾îÇø®ÄÉÀÌ¼Ç ÇÁ·ÎÆÛƼµéÀÌ Ã³¸®µË´Ï´Ù(ÀÌ ÆÄÀÏÀÌ ÀÖ´Â °æ¿ì).
  • ¸¸ÀÏ ´ç½ÅÀÇ À¥¾îÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëÀÚ ÀÎÁõÀ» ¿ä±¸ÇÏ´Â º¸¾ÈÁ¶°ÇÀ» ÁöÁ¤Çß´Ù¸é, ´ç½ÅÀÌ ¼±ÅÃÇÑ ·Î±×ÀÎ ¹æ¹ýÀ» ÀûÀýÈ÷ ±¸ÇöÇÑ ÀÎÁõÀÚ(Authenticator)°¡ ¼³Á¤µË´Ï´Ù.
ÄÁÅØ½ºÆ® ÆÄ¶ó¹ÌÅÍ(Context Parameters)

ÀÌ ¿¤¸®¸ÕÆ® ¾È¿¡ <Parameter> ¿¤¸®¸ÕÆ® µéÀ» Áßø½Ã۸é, À¥¾îÇø®ÄÉÀ̼ǿ¡¼­ ¼­ºí¸´-ÄÁÅØ½ºÆ® ÃʱâÈ­ ÆÄ¶ó¹ÌÅÍ(servlet context initialization parameters)·Î À̿밡´ÉÇÑ ÆÄ¶ó¹ÌÅÍÀ̸§-°ª µéÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ Çϸé ÃʱâÈ­ ÆÄ¶ó¹ÌÅ͸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù:

<Context ...>
  ...
  <Parameter name="companyName" value="My Company, Incorporated"
         override="false"/>
  ...
</Context>

ÀÌ´Â À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍ(/WEB-INF/web.xml) ¾È¿¡ ´ÙÀ½°ú °°Àº ¿¤¸®¸ÕÆ®¸¦ Æ÷ÇÔ½ÃŰ´Â °Í°ú µ¿ÀÏÇÕ´Ï´Ù:

<context-param>
  <param-name>companyName</param-name>
  <param-value>My Company, Incorporated</param-value>
</context-param>

ÇÏÁö¸¸ ÀÌ °ªÀ» Ä¿½ºÅ͸¶ÀÌÁîÇϱâ À§ÇØ ¹èÄ¡ µð½ºÅ©¸³Å͸¦ º¯°æÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.

<Parameter> ¿¤¸®¸ÕÆ®¿¡¼­´Â ´ÙÀ½°ú °°Àº ¼Ó¼ºÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

¼Ó¼º¼³¸í
description

ÀÌ ÄÁÅØ½ºÆ® ÃʱâÈ­ ÆÄ¶ó¹ÌÅÍ¿¡ ´ëÇÑ °£·«ÇÑ ¼³¸íÀ̸ç, »ý·«°¡´É

name

»ý¼ºÇÒ ÄÁÅØ½ºÆ® ÃʱâÈ­ ÆÄ¶ó¹ÌÅÍÀÇ À̸§.

override

À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍ¿¡¼­ ¿©±â¿¡¼­ ÁöÁ¤ÇÑ ÃʱâÈ­ ÆÄ¶ó¹ÌÅÍ¿Í °°Àº À̸§ÀÇ <context-param>¸¦ ÁöÁ¤ÇßÀ» ¶§ ±× ÆÄ¶ó¹ÌÅÍ °ªÀÇ µ¤¾î¾²±â(override)¸¦ Çã¿ëÇÏÁö ¾ÊÀ¸·Á¸é false·Î ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®°ªÀº trueÀÔ´Ï´Ù.

value

À¥¾îÇø®ÄÉÀ̼ǿ¡¼­ ServletContext.getInitParameter()À» È£ÃâÇÒ ¶§ ¹ÝȯÇÒ ÆÄ¶ó¹ÌÅÍ °ª.

ȯ°æÇ׸ñ(Environment Entries)

À¥¾îÇø®ÄÉÀ̼ǿ¡¼­ ȯ°æÇ׸ñÀÚ¿ø(environment entry resources)À¸·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Ç׸ñÀÇ À̸§-°ª µéÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¼³Á¤Àº <Environment> Ç׸ñÀ» ÀÌ ¿¤¸®¸ÕÆ® ³»¿¡ Áßø½ÃŰ¸é µË´Ï´Ù. ¿¹¸¦ µé¾î ¾Æ·¡¿Í °°ÀÌ È¯°æÇ׸ñÀ» »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù:

<Context ...>
  ...
  <Environment name="maxExemptions" value="10"
         type="java.lang.Integer" override="false"/>
  ...
</Context>

ÀÌ´Â À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍ(/WEB-INF/web.xml)¿¡¼­ ´ÙÀ½ÀÇ ¿¤¸®¸ÕÆ®¸¦ Æ÷ÇÔ½ÃŲ °Í°ú µ¿ÀÏÇÕ´Ï´Ù:

<env-entry>
  <env-entry-name>maxExemptions</param-name>
  <env-entry-value>10</env-entry-value>
  <env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>

±×·¯³ª ÀÌ °ªÀ» Ä¿½ºÅ͸¶ÀÌÁîÇϱâ À§ÇØ ¹èÄ¡ µð½ºÅ©¸³Å͸¦ º¯°æÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.

<Environment> ¿¤¸®¸ÕÆ®¿¡¼­´Â ´ÙÀ½°ú °°Àº ¼Ó¼ºµéÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

¼Ó¼º¼³¸í
description

(¼±ÅûçÇ×)ÀÌ È¯°æÇ׸ñ¿¡ ´ëÇÑ »ç¶÷ÀÌ Àб⠽¬¿î °£´ÜÇÑ ¼³¸í

name

»ý¼ºÇÒ È¯°æÇ׸ñÀÇ À̸§. java:comp/env ÄÁÅØ½ºÆ®¿¡ ´ëÇÑ »ó´ëÀûÀÎ À̸§ÀÔ´Ï´Ù.

override

À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍ¿¡¼­ <env-entry>À¸·Î °°Àº À̸§ÀÇ È¯°æÇ׸ñÀ» ÁöÁ¤ÇÏ´Â °æ¿ì, ¿©±â¿¡¼­ ÁöÁ¤ÇÑ °ªÀ» µ¤¾î¾²±â(override) ÇÏÁö ¾Êµµ·Ï ÇÏ°í ½ÍÀ¸¸é false·Î ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ °ªÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é µ¤¾î¾²±â°¡ Çã¿ëµË´Ï´Ù.

type

ÀÌ È¯°æÇ׸ñ¿¡ ´ëÇØ À¥¾îÇø®ÄÉÀ̼ÇÀÌ ¿¹»óÇÏ´Â ¿ÏÀüÇÑ(fully qualified) Java Ŭ·¡½º¸í. ¹Ýµå½Ã À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍÀÇ <env-entry-type>ÀÇ ±ÔÄ¢¿¡ ¸Â´Â °ªÀ̾î¾ß ÇÕ´Ï´Ù. ±× ±ÔÄ¢¿¡ ¸Â´Â °ª µéÀº: java.lang.Boolean, java.lang.Byte, java.lang.Character, java.lang.Double, java.lang.Float, java.lang.Integer, java.lang.Long, java.lang.Short, ¶Ç´Â java.lang.String ÀÔ´Ï´Ù.

value

À¥¾îÇø®ÄÉÀ̼ÇÀÌ JNDI ÄÁÅØ½ºÆ®·ÎºÎÅÍ ¿äÃ»ÇØ¼­ ¹Ýȯ ¹ÞÀ» ȯ°æÇ׸ñÀÇ °ª. ÀÌ °ªÀº ¹Ýµå½Ã À§ÀÇ type¿¡ Á¤ÀÇµÈ Java typeÀ¸·Î º¯È¯ °¡´ÉÇØ¾ß ÇÕ´Ï´Ù.

»ý¸íÁֱ⠸®½º³Ê(Lifecycle Listeners)

¸¸¾à ÀÌ Context°¡ ¾ðÁ¦ ½ÃÀ۵ǰí Á¾·áµÇ´ÂÁö ¾î¶² Java °´Ã¼°¡ ¾Ë Çʿ䰡 ÀÖ´Ù¸é, ÀÌ ¿¤¸®¸ÕÆ® ¾È¿¡ Listener ¿¤¸®¸ÕÆ®¸¦ Æ÷ÇÔ½ÃÄѼ­ ±× Java Ŭ·¡½º¸íÀ» ¼±¾ðÇÏ¸é µË´Ï´Ù. ÀÌ ¶§ ÁöÁ¤ÇÏ´Â Java Ŭ·¡½º´Â org.apache.catalina.LifecycleListener ÀÎÅÍÆäÀ̽º¸¦ ¹Ýµå½Ã ±¸ÇöÇØ¾ß Çϸç, ÇØ´ç »ý¸íÁÖ±â À̺¥Æ® ¹ß»ý¿¡ ´ëÇØ ÅëÁö¸¦ ¹Þ°Ô µÉ °ÍÀÔ´Ï´Ù. ¸®½º³ÊÀÇ ¼³Á¤Àº ´ÙÀ½°ú °°½À´Ï´Ù:

<Context path="/examples" ...>
  ...
  <Listener className="com.mycompany.mypackage.MyListener" ... >
  ...
</Context>

Listener´Â ÀÌ ¿¤¸®¸ÕÆ®¿¡ ¼³Á¤µÉ Ãß°¡ ÇÁ·ÎÆÛƼ¸¦ ¾ó¸¶µçÁö °¡Áú ¼ö ÀÖÀ½À» ±â¾ïÇϽʽÿÀ. ¼Ó¼º¸íÀº Ç¥ÁØ ÇÁ·ÎÆÛƼ ¸Þ¼Òµå(getter/setter) ¸í¸í±ÔÄ¢À» »ç¿ëÇÏ´Â ÇØ´ç JavaBean ¼Ó¼º¸í¿¡ ¸ÅĪµË´Ï´Ù.

¿äûÇÊÅÍ(Request Filters)

¾î¶² Context, ¶Ç´Â »óÀ§ÀÇ Engine, Host ¿¤¸®¸ÕÆ®¿¡¼­ ¼ö½ÅÇÏ´Â ¸ðµç ¿äû¿¡ ´ëÇØ, IP ÁÖ¼Ò³ª È£½ºÆ®¸í µîÀ» Catalina°¡ °Ë»çÇϵµ·Ï Áö½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ø°ÝÁö ÁÖ¼Ò³ª À̸§Àº ¼³Á¤µÈ "Çã°¡(accept)" ±×¸®°í/¶Ç´Â "°ÅºÎ(deny)" ¸®½ºÆ®¿¡ ´ëÇØ °Ë»çÇϸç, ÀÌ·¯ÇÑ ¼³Á¤Àº Jakarta Regexp Á¤±ÔÇ¥Çö½Ä(regular expression) ¶óÀ̺귯¸®¿¡ ÀÇÇØ Áö¿øµÇ´Â Á¤±ÔÇ¥Çö½Ä ¹®¹ý¿¡ µû¶ó Á¤Àǵ˴ϴÙ. Çã°¡µÇÁö ¾ÊÀº À§Ä¡¿¡¼­ º¸³½ ¿äûÀº HTTP "Forbidden" ¿À·ù¿Í ÇÔ²² °ÅºÎµË´Ï´Ù. ÇÊÅÍ ¼±¾ðÀÇ ¿¹´Â ´ÙÀ½°ú °°½À´Ï´Ù:

<Context path="/examples" ...>
  ...
  <Valve className="org.apache.catalina.valves.RemoteHostValve"
         allow="*.mycompany.com,www.yourcompany.com"/>
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         deny="192.168.1.*"/>
  ...
</Context>

Áö¿øµÇ´Â ¼³Á¤ ¿É¼Ç¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¿ø°ÝÁö ÁÖ¼Ò ÇÊÅÍ(Remote Address Filter)¿Í ¿ø°Ý È£½ºÆ® ÇÊÅÍ(Remote Host Filter)¿¡¼­ º¼ ¼ö ÀÖ½À´Ï´Ù.

ÀÚ¿øÁ¤ÀÇ(Resource Definitions)

À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍÀÇ <resource-ref>¿Í <resource-env-ref> ¿¤¸®¸ÕÆ®ÀÇ JNDI Ž»ö(lookup)¿¡ ´ëÇØ ¹ÝȯµÉ ÀÚ¿øÀÇ Æ¯¼ºµµ ¼±¾ð °¡´ÉÇÕ´Ï´Ù. ±×¸®°í ¾î¶² ÀÚ¿ø¿¡ ´ëÇØ¼­ °´Ã¼ÆÑÅ丮¸¦ »ç¿ëÇϰí(TomcatÀÌ ¾ÆÁ÷ ¸ð¸£´Â °æ¿ì) ±× °´Ã¼ÆÑÅ丮¸¦ ¼³Á¤Çϴµ¥ »ç¿ëÇÒ ÇÁ·ÎÆÛƼ¸¦ ¼³Á¤ÇÏ·Á¸é, ¹Ýµå½Ã ±× ÀÚ¿ø°ú °°Àº À̸§À¸·Î ÀÚ¿ø ÆÄ¶ó¹ÌÅÍ(Resource Parameters)¸¦ Ãß°¡·Î Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù.

¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ ÀÚ¿øÁ¤Àǰ¡ °¡´ÉÇÕ´Ï´Ù:

<Context ...>
  ...
  <Resource name="jdbc/EmployeeDB" auth="Container"
            type="javax.sql.DataSource"
     description="Employees Database for HR Applications"/>
  ...
</Context>

À̰ÍÀº À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍ(/WEB-INF/web.xml)¿¡ ´ÙÀ½ÀÇ ¿¤¸®¸ÕÆ®¸¦ Æ÷ÇÔ½ÃŲ °Í°ú µ¿ÀÏÇÕ´Ï´Ù:

<resource-ref>
  <description>Employees Database for HR Applications</description>
  <res-ref-name>jdbc/EmployeeDB</res-ref-name>
  <res-ref-type>javax.sql.DataSource</res-ref-type>
  <res-auth>Container</res-auth>
</resource-ref>

±×·¯³ª ÀÌ °ªÀ» Ä¿½ºÅ͸¶ÀÌÁîÇϱâ À§ÇØ ¹èÄ¡ µð½ºÅ©¸³Å͸¦ º¯°æÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.

<Resource> ¿¤¸®¸ÕÆ®¿¡¼­´Â ´ÙÀ½°ú °°Àº ¼Ó¼ºµéÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

¼Ó¼º¼³¸í
auth

ÇØ´ç ÀÚ¿ø°ü¸®ÀÚ¿¡ ÀÎÁõ(sign on)ÇÒ ¶§, À¥¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¥ÀÇ ÄÚµå»ó¿¡¼­ Á÷Á¢ ÇÒÁö, ¶Ç´Â ÄÁÅ×À̳ʰ¡ Á÷Á¢ ¾îÇø®ÄÉÀ̼ÇÀÇ ÇàÀ§(behalf)¿¡ µû¶ó ÇÒÁö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ¼Ó¼ºÀÇ °ªÀº ¹Ýµå½Ã Application ¶Ç´Â Container Áß Çϳª¿©¾ß ÇÕ´Ï´Ù. ÀÌ ¼Ó¼ºÀº, À¥¾îÇø®ÄÉÀ̼ÇÀÌ À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍ¿¡¼­ <resource-ref> ¿¤¸®¸ÕÆ®¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡´Â ¹Ýµå½Ã ÇÊ¿äÇÕ´Ï´Ù. ±×·¯³ª <resource-env-ref>¸¦ ´ë½Å »ç¿ëÇÏ´Â °æ¿ì¿¡´Â ¼±ÅûçÇ×ÀÔ´Ï´Ù.

description

(¼±ÅûçÇ×)ÀÌ ÀÚ¿ø¿¡ ´ëÇÑ »ç¶÷ÀÌ Àб⠽¬¿î °£´ÜÇÑ ¼³¸í

name

»ý¼ºÇÒ ÀÚ¿øÀÇ À̸§. java:comp/env ÄÁÅØ½ºÆ®¿¡ ´ëÇÑ »ó´ëÀûÀÎ À̸§ÀÔ´Ï´Ù.

scope

ÀÌ ÀÚ¿ø°ü¸®ÀÚ¸¦ ÅëÇØ ¾ò¾îÁø ¿¬°á(connection)ÀÇ °øÀ¯¸¦ Çã°¡ÇÒ °ÍÀÎÁö ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ¼Ó¼ºÀÇ °ªÀº ¹Ýµå½Ã Shareable ¶Ç´Â Unshareable Áß Çϳª¿©¾ß ÇÕ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¿¬°áÀº °øÀ¯°¡´É(shareable)ÀÌ µË´Ï´Ù.

type

À¥¾îÇø®ÄÉÀ̼ÇÀÌ ÀÌ ÀÚ¿ø¿¡ ´ëÇØ Ž»ö(lookup)À» ½ÇÇàÇÒ ¶§ ±â´ëÇÏ´Â ¿ÏÀüÇÑ Java Ŭ·¡½º¸í.

ÀÚ¿ø ÆÄ¶ó¹ÌÅÍ(Resource Parameters)

ÀÌ ¿¤¸®¸ÕÆ®´Â À¥¾îÇø®ÄÉÀ̼ǿ¡¼­ ÇØ´ç ÀÚ¿øÀÇ À̸§¿¡ ´ëÇØ JNDI Ž»öÀ» ¼öÇàÇÒ ¶§, °´Ã¼¸¦ ¹ÝȯÇϴµ¥ »ç¿ëÇÒ ÀÚ¿ø°ü¸®ÀÚ(¶Ç´Â °´Ã¼ÆÑÅ丮)¸¦ ¼³Á¤ÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. $CATALINA_HOME/conf/server.xmlÀÇ <Context>³ª <DefaultContext> ¿¤¸®¸ÕÆ® ³»ÀÇ <Resource> ¿¤¸®¸ÕÆ®·Î ÁöÁ¤µÈ ¸ðµç ÀÚ¿ø À̸§, ±×¸®°í/¶Ç´Â À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍ¿¡¼­ <resource-ref> ³ª <resource-env-ref> ¿¤¸®¸ÕÆ®¿¡¼­ ¼±¾ðµÈ ¸ðµç ÀÚ¿ø À̸§¿¡ ´ëÇØ¼­´Â ¹Ýµå½Ã ÀÚ¿ø ÆÄ¶ó¹ÌÅÍ(resource parameters)¸¦ Á¤ÀÇÇØ¾ß ±× ÀÚ¿ø¿¡ ¼º°øÀûÀ¸·Î ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÚ¿ø ÆÄ¶ó¹ÌÅÍ´Â À̸§À¸·Î Á¤ÀǵǸç, Á¤È®ÇÏ°Ô ¾î¶² ÆÄ¶ó¹ÌÅÍ À̸§µéÀÇ ÁýÇÕÀ» Áö¿øÇϴ°¡´Â ´ç½ÅÀÌ »ç¿ëÇϰí ÀÖ´Â ÀÚ¿ø°ü¸®ÀÚ(¶Ç´Â °´Ã¼ÆÑÅ丮)¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. Áï ÇØ´ç ÆÑÅ丮 Ŭ·¡½ºÀÇ JavaBeans ÇÁ·ÎÆÛƼ Áß ¼³Á¤°¡´ÉÇÑ(settable) ÇÁ·ÎÆÛƼÀÇ À̸§°ú ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. JNDI ±¸Çöü´Â ÁöÁ¤ÇÑ ÆÑÅ丮 Ŭ·¡½ºÀÇ ÀνºÅϽº¿¡ ´ëÇØ JavaBeansÀÇ ¸ðµç ÇØ´ç ¼Ó¼º ¼³Á¤¸Þ¼Òµå¸¦ È£ÃâÇÔÀ¸·Î½á ¸ðµç ¼³Á¤À» ¸¶Ä£ ´ÙÀ½¿¡¾ß, ÀÌ ÆÑÅ丮 ÀνºÅϽº¸¦ JNDI lookup() È£ÃâÀ» ÅëÇØ »ç¿ë°¡´ÉÇϵµ·Ï ÇÒ °ÍÀÔ´Ï´Ù.

¿¹·Î JDBC µ¥ÀÌÅÍ ¼Ò½º¿¡ ´ëÇÑ ÀÚ¿ø ÆÄ¶ó¹ÌÅÍ ¼³Á¤Àº ¾Æ·¡¿Í °°ÀÌ µË´Ï´Ù:

<Context ...>
  ...
  <ResourceParams name="jdbc/EmployeeDB">
    <parameter>
      <name>driverClassName</name>
      <value>org.hsql.jdbcDriver</value>
    </parameter>
    <parameter>
      <name>url</name>
      </value>jdbc:HypersonicSQL:database</value>
    </parameter>
    <parameter>
      <name>user</name>
      <value>dbusername</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>dbpassword</value>
    </parameter>
  </ResourceParams>
  ...
</Context>

¸¸¾à ƯÁ¤ ÀÚ¿ø ŸÀÔ¿¡ ´ëÇØ ÆÑÅ丮 Ŭ·¡½ºÀÇ Java Ŭ·¡½º¸íÀ» ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ´Ù¸é, <ResourceParams> ¿¤¸®¸ÕÆ® ³»ÀÇ <parameter> Ç׸ñ¿¡ factory¶ó´Â À̸§À» »ç¿ëÇÏ¸é µË´Ï´Ù.

<ResourceParams> ¿¤¸®¸ÕÆ®°¡ °¡Áú ¼ö ÀÖ´Â ¼Ó¼ºÀº ´ÙÀ½°ú °°½À´Ï´Ù:

¼Ó¼º¼³¸í
name

¼³Á¤ÇÒ ÀÚ¿øÀÇ À̸§À̸ç, java:comp/env ÄÁÅØ½ºÆ®¿¡ ´ëÇÑ »ó´ëÀûÀÎ À̸§ÀÌ µË´Ï´Ù. ÀÌ À̸§Àº $CATALINA_HOME/conf/server.xml ³»¿¡ <Resource> ¿¤¸®¸ÕÆ®·Î Á¤ÀÇµÈ ÀÚ¿ø, ±×¸®°í/¶Ç´Â À¥¾îÇø®ÄÉÀÌ¼Ç ¹èÄ¡ µð½ºÅ©¸³ÅÍ ³»¿¡ <resource-ref> ¶Ç´Â <resource-env-ref>·Î ÂüÁ¶µÇ´Â ÀÚ¿øÀÇ À̸§°ú ¹Ýµå½Ã ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù.

ÀÚ¿ø¸µÅ©(Resource Links)

ÀÌ ¿¤¸®¸ÕÆ®´Â ¾î¶² Àü¿ª JNDI ÀÚ¿øÀ¸·ÎÀÇ ¸µÅ©¸¦ »ý¼ºÇϴµ¥ »ç¿ëÇÕ´Ï´Ù. ±× ¿¬°á¸í¿¡ ´ëÇÏ¿© JNDI Ž»öÀ» ½ÇÇàÇÏ¸é ¸µÅ©µÈ Àü¿ªÀÚ¿øÀÌ ¹ÝȯµË´Ï´Ù.

¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ ÀÚ¿ø¸µÅ©¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù:

<Context ...>
  ...
  <ResourceLink name="linkToGlobalResource"
            global="simpleValue"
            type="java.lang.Integer"
  ...
</Context>

<ResourceLink> ¿¤¸®¸ÕÆ®°¡ °¡Áú ¼ö ÀÖ´Â ¼Ó¼ºÀº ´ÙÀ½°ú °°½À´Ï´Ù:

¼Ó¼º¼³¸í
global

Àü¿ª JNDI ÄÁÅØ½ºÆ®³»ÀÇ ¸µÅ©µÈ Àü¿ªÀÚ¿øÀÇ À̸§.

name

»ý¼ºÇÒ ÀÚ¿ø¸µÅ©ÀÇ À̸§À̸ç, java:comp/env¿¡ ´ëÇÑ »ó´ëÀûÀÎ À̸§ÀÔ´Ï´Ù.

type

ÀÌ ÀÚ¿ø¸µÅ©¿¡ ´ëÇØ Ž»öÀ» ½ÇÇàÇÒ ¶§ À¥¾îÇø®ÄÉÀ̼ÇÀÌ ±â´ëÇÏ´Â ¿ÏÀüÇÑ Java Ŭ·¡½º¸í.


Copyright © 1999-2002, Apache Software Foundation
¹ø¿ª: ÀüÁöÈÆ, contact: jihoon_jeon@hotmail.com http://okjsp.pe.kr
http://www.apache-korea.org , jakarta-seoul project