The Jakarta Project
    The Tomcat Servlet/JSP Container

Links

Top Level Elements

Connectors

Containers

Nested Components

The Host Container

¼Ò°³(Introduction)

Host ¿¤¸®¸ÕÆ®´Â °¡»óÈ£½ºÆ®(virtual host)¸¦ ³ªÅ¸³À´Ï´Ù. °¡»óÈ£½ºÆ®´Â ÇÑ ¼­¹öÀÇ ³×Æ®¿öÅ© ¸íĪ("www.mycompany.com" °°Àº) °ú, Catalina°¡ ±¸µ¿ ÁßÀÎ ±× ¼­¹ö¿Í °áÇյǾî Ç¥ÇöµË´Ï´Ù. È¿À²ÀûÀ¸·Î Çϱâ À§Çؼ­ ÀÌ À̸§Àº ¹Ýµå½Ã ´ç½ÅÀÌ ¼ÓÇÑ ÀÎÅÍ³Ý µµ¸ÞÀÎÀ» °ü¸®ÇÏ´Â Domain Name Service (DNS) ¼­¹ö¿¡ µî·ÏµÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ´ç½ÅÀÇ ³×Æ®¿öÅ© °ü¸®ÀÚ¿¡°Ô ¹®ÀÇÇϽʽÿÀ.

¸¹Àº °æ¿ì, ½Ã½ºÅÛ °ü¸®ÀÚ´Â ¿©·¯°³ÀÇ ³×Æ®¿öÅ© ¸íĪ(¿¹¸¦ µé¾î www.mycompany.com°ú company.com °°ÀÌ)À» °°Àº °¡»óÈ£½ºÆ®¿Í °°Àº ¾îÇø®ÄÉÀ̼ǿ¡ °áÇÕ½Ã۱⸦ ¿øÇÕ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡´Â ¾Æ·¡¿¡ ¼³¸íÇÒ È£½ºÆ®¸í ¿¡Àϸ®¾î½º(Host Name Aliases)¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù.

Engine ¿¤¸®¸ÕÆ® ¾È¿¡´Â Çϳª ÀÌ»óÀÇ Host ¿¤¸®¸ÕÆ®¸¦ Áßø½Ãų ¼ö ÀÖ½À´Ï´Ù. Host ¿¤¸®¸ÕÆ® ¾È¿¡´Â ÀÌ °¡»ó È£½ºÆ®¿¡ žÀçÇÒ °¢°¢ÀÇ À¥¾îÇø®ÄÉÀÌ¼Ç ¼³Á¤À» À§ÇÑ Context ¿¤¸®¸ÕÆ®¸¦ Áßø½Ãų ¼ö ÀÖ½À´Ï´Ù. °¢ Engine¿¡ ¿¬°áµÈ ¿©·¯ °³ÀÇ Host Áß, ¹Ýµå½Ã ÇϳªÀÇ Host ¸¸ÀÌ ±× EngineÀÇ defaultHost ¼Ó¼º¿¡ ÁöÁ¤µÈ °ª°ú °°Àº À̸§À» °¡Áú ¼ö ÀÖ½À´Ï´Ù.

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

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

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

¼Ó¼º¼³¸í
appBase

ÀÌ °¡»óÈ£½ºÆ®¿¡ ´ëÇÑ ¾îÇÃÄÉÀ̼ÇÀÇ ±âÁØ(Application Base) µð·ºÅ丮. ÀÌ´Â ÀÌ °¡»óÈ£½ºÆ®¿¡ ¹èÄ¡µÉ À¥¾îÇø®ÄÉÀÌ¼Ç µéÀ» °¡Áö°í ÀÖ´Â µð·ºÅ丮ÀÇ ÆÐ½º¸íÀÔ´Ï´Ù. ÀÌ µð·ºÅ丮ÀÇ Àý´ë°æ·Î¸íÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖÀ¸¸ç, ¶Ç´Â $CATALINA_HOME µð·ºÅ丮¿¡ »ó´ëÀûÀÎ °æ·Î¸íÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÚµ¿À¸·Î ¹èÄ¡µÉ À¥¾îÇø®ÄÉÀÌ¼Ç µéÀÇ ÀÚµ¿Àνİú ÀÚµ¿¹èÄ¡¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ÀÚµ¿¹èÄ¡(Automatic Application Deployment)¸¦ Âü°íÇϱ⠹ٶø´Ï´Ù.

autoDeploy

