The Jakarta Project
    The Tomcat Servlet/JSP Container

Links

Top Level Elements

Connectors

Containers

Nested Components

The Engine Container

¼Ò°³(Introduction)

Engine ¿¤¸®¸ÕÆ®´Â ƯÁ¤ Catalina Service¿¡ °ü·ÃµÈ Àüü ¿äûó¸®ÀåÄ¡(request processing machinery)¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ ÀåÄ¡´Â Connectors¿¡¼­ ¿À´Â ¸ðµç ¿äûÀ» ¼ö½ÅÇϰí ó¸®Çϸç, ó¸®µÈ ÀÀ´äÀ» ÇØ´ç Connector·Î µ¹·Áº¸³»¾î, ÃÖÁ¾ ¸Þ½ÃÁö¸¦ Ŭ¶óÀÌ¾ðÆ®·Î Àü´ÞÇÏ°Ô ÇÕ´Ï´Ù.

¹Ýµå½Ã ÇϳªÀÇ Engine ¿¤¸®¸ÕÆ®¸¸ÀÌ Service¿¡ ÁßøµÉ ¼ö ÀÖÀ¸¸ç, ÀÌ Service¿¡ ¿¬°áµÈ ¸ðµç ÇØ´ç Connector ¿¤¸®¸ÕÆ® ´ÙÀ½¿¡ À§Ä¡ÇÏ°Ô µË´Ï´Ù.

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

EngineÀÇ ¸ðµç ±¸Çöü¿¡¼­´Â ´ÙÀ½ ¼Ó¼ºÀ» Áö¿øÇÕ´Ï´Ù:

¼Ó¼º¼³¸í
className

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

defaultHost

µðÆúÆ® È£½ºÆ®¸í. ¼³Á¤ ÆÄÀÏ¿¡¼­´Â Á¤ÀǵÇÁö ¾Ê¾ÒÁö¸¸ ÀÌ ¼­¹ö »ó¿¡ Àִ ȣ½ºÆ®¸í Áß¿¡¼­ ¿äûÀ» ó¸®ÇÒ Host¸¦ ½Äº°ÇÕ´Ï´Ù. ÀÌ À̸§Àº ¹Ýµå½Ã ¹Ù·Î ¾È¿¡ ÁßøµÈ Host ¿¤¸®¸ÕÆ® Áß ÇϳªÀÇ name ¼Ó¼º°ú ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù.

jvmRoute

·Îµå¹ë·±½Ì ½Ã³ª¸®¿À¿¡¼­ ¼¼¼ÇÀ¯Áö¸¦ À§Çؼ­ ¹Ýµå½Ã »ç¿ëÇØ¾ß ÇÒ ½Äº°ÀÚ. ÀÌ ½Äº°Àڴ Ŭ·¯½ºÅÍ¿¡ Âü°¡ÇÏ´Â ¸ðµç Tomcat 4 ¼­¹ö¿¡ ´ëÇØ ¹Ýµå½Ã À¯ÀÏÇØ¾ß ÇÕ´Ï´Ù. »ý¼ºµÇ´Â ¼¼¼Ç ½Äº°ÀÚ¿¡´Â ÀÌ ½Äº°ÀÚ°¡ Ãß°¡µÇ¾î, °¡Àå ¾Õ´ÜÀÇ ÇÁ·Ï½Ã°¡ ƯÁ¤ ¼¼¼ÇÀ» Ç×»ó °°Àº Tomcat 4 ÀνºÅϽº·Î Æ÷¿öµå ÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù.

name

ÀÌ EngineÀÇ ³í¸®ÀûÀÎ À̸§À̸ç, ·Î±×¿Í ¿¡·¯¸Þ½ÃÁö¿¡¼­ »ç¿ëµË´Ï´Ù.

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

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

¼Ó¼º¼³¸í
debug

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

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

ÀÌ Engine ¿¤¸®¸ÕÆ® ¾È¿¡´Â Çϳª ÀÌ»óÀÇ Host¸¦ Áßø½Ãų ¼ö ÀÖ½À´Ï´Ù. °¢ Host´Â ÀÌ ¼­¹ö¿¡ ¿¬°üµÈ °¢±â ´Ù¸¥ °¡»ó È£½ºÆ®¸¦ ³ªÅ¸³À´Ï´Ù. Host´Â ÃÖ¼ÒÇÑ Çϳª ÀÌ»ó Á¸ÀçÇØ¾ß Çϸç, ÁßøµÈ Host Áß Çϳª´Â ¹Ýµå½Ã À§¿¡¼­ ¼³¸íÇÑ defaultHost¿¡¼­ ÁöÁ¤ÇÑ À̸§°ú ÀÏÄ¡ÇÏ´Â name ¼Ó¼ºÀ» °¡Á®¾ß ÇÕ´Ï´Ù.

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

´ÙÀ½ À¯Æ¿¸®Æ¼ ÄÄÆ÷³ÍÆ®µéÀº Engine ¿¤¸®¸ÕÆ® ³»¿¡ °¢°¢ Çϳª±îÁö¸¸ Æ÷ÇÔ½Ãų ¼ö ÀÖ½À´Ï´Ù:

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

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

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

<Engine name="Standalone" ...>
  ...
  <Valve className="org.apache.catalina.valves.AccessLogValve"
         prefix="catalina_access_log." suffix=".txt"
         pattern="common"/>
  ...
</Engine>

Á¦°øµÇ´Â ¼³Á¤ ¼Ó¼º¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸´Â Access Log Valve¿¡¼­ º¼ ¼ö ÀÖ½À´Ï´Ù.

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

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

<Engine name="Standalone" ...>
  ...
  <Listener className="com.mycompany.mypackage.MyListener" ... >
  ...
</Engine>

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

¿äûÇÊÅÍ(Request Filters)

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

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

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


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