ÀÌ Ç÷¡±× °ªÀº ÀÌ È£½ºÆ®ÀÇ À¥¾îÇø®ÄÉÀÌ¼Ç µéÀº È£½ºÆ® ¼³Á¤ÀÚ(host configurator)¿¡ ÀÇÇØ ÀÚµ¿À¸·Î ¹èÄ¡(deploy)µÇ¾î¾ß ÇÔÀ» ³ªÅ¸³À´Ï´Ù. ÀÌ Ç÷¡±×ÀÇ µðÆúÆ®°ªÀº true ÀÔ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ÀÚµ¿¹èÄ¡(Automatic Application Deployment)¸¦ Âü°íÇϱ⠹ٶø´Ï´Ù.

className

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

name

´ç½ÅÀÇ Domain Name Service ¼­¹ö¿¡ µî·ÏµÈ ÀÌ °¡»óÈ£½ºÆ®ÀÇ ³×Æ®¿öÅ© ¸íĪ. Engine¿¡ Æ÷ÇÔµÈ Host Áß Çϳª´Â ¹Ýµå½Ã ±× EngineÀÇ defaultHost ¼¼ÆÃ°ú ÀÏÄ¡ÇÏ´Â À̸§À» °¡Á®¾ß ÇÕ´Ï´Ù. Çϳª ÀÌ»óÀÇ ³×Æ®¿öÅ© ¸íĪÀ» °°Àº °¡»óÈ£½ºÆ®¿¡ ÇÒ´çÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­´Â È£½ºÆ®¸í ¿¡Àϸ®¾î½º(Host Name Aliases)¸¦ ÂüÁ¶ÇϽʽÿÀ.

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

HostÀÇ Ç¥Áر¸Çöü´Â org.apache.catalina.core.StandardHost Ŭ·¡½ºÀÔ´Ï´Ù. ÀÌ ±¸Çöü´Â À§¿¡ ³ª¿­µÈ °øÅë¼Ó¼º ¿Ü¿¡µµ ´ÙÀ½°ú °°Àº ºÎ°¡ÀûÀÎ ¼Ó¼ºÀ» Áö¿øÇÕ´Ï´Ù:

¼Ó¼º¼³¸í
debug

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

deployXML

Context XML ¼³Á¤ ÆÄÀÏÀ» »ç¿ëÇÏ¿© ¾îÇø®ÄÉÀ̼ÇÀ» ¹èÄ¡ÇÏ´Â ±â´ÉÀ» ²ô°í ½Í´Ù¸é false·Î ÁöÁ¤ÇϽʽÿÀ. ¹èÄ¡µÇ´Â ¾îÇø®ÄÉÀÌ¼Ç µéÀº CatalinaÀÇ º¸¾È±ÇÇÑ(security permissions)°¡ ÁÖ¾îÁý´Ï´Ù. ¸¸¾à ½Å·ÚÇÒ ¼ö ¾ø´Â(untrusted) »ç¿ëÀÚ°¡ À¥¾îÇø®ÄÉÀ̼ǿ¡ Á¢±Ù°¡´ÉÇÑ »óȲÀ̶ó¸é º¸¾È»ó false·Î ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. µðÆúÆ® °ªÀº trueÀÔ´Ï´Ù.

errorReportValveClass

ÀÌ Host°¡ »ç¿ëÇÒ ¿À·ùº¸°í¹ëºê(error reporting valve)ÀÇ Java Ŭ·¡½º¸í. ÀÌ ¹ëºêÀÇ ÀÓ¹«´Â ¿¡·¯º¸°í¸¦ Ãâ·ÂÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ¼Ó¼ºÀ» ¼³Á¤Çϸé TomcatÀÌ »ý¼ºÇÏ´Â ¿¡·¯ÆäÀÌÁöÀÇ ¿Ü°ü(look)À» Ä¿½ºÅ͸¶ÀÌÁî ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Å¬·¡½º´Â ¹Ýµå½Ã org.apache.catalina.Valve ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù. ¾Æ¹«°Íµµ ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â org.apache.catalina.valves.ErrorReportValve°¡ µðÆúÆ®·Î »ç¿ëµË´Ï´Ù.

liveDeploy

Tomcat ¿î¿µ µµÁß¿¡ appBase µð·ºÅ丮¿¡ »õ·Î¿î À¥¾îÇø®ÄÉÀ̼ÇÀ» Ãß°¡ÇßÀ» °æ¿ì, ÀÌ Ç÷¡±× °ªÀÌ trueÀ̸é ÀÌ À¥¾îÇø®ÄÉÀ̼ÇÀÌ ÀÚµ¿À¸·Î ¹èÄ¡µË´Ï´Ù. µðÆúÆ® °ªÀº trueÀÔ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ÀÚµ¿¹èÄ¡(Automatic Application Deployment)¸¦ Âü°íÇϱ⠹ٶø´Ï´Ù.

unpackWARs

À¥¾îÇø®ÄÉÀ̼ÇÀÌ appBase µð·ºÅ丮¿¡ À¥¾îÇø®ÄÉÀÌ¼Ç ¾ÆÄ«À̺ê(WAR) ÆÄÀÏ·Î Á¸ÀçÇÒ ¶§, WAR ÆÄÀÏÀ» ÇØ´ç µð½ºÅ© µð·ºÅ丮 ±¸Á¶·Î Ç®¾î¼­(unpack) ½ÇÇàµÇ±æ ¿øÇÏ´Â °æ¿ì¿¡´Â true·Î ¼³Á¤ÇϽʽÿÀ. false·Î ¼³Á¤Çϸé WAR ÆÄÀÏÇüÅ·ΠÁ÷Á¢ ½ÇÇàµË´Ï´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ÀÚµ¿¹èÄ¡(Automatic Application Deployment)¸¦ Âü°íÇϱ⠹ٶø´Ï´Ù.

workDir

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

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

ÀÌ Host ¿¤¸®¸ÕÆ® ¾È¿¡´Â Çϳª ÀÌ»óÀÇ Context¸¦ Áßø½Ãų ¼ö ÀÖ½À´Ï´Ù. °¢ Context´Â ÀÌ °¡»óÈ£½ºÆ®¿¡ ¿¬°üµÈ °¢±â ´Ù¸¥ À¥¾îÇø®ÄÉÀ̼ÇÀ» ³ªÅ¸³À´Ï´Ù. ¶ÇÇÑ ÇâÈÄ¿¡ ¹èÄ¡µÉ À¥¾îÇø®ÄÉÀ̼ǵ鿡 ´ëÇÑ ±âº» °ªÀ» Á¤ÀÇÇÏ´Â DefaultContext¸¦ ¿©±â¿¡ Æ÷ÇÔ½Ãų ¼ö ÀÖ½À´Ï´Ù.

¶ÇÇÑ ÀÌ Host ¿¤¸®¸ÕÆ® ³»¿¡ DefaultContext¸¦ Æ÷ÇÔ½ÃÄѼ­, ÀÚµ¿À¸·Î ¹èÄ¡µÇ´Â À¥¾îÇø®ÄÉÀ̼ÇÀÇ µðÆúÆ® Ư¼ºÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.

Host ¿¤¸®¸ÕÆ® ³»¿¡´Â ´ÙÀ½°ú °°Àº À¯Æ¿¸®Æ¼ ÄÄÆ÷³ÍÆ®ÀÇ ÇØ´ç ¿¤¸®¸ÕÆ®¸¦ °¢°¢ Çϳª±îÁö Æ÷ÇÔ½Ãų ¼ö ÀÖ½À´Ï´Ù:

  • Logger - ÀÌ Host¿¡ ´ëÇÑ ¸ðµç ·Î±× ¸Þ½ÃÁö¸¦ ¹Þ¾Æ¼­ ó¸®ÇÒ ·Î°Å(logger)¸¦ ¼³Á¤ÇÕ´Ï´Ù. ¶Ç ÀÌ ·Î°Å´Â ÇÏÀ§¿¡¼­ Logger ¼³Á¤À» µû·Î ÇÏÁö ¾Ê´Â °æ¿ì, ÀÌ Host¿Í ¿¬°áµÈ ÇÏÀ§ÀÇ Context¿¡¼­ÀÇ ·Î±× ¸Þ½ÃÁöµµ ó¸®ÇÕ´Ï´Ù.
  • Realm - ¿µ¿ª(realm)À» ¼³Á¤ÇÏ¿©, »ç¿ëÀÚ¿Í »ç¿ëÀÚÀÇ ¿ªÇÒÀ» ÀúÀåÇÒ µ¥ÀÌÅͺ£À̽º¸¦ ÀÌ Host¿¡ Æ÷ÇÔµÈ ¸ðµç Context¿¡¼­ °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ÇÏÀ§¿¡¼­ Realm ¼³Á¤À» ÀçÁ¤ÀÇÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
Ưº°±â´É(Special Features)
¾×¼¼½º ·Î±×(Access Logs)

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

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

<Host name="localhost" ...>
  ...
  <Valve className="org.apache.catalina.valves.AccessLogValve"
         prefix="localhost_access_log." suffix=".txt"
         pattern="common"/>
  ...
</Host>

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

¾îÇø®ÄÉÀ̼ÇÀÇ ÀÚµ¿¹èÄ¡(Automatic Application Deployment)

¸¸¾à Ç¥ÁØ Host ±¸Çöü¸¦ »ç¿ëÇϰí ÀÖ°í µ¿½Ã¿¡ autoDeploy °ªÀÌ true(µðÆúÆ®°ª)·Î ¼³Á¤µÇ¾î ÀÖ´Ù¸é, Catalina°¡ óÀ½ ±âµ¿µÉ ¶§ ´ÙÀ½ÀÇ ÀÛ¾÷µéÀÌ ÀÚµ¿À¸·Î ¼öÇàµË´Ï´Ù:

  • ÀÌ µð·ºÅ丮¿¡ ÀÖ´Â ¸ðµç XML ÆÄÀÏÀº °¢°¢ ¾î¶² À¥¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ Context ¿¤¸®¸ÕÆ®¸¦ Æ÷ÇÔÇϰí ÀÖ´Ù°í °¡Á¤ÇÏ°Ô µË´Ï´Ù. ÀÌ <Context> ¿¤¸®¸ÕÆ®ÀÇ docBase ¼Ó¼ºÀº ´ë°³ ÇÑ À¥¾îÇø®ÄÉÀÌ¼Ç µð·ºÅ丮 ¶Ç´Â À¥¾îÇø®ÄÉÀÌ¼Ç ¾ÆÄ«À̺ê(WAR) ÆÄÀÏ(È®ÀåµÇÁö ¾ÊÀ½ - Áï WARÆÄÀÏÀÌ Ç®¸®Áö ¾ÊÀ½)¿¡ ´ëÇÑ Àý´ë°æ·Î¸íÀÌ µÉ °ÍÀÔ´Ï´Ù.
  • unpackWARs ÇÁ·ÎÆÛƼ¸¦ false·Î ÁöÁ¤ÇÏÁö ¾Ê°í, À¥¾îÇø®ÄÉÀÌ¼Ç ¾ÆÄ«ÀÌºê ÆÄÀÏÀÌ ".war" È®ÀåÀÚ¸¦ »« ÆÄÀϸí°ú °°Àº À̸§ÀÇ µð·ºÅ丮¸¦ ¾ÆÄ«ÀÌºê ³»¿¡ °¡Áö°í ÀÖÁö ¾ÊÀº °æ¿ì, ÀÚµ¿À¸·Î ¾ðÆÑ(unpack)µË´Ï´Ù. ¸¸¾à ¼öÁ¤µÈ WAR ÆÄÀÏÀ» Àç¹èÄ¡(redeploy)ÇÏ´Â °æ¿ì, TomcatÀ» Àç½ÃÀÛÇÒ ¶§´Â ¹Ýµå½Ã È®ÀåµÈ µð·ºÅ丮(Áï WARÆÄÀÏÀÌ Ç®¸° µð·ºÅ丮)¸¦ »èÁ¦Çؾ߸¸ ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇØ¾ß »õ·Î¿î WAR ÆÄÀÏÀÌ ´Ù½Ã ¾ðÆÑµË´Ï´Ù.
  • ¾îÇø®ÄÉÀ̼ÇÀÇ ±âÁØ µð·ºÅ丮(application base directory) ¾ÈÀÇ ¾î¶² ¼­ºêµð·ºÅ丮°¡ ¾ðÆÑµÈ À¥¾îÇø®ÄÉÀ̼ÇÀ¸·Î Àνĵȴٸé(Áï /WEB-INF/web.xmlÀ» Æ÷ÇÔÇÑ´Ù¸é) ÀÌ ¼­ºêµð·ºÅ丮´Â conf/server.xml ÆÄÀÏ¿¡¼­ µû·Î ¾ð±ÞµÇÁö ¾Ê¾Æµµ, ÀÚµ¿À¸·Î »ý¼ºµÈ Context ¿¤¸®¸ÕÆ®¸¦ ¹ÞÀ» °ÍÀÔ´Ï´Ù. ÀÌ Context Ç׸ñÀº ÀÌ Host ¿¤¸®¸ÕÆ® ³»¿¡ Æ÷ÇÔµÈ DefaultContext ¼³Á¤ÀÇ ÇÁ·ÎÆÛƼ ¼³Á¤¿¡ ¸ÂÃç ¼³Á¤µÉ °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ¹èÄ¡µÇ´Â Context¿¡ ´ëÇÑ ÄÁÅØ½ºÆ®°æ·Î´Â ½½·¡½Ã¹®ÀÚ("/") ´ÙÀ½¿¡ µð·ºÅ丮¸íÀÌ ºÙ´Â ÇüŰ¡ µË´Ï´Ù. ¸¸¾à µð·ºÅ丮¸íÀÌ ROOT ¶ó¸é, ÀÌ °æ¿ì¿£ ÄÁÅØ½ºÆ®°æ·Î°¡ ºó ¹®ÀÚ¿­("")ÀÌ µË´Ï´Ù.

±âµ¿(startup)½Ã¿¡ ¹ú¾îÁö´Â ÀÚµ¿¹èÄ¡ ¿Ü¿¡µµ, TomcatÀÌ ±¸µ¿Áß(running)ÀÏ ¶§ »õ XML ¼³Á¤ÆÄÀÏ, WAR ÆÄÀÏ, ¶Ç´Â À¥¾îÇø®ÄÉÀ̼ÇÀ» ´ã°í ÀÖ´Â ¼­ºêµð·ºÅ丮¸¦ appBase¿¡ ³õÀº ´ÙÀ½, À̸¦ À§¿¡ ¼³¸íµÈ ±ÔÄ¢¿¡ µû¶ó ÀÚµ¿À¸·Î ¹èÄ¡Ç϶ó°í Tomcat¿¡ ¿äûÇÒ ¼ö ÀÖ½À´Ï´Ù.

È£½ºÆ®¸í ¿¡Àϸ®¾î½º(Host Name Aliases)

¸¹Àº ¼­¹ö ȯ°æ¿¡¼­ ³×Æ®¿öÅ© °ü¸®ÀÚµéÀº ¼­¹öÀÇ IP ÁÖ¼Ò·Î ÇØµ¶(resolve) µÇ´Â Çϳª ÀÌ»óÀÇ ³×Æ®¿öÅ© ¸íĪ(Domain Name Service (DNS) ¼­¹ö¿¡ ÀÖ´Â)À» ¼³Á¤Çϰï ÇÕ´Ï´Ù. º¸Åë ÀÌ·± ³×Æ®¿öÅ© ¸íĪÀº conf/server.xml ¿¡¼­ º°µµ·Î Host ¿¤¸®¸ÕÆ®·Î ¼³Á¤µË´Ï´Ù. ÀÌ °¢°¢ÀÇ Host ¿¤¸®¸ÕÆ®´Â ÀڽŸ¸ÀÇ À¥¾îÇø®ÄÉÀÌ¼Ç ÁýÇÕÀ» °¡Áö°Ô µË´Ï´Ù.

±×·¯³ª ÀϺΠȯ°æ¿¡¼­´Â µÑ ÀÌ»óÀÇ ³×Æ®¿öÅ© ¸íĪÀ» °°Àº °¡»óÈ£½ºÆ®·Î ÇØµ¶µÇ¾î¾ß ÁÁÀº °æ¿ì°¡ ÀÖ½À´Ï´Ù. ÀÌ·± °æ¿ì´Â ´ë°³ ±â¾÷ÀÇ À¥»çÀÌÆ®¿¡¼­ ¸¹ÀÌ ¹ß°ßµË´Ï´Ù. Áï »ç¿ëÀÚ°¡ www.mycompany.com¸¦ ½áµµ company.com¸¦ ½áµµ, Á¤È®È÷ °°Àº ÄÁÅÙÃ÷¿Í ¾îÇø®ÄÉÀ̼ǿ¡ ¾×¼¼½ºµÇ¾î¾ß µÇ´Â °æ¿ìÀÔ´Ï´Ù.

ÀÌ·¯ÇÑ °æ¿ì¿¡´Â Çϳª ¶Ç´Â ±× ÀÌ»óÀÇ Alias ¿¤¸®¸ÕÆ®¸¦ Host ¿¤¸®¸ÕÆ® ³»¿¡ Æ÷ÇÔ½ÃŰ¸é µË´Ï´Ù. ¿¹¸¦ µé¸é:

<Host name="www.mycompany.com" ...>
  ...
  <Alias>mycompany.com</Alias>
  ...
</Host>

ÀÌ·¯ÇÑ ¹æ¾ÈÀ» È¿À²ÀûÀ¸·Î ó¸®ÇÏ·Á¸é °ü·ÃµÈ ¸ðµç ³×Æ®¿öÅ© ¸íĪÀ» ´ç½ÅÀÇ DNS ¼­¹ö¿¡ µî·ÏÇØ¼­, ¸ðµç ³×Æ®¿öÅ© ¸íĪÀÌ Catalina°¡ ±¸µ¿ÁßÀÎ ¹Ù·Î ±× ÄÄÇ»ÅÍ·Î ÇØµ¶µÇ¾î¾ß ÇÕ´Ï´Ù.

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

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

<Host name="localhost" ...>
  ...
  <Listener className="com.mycompany.mypackage.MyListener" ... >
  ...
</Host>

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

¿äûÇÊÅÍ(Request Filters)

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

<Host name="localhost" ...>
  ...
  <Valve className="org.apache.catalina.valves.RemoteHostValve"
         allow="*.mycompany.com,www.yourcompany.com"/>
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         deny="192.168.1.*"/>
  ...
</Host>

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

´ÜÀÏ ÀÎÁõ(Single Sign On)

¸¹Àº °æ¿ì Áß¿¡¼­µµ ƯÈ÷ Æ÷Å»»çÀÌÆ®ÀÇ °æ¿ì¿¡´Â, ¾î¶² °¡»óÈ£½ºÆ®ÀÇ ¿©·¯ À¥¾îÇø®ÄÉÀÌ¼Ç ÁýÇÕ¿¡ ´ëÇÏ¿© »ç¿ëÀÚ°¡ ÀÎÁõÁ¤º¸¸¦ Çѹø¸¸ ÀÔ·ÂÇÏ°Ô ÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÕ´Ï´Ù. ÀÌ·± °æ¿ì¿£ ÀÌ °¡»óÈ£½ºÆ®¿¡ ´ëÇÑ Host ¿¤¸®¸ÕÆ® ¾È¿¡ ´ÙÀ½°ú °°Àº ¿¤¸®¸ÕÆ®¸¦ Æ÷ÇÔ½ÃŰ¸é µË´Ï´Ù:

<Host name="localhost" ...>
  ...
  <Valve className="org.apache.catalina.authenticator.SingleSignOn"
         debug="0"/>
  ...
</Host>

´ÜÀÏ ÀÎÁõ(Single Sign On) ±â´ÉÀº ´ÙÀ½ ±ÔÄ¢µé¿¡ µû¶ó ÀÛµ¿ÇÕ´Ï´Ù:

  • ÀÌ °¡»óÈ£½ºÆ®¿¡ ¼³Á¤µÈ ¸ðµç À¥¾îÇø®ÄÉÀ̼ÇÀº °°Àº RealmÀ» °øÀ¯ÇØ¾ß ÇÕ´Ï´Ù. ½ÇÁ¦·Î ÀÌ ¸»Àº ÀÌ Host ¿¤¸®¸ÕÆ®(¶Ç´Â ÀÌ Host¸¦ Æ÷ÇÔÇÑ Engine ¿¤¸®¸ÕÆ®) ³»¿¡ Realm ¿¤¸®¸ÕÆ®¸¦ Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. ÇÏÁö¸¸ °ü·ÃµÈ À¥¾îÇø®ÄÉÀ̼ÇÁß Çϳª¸¸À» ´ë»óÀ¸·Î ÇÏ´Â Context ¿¤¸®¸ÕÆ®¿¡ ÀÌ RealmÀ» Æ÷ÇÔ½ÃŰ´Â °ÍÀº Ʋ¸³´Ï´Ù.
  • »ç¿ëÀÚ°¡ ÀÌ °¡»óÈ£½ºÆ®ÀÇ À¥¾îÇø®ÄÉÀÌ¼Ç Áß º¸È£µÇÁö ¾Ê´Â(unprotected) ÀÚ¿ø¿¡¸¸ ¾×¼¼½ºÇÏ´Â ÇÑ, »ç¿ëÀÚ´Â ÀÎÁõÀýÂ÷¸¦ °ÅÄ¡Áö ¾ÊÀ» °ÍÀÔ´Ï´Ù.
  • »ç¿ëÀÚ°¡ ÀÌ °¡»óÈ£½ºÆ®ÀÇ ¾î¶² À¥¾îÇø®ÄÉÀ̼ÇÀÌ¶óµµ ±× À¥¾îÇø®ÄÉÀ̼ÇÀÇ º¸È£µÈ(protected) ÀÚ¿ø¿¡ ¾×¼¼½ºÇÑ´Ù¸é, ±× Áï½Ã »ç¿ëÀÚ´Â ÀÎÁõÀýÂ÷¸¦ °ÅÄ¡°Ô µË´Ï´Ù. ÀÎÁõÀýÂ÷´Â ÇöÀç ¾×¼¼½ºÇϰí ÀÖ´Â À¥¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ Á¤ÀÇµÈ ·Î±×ÀÎ ¹æ¹ý(login method)À» »ç¿ëÇÏ¿© ÀÌ·ç¾îÁý´Ï´Ù.
  • Çѹø ÀÎÁõÀÌ ÀÌ·ç¾îÁö¸é, ¸ðµç °ü·Ã À¥¾îÇø®ÄÉÀ̼ǵ鿡 °ÉÃļ­ ¾×¼¼½º Á¦¾î °áÁ¤(access control decisions)¿¡ ´ëÇØ ÀÌ »ç¿ëÀÚÀÇ ¿ªÇÒ(roles)ÀÌ ÀÌ¿ëµÉ °ÍÀÔ´Ï´Ù. »ç¿ëÀÚ´Â Çѹø¸¸ ÀÎÁõµÇ¸é ³ª¸ÓÁö À¥¾îÇø®ÄÉÀÌ¼Ç °¢°¢¿¡ ´ëÇØ ÀÎÁõÀýÂ÷¸¦ °ÅÄ¥ Çʿ䰡 ¾ø½À´Ï´Ù.
  • »ç¿ëÀÚ°¡ ÇÑ À¥¾îÇø®ÄÉÀ̼ǿ¡¼­ ·Î±×¾Æ¿ôÇϸé(¿¹¸¦ µé¾î form ±â¹Ý ·Î±×ÀÎÀÌ »ç¿ëµÇ´Â °æ¿ì¿¡´Â ÇØ´ç ¼¼¼ÇÀ» Á¾·á(invalidate)½ÃŰ°Å³ª ¼¼¼Ç ŸÀӾƿôÀÌ ¹ß»ýÇÔÀ¸·Î½á), ±× Áï½Ã ¸ðµç À¥¾îÇø®ÄÉÀ̼ǿ¡¼­ÀÇ »ç¿ëÀÚ ¼¼¼ÇÀÌ Á¾·áµÉ °ÍÀÔ´Ï´Ù. ±× ÈÄ¿¡ ¾î¶² À¥¾îÇø®ÄÉÀ̼ÇÀÇ º¸È£µÈ ÀÚ¿ø¿¡ ¾×¼¼½ºÇÏ·Á´Â ½Ãµµ°¡ ¹ß»ýÇϸé, ´Ù½Ã ±× »ç¿ëÀÚ´Â ÀÎÁõÀýÂ÷¸¦ °ÅÃÄ¾ß ÇÕ´Ï´Ù.
  • ´ÜÀÏ ÀÎÁõ(Single Sign On) ±â´ÉÀº ÀúÀåµÈ »ç¿ëÀÚ Á¤º¸(user identity)¿¡ °¢°¢ÀÇ ¿äûÀ» ¿¬°á½ÃŰ´Â ÅäÅ«À» Àü¼ÛÇϱâ À§Çؼ­ HTTP Äí۸¦ Ȱ¿ëÇÕ´Ï´Ù. µû¶ó¼­ ÀÌ ±â´ÉÀº Ŭ¶óÀÌ¾ðÆ® È¯°æÀÌ Äí۸¦ Áö¿øÇÒ ¶§¿¡¸¸ ÀÌ¿ëÀÌ °¡´ÉÇÕ´Ï´Ù.
»ç¿ëÀÚ À¥¾îÇø®ÄÉÀ̼Ç(User Web Applications)

´Ù¼öÀÇ À¥¼­¹öµéÀº Æ¿µå¹®ÀÚ("~")·Î ½ÃÀÛÇÏ´Â ¿äû URI¿Í »ç¿ëÀÚ¸íÀ», ¼­¹ö¿¡ ÀÖ´Â ±× »ç¿ëÀÚ È¨µð·ºÅ丮 ¾ÈÀÇ ¾î¶² µð·ºÅ丮(º¸Åë public_html¶ó´Â À̸§À» °¡Áý´Ï´Ù)¿¡ ÀÚµ¿À¸·Î ¸ÅÇνÃų ¼ö ÀÖ½À´Ï´Ù. Catalina¿¡¼­ ÀÌ¿Í °°Àº ÀÛ¾÷À» ÇÏ·Á¸é, Ưº°ÇÑ Listener ¿¤¸®¸ÕÆ®¸¦ ¾Æ·¡¿Í °°ÀÌ(»ç¿ëÀÚ¸¦ ÀÎÁõÇϱâ À§ÇØ /etc/passwd ÆÄÀÏÀ» »ç¿ëÇÏ´Â Unix ½Ã½ºÅÛÀÇ °æ¿ìÀÔ´Ï´Ù) »ç¿ëÇÏ¸é µË´Ï´Ù:

<Host name="localhost" ...>
  ...
  <Listener className="org.apache.catalina.startup.UserConfig"
            directoryName="public_html"
            userClass="org.apache.catalina.startup.PasswdUserDatabase"/>
  ...
</Host>

/etc/passwd ÆÄÀÏÀ» »ç¿ëÇÏÁö ¾Ê´Â ¼­¹ö¿¡¼­ À§¿Í °°Àº Áö½Ã¸¦ ÇϰíÀÚ ÇÑ´Ù¸é, ÁöÁ¤ÇÑ ±âÁØ µð·ºÅ丮(¾Æ·¡ ¿¹¿¡¼­´Â c:\Homes) ÇÏÀ§ÀÇ ¸ðµç µð·ºÅ丮¸¦ "»ç¿ëÀÚÀÇ È¨µð·ºÅ丮"·Î °£ÁÖÇϵµ·Ï Catalina¿¡ Áö½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù:

<Host name="localhost" ...>
  ...
  <Listener className="org.apache.catalina.startup.UserConfig"
            directoryName="public_html"
            homeBase=c:\Homes"
            userClass="org.apache.catalina.startup.HomesUserDatabase"/>
  ...
</Host>

craigmcc¶ó´Â À̸§ÀÇ »ç¿ëÀÚ¿¡ ´ëÇØ »ç¿ëÀÚ È¨µð·ºÅ丮°¡ ¼³Ä¡µÇ¾ú´Ù¸é, Ŭ¶óÀÌ¾ðÆ® ºê¶ó¿ìÀú¿¡¼­ ¾Æ·¡¿Í °°Àº URL¿¡ ´ëÇÑ ¿äûÀ» ÇÔÀ¸·Î½á ±× µð·ºÅ丮ÀÇ ³»¿ëÀ» º¼ ¼ö ÀÖ½À´Ï´Ù:

http://www.mycompany.com:8080/~craigmcc

ÀÌ ±â´ÉÀ» Á¦´ë·Î Ȱ¿ëÇÏ·Á¸é ´ÙÀ½ÀÇ °í·Á»çÇ×À» Àß ÀÌÇØÇØ¾ß ÇÕ´Ï´Ù:

  • ÀÌ Host¿¡ ´ëÇØ ´ç½ÅÀÌ ¼³Á¤ÇÑ DefaultContext ¿¤¸®¸ÕÆ®°¡ ÀÖ´Ù¸é, °¢ »ç¿ëÀÚ À¥¾îÇø®ÄÉÀ̼Ç(user web application)Àº ÀÌ ¿¤¸®¸ÕÆ® ¼³Á¤¿¡ µû¶ó ¹èÄ¡µË´Ï´Ù.
  • Çϳª ÀÌ»óÀÇ Listener ¿¤¸®¸ÕÆ®¸¦ Æ÷ÇÔ½Ãų ¼öµµ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ´Â ¿©·¯°³ÀÇ "homeBase" µð·ºÅ丮¸¦ ¼³Á¤ÇÏ°í ½ÍÀº °æ¿ì¿¡¸¸ ¾µ¸ð°¡ ÀÖ½À´Ï´Ù.
  • Catalina¸¦ ½ÇÇàÇÑ ¿î¿µÃ¼Á¦ »ç¿ëÀÚ´Â, ¹Ýµå½Ã °¢ »ç¿ëÀÚÀÇ À¥¾îÇø®ÄÉÀÌ¼Ç µð·ºÅ丮¿Í ±× ÇÏÀ§ÀÇ ³»¿ë¿¡ ´ëÇØ Àб⠱ÇÇÑÀ» °¡Áö°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.

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