WebSphere Application Server

Edge Components¿ë
ÇÁ·Î±×·¡¹Ö ¾È³»¼­

¹öÀü 6.1
GA30-2915-00
ÃÊÆÇ(2006³â 5¿ù)

ÀÌ Ã¥Àº ´ÙÀ½¿¡ Àû¿ëµË´Ï´Ù.

»õ °³Á¤ÆÇ¿¡ ´Þ¸® ¸í½ÃµÇÁö ¾Ê´Â ÇÑ ÈÄ¼Ó ¸±¸®½º ¹× ¼öÁ¤ÆÇ¿¡ Àû¿ëµË´Ï´Ù.

IBM ´ã´çÀÚ ¶Ç´Â ÇØ´ç Áö¿ªÀÇ IBM Áö»ç¸¦ ÅëÇØ Ã¥À» ÁÖ¹®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Copyright International Business Machines Corporation 2005. All rights reserved.

¸ñÂ÷

±×¸²
ÀÌ Ã¥¿¡ ´ëÇÑ Á¤º¸
ÀÌ Ã¥ÀÇ »ç¿ëÀÚ
»çÀü Áö½Ä
ÀÌ Ã¥¿¡ »ç¿ëµÈ ±ÔÄ¢ ¹× ¿ë¾î
³»°Ô ÇÊ¿äÇÑ ¿É¼Ç
°ü·Ã ¹®¼­ ¹× À¥ »çÀÌÆ®
°í°´ ÀǰßÀ» º¸³»´Â ¹æ¹ý
Edge Components »ç¿ëÀÚ Á¤ÀÇ °³¿ä
Caching Proxy »ç¿ëÀÚ Á¤ÀÇ
Load Balancer »ç¿ëÀÚ Á¤ÀÇ
ÄÚµå »ùÇà ã±â
Caching Proxy API
Caching Proxy API °³¿ä
API ÇÁ·Î±×·¥ ÀÛ¼ºÀ» À§ÇÑ ÀϹÝÀûÀÎ ÀýÂ÷
¼­¹ö ÇÁ·Î¼¼½º ´Ü°è
Áöħ
Ç÷¯±×ÀÎ ÇÔ¼ö
»çÀü Á¤ÀÇ ÇÔ¼ö ¹× ¸ÅÅ©·Î
API ´Ü°è¿¡ ´ëÇÑ Caching Proxy ±¸¼º Áö½Ã¹®
´Ù¸¥ API¿ÍÀÇ È£È¯¼º
CGI ÇÁ·Î±×·¥ Æ÷ÆÃ
Caching Proxy API ÂüÁ¶ Á¤º¸
º¯¼ö
ÀÎÁõ ¹× ±ÇÇÑ ºÎ¿©
º¯Çü ij½Ì
API ¿¹Á¦
»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú
¾îµå¹ÙÀÌÀú Á¦°ø ·Îµå ¹ë·±½º Á¤º¸
Ç¥ÁØ ¾îµå¹ÙÀÌÀú ±â´É
»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ÀÛ¼º
Á¤»ó ¸ðµå¿Í ¼öÁ¤ ¸ðµå
¾îµå¹ÙÀÌÀú À̸§ ÁöÁ¤ ±ÔÄ¢
ÄÄÆÄÀÏ
»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ½ÇÇà
Çʼö ·çƾ
Ž»ö ¼ø¼­
À̸§ ÁöÁ¤ ¹× ÆÄÀÏ °æ·Î
»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ¸Þ¼Òµå ¹× ÇÔ¼ö È£Ãâ
¿¹Á¦
Ç¥ÁØ ¾îµå¹ÙÀÌÀú
»çÀÌµå ½ºÆ®¸² ¾îµå¹ÙÀÌÀú
Æ÷Æ®°¡ µÎ °³ÀÎ ¾îµå¹ÙÀÌÀú
WebSphere Application Server ¾îµå¹ÙÀÌÀú
¾îµå¹ÙÀÌÀú¿¡¼­ ¸®ÅÏµÈ µ¥ÀÌÅÍ »ç¿ë
»öÀÎ

±×¸²

  1. ÇÁ·Ï½Ã ¼­¹ö ÇÁ·Î¼¼½º ´Ü°è Ç÷οìÂ÷Æ®
  2. HTTP_ ¹× PROXY_ º¯¼ö Á¢µÎºÎ
  3. ÇÁ·Ï½Ã ¼­¹ö ÀÎÁõ ¹× ±ÇÇÑ ºÎ¿© ÇÁ·Î¼¼½º

ÀÌ Ã¥¿¡ ´ëÇÑ Á¤º¸

ÀÌ ÀýÀº WebSphere(R) Application Server Edge Components¿ë ÇÁ·Î±×·¡¹Ö ¾È³»¼­ÀÇ ¸ñÀû, ±¸¼º ¹× ±Ô¾à¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

ÀÌ Ã¥ÀÇ »ç¿ëÀÚ

ÀÌ Ã¥¿¡¼­´Â WebSphere Application Server, ¹öÀü 6.1 Edge Components¸¦ »ç¿ëÀÚ Á¤ÀÇÇÏ´Â µ¥ »ç¿ë °¡´ÉÇÑ API(Application Programming Interface)¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. ÀÌ Á¤º¸´Â Ç÷¯±×ÀÎ ÀÀ¿ëÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ°í ´Ù¸¥ »ç¿ëÀÚ Á¤ÀǸ¦ ÀÛ¼ºÇÏ´Â ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÑ °ÍÀÔ´Ï´Ù. ³×Æ®¿öÅ© ¼³°èÀÚ ¹× ½Ã½ºÅÛ °ü¸®ÀÚ¿¡°Ôµµ °¡´ÉÇÑ »ç¿ëÀÚ Á¤ÀÇ À¯ÇüÀ» ³ªÅ¸³»´Â µ¥ ÀÌ·¯ÇÑ Á¤º¸°¡ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.

»çÀü Áö½Ä

ÀÌ Ã¥ÀÇ Á¤º¸¸¦ »ç¿ëÇÏ·Á¸é, »ç¿ëÇÒ API¿¡ µû¶ó Java(TM) ¶Ç´Â C¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¡¹Ö ÇÁ·Î½ÃÀú¸¦ ÀÌÇØÇϰí ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÎÅÍÆäÀ̽º¿¡¼­ »ç¿ë °¡´ÉÇÑ ¸Þ¼Òµå ¹× ±¸Á¶°¡ ¹®¼­È­µÇ¾î ÀÖÁö¸¸, »ç¿ëÀÚ´Â ÀÀ¿ëÇÁ·Î±×·¥ ±¸¼º ¹æ¹ý, ½Ã½ºÅÛ¿¡ ¸Â´Â ÄÄÆÄÀÏ ¹æ¹ý ¹× Å×½ºÆ® ¹æ¹ýÀ» ¾Ë°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀϺΠÀÎÅÍÆäÀ̽º¿¡ ´ëÇØ ÄÚµå »ùÇÃÀÌ Á¦°øµÇÁö¸¸, »ùÇÃÀº »ç¿ëÀÚÀÇ ÀÀ¿ëÇÁ·Î±×·¥À» ±¸¼ºÇϱâ À§ÇÑ ¿¹Á¦·Î¸¸ Á¦°øµË´Ï´Ù.

ÀÌ Ã¥¿¡ »ç¿ëµÈ ±ÔÄ¢ ¹× ¿ë¾î

ÀÌ ¹®¼­¿¡¼­´Â ´ÙÀ½°ú °°Àº ¼­Ã¼¿Í Ű ±Ô¾àÀ» »ç¿ëÇÕ´Ï´Ù.

Ç¥ 1. ÀÌ Ã¥¿¡ »ç¿ëµÈ ±Ô¾à
±Ô¾à ÀǹÌ
±½ÀºÃ¼ GUI¿Í °ü·ÃµÉ ¶§, ±½ÀºÃ¼·Î ¸Þ´º, ¸Þ´º Ç׸ñ, ·¹À̺í, ´ÜÃß, ¾ÆÀÌÄÜ ¹× Æú´õ¸¦ ³ªÅ¸³À´Ï´Ù. ¶ÇÇÑ ÁÖÀ§ÀÇ ÅØ½ºÆ®¿Í È¥µ¿µÉ ¼ö ÀÖ´Â ¸í·É À̸§À» °­Á¶ÇÏ´Â µ¥¿¡µµ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.
¸ð³ë½ºÆäÀ̽º ¸í·É ÇÁ·ÒÇÁÆ®¿¡ ÀÔ·ÂÇØ¾ß ÇÒ ÅØ½ºÆ®¸¦ ¸ð³ë½ºÆäÀ̽º·Î Ç¥½ÃÇÕ´Ï´Ù. È­¸é ÅØ½ºÆ®, ÄÚµå ¿¹Á¦ ¹× ÆÄÀÏ ¹ßÃé ºÎºÐµµ ³ªÅ¸³À´Ï´Ù.
±â¿ïÀӲà Á¦°øÇØ¾ß ÇÏ´Â º¯¼ö°ªÀ» ±â¿ïÀӲ÷Π³ªÅ¸³À´Ï´Ù. (¿¹¸¦ µé¾î, fileName¿¡ ÆÄÀÏ À̸§À» Á¦°øÇÕ´Ï´Ù.) °­Á¶ ¹× Ã¥ Á¦¸ñÀ» Ç¥½ÃÇÕ´Ï´Ù.
Ctrl-x ¿©±â¼­, x´Â Ű À̸§À¸·Î Á¦¾î ¹®ÀÚ ¼ø¼­¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Ctrl-c´Â Ctrl ۸¦ ´©¸¥ »óÅ¿¡¼­ c ۸¦ ´©¸£´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù.
Return Return, Enter ¶Ç´Â ¿ÞÂÊ È­»ìÇ¥·Î Ç¥½ÃµÈ ۸¦ ³ªÅ¸³À´Ï´Ù.
% ·çÆ® ±ÇÇÑÀÌ ÇÊ¿äÇÏÁö ¾ÊÀº ¸í·ÉÀÇ Linux ¹× UNIX(R) ¸í·É ½© ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
# ·çÆ® ±ÇÇÑÀÌ ÇÊ¿äÇÑ Linux ¹× UNIX ¸í·É ½© ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
C:\ Windows ¸í·É ÇÁ·ÒÇÁÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù.
¸í·É ÀÔ·Â ¸í·ÉÀ» ¡ºÀԷ¡» ¶Ç´Â ¡º½ÇÇà¡»ÇÒ ¶§ ¸í·ÉÀ» ÀÔ·ÂÇϰí ReturnÀ» ´©¸¨´Ï´Ù. ¿¹¸¦ µé¾î, ¡ºEnter the ls command¡»¶ó´Â ¸í·ÉÀº ¸í·É ÇÁ·ÒÇÁÆ®¿¡ ls¸¦ ÀÔ·ÂÇϰí ReturnÀ» ´©¸£´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù.
[ ] ±¸¹® ¼³¸í¿¡ ¼±ÅÃÀû Ç׸ñÀ» ³Ö½À´Ï´Ù.
{ } ¼±ÅÃÇÒ Ç׸ñÀÌ ÀÖ´Â ¸ñ·ÏÀ» ±¸¹® ¼³¸í¿¡ ³Ö½À´Ï´Ù.
| ±¸¹® ¼³¸í¿¡¼­ { }¿¡ ÀÖ´Â ¼±ÅûçÇ× ¸ñ·ÏÀÇ Ç׸ñÀ» ±¸ºÐÇÕ´Ï´Ù.
... ±¸¹® ¼³¸í¿¡¼­ ÁÙÀÓÇ¥´Â ¾ÕÀÇ Ç׸ñÀ» ÇÑ ¹ø ÀÌ»ó ¹Ýº¹ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ¿¹Á¦¿¡¼­ ÁÙÀÓÇ¥´Â °£°áÇÏ°Ô Çϱâ À§ÇØ ¿¹Á¦¿¡¼­ Á¤º¸¸¦ »ý·«ÇßÀ½À» ÀǹÌÇÕ´Ï´Ù.

³»°Ô ÇÊ¿äÇÑ ¿É¼Ç

³»°Ô ÇÊ¿äÇÑ ¿É¼Ç ±â´ÉÀº Áöü ºÎÀÚÀ¯ ¶Ç´Â ½Ã°¢ Àå¾Ö¿Í °°Àº ½Åü Àå¾Ö¸¦ °¡Áø »ç¿ëÀÚ°¡ ¼ÒÇÁÆ®¿þ¾î Á¦Ç°À» Àß »ç¿ëÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÝ´Ï´Ù. ´ÙÀ½Àº WebSphere Application Server, ¹öÀü 6.1ÀÇ ³»°Ô ÇÊ¿äÇÑ ¿É¼Ç ±â´ÉÀÔ´Ï´Ù.

°ü·Ã ¹®¼­ ¹× À¥ »çÀÌÆ®

°í°´ ÀǰßÀ» º¸³»´Â ¹æ¹ý

°í°´ÀÇ Çǵå¹éÀº °¡Àå Á¤È®Çϰí ÃÖ»óÀÇ Á¤º¸¸¦ Á¦°øÇÏ´Â µ¥ ¸Å¿ì Áß¿äÇÕ´Ï´Ù. ÀÌ Ã¥ ¶Ç´Â ±âŸ WebSphere Application Server Edge Components ¹®¼­¿¡ ´ëÇÑ ÀǰßÀÌ ÀÖ´Â °æ¿ì, ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î º¸³»ÁֽʽÿÀ.

Edge Components »ç¿ëÀÚ Á¤ÀÇ °³¿ä

Á¦ 1 Àå¿¡¼­´Â WebSphere Application Server Edge Components¿¡ Á¦°øµÈ API(Application Programming Interface)¿¡ ´ëÇÏ¿© ¼³¸íÇÕ´Ï´Ù. (WebSphere Application Server Edge Components´Â Caching Proxy ¹× Load Balancer¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ) °ü¸®ÀÚ´Â Á¦°øµÇ´Â ¸î °¡Áö ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© ¼³Ä¡¸¦ »ç¿ëÀÚ Á¤ÀÇÇϰí Edge Components »çÀÌÀÇ »óÈ£ÀÛ¿ë ¹æ¹ýÀ» º¯°æÇϰųª ¼ÒÇÁÆ®¿þ¾î ½Ã½ºÅÛ°úÀÇ »óÈ£ÀÛ¿ëÀ» °¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Áß¿ä»çÇ×: Caching Proxy´Â ´ÙÀ½ °æ¿ì¸¦ Á¦¿ÜÇÏ°í ¸ðµç Edge Components ¼³Ä¡¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ ¹®¼­ÀÇ API´Â ¸î °¡Áö Ä«Å×°í¸®¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

Caching Proxy »ç¿ëÀÚ Á¤ÀÇ

Caching Proxy´Â Ç¥ÁØ Ã³¸®¿¡ ´ëÇØ »ç¿ëÀÚ Á¤ÀÇ Ã³¸®°¡ Ãß°¡ ¶Ç´Â ´ëüµÇ¸ç, ÇØ´ç ó¸® ¼ø¼­·Î ÀÛ¼ºµÇ´Â ¸î °¡Áö ÀÎÅÍÆäÀ̽º¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ½ÇÇàÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ Á¤ÀÇ¿¡´Â ´ÙÀ½°ú °°Àº º¯°æ ¹× ±â´É º¸°­ Ÿ½ºÅ©°¡ Æ÷ÇԵ˴ϴÙ.

Caching Proxy Ç÷¯±×ÀÎÀ¸·Î ¾Ë·ÁÁø »ç¿ëÀÚ Á¤ÀÇ ÀÀ¿ëÇÁ·Î±×·¥Àº ÇÁ·Ï½Ã ¼­¹öÀÇ Ã³¸® ¼ø¼­ÀÇ »çÀü °áÁ¤µÈ ÁöÁ¡¿¡¼­ È£ÃâµË´Ï´Ù.

Caching Proxy API´Â ƯÁ¤ ½Ã½ºÅÛ ±â´ÉÀ» ±¸ÇöÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, ÇÁ·Ï½Ã ¼­¹öÀÇ LDAP Áö¿øÀº Ç÷¯±×ÀÎÀ¸·Î ±¸ÇöµË´Ï´Ù.

Caching Proxy API¿¡¼­´Â ÀÎÅÍÆäÀ̽º¸¦ ÀÚ¼¼È÷ ¼³¸íÇϸç, Ç÷¯±×ÀÎ ÇÁ·Î±×·¥À» »ç¿ëÇϱâ À§ÇØ ÇÁ·Ï½Ã ¼­¹ö¸¦ ±¸¼ºÇÏ´Â ´Ü°è°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

Load Balancer »ç¿ëÀÚ Á¤ÀÇ

°íÀ¯ ¾îµå¹ÙÀÌÀú¸¦ ÀÛ¼ºÇÏ¿© Load Balancer¸¦ »ç¿ëÀÚ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾îµå¹ÙÀÌÀú´Â ¼­¹ö¿¡¼­ÀÇ ½ÇÁ¦ ·Îµå¸¦ ÃøÁ¤ÇÕ´Ï´Ù. »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ°¡ Á¦°øÇÏ°í »ç¿ëÀÚ ½Ã½ºÅÛÀÇ ·Îµå¸¦ ÃøÁ¤ÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â »ç¿ëÀÚ°¡ »ç¿ëÀÚ Á¤ÀÇÇ߰ųª µ¶Á¡ À¥ ¼­¹ö ½Ã½ºÅÛÀ» º¸À¯ÇÏ´Â °æ¿ì¿¡ ƯÈ÷ Áß¿äÇÕ´Ï´Ù.

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¿¡¼­´Â »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ÀÛ¼º ¹× »ç¿ë¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù. ¾îµå¹ÙÀÌÀú ÄÚµå »ùÇÃÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

ÄÚµå »ùÇà ã±â

APIÀÇ »ùÇà ÄÚµå´Â Edge Components CD-ROMÀÇ samples µð·ºÅ丮¿¡ ÀÖ½À´Ï´Ù. Ãß°¡ ÄÚµå »ùÇÃÀº WebSphere Application Server À¥ »çÀÌÆ®ÀÎ www.ibm.com/software/webservers/appserv/¿¡¼­ ã¾Æº¼ ¼ö ÀÖ½À´Ï´Ù.

Caching Proxy API

Á¦ 2 Àå¿¡¼­´Â Caching Proxy API(Application Programming Interface)ÀÇ °³³ä, À¯¿ë¼º ¹× ÀÛµ¿ ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

Áß¿ä»çÇ×: Caching Proxy´Â ´ÙÀ½ °æ¿ì¸¦ Á¦¿ÜÇÏ°í ¸ðµç Edge Components ¼³Ä¡¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

Caching Proxy API °³¿ä

API´Â Caching Proxy¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽º·Î ÇÁ·Ï½Ã ¼­¹öÀÇ ±âº» ±â´ÉÀ» È®ÀåÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¿Í °°Àº »ç¿ëÀÚ Á¤ÀÇ Ã³¸®¸¦ ¼öÇàÇϱâ À§ÇØ È®Àå ¶Ç´Â Ç÷¯±×ÀÎÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

Caching Proxy API´Â ´ÙÀ½°ú °°Àº ÀÌÁ¡À» Á¦°øÇÕ´Ï´Ù.

API ÇÁ·Î±×·¥ ÀÛ¼ºÀ» À§ÇÑ ÀϹÝÀûÀÎ ÀýÂ÷

Caching Proxy Ç÷¯±×ÀÎ ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱ⿡ ¾Õ¼­ ÇÁ·Ï½Ã ¼­¹ö ÀÛµ¿ ¹æ¹ýÀ» ÀÌÇØÇØ¾ß ÇÕ´Ï´Ù. ÇÁ·Ï½Ã ¼­¹öÀÇ ÀÛµ¿Àº ¿©·¯ °³ÀÇ °³º° ó¸® ´Ü°è·Î ³ª´­ ¼ö ÀÖ½À´Ï´Ù. °¢°¢ÀÇ ´Ü°è¿¡¼­ API¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Ŭ¶óÀÌ¾ðÆ® ¿äûÀÌ ÀÐÇôÁø ÈÄ ±×·¯³ª, ´Ù¸¥ 󸮸¦ ¼öÇàÇϱâ Àü¿¡ ¾î¶² ÀÏÀ» ¼öÇàÇϱ⠿øÇÒ ¼öµµ ÀÖ°í, ¶Ç´Â ÀÎÁõÀÌ ¼öÇàµÇ´Â µ¿¾È ±×¸®°í, ¿äûµÈ ÆÄÀÏÀÌ Àü¼ÛµÈ ÈÄ¿¡ ´Ù½Ã Ưº°ÇÑ ·çƾÀ» ¼öÇàÇϱ⸦ ¿øÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

»çÀü Á¤ÀÇ ÇÔ¼öÀÇ ¶óÀ̺귯¸®´Â API¿Í ÇÔ²² Á¦°øµË´Ï´Ù. »ç¿ëÀÚ Ç÷¯±×ÀÎ ÇÁ·Î±×·¥Àº ÇÁ·Ï½Ã ¼­¹ö ÇÁ·Î¼¼½º(¿¹: ¿äûÀ» Á¶Á¤Çϰí, ¿äû Çì´õ¸¦ Àаųª ¾²°í, ÇÁ·Ï½Ã ¼­¹öÀÇ ·Î±×¿¡ ¾²´Â ÇÁ·Î¼¼½º)¿Í »óÈ£ÀÛ¿ëÇϱâ À§ÇØ »çÀü Á¤ÀÇµÈ API ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± ÇÔ¼ö´Â ÇÁ·Ï½Ã ¼­¹ö°¡ È£ÃâÇÏ´Â »ç¿ëÀÚ ÀÛ¼º Ç÷¯±×ÀÎ ÇÔ¼ö¿Í È¥µ¿ÀÌ µÇ¾î¼­´Â ¾ÈµË´Ï´Ù. »çÀü Á¤ÀÇµÈ ÇÔ¼ö´Â »çÀü Á¤ÀÇ ÇÔ¼ö ¹× ¸ÅÅ©·Î¿¡¼­ ¼³¸íÇÕ´Ï´Ù.

¼­¹ö ±¸¼º ÆÄÀÏ¿¡¼­ ÇØ´ç Caching Proxy API Áö½Ã¹®À» »ç¿ëÇÏ¿© ÀûÀýÇÑ ´Ü°è¿¡¼­ Ç÷¯±×ÀÎ ±â´ÉÀ» È£ÃâÇϵµ·Ï ÇÁ·Ï½Ã ¼­¹ö¿¡ Áö½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Áö½Ã¹®Àº API ´Ü°è¿¡ ´ëÇÑ Caching Proxy ±¸¼º Áö½Ã¹®¿¡¼­ ¼³¸íÇÕ´Ï´Ù.

ÀÌ ¹®¼­´Â ´ÙÀ½°ú °°Àº ³»¿ëÀ» Æ÷ÇÔÇÕ´Ï´Ù.

À̵é ÄÄÆ÷³ÍÆ®¿Í ÇÁ·Î½ÃÀú¸¦ »ç¿ëÇÏ¿© °íÀ¯ Caching Proxy Ç÷¯±×ÀÎ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

¼­¹ö ÇÁ·Î¼¼½º ´Ü°è

ÇÁ·Ï½Ã ¼­¹öÀÇ ±âº» ¿î¿µÀº ´Ü°è°¡ ÁøÇàµÇ´Â µ¿¾È ¼­¹ö¸¦ ¼öÇàÇϴ ó¸®ÀÇ À¯Çü¿¡ µû¶ó ´Ü°è¸¦ ±¸ºÐÇÒ ¼ö ÀÖ½À´Ï´Ù. °¢ ´Ü°è´Â »ç¿ëÀÚ ÇÁ·Î±×·¥ÀÇ ÁöÁ¤µÈ ÆÄÆ®°¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â Á¢¼ÓÀ» Æ÷ÇÔÇÕ´Ï´Ù. Caching Proxy ±¸¼º ÆÄÀÏ(ibmproxy.conf)¿¡ API Áö½Ã¹®À» Ãß°¡ÇÏ¿© ƯÁ¤ ´Ü°è¿¡¼­ È£ÃâÇÏ·Á´Â Ç÷¯±×ÀÎ ÇÔ¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÇØ´ç ´Ü°è¿¡ µÑ ÀÌ»óÀÇ Áö½Ã¹®À» Æ÷ÇÔ½ÃÄÑ Æ¯Á¤ ÇÁ·Î¼¼½º ´Ü°è°¡ ÁøÇàµÇ´Â µ¿¾È ¿©·¯ °³ÀÇ Ç÷¯±×ÀÎ ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.

¸î¸î ´Ü°è´Â ¼­¹ö ¿äû ÇÁ·Î¼¼½ºÀÇ ÀϺÎÀÔ´Ï´Ù. Áï, ÇÁ·Ï½Ã ¼­¹ö´Â ¿äûÀ» ó¸®ÇÒ ¶§ °¢ ´Ü°è¸¦ ½ÇÇàÇÕ´Ï´Ù. ´Ù¸¥ ´Ü°è´Â ¿äû ó¸®¿Í ¹«°üÇÏ°Ô ¼öÇàµË´Ï´Ù. Áï, ¼­¹ö´Â ¿äûÀÌ Ã³¸®µÇ´ÂÁö ¿©ºÎ¿Í °ü°è¾øÀÌ ÀÌµé ´Ü°è¸¦ ½ÇÇàÇÕ´Ï´Ù.

»ç¿ëÀÚÀÇ ÄÄÆÄÀÏµÈ ÇÁ·Î±×·¥Àº ¿î¿µ üÁ¦¿¡ µû¶ó °øÀ¯ ¿ÀºêÁ§Æ®(¿¹: DLL ¶Ç´Â .so ÆÄÀÏ)¿¡ »óÁÖÇÕ´Ï´Ù. ¼­¹ö°¡ ¿äû ÇÁ·Î¼¼½º ´Ü°è¸¦ Â÷·Ê·Î ¼öÇàÇϸ鼭, ÇÔ¼ö Áß ¾î´À Çϳª°¡ ¿äûÀ» ó¸®ÇÏ¿´À½À» ³ªÅ¸³¾ ¶§±îÁö °¢ ´Ü°è¿Í °ü·ÃµÈ Ç÷¯±×ÀÎ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù. ƯÁ¤ ´Ü°è¿¡ ´ëÇØ µÑ ÀÌ»óÀÇ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ ÁöÁ¤µÈ °æ¿ì, Áö½Ã¹®ÀÌ ±¸¼º ÆÄÀÏ¿¡ ³ªÅ¸³ª´Â ¼ø¼­´ë·Î ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù.

Ç÷¯±×ÀÎ ÇÔ¼ö°¡ ¿äûÀ» ó¸®ÇÏÁö ¾ÊÀº °æ¿ì(ÇØ´ç ´Ü°è¿¡ Caching Proxy API Áö½Ã¹®ÀÌ ¾ø°Å³ª ÇØ´ç ´Ü°è¿¡ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ HTTP_NOACTIONÀ» ¸®ÅÏÇÑ °æ¿ì), ¼­¹ö´Â ÇØ´ç ´Ü°è¿¡ ´ëÇØ ±âº» Á¶Ä¡¸¦ ¼öÇàÇÕ´Ï´Ù.

ÁÖ: ¼­ºñ½º ´Ü°è¸¦ Á¦¿ÜÇÑ ¸ðµç ´Ü°è¿¡ Àû¿ëµË´Ï´Ù. ¼­ºñ½º ´Ü°è¿¡´Â ±âº» Á¶Ä¡°¡ ¾ø½À´Ï´Ù.

±×¸² 1¿¡¼­´Â ÇÁ·Ï½Ã ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ´Ü°è¸¦ ¼³¸íÇÏ°í ¿äû ó¸®¿Í °ü·ÃµÈ ´Ü°è¿¡ ´ëÇØ ó¸® ¼ø¼­¸¦ Á¤ÀÇÇÕ´Ï´Ù.

±×¸² 1. ÇÁ·Ï½Ã ¼­¹ö ÇÁ·Î¼¼½º ´Ü°è Ç÷οìÂ÷Æ®

´ÙÀ̾î±×·¥¿¡¼­ ³× ´Ü°è´Â Ŭ¶óÀÌ¾ðÆ® ¿äûÀÇ Ã³¸®¿Í ¹«°üÇÏ°Ô ½ÇÇàµË´Ï´Ù. ÀÌµé ´Ü°è´Â ÇÁ·Ï½Ã ¼­¹öÀÇ ½ÇÇà ¹× À¯Áöº¸¼ö¿Í °ü·ÃÀÌ ÀÖ½À´Ï´Ù. ´ÙÀ½ »çÇ×ÀÌ Æ÷ÇԵ˴ϴÙ.

´ÙÀ½ ¸ñ·Ï¿¡¼­´Â ±×¸² 1¿¡ ±×·ÁÁø °¢ ´Ü°èÀÇ ¸ñÀûÀ» ¼³¸íÇÕ´Ï´Ù. ¸ðµç ´Ü°è°¡ ƯÁ¤ ¿äû¿¡ ´ëÇØ ¹Ýµå½Ã È£ÃâµÇÁö´Â ¾Ê½À´Ï´Ù.

¼­¹ö ÃʱâÈ­
ÇÁ·Ï½Ã ¼­¹ö°¡ ½ÃÀ۵ǰí Ŭ¶óÀÌ¾ðÆ® ¿äûÀÌ ½ÂÀεDZâ Àü¿¡ ÃʱâÈ­°¡ ¼öÇàµË´Ï´Ù.
ÀÚÁ¤
¿äû ÄÁÅØ½ºÆ® ¾øÀÌ ÀÚÁ¤¿¡ Ç÷¯±×ÀÎÀ» ½ÇÇàÇÕ´Ï´Ù. ÀÌ ´Ü°è´Â ¿äû ÇÁ·Î¼¼½ºÀÇ ÀϺΰ¡ ¾Æ´Ï¹Ç·Î ´ÙÀ̾î±×·¥¿¡ °³º°ÀûÀ¸·Î Ç¥½ÃµË´Ï´Ù. Áï, ´Ü°èÀÇ ½ÇÇàÀº ¿äû°ú ¹«°üÇÕ´Ï´Ù.
GC ¾îµå¹ÙÀÌÀú
ij½Ã¿¡¼­ ÆÄÀÏ¿¡ ´ëÇÑ °¡ºñÁö ÄÝ·º¼Ç °áÁ¤¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ÀÌ ´Ü°è´Â ¿äû ÇÁ·Î¼¼½ºÀÇ ÀϺΰ¡ ¾Æ´Ï¹Ç·Î ´ÙÀ̾î±×·¥¿¡ °³º°ÀûÀ¸·Î Ç¥½ÃµË´Ï´Ù. Áï, ´Ü°èÀÇ ½ÇÇàÀº ¿äû°ú ¹«°üÇÕ´Ï´Ù. °¡ºñÁö ÄÝ·º¼ÇÀº ij½Ã Å©±â°¡ ÃÖ´ë °ª¿¡ µµ´ÞÇÒ ¶§ ¼öÇàµË´Ï´Ù. (ij½Ã °¡ºñÁö ÄÝ·º¼Ç ±¸¼º¿¡ ´ëÇÑ Á¤º¸´Â WebSphere Application Server Caching Proxy °ü¸® ¾È³»¼­¿¡ µé¾î ÀÖ½À´Ï´Ù.)
»çÀüÁ¾·á

¿äûÀÌ ÀÐÇôÁ³Áö¸¸ ´Ù¸¥ ¾î¶°ÇÑ ÀÛ¾÷µµ ¼öÇàµÇ±â ÀüÀÇ Ã³¸®¸¦ ¼öÇàÇÕ´Ï´Ù.

ÀÌ ´Ü°è¿¡¼­ ¿äû ó¸® ¿Ï·á Ç¥½Ã(HTTP_OK)¸¦ ¸®ÅÏÇÏ´Â °æ¿ì, ¿äû ÇÁ·Î¼¼½º¿¡¼­ ´Ù¸¥ ´Ü°èµéÀº »ý·«ÇÏ°í º¯ÇüÀÚ, ·Î±× ¹× »çÈÄÁ¾·á ´Ü°è¸¸À» ¼öÇàÇÕ´Ï´Ù.

À̸§ º¯È¯
(URL·ÎºÎÅÍÀÇ) °¡»ó °æ·Î¸¦ ¹°¸®Àû °æ·Î·Î º¯È¯ÇÕ´Ï´Ù.
±ÇÇÑ ºÎ¿©

ÀúÀåµÈ º¸¾È ÅäÅ«À» »ç¿ëÇÏ¿© º¸È£»çÇ×, ACL ¹× ±âŸ ¾×¼¼½º Á¦¾î¿¡ ´ëÇÑ ½ÇÁ¦ °æ·Î¸¦ È®ÀÎÇÏ°í ±âº» ÀÎÁõ¿¡ ÇÊ¿äÇÑ WWW-Authenticate Çì´õ¸¦ »ý¼ºÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ °íÀ¯ Ç÷¯±×ÀÎ ÇÔ¼ö¸¦ ÀÛ¼ºÇÏ¿© ÀÌ ´Ü°è¸¦ ¹Ù²Ù·Á¸é ÀÌ Çì´õ¸¦ »ç¿ëÀÚ°¡ Á÷Á¢ »ý¼ºÇØ¾ß ÇÕ´Ï´Ù.

ÀÚ¼¼ÇÑ Á¤º¸´Â ÀÎÁõ ¹× ±ÇÇÑ ºÎ¿©¸¦ ÂüÁ¶ÇϽʽÿÀ.

ÀÎÁõ

º¸¾È ÅäÅ«À» ÇØµ¶Çϰí, È®ÀÎÇÑ ÈÄ ÀúÀåÇÕ´Ï´Ù.

ÀÚ¼¼ÇÑ Á¤º¸´Â ÀÎÁõ ¹× ±ÇÇÑ ºÎ¿©¸¦ ÂüÁ¶ÇϽʽÿÀ.

¿ÀºêÁ§Æ® À¯Çü
°æ·Î¿¡ Ç¥½ÃµÈ ÆÄÀÏ ½Ã½ºÅÛ ¿ÀºêÁ§Æ®ÀÇ À§Ä¡¸¦ ã½À´Ï´Ù.
»çÈÄ ±ÇÇÑ ºÎ¿©

±ÇÇÑ ºÎ¿© ¹× ¿ÀºêÁ§Æ®ÀÇ À§Ä¡ ã±â ÀÌÈÄ, ¿äû ¿Ï·á ÀÌÀü¿¡ 󸮸¦ ¼öÇàÇÕ´Ï´Ù.

ÀÌ ´Ü°è¿¡¼­ ¿äû ó¸® ¿Ï·á Ç¥½Ã(HTTP_OK)¸¦ ¸®ÅÏÇÏ´Â °æ¿ì, ¿äû ÇÁ·Î¼¼½º¿¡¼­ ´Ù¸¥ ´Ü°èµéÀº »ý·«ÇÏ°í º¯ÇüÀÚ, ·Î±× ¹× »çÈÄÁ¾·á ´Ü°è¸¸À» ¼öÇàÇÕ´Ï´Ù.

¼­ºñ½º
¿äûÀ» ÃæÁ·½Ãŵ´Ï´Ù(ÆÄÀÏ Àü¼Û, CGI ½ÇÇà µî).
ÇÁ·Ï½Ã ¾îµå¹ÙÀÌÀú
ÇÁ·Ï½Ã¿Í ij½Ã °áÁ¤¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
º¯ÇüÀÚ
Ŭ¶óÀÌ¾ðÆ®¿¡ ÀÀ´äÀ» º¸³»´Â µ¥ÀÌÅÍ ºÎºÐ¿¡ ´ëÇÑ ¾²±â ¾×¼¼½º ±ÇÇÑÀ» ºÎ¿©ÇÕ´Ï´Ù.
·Î±×
»ç¿ëÀÚ Á¤ÀÇµÈ Æ®·£Àè¼Ç ·Î±ëÀ» »ç¿ë °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.
¿À·ù
¿À·ù »óȲ¿¡ ´ëÇØ »ç¿ëÀÚ Á¤ÀÇ ÀÀ´äÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.
»çÈÄÁ¾·á
¿äû 󸮿¡ ÇÒ´çµÈ ÀÚ¿øÀ» Á¤¸®ÇÕ´Ï´Ù.
¼­¹ö Á¾·á
¼ø¼­¿¡ µû¶ó ½Ã½ºÅÛ Á¾·á ½Ã Á¤¸® ó¸®ÇÕ´Ï´Ù.

Áöħ

Ç÷¯±×ÀÎ ÇÔ¼ö

Ç÷¯±×ÀÎ ÇÔ¼ö ÇÁ·ÎÅäŸÀÔ¿¡ Ç¥½ÃµÈ ±¸¹®¿¡ µû¶ó Á¤ÀÇµÈ ¿äû ó¸® ´Ü°è¿¡ ÀûÀýÇÑ »ç¿ëÀÚÀÇ ÇÁ·Î±×·¥ ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

°¢°¢ÀÇ »ç¿ëÀÚ ÇÔ¼öµéÀº ¾î¶² Á¶Ä¡°¡ ÃëÇØÁ³´ÂÁö¸¦ ³ªÅ¸³»´Â °ªÀ» ¸®ÅÏ ÄÚµå ¸Å°³º¯¼ö¿¡ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.

Ç÷¯±×ÀÎ ÇÔ¼ö ÇÁ·ÎÅäŸÀÔ

°¢ Caching Proxy ´Ü°è¿¡ ´ëÇÑ ÇÔ¼ö ÇÁ·ÎÅäŸÀÔ¿¡¼­´Â »ç¿ëÇÒ ¼ö ÀÖ´Â Çü½ÄÀ» º¸¿©ÁÖ°í ¼öÇàÇÒ ¼ö Àִ ó¸® À¯Çü¿¡ ´ëÇÏ¿© ¼³¸íÇÕ´Ï´Ù. ÇÔ¼ö À̸§Àº »çÀü Á¤ÀǵǾî ÀÖÁö ¾ÊÀ½¿¡ ÁÖÀÇÇϽʽÿÀ. »ç¿ëÀÚ ÇÔ¼öÀÇ °íÀ¯ À̸§À» ÁöÁ¤Çϰí, ÀڽŸ¸ÀÇ À̸§ ÁöÁ¤ ±ÔÄ¢À» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¬»óÇϱ⠽±µµ·Ï, ÀÌ ¹®¼­¿¡¼­´Â ¼­¹öÀÇ Ã³¸® ´Ü°è¿Í °ü·ÃµÈ À̸§À» »ç¿ëÇÕ´Ï´Ù.

°¢°¢ÀÇ Ç÷¯±×ÀÎ ÇÔ¼ö¿¡¼­ »çÀü Á¤ÀÇµÈ Æ¯Á¤ ÇÔ¼ö´Â À¯È¿ÇÕ´Ï´Ù. ÀϺΠ»çÀü Á¤ÀÇµÈ ÇÔ¼ö´Â ¸ðµç ´Ü°è¿¡ ´ëÇØ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù. ´ÙÀ½°ú °°Àº »çÀü Á¤ÀÇµÈ API ÇÔ¼ö´Â ¸ðµç Ç÷¯±×ÀÎ ÇÔ¼ö¿¡¼­ È£ÃâµÉ ¶§ À¯È¿ÇÕ´Ï´Ù.

Ãß°¡·Î À¯È¿Çϰųª À¯È¿ÇÏÁö ¾ÊÀº API ÇÔ¼ö´Â ÇÔ¼ö ÇÁ·ÎÅäŸÀÔ¿¡ ¾ð±ÞµÇ¾î ÀÖ½À´Ï´Ù.

ÇÔ¼ö·Î Àü¼ÛµÇ´Â handle ¸Å°³º¯¼öÀÇ °ªÀº »çÀü Á¤ÀÇµÈ ÇÔ¼ö¿¡ ´ëÇÑ Ã¹ ¹øÂ° Àμö·Î Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. »çÀü Á¤ÀÇµÈ API ÇÔ¼ö´Â »çÀü Á¤ÀÇ ÇÔ¼ö ¹× ¸ÅÅ©·Î¿¡¼­ ¼³¸íÇÕ´Ï´Ù.

¼­¹ö ÃʱâÈ­

void HTTPD_LINKAGE ServerInitFunction (
        unsigned char *handle,
        unsigned long *major_version,
        unsigned long *minor_version, 
         long *return_code 
     )

¼­¹ö ÃʱâÈ­ Áß¿¡ ¸ðµâÀÌ ·ÎµåµÉ ¶§ ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù. ÀÌ ¶§°¡ ¿äûÀÌ ½ÂÀεDZâ Àü¿¡ ÃʱâÈ­¸¦ ¼öÇàÇÒ ¼ö ÀÖ´Â ½Ã±âÀÔ´Ï´Ù.

¸ðµç ¼­¹ö ÃʱâÈ­ ÇÔ¼ö°¡ È£ÃâµÇ¾îµµ, ÀÌ ´Ü°èÀÇ ÇÔ¼ö¿¡¼­ ¿À·ù ¸®ÅÏ Äڵ尡 ¹ß»ýÇÏ¸é ¼­¹ö´Â ¿À·ù Äڵ带 ¸®ÅÏÇÑ ÇÔ¼ö¿Í µ¿ÀÏÇÑ ¸ðµâ¿¡¼­ ±¸¼ºµÈ ´Ù¸¥ ¸ðµç ÇÔ¼ö¸¦ ¹«½ÃÇÕ´Ï´Ù. (Áï, ¿À·ù¸¦ ¸®ÅÏÇÑ ÇÔ¼ö¿Í µ¿ÀÏÇÑ °øÀ¯ ¿ÀºêÁ§Æ®¿¡ Æ÷ÇÔµÈ ´Ù¸¥ ÇÔ¼ö´Â È£ÃâµÇÁö ¾Ê½À´Ï´Ù.)

¹öÀü ¸Å°³º¯¼ö¿¡´Â ÇÁ·Ï½Ã ¼­¹öÀÇ ¹öÀü ¹øÈ£°¡ µé¾î ÀÖ½À´Ï´Ù. Caching Proxy¿¡ ÀÇÇØ Á¦°øµË´Ï´Ù.

»çÀüÁ¾·á

void  HTTPD_LINKAGE  PreExitFunction (
         unsigned char *handle,
         long *return_code 
         )

¿äûÀÌ ÀÐÇôÁø ÈÄ ´Ù¸¥ 󸮰¡ ¼öÇàµÇ±â Àü¿¡ ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù. ÀÌ ´Ü°è¿¡¼­ Ç÷¯±×ÀÎÀº Caching Proxy¿¡ ÀÇÇØ 󸮵DZâ Àü¿¡ Ŭ¶óÀ̾ðÆ®ÀÇ ¿äû¿¡ ¾×¼¼½ºÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

preExit ÇÔ¼öÀÇ À¯È¿ÇÑ ¸®ÅÏ ÄÚµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

´Ù¸¥ ¸®ÅÏ ÄÚµå´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

ÀÌ ÇÔ¼ö°¡ HTTP_OK¸¦ ¸®ÅÏÇÏ´Â °æ¿ì, ÇÁ·Ï½Ã ¼­¹ö´Â ¿äûÀÌ Ã³¸®µÈ °ÍÀ¸·Î °£ÁÖÇÕ´Ï´Ù. ¸ðµç ÈÄ¼Ó ¿äû ó¸® ´Ü°è°¡ »ý·«µÇ¸ç ÀÀ´ä ´Ü°è(º¯ÇüÀÚ, ·Î±× ¹× »çÈÄÁ¾·á)¸¸ ¼öÇàµË´Ï´Ù.

ÀÌ ´Ü°è¿¡¼­´Â »çÀü Á¤ÀÇµÈ ¸ðµç API ÇÔ¼ö°¡ À¯È¿ÇÕ´Ï´Ù.

ÀÚÁ¤

void  HTTPD_LINKAGE  MidnightFunction (
         unsigned char *handle,
         long *return_code 
         )

ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö´Â ¸ÅÀÏ ÀÚÁ¤¿¡ ½ÇÇàµÇ°í ¿äû ÄÁÅØ½ºÆ®¸¦ Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ·Î±×¸¦ ºÐ¼®Çϱâ À§ÇØ ÇÏÀ§ ÇÁ·Î¼¼½º¸¦ È£ÃâÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. (ÀÌ ´Ü°èÀÇ È®Àå 󸮰¡ ·Î±ëÀ» ¹æÇØÇÒ ¼ö ÀÖ½À´Ï´Ù.)

ÀÎÁõ

void  HTTPD_LINKAGE  AuthenticationFunction (
         unsigned char *handle,
         long *return_code 
         )

ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ ¿äûÀÇ ÀÎÁõ ¼³°è¿¡ µû¶ó ¿äû¿¡ ´ëÇØ È£ÃâµË´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¿äû°ú ÇÔ²² Àü¼ÛµÈ º¸¾È ÅäÅ«ÀÇ °ËÁõÀ» »ç¿ëÀÚ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.

À̸§ º¯È¯

void  HTTPD_LINKAGE  NameTransFunction (
         unsigned char *handle,
         long *return_code 
         )

ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ ¿äû¿¡ ´ëÇØ È£ÃâµË´Ï´Ù. ÅÛÇø®Æ®¿Í ÀÏÄ¡ÇÏ´Â ¿äû¿¡ ´ëÇØ¼­¸¸ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ È£ÃâµÇµµ·Ï ÇÏ·Á´Â °æ¿ì, ±¸¼º ÆÄÀÏ Áö½Ã¹®¿¡ URL ÅÛÇø®Æ®¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸§ º¯È¯ ´Ü°è´Â ¿äûÀÌ Ã³¸®µÇ±â Àü¿¡ ¹ß»ýÇÏ°í ÆÄÀÏ À̸§Ã³·³ ¿ÀºêÁ§Æ®¿¡ URLÀ» ¸ÊÇÎÇÏ´Â ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÕ´Ï´Ù.

±ÇÇÑ ºÎ¿©

void  HTTPD_LINKAGE  AuthorizationFunction (
         unsigned char *handle,
         long *return_code 
         )

ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ ¿äû¿¡ ´ëÇØ È£ÃâµË´Ï´Ù. ÅÛÇø®Æ®¿Í ÀÏÄ¡ÇÏ´Â ¿äû¿¡ ´ëÇØ¼­¸¸ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ È£ÃâµÇµµ·Ï ÇÏ·Á´Â °æ¿ì, ±¸¼º ÆÄÀÏ Áö½Ã¹®¿¡ URL ÅÛÇø®Æ®¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±ÇÇÑ ºÎ¿© ´Ü°è´Â ¿äûÀÌ Ã³¸®µÇ±â Àü¿¡ ¹ß»ýÇÏ°í ½Äº°µÈ ¿ÀºêÁ§Æ®°¡ Ŭ¶óÀÌ¾ðÆ®·Î ¸®Å쵃 ¼ö ÀÖ´ÂÁö¸¦ È®ÀÎÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âº» ÀÎÁõÀ» ¼öÇàÇÏ´Â °æ¿ì¶ó¸é, ÇÊ¿äÇÑ WWW-Authenticate Çì´õ¸¦ »ý¼ºÇØ¾ß ÇÕ´Ï´Ù.

¿ÀºêÁ§Æ® À¯Çü

void  HTTPD_LINKAGE  ObjTypeFunction (
         unsigned char *handle,
         long *return_code 
         )

ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ ¿äû¿¡ ´ëÇØ È£ÃâµË´Ï´Ù. ÅÛÇø®Æ®¿Í ÀÏÄ¡ÇÏ´Â ¿äû¿¡ ´ëÇØ¼­¸¸ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ È£ÃâµÇµµ·Ï ÇÏ·Á´Â °æ¿ì, ±¸¼º ÆÄÀÏ Áö½Ã¹®¿¡ URL ÅÛÇø®Æ®¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ÀºêÁ§Æ® À¯Çü ´Ü°è´Â ¿äûÀÌ Ã³¸®µÇ±â Àü¿¡ ¹ß»ýÇÏ°í ¿ÀºêÁ§Æ®°¡ Á¸ÀçÇÏ´ÂÁö ¿©ºÎ¸¦ Á¡°ËÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ¿ÀºêÁ§Æ® ÀÔ·ÂÀ» ¼öÇàÇÕ´Ï´Ù.

»çÈÄ ±ÇÇÑ ºÎ¿©

void  HTTPD_LINKAGE  PostAuthFunction (
         unsigned char *handle,
         long *return_code 
         )

¿äûÀÌ Çã°¡µÈ ÈÄ ´Ù¸¥ 󸮰¡ ¼öÇàµÇ±â Àü¿¡ ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù. ÀÌ ÇÔ¼ö°¡ HTTP_OK¸¦ ¸®ÅÏÇÏ´Â °æ¿ì, ÇÁ·Ï½Ã ¼­¹ö´Â ¿äûÀÌ Ã³¸®µÈ °ÍÀ¸·Î °£ÁÖÇÕ´Ï´Ù. ¸ðµç ÈÄ¼Ó ¿äû ´Ü°è°¡ »ý·«µÇ¸ç ÀÀ´ä ´Ü°è(º¯ÇüÀÚ, ·Î±× ¹× »çÈÄÁ¾·á)¸¸ ¼öÇàµË´Ï´Ù.

ÀÌ ´Ü°è¿¡¼­´Â ¼­¹ö¿¡¼­ »çÀü Á¤ÀÇµÈ ¸ðµç ÇÔ¼ö°¡ À¯È¿ÇÕ´Ï´Ù.

¼­ºñ½º

void  HTTPD_LINKAGE  ServiceFunction (
         unsigned char *handle,
         long *return_code 
         )

ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ ¿äû¿¡ ´ëÇØ È£ÃâµË´Ï´Ù. ÅÛÇø®Æ®¿Í ÀÏÄ¡ÇÏ´Â ¿äû¿¡ ´ëÇØ¼­¸¸ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ È£ÃâµÇµµ·Ï ÇÏ·Á´Â °æ¿ì, ±¸¼º ÆÄÀÏ Áö½Ã¹®¿¡ URL ÅÛÇø®Æ®¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼­ºñ½º ´Ü°è´Â »çÀüÁ¾·á ¶Ç´Â »çÈÄ ±ÇÇÑ ºÎ¿© ´Ü°è¿¡¼­ ÇØ°áµÇÁö ¸øÇÑ °æ¿ì ¿äûÀ» ÇØ°áÇÕ´Ï´Ù.

ÀÌ ´Ü°è¿¡¼­´Â ¼­¹ö¿¡¼­ »çÀü Á¤ÀÇµÈ ¸ðµç ÇÔ¼ö°¡ À¯È¿ÇÕ´Ï´Ù.

URLÀÌ ¾Æ´Ñ HTTP ¸Þ¼Òµå¸¦ ±â¹ÝÀ¸·Î ½ÇÇàµÇ´Â »ç¿ëÀÚ ¼­ºñ½º ÇÔ¼ö ±¸¼º Á¤º¸¿¡ ´ëÇØ¼­´Â WebSphere Application Server Caching Proxy °ü¸® ¾È³»¼­ÀÇ 'Enable Áö½Ã¹®'À» ÂüÁ¶ÇϽʽÿÀ.

º¯ÇüÀÚ
ÀÌ ÇÁ·Î¼¼½º ´Ü°è¿¡¼­ È£ÃâµÈ ÇÔ¼ö´Â ½ºÆ®¸²À¸·Î ÇÊÅÍ ÀÀ´ä µ¥ÀÌÅÍ¿¡ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ´Ü°è¿¡ ´ëÇÑ ³× °³ÀÇ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ ¼ø¼­´ë·Î È£ÃâµÇ¸ç, °¢ ÇÔ¼ö´Â µ¥ÀÌÅͰ¡ È帣´Â ÆÄÀÌÇÁÀÇ ¼¼±×¸ÕÆ®·Î¼­ ÀÛµ¿ÇÕ´Ï´Ù. Áï, »ç¿ëÀÚ°¡ Á¦°øÇÑ °¢ ÀÀ´äÀÇ ¼ø¼­´ë·Î open, write, close ¹× error ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù. °¢ ÇÔ¼ö´Â Â÷·Ê´ë·Î µ¿ÀÏÇÑ µ¥ÀÌÅÍ ½ºÆ®¸²À» ó¸®ÇÕ´Ï´Ù.

ÀÌ ´Ü°è¿¡¼­´Â ´ÙÀ½°ú °°Àº ³× °¡Áö ÇÔ¼ö¸¦ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù. (ÇÔ¼ö À̸§ÀÌ ÀÌ À̸§°ú ÀÏÄ¡ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.)

ÁÖ:

GC ¾îµå¹ÙÀÌÀú

void  HTTPD_LINKAGE  GCAdvisorFunction (
         unsigned char *handle,
         long *return_code 
         )

ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ °¡ºñÁö ÄÝ·º¼ÇÀ» ¼öÇàÇÏ´Â µ¿¾È ij½Ã¿¡¼­ °¢ ÆÄÀÏ¿¡ ´ëÇØ È£ÃâµË´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¾î¶² ÆÄÀÏÀ» º¸°üÇÏ°í ¾î¶² ÆÄÀÏÀ» ¹ö¸±Áö °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â GC_* º¯¼ö¸¦ ÂüÁ¶ÇϽʽÿÀ.

ÇÁ·Ï½Ã ¾îµå¹ÙÀÌÀú

void  HTTPD_LINKAGE  ProxyAdvisorFunction (
         unsigned char *handle,
         long *return_code 
         )

ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ °¢ ÇÁ·Ï½Ã ¿äû ¼­ºñ½º Áß¿¡ È£ÃâµË´Ï´Ù. ¿¹¸¦ µé¾î, USE_PROXY º¯¼ö¸¦ ¼³Á¤Çϱâ À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

·Î±×

void  HTTPD_LINKAGE  LogFunction (
         unsigned char *handle,
         long *return_code 
         )

°¢ ¿äûÀÌ Ã³¸®µÇ°í Ŭ¶óÀÌ¾ðÆ®¿¡ ´ëÇÑ Åë½ÅÀÌ Á¾·áµÇ¸é ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù. ÅÛÇø®Æ®¿Í ÀÏÄ¡ÇÏ´Â ¿äû¿¡ ´ëÇØ¼­¸¸ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ È£ÃâµÇµµ·Ï ÇÏ·Á´Â °æ¿ì, ±¸¼º ÆÄÀÏ Áö½Ã¹®¿¡ URL ÅÛÇø®Æ®¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¿äû ó¸®ÀÇ ¼º°ø ¹× ½ÇÆÐ ¿©ºÎ¿Í °ü°è¾øÀÌ È£ÃâµË´Ï´Ù. ·Î±× Ç÷¯±×ÀÎÀ¸·Î ±âº» ·Î±× ¸ÞÄ¿´ÏÁòÀ» µ¤¾î¾²Áö ¾ÊÀ¸·Á¸é ¸®ÅÏ Äڵ带 HTTP_OK ´ë½Å¿¡ HTTP_NOACTIONÀ¸·Î ¼³Á¤ÇϽʽÿÀ.

¿À·ù

void  HTTPD_LINKAGE  ErrorFunction (
         unsigned char *handle,
         long *return_code 
         )

ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ ½ÇÆÐÇÑ ¿äû¿¡ ´ëÇØ È£ÃâµË´Ï´Ù. ÅÛÇø®Æ®¿Í ÀÏÄ¡ÇÏ´Â ¿äû¿¡ ´ëÇØ¼­¸¸ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ È£ÃâµÇµµ·Ï ÇÏ·Á´Â °æ¿ì, ±¸¼º ÆÄÀÏ Áö½Ã¹®¿¡ URL ÅÛÇø®Æ®¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿À·ù ´Ü°è¿¡¼­´Â ¿À·ù ÀÀ´äÀ» »ç¿ëÀÚ Á¤ÀÇÇÒ ¼ö ÀÖ´Â ±âȸ°¡ ÀÖ½À´Ï´Ù.

»çÈÄÁ¾·á

void  HTTPD_LINKAGE  PostExitFunction (
         unsigned char *handle,
         long *return_code 
         )

ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ ¿äûÀÇ ¼º°ø ¹× ½ÇÆÐ ¿©ºÎ¿Í °ü°è¾øÀÌ ¿äû¿¡ ´ëÇØ È£ÃâµË´Ï´Ù. ÀÌ ´Ü°è¿¡¼­´Â ¿äûÀ» ó¸®ÇÏ´Â Ç÷¯±×ÀÎÀÌ ÇÒ´çÇÑ ¸ðµç ÀÚ¿ø¿¡ ´ëÇÑ Å¸½ºÅ©¸¦ Á¤¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¼­¹ö Á¾·á

void  HTTPD_LINKAGE  ServerTermFunction (
         unsigned char *handle,
         long *return_code 
         )

¼­¹ö°¡ Á¤»óÀûÀ¸·Î Á¾·áµÇ¸é ÀÌ ´Ü°è¿¡¼­ Á¤ÀÇµÈ ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù. ¼­¹ö ÃʱâÈ­ ´Ü°è¿¡¼­ ÇÒ´çµÈ ÀÚ¿ø¿¡ ´ëÇÑ Á¦°Å¸¦ »ç¿ë °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù. ÀÌ ´Ü°è¿¡¼­ HTTP_* ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¸¶½Ê½Ã¿À. (¿¹»óÄ¡ ¸øÇÑ °á°ú°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.) »ç¿ëÀÚ ±¸¼º ÆÄÀÏ¿¡ ¼­¹ö Á¾·á¸¦ À§ÇÑ Çϳª ÀÌ»óÀÇ Caching Proxy API Áö½Ã¹®ÀÌ ÀÖ´Ù¸é ÀÌµé ¸ðµÎ°¡ È£ÃâµË´Ï´Ù.

ÁÖ:
Solaris ÄÚµåÀÇ ÇöÀç Á¦ÇÑ»çÇ×À¸·Î ÀÎÇØ ibmproxy -stop ¸í·ÉÀ» Solaris Ç÷§ÆûÀÇ Caching Proxy ½Ã½ºÅÛÀ» Á¾·áÇÏ´Â µ¥ »ç¿ëÇØµµ, ¼­¹ö Á¾·á Ç÷¯±×ÀÎ ´Ü°è°¡ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. Caching Proxy ½ÃÀÛ ¹× ÁßÁö¿¡ °üÇÑ Á¤º¸´Â WebSphere Application Server Caching Proxy °ü¸® ¾È³»¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

HTTP ¸®ÅÏ ÄÚµå ¹× °ª

ÀÌµé ¸®ÅÏ ÄÚµå´Â World Wide Web Consortium¿¡¼­ ¹ßÇ¥ÇÑ HTTP 1.1 ½ºÆå, RFC 2616À» µû¸¨´Ï´Ù(www.w3.org/pub/WWW/Protocols/). »ç¿ëÀÚ Ç÷¯±×ÀÎ ÇÔ¼ö´Â ´ÙÀ½ °ª Áß Çϳª¸¦ ¸®ÅÏÇÕ´Ï´Ù.

Ç¥ 2. Caching Proxy API ÇÔ¼ö¿¡ ´ëÇÑ HTTP ¸®ÅÏ ÄÚµå
°ª ¸®ÅÏ ÄÚµå
0 HTTP_NOACTION
100 HTTP_CONTINUE
101 HTTP_SWITCHING_PROTOCOLS
200 HTTP_OK
201 HTTP_CREATED
202 HTTP_ACCEPTED
203 HTTP_NON_AUTHORITATIVE
204 HTTP_NO_CONTENT
205 HTTP_RESET_CONTENT
206 HTTP_PARTIAL_CONTENT
300 HTTP_MULTIPLE_CHOICES
301 HTTP_MOVED_PERMANENTLY
302 HTTP_MOVED_TEMPORARILY
302 HTTP_FOUND
303 HTTP_SEE_OTHER
304 HTTP_NOT_MODIFIED
305 HTTP_USE_PROXY
307 HTTP_TEMPORARY_REDIRECT
400 HTTP_BAD_REQUEST
401 HTTP_UNAUTHORIZED
403 HTTP_FORBIDDEN
404 HTTP_NOT_FOUND
405 HTTP_METHOD_NOT_ALLOWED
406 HTTP_NOT_ACCEPTABLE
407 HTTP_PROXY_UNAUTHORIZED
408 HTTP_REQUEST_TIMEOUT
409 HTTP_CONFLICT
410 HTTP_GONE
411 HTTP_LENGTH_REQUIRED
412 HTTP_PRECONDITION_FAILED
413 HTTP_ENTITY_TOO_LARGE
414 HTTP_URI_TOO_LONG
415 HTTP_BAD_MEDIA_TYPE
416 HTTP_BAD_RANGE
417 HTTP_EXPECTATION_FAILED
500 HTTP_SERVER_ERROR
501 HTTP_NOT_IMPLEMENTED
502 HTTP_BAD_GATEWAY
503 HTTP_SERVICE_UNAVAILABLE
504 HTTP_GATEWAY_TIMEOUT
505 HTTP_BAD_VERSION

»çÀü Á¤ÀÇ ÇÔ¼ö ¹× ¸ÅÅ©·Î

¼­¹öÀÇ »çÀü Á¤ÀÇµÈ ÇÔ¼ö ¹× ¸ÅÅ©·Î¸¦ »ç¿ëÀÚ °íÀ¯ÀÇ Ç÷¯±×ÀÎ ÇÔ¼ö·ÎºÎÅÍ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹Ýµå½Ã »çÀü Á¤ÀÇµÈ À̸§À» »ç¿ëÇÏ°í ¾Æ·¡¿¡ ³ª¿Í ÀÖ´Â Çü½ÄÀ» µû¶ó¾ß ÇÕ´Ï´Ù. ¸Å°³º¯¼ö ¼³¸í¿¡¼­ ¹®ÀÚ i´Â ÀÔ·Â ¸Å°³º¯¼ö¸¦, ¹®ÀÚ o´Â Ãâ·Â ¸Å°³º¯¼ö¸¦, ±×¸®°í i/o´Â ÀÔ·Â ¹× Ãâ·Â ¸Å°³º¯¼ö¸¦ ¸ðµÎ Ç¥½ÃÇÕ´Ï´Ù.

¿äûÀÇ ¼º°ø ¿©ºÎ¿¡ µû¶ó HTTPD ¸®ÅÏ ÄÚµå Áß Çϳª¸¦ ¸®ÅÏÇÕ´Ï´Ù. ÀÌ ÄÚµå´Â »çÀü Á¤ÀÇ ÇÔ¼ö ¹× ¸ÅÅ©·ÎÀÇ ¸®ÅÏ Äڵ忡¼­ ¼³¸íÇÕ´Ï´Ù.

ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ù ¹øÂ° ¸Å°³º¯¼ö·Î »ç¿ëÀÚÀÇ Ç÷¯±×Àο¡ Á¦°øµÈ ÇÚµéÀ» »ç¿ëÇϽʽÿÀ. ±×·¸Áö ¾ÊÀ¸¸é ÇÔ¼ö´Â HTTPD_PARAMETER_ERROR ¿À·ù Äڵ带 ¸®ÅÏÇÕ´Ï´Ù. NULLÀº À¯È¿ÇÑ ÇÚµé·Î ÀÎÁ¤µÇÁö ¾Ê½À´Ï´Ù.

HTTPD_authenticate()
»ç¿ëÀÚ ID³ª ¾ÏÈ£ ȤÀº µÑ ¸ðµÎ¸¦ ÀÎÁõÇÕ´Ï´Ù. »çÀüÁ¾·á, ÀÎÁõ, ±ÇÇÑ ºÎ¿© ¹× »çÈÄ ±ÇÇÑ ºÎ¿© ´Ü°è¿¡¼­¸¸ À¯È¿ÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_authenticate (
         unsigned char *handle,         /* i; handle */
         long *return_code         /* o; return code */
         )
HTTPD_cacheable_url()
ÁöÁ¤µÈ URL ÄÁÅÙÃ÷¸¦ Caching ProxyÀÇ Ç¥ÁØ¿¡ µû¶ó ij½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

void HTTPD_LINKAGE  HTTPD_cacheable_url (
        unsigned char *handle,        /* i; handle */
        unsigned char *url,           /* i; URL to check */
        unsigned char *req_method,    /* i; request method for the URL */
        long *retval                  /* o; return code */
        )

¸®Åϰª HTTPD_SUCCESS´Â URL ÄÁÅÙÃ÷°¡ ij½Ã °¡´ÉÇÔÀ» Ç¥½ÃÇϰí, HTTPD_FAILURE´Â ÄÁÅÙÃ÷°¡ ij½Ã ºÒ°¡´ÉÇÔÀ» Ç¥½ÃÇÕ´Ï´Ù.
HTTPD_INTERNAL_ERRORµµ ÀÌ ÇÔ¼ö¿¡ ´ëÇØ °¡´ÉÇÑ ¸®ÅϰªÀÔ´Ï´Ù.

HTTPD_close()
(º¯ÇüÀÚ ´Ü°è¿¡¼­¸¸ À¯È¿ÇÕ´Ï´Ù.) ½ºÆ®¸² ½ºÅÃÀÇ ´ÙÀ½ close ·çƾÀ¸·Î Á¦¾î¸¦ Àü¼ÛÇÕ´Ï´Ù. ¿øÇÏ´Â ÇÁ·Î¼¼½º°¡ ¿Ï·áµÇ¸é º¯ÇüÀÚ open, write ¶Ç´Â close ÇÔ¼ö¿¡¼­ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇϽʽÿÀ. ÀÌ ÇÔ¼ö´Â ÀÀ´äÀÌ ÇÁ·Î¼¼½ºµÇ°í Transmogrifier ´Ü°è°¡ ¿Ï·áµÇ´Â ÇÁ·Ï½Ã ¼­¹ö¸¦ ÅëÁöÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_close (
         unsigned char *handle,    /* i; handle */
         long *return_code         /* o; return code */
         )
HTTPD_exec()
ÀÌ ¿äûÀ» ÃæÁ·½Ã۱â À§ÇØ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÕ´Ï´Ù. »çÀüÁ¾·á, ¼­ºñ½º, »çÈÄ ±ÇÇÑ ºÎ¿© ¹× ¿À·ù ´Ü°è¿¡¼­ À¯È¿ÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_exec (
         unsigned char *handle,         /* i; handle */
         unsigned char *name,           /* i; name of script to run */
         unsigned long *name_length,    /* i; length of the name */
         long *return_code              /* o; return code */
         )
HTTPD_extract()
ÀÌ ¿äû°ú °ü·ÃµÈ º¯¼ö°ªÀ» ÃßÃâÇÕ´Ï´Ù. name ¸Å°³º¯¼ö¿¡ ´ëÇÑ À¯È¿ÇÑ º¯¼ö´Â CGI¿¡¼­ »ç¿ëµÈ °Í°ú µ¿ÀÏÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â º¯¼öÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. ÀÌ ÇÔ¼ö´Â ¸ðµç ´Ü°è¿¡¼­ À¯È¿ÇÏÁö¸¸ ¸ðµç º¯¼ö¿¡ ´ëÇØ À¯È¿ÇÏÁö ¾ÊÀ½¿¡ À¯ÀÇÇϽʽÿÀ.

void  HTTPD_LINKAGE  HTTPD_extract (
         unsigned char *handle,        /* i; handle */
         unsigned char *name,          /* i; name of variable to extract */
         unsigned long *name_length,   /* i; length of the name */
         unsigned char *value,         /* o; buffer in which to put
                                          the value */
         unsigned long *value_length,  /* i/o; buffer size */
         long *return_code             /* o; return code */
      )

¸¸ÀÏ ÀÌ ÇÔ¼ö°¡ ÄÚµå HTTPD_BUFFER_TOO_SMALLÀ» ¸®ÅÏÇÏ°Ô µÇ¸é »ç¿ëÀÚ°¡ ¿äûÇÑ ¹öÆÛ´Â ÃßÃâÇÑ °ª¿¡ ºñÇØ Å©±â°¡ ÃæºÐÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ °æ¿ì, ÇÔ¼ö°¡ ¹öÆÛ¸¦ »ç¿ëÇÏÁö ¾ÊÁö¸¸, ÀÌ °ªÀ» ÃßÃâÇϱâ À§ÇØ ÇÊ¿äÇÑ ¹öÆÛ Å©±â·Î value_length ¸Å°³º¯¼ö¸¦ °»½ÅÇÕ´Ï´Ù. Å©±â°¡ ÃÖ¼ÒÇÑ ¸®ÅÏµÈ value_lengthÀÎ ¹öÆÛ¸¦ »ç¿ëÇÏ¿© ´Ù½Ã ÃßÃâÇϽʽÿÀ.

ÁÖ:
ÃßÃâ ÁßÀÎ º¯¼ö°¡ HTTP Çì´õ¿ëÀÎ °æ¿ì ¿äûÀÌ µ¿ÀÏÇÑ À̸§ÀÇ ¿©·¯ Çì´õ¸¦ Æ÷ÇÔÇÏ´õ¶óµµ HTTPD_extract() ÇÔ¼ö°¡ ù ¹øÂ° ÀÏÄ¡ÇÏ´Â ¾îÄ¿·±½º¸¸ ÃßÃâÇÕ´Ï´Ù. httpd_getvar() ÇÔ¼ö°¡ HTTPD_extract() ´ë½Å »ç¿ëµÉ ¼ö ÀÖÀ¸¸ç ´Ù¸¥ ÀåÁ¡À» Á¦°øÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â *** ÆäÀÌÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.
HTTPD_file()
ÀÌ ¿äûÀ» ÃæÁ·½Ã۱â À§ÇØ ÆÄÀÏÀ» Àü¼ÛÇÕ´Ï´Ù. »çÀüÁ¾·á, ¼­ºñ½º, ¿À·ù, »çÈÄ ±ÇÇÑ ºÎ¿© ¹× º¯ÇüÀÚ ´Ü°è¿¡¼­¸¸ À¯È¿ÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_file (
         unsigned char *handle,        /* i; handle */
         unsigned char *name,          /* i; name of file to send */
         unsigned long *name_length,   /* i; length of the name */
         long *return_code             /* o; return code */
         )
httpd_getvar()
»ç¿ëÀÚ°¡ Àμö ±æÀ̸¦ ÁöÁ¤ÇÒ Çʿ䰡 ¾ø±â ¶§¹®¿¡ »ç¿ëÇϱ⠽±´Ù´Â °ÍÀ» Á¦¿ÜÇϰí´Â HTTPD_extract()¿Í °°½À´Ï´Ù.

const  unsigned char *          /* o; value of variable */
HTTPD_LINKAGE
httpd_getvar(
    unsigned char *handle,       /* i; handle */
    unsigned char *name,         /* i; variable name */
    unsigned long *n             /* i; index number for the array
                                       containing the header */
   )			       

Çì´õ¸¦ Æ÷ÇÔÇÏ´Â ¹è¿­ÀÇ »öÀÎ ¹øÈ£´Â 0ºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù. ¹è¿­ÀÇ Ã¹ ¹øÂ° Ç׸ñÀ» °¡Á® ¿À·Á¸é n °ªÀ¸·Î 0À» »ç¿ëÇϰí, ´Ù¼¸ ¹øÂ° Ç׸ñÀ» °¡Á® ¿À·Á¸é n °ªÀ¸·Î 4¸¦ »ç¿ëÇϽʽÿÀ.

ÁÖ:
¸®ÅÏµÈ °ªÀÇ ³»¿ëÀ» ¹ö¸®°Å³ª º¯°æÇÏÁö ¸»¾Æ¾ß ÇÕ´Ï´Ù. ¸®ÅÏµÈ ¹®ÀÚ¿­Àº ³Î·Î Á¾·áµË´Ï´Ù.
HTTPD_log_access()
¼­¹öÀÇ ¾×¼¼½º ·Î±×¿¡ ¹®ÀÚ¿­À» ±â·ÏÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_log_access (
         unsigned char *handle,          /* i; handle */
         unsigned char *value,           /* i; data to write */
         unsigned long *value_length,    /* i; length of the data */
         long *return_code               /* o; return code */
         )  

¼­¹ö ¾×¼¼½º ·Î±×¿¡¼­ ÆÛ¼¾Æ® ±âÈ£(%)¸¦ ±â·ÏÇÒ °æ¿ì ¿¡½ºÄÉÀÌÇÁ ±âÈ£´Â ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.

HTTPD_log_error()
¼­¹öÀÇ ¿À·ù ·Î±×¿¡ ¹®ÀÚ¿­À» ±â·ÏÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_log_error (
         unsigned char *handle,          /* i; handle */
         unsigned char *value,           /* i; data to write */
         unsigned long *value_length,    /* i; length of the data */
         long *return_code               /* o; return code */
         )

¼­¹ö ¿À·ù ·Î±×¿¡¼­ ÆÛ¼¾Æ® ±âÈ£(%)¸¦ ±â·ÏÇÒ °æ¿ì ¿¡½ºÄÉÀÌÇÁ ±âÈ£°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.

HTTPD_log_event()
¼­¹öÀÇ À̺¥Æ® ·Î±×¿¡ ¹®ÀÚ¿­À» ±â·ÏÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_log_event (
         unsigned char *handle,          /* i; handle */
         unsigned char *value,           /* i; data to write */
         unsigned long *value_length,    /* i; length of the data */
         long *return_code               /* o; return code */
         )

¼­¹ö À̺¥Æ® ·Î±×¿¡¼­ ÆÛ¼¾Æ® ±âÈ£(%)¸¦ ±â·ÏÇÒ °æ¿ì ¿¡½ºÄÉÀÌÇÁ ±âÈ£°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.

HTTPD_log_trace()
ÀÌ·¸°Ô µÇ¸é ¼­¹öÀÇ ÃßÀû ·Î±×¿¡ ¹®ÀÚ¿­À» ±â·ÏÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_log_trace (
         unsigned char *handle,          /* i; handle */
         unsigned char *value,           /* i; data to write */
         unsigned long *value_length,    /* i; length of the data */
         long *return_code               /* o; return code */
         )

¼­¹ö ÃßÀû ·Î±×¿¡¼­ ÆÛ¼¾Æ® ±âÈ£(%)¸¦ ±â·ÏÇÒ °æ¿ì ¿¡½ºÄÉÀÌÇÁ ±âÈ£°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.

HTTPD_open()
(º¯ÇüÀÚ ´Ü°è¿¡¼­¸¸ À¯È¿ÇÕ´Ï´Ù.) ½ºÆ®¸² ½ºÅÃÀÇ ´ÙÀ½ ·çƾÀ¸·Î Á¦¾î¸¦ Àü¼ÛÇÕ´Ï´Ù. ÀÏ´Ü ¿øÇÏ´Â Çì´õ°¡ ¼³Á¤µÇ°í ÀÛ¼º ·çƾÀÇ ½ÃÀÛÀÌ ÁغñµÇ¸é À̸¦ º¯ÇüÀÚ open, write, close ÇÔ¼ö¿¡¼­ È£ÃâÇϽʽÿÀ.

void  HTTPD_LINKAGE  HTTPD_open (
         unsigned char *handle,     /* i; handle */
         long *return_code          /* o; return code */
         )	
HTTPD_proxy()
ÇÁ·Ï½Ã ¿äûÀ» ÇÕ´Ï´Ù. »çÀüÁ¾·á, ¼­ºñ½º ¹× »çÈÄ ±ÇÇÑ ºÎ¿© ´Ü°è¿¡¼­ À¯È¿ÇÕ´Ï´Ù.
ÁÖ:
À̰ÍÀº ¿Ï·á ÇÔ¼ö·Î¼­ ÀÌ ÇÔ¼ö ´ÙÀ½¿¡ ¿äûÀÌ ¿Ï·áµË´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_proxy (
         unsigned char *handle,        /* i; handle */
         unsigned char *url_name,      /* i; URL for the
                                             proxy request */
         unsigned long *name_length,   /* i; length of URL */
         void *request_body,           /* i; body of request */
         unsigned long *body_length,   /* i; length of body */
         long *return_code             /* o; return code */
         ) 
HTTPD_read()
Ŭ¶óÀÌ¾ðÆ® ¿äûÀÇ º»¹®À» ÀнÀ´Ï´Ù. Çì´õ¿¡ HTTPD_extract()¸¦ »ç¿ëÇÕ´Ï´Ù. »çÀüÁ¾·á, ±ÇÇÑ ºÎ¿©, »çÈÄ ±ÇÇÑ ºÎ¿© ¹× ¼­ºñ½º ´Ü°è¿¡¼­¸¸ À¯È¿Çϸç, PUT ¶Ç´Â POST ¿äûÀÌ ¼öÇàµÈ °æ¿ì¿¡¸¸ À¯¿ëÇÕ´Ï´Ù. HTTPD_EOF°¡ ¸®Å쵃 ¶§±îÁö ·çÇÁ¿¡¼­ ÇÔ¼ö¸¦ È£ÃâÇϽʽÿÀ. ÀÌ ¿äû¿¡ ´ëÇÑ º»¹®ÀÌ ¾ø´Â °æ¿ì ÀÌ ÇÔ¼ö´Â ½ÇÆÐÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_read (
         unsigned char *handle,          /* i; handle */
         unsigned char *value,           /* i; buffer for data */
         unsigned long *value_length,    /* i/o; buffer size
                                                 (data length) */
         long *return_code               /* o; return code */
         )
HTTPD_restart()
¸ðµç Ȱ¼ºÈ­ ¿äûÀÌ Ã³¸®µÈ ÈÄ ¼­¹ö¸¦ Àç½ÃÀÛÇÕ´Ï´Ù. ¼­¹ö ÃʱâÈ­, ¼­¹ö Á¾·á ¹× º¯ÇüÀÚ¸¦ Á¦¿ÜÇÑ ¸ðµç ´Ü°è°¡ À¯È¿ÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_restart (
         long *return_code         /* o; return code */
         )
HTTPD_set()
ÀÌ ¿äû°ú ¿¬°üµÈ º¯¼ö °ªÀ» ¼³Á¤ÇÕ´Ï´Ù. name ¸Å°³º¯¼ö¿¡ ´ëÇÑ À¯È¿ÇÑ º¯¼ö´Â CGI¿¡¼­ »ç¿ëµÈ °Í°ú µ¿ÀÏÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â º¯¼öÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.

ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é º¯¼öµµ ÀÛ¼ºÇÒ ¼ö ÀÖÀ½¿¡ À¯ÀÇÇϽʽÿÀ. »ç¿ëÀÚ°¡ ÀÛ¼ºÇÑ º¯¼ö´Â º¯¼ö¿¡ ¼³¸íµÈ HTTP_ ¹× PROXY_ Á¢µÎºÎ¿¡ ´ëÇÑ Çù¾à¿¡ ÀÇÁ¸ÇÕ´Ï´Ù. HTTP_·Î ½ÃÀÛÇÏ´Â º¯¼ö¸¦ ÀÛ¼ºÇÏ¸é ±× ÀÀ´äÀ¸·Î, HTTP_ Á¢µÎºÎ¾øÀÌ Å¬¶óÀÌ¾ðÆ®¿¡ Çì´õ·Î Àü¼ÛµË´Ï´Ù. ¿¹¸¦ µé¾î, À§Ä¡ Çì´õ¸¦ ¼³Á¤ÇÏ·Á¸é º¯¼ö À̸§ HTTP_LOCATION°ú ÇÔ²² HTTPD_set()À» »ç¿ëÇϽʽÿÀ. PROXY_ prefix·Î ÀÛ¼ºµÈ º¯¼ö´Â ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇØ ¿äûÇÑ Çì´õ·Î Àü¼ÛµË´Ï´Ù. CGI_ Á¢µÎºÎ·Î ÀÛ¼ºµÈ º¯¼ö´Â CGI ÇÁ·Î±×·¥¿¡ Àü´ÞµË´Ï´Ù.

ÀÌ ÇÔ¼ö´Â ¸ðµç ´Ü°è¿¡¼­ À¯È¿ÇÏÁö¸¸ ¸ðµç º¯¼ö°¡ ¸ðµç ´Ü°è¿¡¼­ À¯È¿ÇÏÁö´Â ¾Ê½À´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_set (
         unsigned char *handle,        /* i; handle */
         unsigned char *name,          /* i; name of value to set */
         unsigned long *name_length,   /* i; length of the name */
         unsigned char *value,         /* i; buffer with value */
         unsigned long *value_length,  /* i; length of value */
         long *return_code             /* o; return code */
         ) 
ÁÖ:
httpd_setvar() function ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ¹öÆÛ ¹× ±æÀ̸¦ ÁöÁ¤ÇÏÁö ¾Ê°íµµ º¯¼ö °ªÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â *** ÆäÀÌÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.
httpd_setvar()
»ç¿ëÀÚ°¡ Àμö ±æÀ̸¦ ÁöÁ¤ÇÒ Çʿ䰡 ¾ø¾î¼­ »ç¿ëÇϱ⠽±´Ù´Â °ÍÀ» Á¦¿ÜÇϰí´Â HTTPD_extract()¿Í °°½À´Ï´Ù.

long             /* o; return code */
HTTPD_LINKAGE   httpd_setvar (
       unsigned char *handle,       /* i; handle */
       unsigned char *name,         /* i; variable name */
       unsigned char *value,        /* i; new value */
       unsigned long *addHdr        /* i; add header or replace it */
       )
addHdr

¸Å°³º¯¼öÀÇ °¡´ÉÇÑ °ª¿¡´Â ³× °³°¡ ÀÖ½À´Ï´Ù.

ÀÌ °ªÀº HTAPI.h¿¡¼­ Á¤Àǵ˴ϴÙ.

httpd_variant_insert()
º¯ÇüÀ» ij½Ã¿¡ »ðÀÔÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  httpd_variant_insert (
         unsigned char *handle,    /* i; handle */
         unsigned char *URI,       /* i; URI of this object */
         unsigned char *dimension, /* i; dimension of variation */
         unsigned char *variant,   /* i; value of the variant */
         unsigned char *filename,  /* i; file containing the object */
         long *return_code         /* o; return code */
         )

ÁÖ:

  1. dimension Àμö´Â URI¿¡¼­ Çì´õ¿¡ µû¶ó º¯°æµÇ´Â ¿ÀºêÁ§Æ®ÀÇ Çì´õ¸¦ ³ªÅ¸³À´Ï´Ù. ¿¹¸¦ µé¸é, À§ÀÇ ¿¹Á¦¿¡¼­ dimension °ªÀº User-Agent°¡ µÉ ¼ö ÀÖ½À´Ï´Ù.
  2. variant Àμö´Â dimension Àμö¿¡¼­ ÁÖ¾îÁø Çì´õ °ªÀ» ³ªÅ¸³À´Ï´Ù. À̰ÍÀº URI¿¡¼­ º¯°æµË´Ï´Ù. ¿¹¸¦ µé¸é, À§ÀÇ ¿¹Á¦¿¡¼­ variant ÀμöÀÇ °ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.
    Mozilla 4.0 (compatible; BatBrowser 94.1.2; Bat OS)
  3. filename Àμö´Â º¯°æµÈ ³»¿ëÀ» ÀúÀåÇϰí ÀÖ´Â ÆÄÀÏ À̸§ÀÇ ³Î Á¾·á »çº»À» ÁöÁ¤ÇÏ°Ô µË´Ï´Ù. »ç¿ëÀÚ¿¡°Ô´Â ÀÌ Á¶Ä¡°¡ ÀÌ ÇÔ¼ö·ÎºÎÅÍ ¸®ÅÏµÈ ÈÄ ÆÄÀÏÀ» Á¦°ÅÇÒ Ã¥ÀÓÀÌ ÀÖ½À´Ï´Ù. ÆÄÀÏ¿¡´Â Çì´õ ¾øÀÌ º»¹®¸¸ Æ÷ÇԵ˴ϴÙ.
  4. º¯ÇüÀ» ij½ÃÇÒ ¶§ ¼­¹ö´Â ³»¿ë ±æÀÌ Çì´õ¸¦ °»½ÅÇϰí, "Warning: 214" Çì´õ¸¦ Ãß°¡ÇÕ´Ï´Ù. Strong ¿£Æ¼Æ¼ ű״ Á¦°ÅµË´Ï´Ù.
httpd_variant_lookup()
ÁÖ¾îÁø º¯ÇüÀÌ Ä³½Ã¿¡ ÀÖ´ÂÁö ÆÇº°ÇÕ´Ï´Ù.

void  HTTPD_LINKAGE  httpd_variant_lookup (
    unsigned char *handle,             /* i; handle */
    unsigned char *URI,                /* URI of this object */
    unsigned char *dimension,          /* i; dimension of variation */
    unsigned char *variant,            /* i; value of the variant */
             long *return_code);       /* o; return code */
HTTPD_write()
ÀÀ´äÀÇ º»¹®À» ±â·ÏÇÕ´Ï´Ù. »çÀüÁ¾·á, ¼­ºñ½º, ¿À·ù ¹× º¯ÇüÀÚ ´Ü°è¿¡¼­ À¯È¿ÇÕ´Ï´Ù.

³»¿ë À¯ÇüÀ» ¼³Á¤ÇÏ¿© ÀÌ ÇÔ¼ö¸¦ óÀ½À¸·Î È£ÃâÇÒ °æ¿ì, ¼­¹ö´Â »ç¿ëÀÚ°¡ CGI µ¥ÀÌÅÍ ½ºÆ®¸²À» Àü¼ÛÇϰí ÀÖ´Â °ÍÀ¸·Î ¹Þ¾ÆµéÀÔ´Ï´Ù.

void  HTTPD_LINKAGE  HTTPD_write (
         unsigned char *handle,        /* i; handle */
         unsigned char *value,         /* i; data to send */
         unsigned char *value_length,  /* i; length of the data */
             long *return_code);       /* o; return code */
ÁÖ:
ÀÀ´ä Çì´õ¸¦ ¼³Á¤ÇÏ·Á¸é *** ÆäÀÌÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.
ÁÖ:
HTTPD_* ÇÔ¼ö°¡ ¸®ÅÏµÈ ÈÄ¿¡´Â ÀÌ¿Í ÇÔ²² Àü´ÞÇß´ø ¸Þ¸ð¸®¸¦ Á¦°ÅÇØµµ ¾ÈÀüÇÕ´Ï´Ù.

»çÀü Á¤ÀÇ ÇÔ¼ö ¹× ¸ÅÅ©·ÎÀÇ ¸®ÅÏ ÄÚµå

¼­¹ö´Â ¿äûÀÇ ¼º°ø ¿©ºÎ¿¡ µû¶ó ¸®ÅÏ ÄÚµå ¸Å°³º¯¼ö¸¦ ÀÌµé °ª Áß Çϳª·Î ¼³Á¤ÇÕ´Ï´Ù.

Ç¥ 3. ¸®ÅÏ ÄÚµå
°ª »óÅ ÄÚµå ¼³¸í
-1 HTTPD_UNSUPPORTED ÀÌ ÇÔ¼ö´Â Áö¿øµÇÁö ¾Ê½À´Ï´Ù.
0 HTTPD_SUCCESS ÇÔ¼ö°¡ Á¤»óÀûÀ¸·Î ¼öÇàµÇ¾úÀ¸¸ç Ãâ·Â Çʵ尡 À¯È¿ÇÕ´Ï´Ù.
1 HTTPD_FAILURE ÇÔ¼ö°¡ ½ÇÆÐÇß½À´Ï´Ù.
2 HTTPD_INTERNAL_ERROR ³»ºÎ ¿À·ù°¡ ¹ß»ýÇØ¼­ ÀÌ ¿äûÀ» °è¼Ó ó¸®ÇÒ ¼ö ¾ø½À´Ï´Ù.
3 HTTPD_PARAMETER_ERROR Çϳª ÀÌ»óÀÇ ¿Ã¹Ù¸£Áö ¾ÊÀº ¸Å°³º¯¼ö°¡ Àü´ÞµÇ¾ú½À´Ï´Ù.
4 HTTPD_STATE_CHECK ÀÌ ÇÔ¼ö´Â ÀÌ ÇÁ·Î¼¼½º ´Ü°è¿¡ ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù.
5 HTTPD_READ_ONLY (HTTPD_set ¹× httpd_setvar¿¡ ÀÇÇØ¼­¸¸ ¸®ÅϵÊ.) ÀÌ º¯¼ö´Â Àбâ Àü¿ëÀ̸ç Ç÷¯±×ÀÎÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
6 HTTPD_BUFFER_TOO_SMALL (HTTPD_set, httpd_setvar ¹× HTTPD_read¿¡ ÀÇÇØ ¸®ÅϵÊ.) Á¦°øµÈ ¹öÆÛ°¡ ³Ê¹« ÀÛ½À´Ï´Ù.
7 HTTPD_AUTHENTICATE_FAILED (HTTPD_authenticate¿¡ ÀÇÇØ¼­¸¸ ¸®ÅϵÊ.) ÀÎÁõÀÌ ½ÇÆÐÇß½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â HTTP_RESPONSE ¹× HTTP_REASON º¯¼ö¸¦ Á¡°ËÇϽʽÿÀ.
8 HTTPD_EOF (HTTPD_read¿¡ ÀÇÇØ¼­¸¸ ¸®ÅϵÊ.) ¿äû º»¹®ÀÇ ³¡À» Ç¥½ÃÇÕ´Ï´Ù.
9 HTTPD_ABORT_REQUEST Ŭ¶óÀÌ¾ðÆ®°¡ ¿äû¿¡ ÀÇÇØ ÁöÁ¤µÈ Á¶°Ç¿¡ ÀÏÄ¡ÇÏÁö ¾Ê´Â ¿£Æ¼Æ¼ ű׸¦ Á¦°øÇؼ­, ÀÌ ¿äûÀº Áߴܵ˴ϴÙ.
10 HTTPD_REQUEST_SERVICED (HTTPD_proxy¿¡ ÀÇÇØ¼­¸¸ ¸®ÅϵÊ.) È£ÃâµÈ ÀÌ ÇÔ¼ö°¡ ÀÌ ¿äû¿¡ ´ëÇÑ ÀÀ´äÀ» ¿Ï·áÇß½À´Ï´Ù.
11 HTTPD_RESPONSE_ALREADY_COMPLETED ¿äû¿¡ ´ëÇÑ ÀÀ´äÀÌ ÀÌ¹Ì ¿Ï·áµÇ¾î ÀÌ ÇÔ¼ö°¡ ½ÇÆÐÇß½À´Ï´Ù.
12 HTTPD_WRITE_ONLY ÀÌ º¯¼ö´Â ¾²±â Àü¿ëÀ̸ç Ç÷¯±×ÀÎÀ¸·Î ÀÐÀ» ¼ö ¾ø½À´Ï´Ù.

API ´Ü°è¿¡ ´ëÇÑ Caching Proxy ±¸¼º Áö½Ã¹®

¿äû ÇÁ·Î¼¼½ºÀÇ °¢ ´Ü°è¿¡´Â ±¸¼º Áö½Ã¹®ÀÌ ÀÖ°í ÀÌ´Â °¢ ´Ü°è¿¡¼­ È£ÃâÇÏ¿© ½ÇÇàÇϰíÀÚ ÇÏ´Â Ç÷¯±×ÀÎ ÇÔ¼ö¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. »ç¿ëÀÚ ¼­¹öÀÇ ±¸¼º ÆÄÀÏ(ibmproxy.conf)À» ¼öµ¿À¸·Î ÆíÁý ¶Ç´Â °»½ÅÇϰųª, Caching Proxy ±¸¼º ¹× °ü¸® ¾ç½ÄÀÇ API ¿äû ó¸® ¾ç½ÄÀ» ÀÌ¿ëÇÏ¿© Áö½Ã¹®À» »ç¿ëÀÚ ¼­¹öÀÇ ±¸¼º ÆÄÀÏ¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.

API »ç¿ë½Ã ÁÖÀÇ»çÇ×

API Áö½Ã¹® ¹× ±¸¹®

ÀÌ·¯ÇÑ ±¸¼º ÆÄÀÏ Áö½Ã¹®Àº ibmproxy.conf ÆÄÀÏ¿¡¼­ ÇÑ Çà(¿©±â¼­ ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÑ °ø¹é ¿Ü¿¡´Â °ø¹éÀÌ ¾øÀ½)À¸·Î ³ªÅ¸³³´Ï´Ù. ±¸¹® ¿¹Á¦¿¡¼­ Àб⠽±µµ·Ï ÇàÀ» ¹Ù²Ù¾ú´õ¶óµµ ½ÇÁ¦ Áö½Ã¹®ÀÇ ÀÌ ÁöÁ¡¿¡¼­´Â °ø¹éÀÌ ¾ø¾î¾ß ÇÕ´Ï´Ù.

Ç¥ 4. Caching Proxy Ç÷¯±×ÀÎ API Áö½Ã¹®
ServerInit /path/file:function_name init_string
PreExit /path/file:function_name
Authentication type /path/file:function_name
NameTrans /URL /path/file:function_name
Authorization /URL /path/file:function_name
ObjectType /URL /path/file:function_name
PostAuth /path/file:function_name
Service /URL /path/file:function_name
Midnight /path/file:function_name
Transmogrifier /path/file:open_function_name: write_function_name: close_function_name:error_function
Log /URL /path/file:function_name
Error /URL /path/file:function_name
PostExit /path/file:function_name
ServerTerm /path/file:function_name
ProxyAdvisor /path/file:function_name
GCAdvisor /path/file:function_name

API Áö½Ã¹® º¯¼ö

ÀÌ Áö½Ã¹®µéÀÇ º¯¼ö¿¡´Â ´ÙÀ½°ú °°Àº Àǹ̰¡ ÀÖ½À´Ï´Ù.

type
»ç¿ëÀÚ Ç÷¯±×ÀÎÀÌ È£ÃâµÇ´ÂÁö ¿©ºÎ¸¦ ÁöÁ¤ÇÏ´Â ÀÎÁõ Áö½Ã¹®¿¡¸¸ »ç¿ëµË´Ï´Ù. À¯È¿ÇÑ °ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.
URL
»ç¿ëÀÚ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ È£ÃâµÇ´Â ¿äûÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ÅÛÇø®Æ®¿Í ÀÏÄ¡ÇÏ´Â URLÀÇ ¿äûÀ¸·Î ÀÎÇØ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ »ç¿ëµË´Ï´Ù. ÀÌ Áö½Ã¹®ÀÇ URL ½ºÆåÀº °¡»óÀÌÁö¸¸(ÇÁ·ÎÅäÄÝÀÌ Æ÷ÇԵǾî ÀÖÁö ¾ÊÀ½) ¾Õ¿¡ ½½·¡½Ã(/)°¡ ¿É´Ï´Ù. ¿¹¸¦ µé¾î, /www.ics.raleigh.ibm.comÀº ¿Ã¹Ù¸£Áö¸¸ http://www.ics.raleigh.ibm.comÀº ¿Ã¹Ù¸£Áö ¾Ê½À´Ï´Ù. ÀÌ °ªÀ» ƯÁ¤ URL ¶Ç´Â ÅÛÇø®Æ®·Î ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
path/file
»ç¿ëÀÚÀÇ ÄÄÆÄÀÏµÈ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ¿ÏÀüÇÑ ÆÄÀÏ À̸§
function_name
ÇÁ·Î±×·¥ ³»ÀÇ Ç÷¯±×ÀÎ ÇÔ¼ö¿¡ ºÎ¿©ÇÑ À̸§

Service Áö½Ã¹®¿¡¼­´Â °æ·Î Á¤º¸¿¡ ¾×¼¼½ºÇϰíÀÚ ÇÏ´Â °æ¿ì ÇÔ¼ö À̸§ µÚ¿¡ º°Ç¥(*)¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.

init_string
ServerInit Áö½Ã¹®ÀÇ ÀÌ ¼±ÅÃÀû ÆÄÆ®´Â »ç¿ëÀÚ Ç÷¯±×ÀÎ ÇÔ¼ö¿¡ Àü´ÞÇÏ·Á´Â ÀÓÀÇÀÇ ÅØ½ºÆ®¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. httpd_getvar()À» »ç¿ëÇÏ¿© INIT_STRING º¯¼ö¿¡¼­ ÅØ½ºÆ®¸¦ ÃßÃâÇϽʽÿÀ.

±¸¹®À» Æ÷ÇÔÇÏ¿© ÀÌ Áö½Ã¹®¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â WebSphere Application Server Caching Proxy °ü¸® ¾È³»¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

´Ù¸¥ API¿ÍÀÇ È£È¯¼º

Caching Proxy API´Â ¹öÀü 4.6.1À» ÅëÇØ ICAPI ¹× GWAPI¿ÍÀÇ ¿ªÈ£È¯ÀÌ °¡´ÉÇÕ´Ï´Ù.

CGI ÇÁ·Î±×·¥ Æ÷ÆÃ

Caching Proxy API¸¦ »ç¿ëÇÏ·Á¸é C·Î ÀÛ¼ºµÈ CGI ÀÀ¿ëÇÁ·Î±×·¥À» Æ÷ÆÃÇÏ´Â ÁöħÀ» »ç¿ëÇϽʽÿÀ.

Caching Proxy API ÂüÁ¶ Á¤º¸

º¯¼ö

API ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§, ¿ø°Ý Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö ½Ã½ºÅÛ¿¡ ´ëÇÑ Á¤º¸¸¦ Á¦°øÇÏ´Â Caching Proxy º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÁÖ:

º¯¼ö Á¤ÀÇ

ÁÖ:
HTTP_ ¶Ç´Â PROXY_ Á¢µÎºÎ·Î ½ÃÀÛÇÏÁö ¾Ê´Â Çì´õ º¯¼ö°¡ ¸ðÈ£ÇÕ´Ï´Ù. ¸ðÈ£ÇÑ º¯¼ö¸¦ ¹æÁöÇÏ·Á¸é Ç×»ó Çì´õ¿¡ ´ëÇÑ º¯¼ö À̸§°ú ÇÔ²² HTTP_ ¶Ç´Â PROXY_ Á¢µÎºÎ¸¦ »ç¿ëÇϽʽÿÀ.
ACCEPT_RANGES
ÄÁÅÙÃ÷ ¼­¹ö°¡ ¹üÀ§ ¿äû¿¡ ÀÀ´äÇÒ ¼ö ÀÖ´ÂÁöÀÇ ¿©ºÎ¸¦ ÁöÁ¤ÇÏ´Â Accept-Range ÀÀ´ä Çì´õÀÇ °ªÀ» Æ÷ÇÔÇÕ´Ï´Ù. PROXY_ACCEPT_RANGES¸¦ »ç¿ëÇÏ¿© ÄÁÅÙÃ÷ ¼­¹ö°¡ ÇÁ·Ï½Ã·Î Àü¼ÛÇÏ´Â Çì´õ°ªÀ» ÃßÃâÇϽʽÿÀ.
HTTP_ACCEPT_RANGES¸¦ »ç¿ëÇÏ¿© ÇÁ·Ï½Ã¿¡¼­ Ŭ¶óÀÌ¾ðÆ®·Î Àü¼ÛµÈ Çì´õ °ªÀ» ¼³Á¤ÇϽʽÿÀ.
ÁÖ:
ACCEPT_RANGES´Â ¸ðÈ£ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸ðÈ£¼ºÀ» ¾ø¾Ö·Á¸é HTTP_ACCEPT_RANGES ¹× PROXY_ACCEPT_RANGES¸¦ ´ë½Å »ç¿ëÇϽʽÿÀ.
ALL_VARIABLES
Àбâ Àü¿ë. ¸ðµç CGI º¯¼ö¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ¿¹Á¦:
ACCEPT_RANGES BYTES
CLIENT_ADDR 9.67.84.3
AUTH_STRING
Àбâ Àü¿ë. ¼­¹ö°¡ Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀ» Áö¿øÇÒ °æ¿ì, ÀÌ ¹®ÀÚ¿­¿¡´Â Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀ» À§ÇØ »ç¿ëµÉ ÇØµ¶µÇÁö ¾Ê´Â ÀÚ°Ý»çÇ×ÀÌ Æ÷ÇԵ˴ϴÙ.
AUTH_TYPE
Àбâ Àü¿ë. ¼­¹ö°¡ Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀ» Áö¿øÇÏ°í ½ºÅ©¸³Æ®°¡ º¸È£µÇ´Â °æ¿ì, ÀÌ º¯¼ö¿¡´Â Ŭ¶óÀÌ¾ðÆ® ÀÎÁõ¿¡ »ç¿ëµÇ´Â ¸Þ¼Òµå°¡ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, Basic°ú °°½À´Ï´Ù.
CACHE_HIT
Àбâ Àü¿ë. ÇÁ·Ï½Ã ¿äûÀÌ Ä³½Ã¿¡¼­ ¹ß°ßµÇ¾ú´ÂÁö ¿©ºÎ¸¦ ½Äº°ÇÕ´Ï´Ù. ¸®ÅϵǴ °ª¿¡´Â ´ÙÀ½ÀÌ Æ÷ÇԵ˴ϴÙ.
CACHE_MISS
¾²±â Àü¿ëÀ¸·Î, ij½Ã ½ÇÆÐ(miss)¸¦ °­¿äÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. À¯È¿ÇÑ °ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.
CACHE_TASK
Àбâ Àü¿ë. ij½Ã »ç¿ë ¿©ºÎ¸¦ ½Äº°ÇÕ´Ï´Ù. ¸®ÅϵǴ °ª¿¡´Â ´ÙÀ½ÀÌ Æ÷ÇԵ˴ϴÙ.

ÀÌ º¯¼ö´Â PostAuthorization, PostExit, ProxyAdvisor ¶Ç´Â Log steps¿¡¼­ »ç¿ëµË´Ï´Ù.

CACHE_UPDATE
Àбâ Àü¿ë. ÇÁ·Ï½Ã ¿äûÀÌ Ä³½Ã¸¦ °»½ÅÇß´ÂÁö ¿©ºÎ¸¦ ½Äº°ÇÕ´Ï´Ù. ¸®ÅϵǴ °ª¿¡´Â ´ÙÀ½ÀÌ Æ÷ÇԵ˴ϴÙ.
CLIENT_ADDR ¶Ç´Â CLIENTADDR
REMOTE_ADDR°ú °°½À´Ï´Ù.
CLIENTMETHOD
REQUEST_METHOD¿Í °°½À´Ï´Ù.
CLIENT_NAME ¶Ç´Â CLIENTNAME
REMOTE_HOST¿Í °°½À´Ï´Ù.
CLIENT_PROTOCOL ¶Ç´Â CLIENTPROTOCOL
¿äûÀ» Çϴµ¥ »ç¿ëµÇ´Â ÇÁ·ÎÅäÄÝÀÇ À̸§ ¹× ¹öÀüÀÌ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, HTTP/1.1°ú °°½À´Ï´Ù.
CLIENT_RESPONSE_HEADERS
Àбâ Àü¿ë. ¼­¹ö°¡ Ŭ¶óÀÌ¾ðÆ®·Î Àü¼ÛÇÒ Çì´õ¸¦ Æ÷ÇÔÇÏ´Â ¹öÆÛ¸¦ ¸®ÅÏÇÕ´Ï´Ù.
CONNECTIONS
Àбâ Àü¿ë. ¼öÇàµÇ´Â ¿¬°á ¼ö ¶Ç´Â Ȱ¼ºÈ­µÈ ¿äû ¼ö¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, 15¿Í °°½À´Ï´Ù.
CONTENT_CHARSET
US ASCII¿Í °°Àº ÅØ½ºÆ®/*¿¡ ´ëÇÑ ÀÀ´äÀÇ ¹®ÀÚ ¼¼Æ®ÀÔ´Ï´Ù. ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ¿À´Â ³»¿ë ¹®ÀÚ Çì´õ¿¡ Àû¿ëµË´Ï´Ù. À̸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇÑ ¿äûÀÇ ³»¿ë ¹®ÀÚ ¼¼Æ® Çì´õ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
CONTENT_ENCODING
x-gzip°ú °°Àº ¹®¼­¿¡¼­ »ç¿ëµÈ ÀÎÄÚµùÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ¿À´Â ³»¿ë ÄÚµåÈ­ Çì´õ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. À̸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇÑ ¿äûÀÇ ³»¿ë ¹®ÀÚ ¼¼Æ® Çì´õ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
CONTENT_LENGTH
ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé Ŭ¶óÀÌ¾ðÆ® ¿äûÀ¸·ÎºÎÅÍÀÇ Çì´õ¿¡ Àû¿ëµË´Ï´Ù. À̸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇØ ¿äûÇÑ Çì´õ °ª¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

ÁÖ:
CONTENT_LENGTH°¡ ¸ðÈ£ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸ðÈ£¼ºÀ» ¾ø¾Ö·Á¸é HTTP_CONTENT_LENGTH¿Í PROXY_CONTENT_LENGTH¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
CONTENT_TYPE
ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé Ŭ¶óÀÌ¾ðÆ® ¿äûÀ¸·ÎºÎÅÍÀÇ Çì´õ¿¡ Àû¿ëµË´Ï´Ù. À̸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇØ ¿äûÇÑ Çì´õ °ª¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

ÁÖ:
CONTENT_TYPEÀÌ ¸ðÈ£ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸ðÈ£¼ºÀ» ¾ø¾Ö·Á¸é
HTTP_CONTENT_TYPE°ú PROXY_CONTENT_TYPEÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
CONTENT_TYPE_PARAMETERS
¹®ÀÚ ¼¼Æ®°¡ ¾Æ´Ñ ´Ù¸¥ MIME ¼Ó¼ºÀ» Æ÷ÇÔÇÕ´Ï´Ù. ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ¿äûµÈ Çì´õ °ª¿¡ Àû¿ëµË´Ï´Ù. À̸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇØ ¿äûÇÑ Çì´õ °ª¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
DOCUMENT_URL
URL(Uniform Request Locator)À» Æ÷ÇÔÇÕ´Ï´Ù. ¿¹Á¦:
http://www.anynet.com/~userk/main.htm
DOCUMENT_URI
DOCUMENT_URL°ú °°½À´Ï´Ù.
DOCUMENT_ROOT
Àбâ Àü¿ë. Àü´Þ ±ÔÄ¢À¸·Î Á¤ÀÇµÈ ¹®¼­ ·çÆ® °æ·Î¸¦ Æ÷ÇÔÇÕ´Ï´Ù..
ERRORINFO
¿À·ù ÆäÀÌÁö¸¦ ÆÇº°Çϱâ À§ÇÑ ¿À·ù Äڵ带 ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, blocked¿Í °°½À´Ï´Ù.
EXPIRES
ÇÁ·Ï½Ã ij½Ã¿¡ ÀúÀåµÈ ¹®¼­µéÀÇ À¯È¿ ±â°£À» ³ªÅ¸³À´Ï´Ù. ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé Ŭ¶óÀÌ¾ðÆ® ¿äûÀ¸·ÎºÎÅÍÀÇ Çì´õ¿¡ Àû¿ëµË´Ï´Ù. À̸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇØ ¿äûÇÑ Çì´õ °ª¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ¿¹Á¦:
Mon, 01 Mar 2002 19:41:17 GMT
GATEWAY_INTERFACE
Àбâ Àü¿ë. ¼­¹ö°¡ »ç¿ëÇϰí ÀÖ´Â API ¹öÀüÀÌ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, ICSAPI/2.0°ú °°½À´Ï´Ù.
GC_BIAS
¾²±â Àü¿ëÀ¸·Î, ÀÌ ºÎµ¿ ¼Ò¼öÁ¡ °ªÀº °¡ºñÁö ÄÝ·º¼Ç¿¡ ´ëÇØ °í·ÁµÇ´Â ÆÄÀÏ¿¡ ´ëÇÑ °¡ºñÁö ÄÝ·º¼Ç °áÁ¤¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ÀÔ·ÂµÈ °ª¿¡ Caching Proxy ÆÄÀÏ Çü½ÄÀÇ Ç°Áú ¼³Á¤À» °öÇÏ¿© ¼øÀ§¸¦ °áÁ¤ÇÕ´Ï´Ù. ǰÁú ¼³Á¤Àº ¹üÀ§°¡ 0.0 - 0.1À̰í ÇÁ·Ï½Ã ±¸¼º ÆÄÀÏ(ibmproxy.conf)ÀÇ AddType Áö½Ã¹®À¸·Î Á¤Àǵ˴ϴÙ.
GC_EVALUATION
¾²±â Àü¿ëÀ¸·Î, ÀÌ ºÎµ¿ ¼Ò¼öÁ¡ °ªÀº °¡ºñÁö ÄÝ·º¼Ç¿¡ ´ëÇØ °í·ÁµÇ´Â ÆÄÀÏ¿¡ ´ëÇÏ¿© Á¦°Å(0.0)ÇÒ °ÍÀÎÁö ¶Ç´Â º¸°ü(1.0)ÇÒ °ÍÀÎÁö¸¦ ÆÇº°ÇÕ´Ï´Ù. 0.0 - 1.0 »çÀÌ °ªÀÇ ¼ø¼­´Â ¼øÀ§¿¡ µû¶ó ÁöÁ¤µË´Ï´Ù. Áï, GC_EVALUATION 0.1 °ªÀÇ ÆÄÀÏÀº GC_EVALUATION 0.9 °ªÀÇ ÆÄÀϺ¸´Ù ´õ Á¦°ÅµÇ±â ½±½À´Ï´Ù.
GC_EXPIRES
Àбâ Àü¿ë. ÇØ´ç ÆÄÀÏÀÌ Ä³½Ã¿¡¼­ ¸¸±âµÉ ¶§±îÁö ¸î Ãʰ¡ ³²¾ÆÀÖ´ÂÁö ½Äº°ÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â GC ¾îµå¹ÙÀÌÀú Ç÷¯±×Àθ¸ÀÌ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
GC_FILENAME
Àбâ Àü¿ë. °¡ºñÁö ÄÝ·º¼Ç¿¡ ´ëÇØ °í·ÁµÇ´Â ÆÄÀÏÀ» ½Äº°ÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â GC ¾îµå¹ÙÀÌÀú Ç÷¯±×Àθ¸ÀÌ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
GC_FILESIZE
Àбâ Àü¿ë. °¡ºñÁö ÄÝ·º¼Ç¿¡ ´ëÇØ °í·ÁµÇ´Â ÆÄÀÏ Å©±â¸¦ ½Äº°ÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â GC ¾îµå¹ÙÀÌÀú Ç÷¯±×Àθ¸ÀÌ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
GC_LAST_ACCESS
Àбâ Àü¿ë. ÆÄÀÏÀÌ ¸¶Áö¸·À¸·Î ¾×¼¼½ºµÈ ½Ã±â¸¦ ½Äº°ÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â GC ¾îµå¹ÙÀÌÀú Ç÷¯±×Àθ¸ÀÌ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
GC_LAST_CHECKED
Àбâ Àü¿ë. ÆÄÀÏÀÌ ¸¶Áö¸·À¸·Î È®ÀÎµÈ ½Ã±â¸¦ ½Äº°ÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â GC ¾îµå¹ÙÀÌÀú Ç÷¯±×Àθ¸ÀÌ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
GC_LOAD_DELAY
Àбâ Àü¿ë. ÆÄÀÏÀ» °Ë»öÇÏ´Â µ¥ °É¸®´Â ±â°£À» ½Äº°ÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â GC ¾îµå¹ÙÀÌÀú Ç÷¯±×Àθ¸ÀÌ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
HTTP_COOKIE
Àб⸦ ÇÒ ¶§ º¯¼ö´Â Ŭ¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ¼­ ¼³Á¤µÈ Set-Cookie Çì´õ °ªÀ» Æ÷ÇÔÇÕ´Ï´Ù. ¶ÇÇÑ ÀÀ´ä ½ºÆ®¸²¿¡¼­ »õ Äí۸¦ ¼³Á¤ÇÏ´Â µ¥ »ç¿ëµÉ ¼öµµ ÀÖ½À´Ï´Ù(ÇÁ·Ï½Ã¿Í Ŭ¶óÀÌ¾ðÆ® »çÀÌ). ÀÌ º¯¼ö¸¦ ¼³Á¤ÇÏ¸é º¹Á¦ Çì´õÀÇ Á¸Àç ¿©ºÎ¸¦ ¸··ÐÇÏ°í ¹®¼­ ¿äû ½ºÆ®¸² ³»ÀÇ »õ·Î¿î Set-Cookie Çì´õ¸¦ ÀÛ¼ºÇÏ°Ô µË´Ï´Ù.
HTTP_HEADERS
Àбâ Àü¿ë. ¸ðµç Ŭ¶óÀÌ¾ðÆ® ¿äû Çì´õ¸¦ ÃßÃâÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.
HTTP_REASON
ÀÌ º¯¼ö¸¦ ¼³Á¤Çϸé HTTP ÀÀ´äÀÇ ÀÌÀ¯ ¹®ÀÚ¿­¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ¶ÇÇÑ Å¬¶óÀÌ¾ðÆ®¿¡ ´ëÇÑ ÇÁ·Ï½ÃÀÇ ÀÀ´äÀÇ ÀÌÀ¯ ¹®ÀÚ¿­¿¡µµ ¿µÇâÀ» ÁÝ´Ï´Ù. ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡¼­ ÇÁ·Ï½Ã·Î ÀÀ´äÀÇ ÀÌÀ¯ ¹®ÀÚ¿­À» ¸®ÅÏÇÕ´Ï´Ù.
HTTP_RESPONSE
ÀÌ º¯¼ö¸¦ ¼³Á¤Çϸé HTTP ÀÀ´äÀÇ ÀÀ´ä Äڵ忡 ¿µÇâÀ» ÁÝ´Ï´Ù. ¶ÇÇÑ Å¬¶óÀÌ¾ðÆ®¿¡ ´ëÇÑ ÇÁ·Ï½ÃÀÇ ÀÀ´äÀÇ »óÅ Äڵ忡µµ ¿µÇâÀ» ÁÝ´Ï´Ù. ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡¼­ ÇÁ·Ï½Ã·Î ÀÀ´äÀÇ »óÅ Äڵ带 ¸®ÅÏÇÕ´Ï´Ù.
HTTP_STATUS
HTTP ÀÀ´ä ÄÚµå ¹× ÀÌÀ¯ ¹®ÀÚ¿­ÀÌ µé¾î ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, 200 OK¿Í °°½À´Ï´Ù.
HTTP_USER_AGENT
Ŭ¶óÀÌ¾ðÆ® À¥ ºê¶ó¿ìÀú(¿¹: Netscape Navigator / V2.02)ÀÇ À̸§ÀÎ »ç¿ëÀÚ ¿¡ÀÌÀüÆ® ¿äû Çì´õ¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ÀÌ º¯¼ö¸¦ ¼³Á¤Çϸé Ŭ¶óÀÌ¾ðÆ®¿¡ ´ëÇÑ ÇÁ·Ï½ÃÀÇ ÀÀ´ä Çì´õ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. À̸¦ ÃßÃâÇϸé Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ¿äûµÈ Çì´õ¿¡ Àû¿ëµË´Ï´Ù.
INIT_STRING
Àбâ Àü¿ë. ServerInit Áö½Ã¹®ÀÌ ÀÌ ¹®ÀÚ¿­À» Á¤ÀÇÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â ¼­¹ö ÃʱâÈ­ ´Ü°è¿¡¼­¸¸ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.
LAST_MODIFIED
ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ¿äûµÈ Çì´õ °ª¿¡ Àû¿ëµË´Ï´Ù. À̸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇØ ¿äûÇÑ Çì´õ °ª¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ¿¹Á¦:
Mon, 01 Mar 1998 19:41:17 GMT
LOCAL_VARIABLES
Àбâ Àü¿ë. ¸ðµç »ç¿ëÀÚ Á¤ÀÇ º¯¼öÀÔ´Ï´Ù.
MAXACTIVETHREADS
Àбâ Àü¿ë. ÃÖ´ë Ȱ¼º ½º·¹µåÀÔ´Ï´Ù.
NOTMODIFIED_TO_OK
Ŭ¶óÀÌ¾ðÆ®¿¡ ´ëÇÑ ¿ÏÀü ÀÀ´äÀ» °­¿äÇÕ´Ï´Ù. PreExit ¹× ProxyAdvisor ´Ü°è¿¡¼­ À¯È¿ÇÕ´Ï´Ù.
ORIGINAL_HOST
Àбâ Àü¿ë. ¿äûÀÇ È£½ºÆ® À̸§ ¶Ç´Â ´ë»ó IP ÁÖ¼Ò¸¦ ¸®ÅÏÇÕ´Ï´Ù.
ORIGINAL_URL
Àбâ Àü¿ë. Ŭ¶óÀÌ¾ðÆ® ¿äû¿¡¼­ Àü¼ÛµÇ´Â ¿ø·¡ URLÀ» ¸®ÅÏÇÕ´Ï´Ù.
OVERRIDE_HTTP_NOTRANSFORM
Cache-Control: no-transform Çì´õ°¡ ÀÖÀ» °æ¿ì µ¥ÀÌÅÍ ¼öÁ¤À» Çã¿ëÇÕ´Ï´Ù. ÀÌ º¯¼ö¸¦ ¼³Á¤Çϸé Ŭ¶óÀÌ¾ðÆ®¿¡ ´ëÇÑ ÀÀ´ä Çì´õ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
OVERRIDE_PROXY_NOTRANSFORM
Cache-Control: no-transform Çì´õ°¡ ÀÖÀ» °æ¿ì µ¥ÀÌÅÍ ¼öÁ¤À» Çã¿ëÇÕ´Ï´Ù. ÀÌ º¯¼ö¸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇÑ ¿äû¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
PASSWORD
±âº» ÀÎÁõÀ» À§ÇÑ º¯¼ö·Î, ÇØµ¶µÈ ¾ÏÈ£¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, password¿Í °°½À´Ï´Ù.
PATH
¿ÏÀüÈ÷ º¯È¯µÈ °æ·Î¸¦ Æ÷ÇÔÇÕ´Ï´Ù.
PATH_INFO
À¥ ºê¶ó¿ìÀú¿¡ ÀÇÇØ Àü¼ÛµÈ Ãß°¡ °æ·Î Á¤º¸°¡ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, /foo¿Í °°½À´Ï´Ù.
PATH_TRANSLATED
PATH_INFO¿¡ Æ÷ÇÔµÈ °æ·Î Á¤º¸ÀÇ ÇØµ¶µÇ°Å³ª º¯È¯µÈ ¹öÀüÀÌ Æ÷ÇԵ˴ϴÙ. ¿¹Á¦:
d:\wwwhome\foo
/wwwhome/foo
PPATH
ºÎºÐÀûÀ¸·Î º¯È¯µÈ °æ·Î¸¦ Æ÷ÇÔÇÕ´Ï´Ù. À̸§ º¯È¯ ´Ü°è¿¡¼­ À̸¦ »ç¿ëÇϽʽÿÀ.
PROXIED_CONTENT_LENGTH
Àбâ Àü¿ë. ÇÁ·Ï½Ã ¼­¹ö¸¦ ÅëÇØ ½ÇÁ¦·Î Àü¼ÛµÇ´Â ÀÀ´ä µ¥ÀÌÅÍÀÇ ±æÀ̸¦ ¸®ÅÏÇÕ´Ï´Ù.
PROXY_ACCESS
¿äûÀÌ ÇÁ·Ï½Ã ¿äûÀÎÁö ¿©ºÎ¸¦ Á¤ÀÇÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, NO¿Í °°½À´Ï´Ù.
PROXY_CONTENT_TYPE
HTTPD_proxy()¸¦ ÅëÇØ ÀÌ·ç¾îÁø ÇÁ·Ï½Ã ¿äûÀÇ ÄÁÅÙÃ÷ À¯Çü Çì´õ¸¦ Æ÷ÇÔÇÕ´Ï´Ù. POST ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© Á¤º¸¸¦ Àü¼ÛÇÒ °æ¿ì, ÀÌ º¯¼ö¿¡´Â Æ÷ÇÔµÈ µ¥ÀÌÅÍÀÇ À¯ÇüÀÌ µé¾î ÀÖ½À´Ï´Ù. ÇÁ·Ï½Ã ¼­¹ö ±¸¼º ÆÄÀÏ¿¡ »ç¿ëÀÚ°¡ Á÷Á¢ ÄÁÅÙÃ÷ À¯ÇüÀ» ÀÛ¼ºÇϰí À̸¦ Ç¥½Ã±â¿¡ ¸ÊÇÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé ÄÁÅÙÃ÷ ¼­¹ö ÀÀ´äÀ¸·ÎºÎÅÍ ¹ÞÀº Çì´õ°ª¿¡ Àû¿ëµË´Ï´Ù. À̸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇØ ¿äûÇÑ Çì´õ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ¿¹Á¦:
application/x-www-form-urlencoded
PROXY_CONTENT_LENGTH
HTTPD_proxy()¸¦ ÅëÇØ ÀÌ·ç¾îÁø ÇÁ·Ï½Ã ¿äûÀÇ ÄÁÅÙÃ÷ ±æÀÌ Çì´õ¸¦ Æ÷ÇÔÇÕ´Ï´Ù. Á¤º¸°¡ POST ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© Àü¼ÛµÉ ¶§, ÀÌ º¯¼ö¿¡´Â µ¥ÀÌÅÍÀÇ ¹®ÀÚ ¼ö°¡ Æ÷ÇԵ˴ϴÙ. Ç¥ÁØ ÀÔ·ÂÀ» »ç¿ëÇÏ¿© Á¤º¸¸¦ Àü´ÞÇÒ ¶§ ´ë°³ÀÇ °æ¿ì ¼­¹ö´Â ÆÄÀÏ ³¡ Ç÷¡±×¸¦ Àü¼ÛÇÏÁö ¾Ê½À´Ï´Ù. ÇÊ¿äÇÑ °æ¿ì, CONTENT_LENGTH °ªÀ» »ç¿ëÇÏ¿© ÀÔ·Â ¹®ÀÚ¿­ ³¡À» ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé ÄÁÅÙÃ÷ ¼­¹ö ÀÀ´äÀ¸·ÎºÎÅÍ ¹ÞÀº Çì´õ°ª¿¡ Àû¿ëµË´Ï´Ù. À̸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇØ ¿äûÇÑ Çì´õ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ¿¹Á¦:
7034
PROXY_COOKIE
Àб⸦ ÇÒ ¶§ º¯¼ö´Â ±âÁ¡ ¼­¹ö¿¡ ÀÇÇØ¼­ ¼³Á¤µÈ Set-Cookie Çì´õ °ªÀ» Æ÷ÇÔÇÕ´Ï´Ù. ¶ÇÇÑ ¿äû ½ºÆ®¸²¿¡¼­ »õ Äí۸¦ ¼³Á¤ÇÏ´Â µ¥ »ç¿ëµÉ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ º¯¼ö¸¦ ¼³Á¤ÇÏ¸é º¹Á¦ Çì´õÀÇ Á¸Àç ¿©ºÎ¸¦ ¸··ÐÇÏ°í ¹®¼­ ¿äû ½ºÆ®¸² ³»ÀÇ »õ·Î¿î Set-Cookie Çì´õ¸¦ ÀÛ¼ºÇÏ°Ô µË´Ï´Ù.
PROXY_HEADERS
Àбâ Àü¿ë. ÇÁ·Ï½Ã Çì´õ¸¦ ÃßÃâÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.
PROXY_METHOD
HTTPD_proxy()¸¦ ÅëÇØ ÀÌ·ç¾îÁø ¿äû¿¡ ´ëÇÑ ¸Þ¼Òµå. ÀÌ º¯¼ö¸¦ ÃßÃâÇϸé ÄÁÅÙÃ÷ ¼­¹ö ÀÀ´äÀ¸·ÎºÎÅÍ ¹ÞÀº Çì´õ°ª¿¡ Àû¿ëµË´Ï´Ù. À̸¦ ¼³Á¤Çϸé ÄÁÅÙÃ÷ ¼­¹ö¿¡ ´ëÇÑ ¿äûÀÇ Çì´õ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
QUERY_STRING
GET ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© Á¤º¸¸¦ Àü¼ÛÇÒ °æ¿ì, ÀÌ º¯¼ö´Â ¹°À½Ç¥(?) µÚ¿¡ ³ª¿À´Â Á¤º¸¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ÀÌ Á¤º¸´Â CGI ÇÁ·Î±×·¥¿¡ ÀÇÇØ ÇØµ¶µÇ¾î¾ß ÇÕ´Ï´Ù. ¿¹Á¦:
NAME=Eugene+T%2E+Fox&ADDR=etfox%7Cibm.net&INTEREST=xyz
RCA_OWNER
Àбâ Àü¿ë. ¿äûµÈ ¿ÀºêÁ§Æ®¸¦ ¼ÒÀ¯ÇÑ ³ëµå¸¦ Á¦°øÇÏ¿© ¼öÄ¡¸¦ ¸®ÅÏÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â »çÀü Á¾·á, ÇÁ·Ï½Ã ¾îµå¹ÙÀÌÀú ¶Ç´Â ·Î±× ´Ü°è¿¡¼­¸¸ »ç¿ë °¡´ÉÇÏ°í ¼­¹ö°¡ RCA(remote cache access)¸¦ »ç¿ëÇϴ ij½Ã ¹è¿­ÀÇ ÀϺÎÀÏ ¶§¸¸ Àǹ̰¡ ÀÖ½À´Ï´Ù.
RCA_TIMEOUTS
Àбâ Àü¿ë. ¸ðµç ÇǾ ´ëÇØ RCA ¿äû¿¡ ½Ã°£ Á¾·áµÈ ÃѰ踦 Æ÷ÇÔÇÏ´Â ¼öÄ¡¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¸ðµç ´Ü°è¿¡¼­ ÀÌ º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
REDIRECT_*
Àбâ Àü¿ë. º¯¼ö À̸§¿¡ ÇØ´çÇÏ´Â ¿À·ù ÄÚµåÀÇ °æ·Î ÀçÁöÁ¤ ¹®ÀÚ¿­À» Æ÷ÇÔÇÕ´Ï´Ù(¿¹: REDIRECT_URL). °¡´ÉÇÑ REDIRECT_ º¯¼ö ¸ñ·ÏÀº http://httpd.apache.org/docs-2.0/custom-error.htmlÀÇ Apache À¥ ¼­¹ö¿¡ ´ëÇÑ ¿Â¶óÀÎ ¹®¼­¿¡ ÀÖ½À´Ï´Ù.
REFERRER_URL
Àбâ Àü¿ë. ºê¶ó¿ìÀúÀÇ ¸¶Áö¸· URL À§Ä¡¸¦ Æ÷ÇÔÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â ¼­¹ö¸¦ À§ÇÏ¿© Request-URLÀÌ È®º¸µÈ ÀÚ¿øÀÇ ÁÖ¼Ò(URL)¸¦ Ŭ¶óÀÌ¾ðÆ®°¡ ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ¿¹Á¦:
http://www.company.com/homepage
REMOTE_ADDR
À¥ ºê¶ó¿ìÀúÀÇ IP ÁÖ¼Ò°¡ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, 45.23.06.8°ú °°½À´Ï´Ù.
REMOTE_HOST
À¥ ºê¶ó¿ìÀúÀÇ È£½ºÆ® À̸§ÀÌ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, www.raleigh.ibm.com°ú °°½À´Ï´Ù.
REMOTE_USER
¼­¹ö°¡ Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀ» Áö¿øÇÏ°í ½ºÅ©¸³Æ®°¡ º¸È£µÇ´Â °æ¿ì, ÀÌ º¯¼ö¿¡´Â ÀÎÁõÀ» À§ÇØ Àü´ÞµÇ´Â »ç¿ëÀÚ À̸§ÀÌ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, joeuser¿Í °°½À´Ï´Ù.
REQHDR
Àбâ Àü¿ë. Ŭ¶óÀÌ¾ðÆ®°¡ Àü¼ÛÇÏ´Â Çì´õ ¸ñ·ÏÀ» Æ÷ÇÔÇÕ´Ï´Ù.
REQUEST_CONTENT_TYPE
Àбâ Àü¿ë. ¿äû º»¹®ÀÇ ÄÁÅÙÃ÷ À¯ÇüÀ» ¸®ÅÏÇÕ´Ï´Ù. ¿¹Á¦:
application/x-www-form-urlencoded
REQUEST_CONTENT_LENGTH
Àбâ Àü¿ë. Á¤º¸°¡ POST ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© Àü¼ÛµÉ ¶§, ÀÌ º¯¼ö¿¡´Â µ¥ÀÌÅÍÀÇ ¹®ÀÚ ¼ö°¡ Æ÷ÇԵ˴ϴÙ. Ç¥ÁØ ÀÔ·ÂÀ» »ç¿ëÇÏ¿© Á¤º¸¸¦ Àü´ÞÇÒ ¶§ ´ë°³ÀÇ °æ¿ì ¼­¹ö´Â ÆÄÀÏ ³¡ Ç÷¡±×¸¦ Àü¼ÛÇÏÁö ¾Ê½À´Ï´Ù. ÇÊ¿äÇÑ °æ¿ì, CONTENT_LENGTH °ªÀ» »ç¿ëÇÏ¿© ÀÔ·Â ¹®ÀÚ¿­ ³¡À» ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, 7034¿Í °°½À´Ï´Ù.
REQUEST_METHOD
Àбâ Àü¿ë. ¿äûÀ» Àü¼ÛÇϴµ¥ »ç¿ëµÇ´Â ¸Þ¼Òµå(HTML Çü½ÄÀÇ METHOD ¼Ó¼ºÀ» »ç¿ëÇÏ¿© ÁöÁ¤µÈ)°¡ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, GET ¶Ç´Â POST¿Í °°½À´Ï´Ù.
REQUEST_PORT
Àбâ Àü¿ë. URL¿¡ ÁöÁ¤µÈ Æ÷Æ® ¹øÈ£ ¶Ç´Â ÇÁ·ÎÅäÄÝ¿¡ µû¶ó ¼³Á¤µÈ ±âº» Æ÷Æ®¸¦ ¸®ÅÏÇÕ´Ï´Ù.
RESPONSE_CONTENT_TYPE
Àбâ Àü¿ë. POST ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© Á¤º¸¸¦ Àü¼ÛÇÒ °æ¿ì, ÀÌ º¯¼ö¿¡´Â Æ÷ÇÔµÈ µ¥ÀÌÅÍÀÇ À¯ÇüÀÌ µé¾î ÀÖ½À´Ï´Ù. ÇÁ·Ï½Ã ¼­¹ö ±¸¼º ÆÄÀÏ¿¡ »ç¿ëÀÚ°¡ Á÷Á¢ ÄÁÅÙÃ÷ À¯ÇüÀ» ÀÛ¼ºÇϰí À̸¦ Ç¥½Ã±â¿¡ ¸ÊÇÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, text/html°ú °°½À´Ï´Ù.
RESPONSE_CONTENT_LENGTH
Àбâ Àü¿ë. Á¤º¸°¡ POST ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© Àü¼ÛµÉ ¶§, ÀÌ º¯¼ö¿¡´Â µ¥ÀÌÅÍÀÇ ¹®ÀÚ ¼ö°¡ Æ÷ÇԵ˴ϴÙ. Ç¥ÁØ ÀÔ·ÂÀ» »ç¿ëÇÏ¿© Á¤º¸¸¦ Àü´ÞÇÒ ¶§ ´ë°³ÀÇ °æ¿ì ¼­¹ö´Â ÆÄÀÏ ³¡ Ç÷¡±×¸¦ Àü¼ÛÇÏÁö ¾Ê½À´Ï´Ù. ÇÊ¿äÇÑ °æ¿ì, CONTENT_LENGTH °ªÀ» »ç¿ëÇÏ¿© ÀÔ·Â ¹®ÀÚ¿­ ³¡À» ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, 7034¿Í °°½À´Ï´Ù.
RULE_FILE_PATH
Àбâ Àü¿ë. ±¸¼º ÆÄÀÏ¿¡ ´ëÇÑ ¿ÏÀüÇÑ ÆÄÀÏ ½Ã½ºÅÛ °æ·Î ¹× ÆÄÀÏ À̸§À» Æ÷ÇÔÇÕ´Ï´Ù.
SSL_SESSIONID
Àбâ Àü¿ë. ÇöÀç ¿äûÀÌ SSL Á¢¼Ó ÁßÀÏ ¶§ SSL ¼¼¼Ç ID¸¦ ¿äûÇÕ´Ï´Ù. ÇöÀç ¿äûÀÌ SSL Á¢¼Ó Áß ¼ö½ÅµÇÁö ¾Ê¾Ò´Ù¸é NULLÀÌ ¸®Åϵ˴ϴÙ.
SCRIPT_NAME
¿äûÀÇ URLÀ» Æ÷ÇÔÇÕ´Ï´Ù.
SERVER_ADDR
Àбâ Àü¿ë. ÇÁ·Ï½Ã ¼­¹öÀÇ ·ÎÄà IP ÁÖ¼Ò¸¦ Æ÷ÇÔÇÕ´Ï´Ù.
SERVER_NAME
Àбâ Àü¿ë. ÀÌ ¿äû¿¡ ´ëÇÑ ÄÁÅÙÃ÷ ¼­¹öÀÇ ÇÁ·Ï½Ã ¼­¹ö È£½ºÆ® À̸§ ¶Ç´Â IP ÁÖ¼Ò°¡ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, www.ibm.com°ú °°½À´Ï´Ù.
SERVER_PORT
Àбâ Àü¿ë. Ŭ¶óÀÌ¾ðÆ® ¿äûÀÌ Àü¼ÛµÇ´Â ÇÁ·Ï½Ã ¼­¹öÀÇ Æ÷Æ® ¼ö°¡ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, 80°ú °°½À´Ï´Ù.
SERVER_PROTOCOL
Àбâ Àü¿ë. ¿äûÀ» Çϴµ¥ »ç¿ëµÇ´Â ÇÁ·ÎÅäÄÝÀÇ À̸§ ¹× ¹öÀüÀÌ Æ÷ÇԵ˴ϴÙ. ¿¹¸¦ µé¸é, HTTP/1.1°ú °°½À´Ï´Ù.
SERVER_ROOT
Àбâ Àü¿ë. ÇÁ·Ï½Ã ¼­¹ö ÇÁ·Î±×·¥ÀÌ ¼³Ä¡µÈ µð·ºÅ丮¸¦ Æ÷ÇÔÇÕ´Ï´Ù.
SERVER_SOFTWARE
Àбâ Àü¿ë. ÇÁ·Ï½Ã ¼­¹öÀÇ À̸§ ¹× ¹öÀüÀÌ µé¾îÀÖ½À´Ï´Ù.
STATUS
HTTP ÀÀ´ä ÄÚµå ¹× ÀÌÀ¯ ¹®ÀÚ¿­ÀÌ µé¾î ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, 200 OK¿Í °°½À´Ï´Ù.
TRACE
ÃßÀûµÉ Á¤º¸ÀÇ ¾çÀ» °áÁ¤ÇÕ´Ï´Ù. ´ÙÀ½ ¸®ÅϰªÀÌ »ç¿ëµË´Ï´Ù.
URI
Àбâ/¾²±â. DOCUMENT_URL°ú °°½À´Ï´Ù.
URI_PATH
Àбâ Àü¿ë. URL¸¸À» À§ÇÑ °æ·Î ºÎºÐÀ» ¸®ÅÏÇÕ´Ï´Ù.
URL
Àбâ/¾²±â. DOCUMENT_URL°ú °°½À´Ï´Ù.
URL_MD4
Àбâ Àü¿ë. ÇöÀç ¿äû¿¡ ´ëÇÑ ÀáÀçÀû ij½Ã ÆÄÀÏÀÇ ÆÄÀÏ À̸§À» ¸®ÅÏÇÕ´Ï´Ù.
USE_PROXY
ÇöÀç ¿äû¿¡ ´ëÇØ ¿¬°áÇÒ ÇÁ·Ï½Ã¸¦ ½Äº°ÇÕ´Ï´Ù. URLÀ» ÁöÁ¤ÇϽʽÿÀ. ¿¹¸¦ µé¸é, http://myproxy:8080°ú °°½À´Ï´Ù.
USERID
REMOTE_USER¿Í °°½À´Ï´Ù.
USERNAME
REMOTE_USER¿Í °°½À´Ï´Ù.

ÀÎÁõ ¹× ±ÇÇÑ ºÎ¿©

¸ÕÀú, ¿ë¾î¿¡ ´ëÇØ °£·«È÷ »ìÆìº¸±â·Î ÇϰڽÀ´Ï´Ù.

ÀÎÁõ
¿äûÀÚÀÇ ½Å¿øÀ» È®ÀÎÇϱâ À§ÇÑ ÇØ´ç ¿äû°ú ¿¬°üµÇ´Â º¸¾È ÅäÅ«ÀÇ °ËÁõ
±ÇÇÑ ºÎ¿©
¿äûÀÚ°¡ ÇØ´ç ÀÚ¿ø¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´ÂÁö ¿©ºÎ¸¦ ÆÇº°Çϱâ À§ÇØ º¸¾È ÅäÅ«À» »ç¿ëÇÏ´Â ÇÁ·Î¼¼½º

±×¸² 3¿¡¼­´Â ÇÁ·Ï½Ã ¼­¹öÀÇ ÀÎÁõ ¹× ±ÇÇÑ ºÎ¿© ÇÁ·Î¼¼½º¸¦ ³ªÅ¸³À´Ï´Ù.

±×¸² 3. ÇÁ·Ï½Ã ¼­¹ö ÀÎÁõ ¹× ±ÇÇÑ ºÎ¿© ÇÁ·Î¼¼½º
ÀÎÁõ ¹× ±ÇÇÑ ºÎ¿© ÇÁ·Î¼¼½º ´ÙÀ̾î±×·¥

±×¸² 3¿¡ Ç¥½ÃµÈ °Íó·³ ÀÎÁõ ÇÁ·Î¼¼½º ÃʱâÈ­´Â ¼­¹öÀÇ ÀÎÁõ ¹× ±ÇÇÑ ºÎ¿© ÇÁ·Î¼¼½º Áß Ã¹ ´Ü°èÀÔ´Ï´Ù.

Caching Proxy¿¡¼­ ÀÎÁõÀº ±ÇÇÑ ºÎ¿© ÇÁ·Î¼¼½ºÀÇ ÀϺÎÀÔ´Ï´Ù. ÀÌ´Â ÀÎÁõÀÌ ÇʼöÀÏ °æ¿ì¿¡¸¸ ½ÇÇàµË´Ï´Ù.

ÀÎÁõ ¹× ±ÇÇÑ ºÎ¿© ÇÁ·Î¼¼½º

ÇÁ·Ï½Ã ¼­¹ö´Â ±ÇÇÑ ºÎ¿©°¡ ÇÊ¿äÇÑ ¿äûÀ» ó¸®ÇÒ ¶§ ÀÌµé ´Ü°è¸¦ µû¸¨´Ï´Ù.

  1. ¸ÕÀú, ÇÁ·Ï½Ã ¼­¹ö´Â ±¸¼º ÆÄÀÏÀ» °Ë»çÇÏ¿© ÀÎÁõ Áö½Ã¹®ÀÌ Æ÷ÇԵǾî ÀÖ´ÂÁö ¿©ºÎ¸¦ ÆÇº°ÇÕ´Ï´Ù.
  2. ÇÁ·Ï½Ã ¼­¹ö´Â HTTP_authenticate Çì´õ°¡ Ŭ¶óÀÌ¾ðÆ® ¿äû¿¡ µé¾î ÀÖ´ÂÁö È®ÀÎÇÔÀ¸·Î½á ÀÎÁõ ÇÁ·Î¼¼½º¸¦ ½ÃÀÛÇÕ´Ï´Ù.
  3. ÇÁ·Ï½Ã ¼­¹ö´Â ÇÁ·Ï½Ã ±¸¼º ÆÄÀÏ ¾È¿¡ ÀÎÁõ Áö½Ã¹®ÀÌ ÀÖ´ÂÁö ¿©ºÎ¸¦ È®ÀÎÇÕ´Ï´Ù.

Caching Proxy Ç÷¯±×ÀÎÀÌ °íÀ¯ ±ÇÇÑ ºÎ¿© ÇÁ·Î¼¼½º¸¦ Á¦°øÇÒ °æ¿ì, ÀÌ´Â ±âº» ¼­¹ö ±ÇÇÑ ºÎ¿© ¹× ÀÎÁõÀ» µ¤¾î¾²±âÇÕ´Ï´Ù. ±×·¯¹Ç·Î »ç¿ëÀÚ ±¸¼º ÆÄÀÏ ¾È¿¡ ±ÇÇÑ ºÎ¿© Áö½Ã¹®ÀÌ ÀÖÀ¸¸é À̵é°ú ¿¬°üµÇ´Â Ç÷¯±×ÀÎ ÇÔ¼ö ¶ÇÇÑ ÇÊ¿äÇÑ ¸ðµç ÀÎÁõÀ» ó¸®ÇØ¾ß ÇÕ´Ï´Ù. »çÀü Á¤ÀÇµÈ HTTPD_authenticate() ÇÔ¼ö°¡ »ç¿ëÇϵµ·Ï Á¦°øµË´Ï´Ù.

»ç¿ëÀÚÀÇ ±ÇÇÑ ºÎ¿© Ç÷¯±×Àο¡ ÀÎÁõÀ» Á¦°øÇÒ ¼ö ÀÖ´Â ¹æ¹ý¿¡´Â ´ÙÀ½ ¼¼ °¡Áö°¡ ÀÖ½À´Ï´Ù.

Caching Proxy Ç÷¯±×ÀÎÀÌ °íÀ¯ÀÇ ±ÇÇÑ ºÎ¿© ÇÁ·Î¼¼½º¸¦ Á¦°øÇÏÁö ¾Ê´Â °æ¿ì, ´ÙÀ½ ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ Á¤ÀÇ ÀÎÁõÀ» Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.

±ÇÇÑ ºÎ¿© ´Ü°è°¡ ½ÇÇàµÇ¸é ±âº» ¼­¹ö ±ÇÇÑ ºÎ¿©°¡ ¼öÇàµÇ°í ±×¿¡ µû¶ó ÀÎÁõ Ç÷¯±×ÀÎ ÇÔ¼ö°¡ È£ÃâµË´Ï´Ù.

´ÙÀ½ »çÇ×À» ±â¾ïÇϽʽÿÀ.

º¯Çü ij½Ì

º¯Çü ij½ÌÀ» »ç¿ëÇÏ¿© ¿ø·¡ ¹®¼­(URI)ÀÇ ¼öÁ¤µÈ Çü½ÄÀ¸·Î µÇ¾î ÀÖ´Â µ¥ÀÌÅ͸¦ ij½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. Caching Proxy´Â API¸¦ ÅëÇØ »ý¼ºµÈ º¯ÇüÀ» ó¸®ÇÕ´Ï´Ù. º¯ÇüÀº ±âº» ¹®¼­ÀÇ ´Ù¸¥ ¹öÀüÀ» ¸»ÇÕ´Ï´Ù.

ÀϹÝÀûÀ¸·Î, ±âÁ¡ ¼­¹ö°¡ º¯ÇüÀ» º¸³¾ °æ¿ì, ±× ¼­¹ö´Â ±× º¯ÇüÀ» ½Äº°ÇÒ ¼ö ¾ø½À´Ï´Ù. Caching Proxy´Â Ç÷¯±×Àο¡¼­ ÀÛ¼ºÇÑ º¯Çü¸¸À» Áö¿øÇÕ´Ï´Ù(¿¹: ÄÚµå ÆäÀÌÁö º¯È¯).Ç÷¯±×ÀÎÀÌ HTTP Çì´õ¿¡ ¾ø´Â ±âÁØ¿¡ µû¶ó º¯ÇüÀ» ÀÛ¼ºÇÏ´Â °æ¿ì, Caching Proxy°¡ ±âÁ¸ º¯ÇüÀ» Á¤È®È÷ ½Äº°ÇÒ ¼ö ÀÖµµ·Ï PreExit ¶Ç´Â PostAuthorizationÀ» Æ÷ÇÔ½ÃÄÑ ÀÇ»ç Çì´õ(psuedoheader)¸¦ ÀÛ¼ºÇØ¾ß ÇÕ´Ï´Ù.

¿¹¸¦ µé¾î, º¯ÇüÀÚ API ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿© ºê¶ó¿ìÀú°¡ Àü¼ÛÇÑ User-Agent Çì´õ °ªÀ» ±âÁØÀ¸·Î »ç¿ëÀÚµéÀÌ ¿äûÇÑ µ¥ÀÌÅ͸¦ º¯°æÇϽʽÿÀ. close ÇÔ¼ö¿¡¼­ ¼öÁ¤µÈ ³»¿ëÀ» ÆÄÀÏ¿¡ ÀúÀåÇϰųª ¹öÆÛ ±æÀ̸¦ ÁöÁ¤ÇÑ ´ÙÀ½ ¹öÆÛ¸¦ µ¥ÀÌÅÍ Àμö·Î Àü´ÞÇϽʽÿÀ. ±×·± ´ÙÀ½ variant caching ÇÔ¼ö httpd_variant_insert() ¹× httpd_variant_lookup()À» »ç¿ëÇÏ¿© ³»¿ëÀ» ij½Ã¿¡ ±â·ÏÇϽʽÿÀ.

API ¿¹Á¦

Caching Proxy API ÇÔ¼ö ½ÃÀÛÇϱ⿡ ´ëÇÑ µµ¿òÀ» ¹ÞÀ¸·Á¸é Edge Components ¼³Ä¡ CD-ROMÀÇ samples µð·ºÅ丮¿¡ ÀÖ´Â »ùÇà ÇÁ·Î±×·¥À» º¸½Ê½Ã¿À. Ãß°¡ Á¤º¸´Â WebSphere Application Server À¥ »çÀÌÆ®ÀÎ www.ibm.com/software/webservers/appserv/¿¡¼­ ã¾Æº¼ ¼ö ÀÖ½À´Ï´Ù.

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú

Á¦ 3 Àå¿¡¼­´Â Load Balancer¿¡ ´ëÇØ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ÀÛ¼ºÀ» ¼³¸íÇÕ´Ï´Ù.

¾îµå¹ÙÀÌÀú Á¦°ø ·Îµå ¹ë·±½º Á¤º¸

¾îµå¹ÙÀÌÀú´Â Load Balancer ³»¿¡¼­ ÀÛ¾÷Çϸ鼭 ÁÖ¾îÁø ¼­¹ö¿¡ ´ëÇÑ ·Îµå Á¤º¸¸¦ Á¦°øÇÏ´Â ¼ÒÇÁÆ®¿þ¾î ¿¡ÀÌÀüÆ®ÀÔ´Ï´Ù. Ç¥ÁØ ÇÁ·ÎÅäÄÝ(HTTP, SSL ¹× ±âŸ)¿¡ ´ëÇÏ¿© °¢°¢ ´Ù¸¥ ¾îµå¹ÙÀÌÀú°¡ Á¸ÀçÇÕ´Ï´Ù. Load Balancer ±âº» ÄÚµå´Â ÁÖ±âÀûÀ¸·Î ¾îµå¹ÙÀÌÀú Áֱ⸦ ¼öÇàÇϸç, ÀÌ Áֱ⸦ ÅëÇØ ±¸¼º¿¡ ÀÖ´Â ¸ðµç ¼­¹öÀÇ »óŰ¡ °³º°ÀûÀ¸·Î Æò°¡µË´Ï´Ù.

Load BalancerÀÇ °íÀ¯ ¾îµå¹ÙÀÌÀú¸¦ ÀÛ¼ºÇÏ¿© ¼­¹ö ½Ã½ºÅÛÀÇ ·Îµå¸¦ ÆÇº°ÇÏ´Â ¹æ¹ýÀ» »ç¿ëÀÚ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.

Windows ½Ã½ºÅÛÀÇ °æ¿ì: IPv4¿ë ¹× IPv6¿ë Load Balancer ¼³Ä¡¸¦ »ç¿ëÇÏ´Â °æ¿ì ½Ã½ºÅÛ¿¡¼­ IPv6 ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ°í ¾îµå¹ÙÀÌÀú¸¦ »ç¿ëÇÏ·Á°í Çϸé
C:\windows\system32\drivers\etc\ µð·ºÅ丮¿¡ ÀÖ´Â protocol ÆÄÀÏÀ» ¼öÁ¤ÇØ¾ß ÇÕ´Ï´Ù.

IPv6ÀÇ °æ¿ì, protocol ÆÄÀÏ¿¡ ´ÙÀ½ ÇàÀ» »ðÀÔÇϽʽÿÀ.

ipv6-icmp	 58	  IPv6-ICMP	     # IPv6 interface control message protocol

Ç¥ÁØ ¾îµå¹ÙÀÌÀú ±â´É

ÀϹÝÀûÀ¸·Î ¾îµå¹ÙÀÌÀú´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ·Îµå ¹ë·±½º¸¦ °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.

  1. ¾îµå¹ÙÀÌÀú´Â ÁÖ±âÀûÀ¸·Î °¢ ¼­¹ö¿ÍÀÇ ¿¬°áÀ» ¿­°í ¼­¹ö¿¡ ¿äû ¸Þ½ÃÁö¸¦ Àü¼ÛÇÕ´Ï´Ù. ¸Þ½ÃÁöÀÇ ³»¿ëÀº ¼­¹ö¿¡¼­ ½ÇÇà ÁßÀÎ ÇÁ·ÎÅäÄÝ¿¡ ´ëÇØ °íÀ¯ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, HTTP ¾îµå¹ÙÀÌÀú´Â HEAD ¿äûÀ» ¼­¹ö·Î Àü¼ÛÇÕ´Ï´Ù.
  2. ¾îµå¹ÙÀÌÀú´Â ¼­¹öÀÇ ÀÀ´äÀ» ÀνÄÇÕ´Ï´Ù. ÀÀ´äÀ» ¹ÞÀº ÈÄ, ¼­¹ö¿¡ ´ëÇÑ ·Îµå°ªÀ» °è»êÇÏ¿© º¸°íÇÕ´Ï´Ù. ¾îµå¹ÙÀÌÀú¸¶´Ù ´Ù¸¥ ¹æ¹ýÀ¸·Î ·Îµå°ªÀ» °è»êÇÏÁö¸¸, ´ëºÎºÐÀÇ Ç¥ÁØ ¾îµå¹ÙÀÌÀú´Â ¼­¹ö°¡ ÀÀ´äÇÏ´Â µ¥ °É¸° ½Ã°£À» ÃøÁ¤ÇÏ¿© ±× °ªÀ» ·Îµå°ªÀ¸·Î º¸°íÇÕ´Ï´Ù(¹Ð¸®ÃÊ ´ÜÀ§).
  3. ¾îµå¹ÙÀÌÀú´Â Load BalancerÀÇ °ü¸® ÇÁ·Î±×·¥ ±â´ÉÀ¸·Î ·Îµå¸¦ º¸°íÇÕ´Ï´Ù. °ü¸® ÇÁ·Î±×·¥ º¸°í¼­ÀÇ Æ÷Æ® Ä÷³¿¡ ·Îµå°¡ ³ªÅ¸³³´Ï´Ù. °ü¸® ÇÁ·Î±×·¥Àº ¾îµå¹ÙÀÌÀú°¡ º¸°íÇÑ ·Îµå°ª°ú °ü¸®ÀÚ°¡ ¼³Á¤ÇÑ °¡ÁßÄ¡¸¦ »ç¿ëÇÏ¿© ¼­¹ö¿¡¼­ ¼ö½ÅÇÏ´Â ¿äûÀÇ ·Îµå ¹ë·±½º ¹æ¹ýÀ» ÆÇº°ÇÕ´Ï´Ù.
  4. ¼­¹ö°¡ ÀÀ´äÇÏÁö ¾Ê´Â °æ¿ì, ¾îµå¹ÙÀÌÀú´Â ·Îµå°ªÀ¸·Î À½¼ö(-1)¸¦ ¸®ÅÏÇÕ´Ï´Ù. °ü¸® ÇÁ·Î±×·¥Àº ÀÌ Á¤º¸¸¦ »ç¿ëÇÏ¿© ƯÁ¤ ¼­¹ö¿¡ ´ëÇÑ ¼­ºñ½ºÀÇ ÀϽÃÁß´Ü ½Ã±â¸¦ ÆÇº°ÇÕ´Ï´Ù.

Load Balancer¿Í ÇÔ²² Á¦°øµÈ Ç¥ÁØ ¾îµå¹ÙÀÌÀú¿¡´Â ´ÙÀ½°ú °°Àº ±â´ÉÀÌ ÀÖ´Â ¾îµå¹ÙÀÌÀú°¡ µé¾î ÀÖ½À´Ï´Ù. ¾îµå¹ÙÀÌÀú¿¡ °üÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â WebSphere Application Server Load Balancer °ü¸® ¾È³»¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

Ç¥ÁØ ¾îµå¹ÙÀÌÀú°¡ Á¦°øµÇÁö ¾Ê´Â µ¶Á¡ ÇÁ·ÎÅäÄÝÀ» Áö¿øÇÏ·Á¸é »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ ÀÛ¼ºÇØ¾ß ÇÕ´Ï´Ù.

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ÀÛ¼º

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú´Â Ŭ·¡½º ÆÄÀÏ·Î Á¦°øµÇ´Â ªÀº Java ÄÚµå·Î, Load Balancer ±âº» Äڵ尡 ¼­¹öÀÇ ·Îµå¸¦ ÆÇº°Çϱâ À§ÇØ È£ÃâÇÕ´Ï´Ù. ±âº» ÄÚµå´Â »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀúÀÇ ÀνºÅϽº ½ÃÀÛ ¹× Á¤Áö, »óÅ ¹× º¸°í¼­ Á¦°ø, ·Î±× ÆÄÀÏ¿¡ È÷½ºÅ丮 Á¤º¸ ±â·Ï, °ü¸® ÇÁ·Î±×·¥ ÄÄÆ÷³ÍÆ®¿¡ ¾îµå¹ÙÀÌÀú °á°ú º¸°í µî°ú °°Àº ÇÊ¿äÇÑ ¸ðµç °ü¸® ¼­ºñ½º¸¦ Á¦°øÇÕ´Ï´Ù.

Load Balancer ±âº» Äڵ忡¼­ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ È£ÃâÇÒ ¶§, ´ÙÀ½ ´Ü°è°¡ ÁøÇàµË´Ï´Ù.

  1. Load Balancer ±âº» Äڵ带 ¼­¹ö ½Ã½ºÅÛ°ú ¿¬°áÇÕ´Ï´Ù.
  2. ¼ÒÄÏÀÌ ¿­¸®¸é ±âº» Äڵ尡 ÁöÁ¤µÈ ¾îµå¹ÙÀÌÀúÀÇ GetLoad ±â´ÉÀ» È£ÃâÇÕ´Ï´Ù.
  3. ¾îµå¹ÙÀÌÀúÀÇ GetLoad ±â´ÉÀº ¼­¹öÀÇ ÀÀ´ä ´ë±â¸¦ ºñ·ÔÇÏ¿© »ç¿ëÀÚ°¡ ¼­¹öÀÇ »óŸ¦ Æò°¡Çϱâ À§ÇÏ¿© Á¤ÀÇÇÑ ´Ü°èµéÀ» ¼öÇàÇÕ´Ï´Ù. ÀÀ´äÀ» ¹ÞÀ¸¸é ±â´ÉÀº ½ÇÇàÀ» Á¾·áÇÕ´Ï´Ù.
  4. Load Balancer ±âº» Äڵ忡¼­ ¼­¹ö°¡ ÀÖ´Â ¼ÒÄÏÀ» ´Ý°í °ü¸® ÇÁ·Î±×·¥¿¡ ·Îµå Á¤º¸¸¦ º¸°íÇÕ´Ï´Ù. »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú°¡ Á¤»ó ¸ðµå ¶Ç´Â ¼öÁ¤ ¸ðµå¿¡¼­ ÀÛµ¿ÇÏ´ÂÁö¿¡ µû¶ó, GetLoad ±â´ÉÀÌ Á¾·áµÈ ÈÄ ±âº» ÄÚµå´Â ¼ö½Ã·Î Ãß°¡ °è»êÀ» ¼öÇàÇÕ´Ï´Ù.

Á¤»ó ¸ðµå¿Í ¼öÁ¤ ¸ðµå

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ Á¤»ó ¸ðµå ¶Ç´Â ¼öÁ¤ ¸ðµå¿¡¼­ Load Balancer¿Í ÀÛµ¿Çϵµ·Ï ¼³°èÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÛµ¿ ¸ðµåÀÇ ¼±ÅÃÀº »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ÆÄÀÏ¿¡¼­ constructor ¸Þ¼ÒµåÀÇ ¸Å°³º¯¼ö·Î¼­ ÁöÁ¤µË´Ï´Ù. (°¢ ¾îµå¹ÙÀÌÀú´Â ¼³°è¿¡ µû¶ó ÀÌµé ¸ðµå Áß Çϳª¸¸ ¿î¿µÇÕ´Ï´Ù.)

Á¤»ó ¸ðµå¿¡¼­ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú´Â ¼­¹ö¿Í µ¥ÀÌÅ͸¦ ±³È¯Çϰí, ±âº» ¾îµå¹ÙÀÌÀú ÄÚµå´Â ±³È¯ ½Ã°£À» ÃøÁ¤ÇÏ¿© ·Îµå°ªÀ» »êÃâÇÕ´Ï´Ù. ±âº» ÄÚµå´Â °è»êµÈ ·Îµå°ªÀ» °ü¸® ÇÁ·Î±×·¥¿¡ º¸°íÇÕ´Ï´Ù. »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú´Â ¼º°øÀ» Ç¥½ÃÇÏ´Â 0°ª ¶Ç´Â ¿À·ù¸¦ Ç¥½ÃÇÏ´Â 1°ªÀ» ¸®ÅÏÇÕ´Ï´Ù.

Á¤»ó ¸ðµå¸¦ ÁöÁ¤ÇÏ·Á¸é, constructorÀÇ replace Ç÷¡±×¸¦ false·Î ¼³Á¤ÇϽʽÿÀ.

¼öÁ¤ ¸ðµå¿¡¼­ ±âº» ÄÚµå´Â ½Ã°£ ÃøÁ¤Àº ¼öÇàÇÏÁö ¾Ê½À´Ï´Ù. »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ÄÚµå´Â ÁöÁ¤µÈ ¸ðµç Á¶ÀÛÀ» ÇØ´çµÇ´Â °íÀ¯ÇÑ ¿ä±¸»çÇ׿¡ ±âÃÊÇÏ¿© ¼öÇàÇÑ ´ÙÀ½, ½ÇÁ¦ ·Îµå ¹øÈ£¸¦ ¸®ÅÏÇÕ´Ï´Ù. ±âº» ÄÚµå´Â ·Îµå ¹øÈ£¸¦ ½ÂÀÎÇÏ°í ±×´ë·Î °ü¸® ÇÁ·Î±×·¥¿¡ º¸°íÇÕ´Ï´Ù. °¡Àå ÁÁÀº °á°ú¸¦ À§Çؼ­´Â 10ºÎÅÍ 1000±îÁö(ºü¸¥ ¼­¹ö´Â 10, ´À¸° ¼­¹ö´Â 1000) ·Îµå ¹øÈ£¸¦ Á¤±ÔÈ­ÇϽʽÿÀ.

¼öÁ¤ ¸ðµå¸¦ ÁöÁ¤ÇÏ·Á¸é, constructorÀÇ replace Ç÷¡±×¸¦ true·Î ¼³Á¤ÇϽʽÿÀ.

¾îµå¹ÙÀÌÀú À̸§ ÁöÁ¤ ±ÔÄ¢

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ÆÄÀÏ À̸§Àº ADV_name.java ÇüÅÂÀ̸ç, ¿©±â¼­ nameÀº »ç¿ëÀÚ°¡ ¼±ÅÃÇÏ´Â ¾îµå¹ÙÀÌÀú À̸§ÀÔ´Ï´Ù. ¿Ï·áµÈ À̸§Àº ´ë¹®ÀÚ Á¢µÎºÎ ADV_·Î ½ÃÀÛÇÏ°í ³ª¸ÓÁö´Â ¸ðµÎ ¼Ò¹®ÀÚ¿©¾ß ÇÕ´Ï´Ù. ¼Ò¹®ÀÚ·Î Á¦ÇÑÇÏ¸é ¾îµå¹ÙÀÌÀú¸¦ ½ÇÇàÇÏ´Â ¸í·É¿¡¼­ ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.

Java ±Ô¾à¿¡ µû¶ó ÆÄÀÏ ³»¿¡ Á¤ÀÇµÈ Å¬·¡½º À̸§Àº ÆÄÀÏÀÇ À̸§°ú ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù.

ÄÄÆÄÀÏ

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú´Â Java ¾ð¾î·Î ÀÛ¼ºµÇ¾î¾ß ÇÏ¸ç °³¹ß ½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ Java ÄÄÆÄÀÏ·¯·Î ÄÄÆÄÀϵǾî¾ß ÇÕ´Ï´Ù. ÄÄÆÄÀÏ ½Ã ´ÙÀ½ÀÇ ÆÄÀÏÀ» ÂüÁ¶ÇÕ´Ï´Ù.

ÄÄÆÄÀÏ µ¿¾È classpath ȯ°æ º¯¼ö´Â »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ÆÄÀϰú ±âº» Ŭ·¡½º ÆÄÀÏÀ» ¸ðµÎ °¡¸®ÄÑ¾ß ÇÕ´Ï´Ù. ÄÄÆÄÀÏ ¸í·ÉÀº ´ÙÀ½ Çü½ÄÀ» µû¸¨´Ï´Ù.

javac -classpath /opt/ibm/edge/lb/servers/lib/ibmnd.jar ADV_name.java

ÀÌ ¿¹Á¦¿¡¼­´Â ±âº» Linux ¹× UNIX ¼³Ä¡ °æ·Î¸¦ »ç¿ëÇÕ´Ï´Ù. ¾îµå¹ÙÀÌÀú ÆÄÀÏ À̸§Àº ADV_name.javaÀÌ°í ¾îµå¹ÙÀÌÀú ÆÄÀÏÀº ÇöÀç µð·ºÅ丮¿¡ ÀúÀåµË´Ï´Ù.

ÄÄÆÄÀÏ Ãâ·ÂÀº Ŭ·¡½º ÆÄÀÏÀÔ´Ï´Ù(¿¹: ADV_name.class). ¾îµå¹ÙÀÌÀú¸¦ ½ÃÀÛÇϱâ Àü¿¡ Ŭ·¡½º ÆÄÀÏÀ» install_path/servers/lib/CustomAdvisors/ µð·ºÅ丮·Î º¹»çÇϽʽÿÀ.

ÁÖ:
ÀÓÀÇÀÇ ¿î¿µ üÁ¦¿¡¼­ ÄÄÆÄÀÏµÈ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ ´Ù¸¥ ¿î¿µ üÁ¦¿¡¼­ ½ÇÇàÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¾îµå¹ÙÀÌÀú¸¦ Windows ½Ã½ºÅÛ¿¡¼­ ÄÄÆÄÀÏÇÑ ´ÙÀ½, °á°ú Ŭ·¡½º ÆÄÀÏ(2Áø Çü½Ä)À» Linux ½Ã½ºÅÛÀ¸·Î º¹»çÇÏ¿© »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ½ÇÇà

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ ½ÇÇàÇÏ·Á¸é, ¸ÕÀú ¾îµå¹ÙÀÌÀúÀÇ Å¬·¡½º ÆÄÀÏÀ» Load Balancer ½Ã½ºÅÛÀÇ lib/CustomAdvisors/ ÇÏÀ§ µð·ºÅ丮·Î º¹»çÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, mypingÀ̶õ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀúÀÇ ÆÄÀÏ °æ·Î´Â install_path/servers/lib/CustomAdvisors/ADV_myping.classÀÔ´Ï´Ù.

Load Balancer¸¦ ±¸¼ºÇϰí, ÇØ´çµÇ´Â °ü¸® ÇÁ·Î±×·¥ ±â´ÉÀ» ½ÃÀÛÇϰí, »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ ½ÃÀÛÇÏ´Â ¸í·ÉÀ» ¹ßÇàÇϽʽÿÀ. »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú´Â ADV_ prefix ¹× ÆÄÀÏ È®ÀåÀÚ¸¦ Á¦¿ÜÇÑ À̸§À¸·Î ÁöÁ¤µË´Ï´Ù.

dscontrol advisor start myping port_number

¸í·É¿¡¼­ ÁöÁ¤ÇÑ Æ÷Æ® ¹øÈ£´Â ¾îµå¹ÙÀÌÀú°¡ ´ë»ó ¼­¹ö¿Í ¿¬°áÇÏ´Â Æ÷Æ®ÀÔ´Ï´Ù.

Çʼö ·çƾ

´Ù¸¥ ¾îµå¹ÙÀÌÀúµé°ú ¸¶Âù°¡Áö·Î, »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú´Â ADV_Base¶ó´Â ¾îµå¹ÙÀÌÀú ±âº» Ŭ·¡½º ±â´ÉÀ» È®ÀåÇÕ´Ï´Ù. ¾îµå¹ÙÀÌÀú ±âº»Àº ´ëºÎºÐÀÇ ¾îµå¹ÙÀÌÀú ±â´ÉÀ» ¼öÇàÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, °ü¸® ÇÁ·Î±×·¥ÀÇ °¡ÁßÄ¡ ¾Ë°í¸®Áò¿¡ »ç¿ëµÉ ¼ö ÀÖµµ·Ï ·Îµå¸¦ ´Ù½Ã °ü¸® ÇÁ·Î±×·¥¿¡ º¸°íÇÏ´Â ±â´ÉÀ» ¼öÇàÇÕ´Ï´Ù. ¶ÇÇÑ ¼ÒÄÏ ¿¬°á ¹× ´Ý±â Á¶ÀÛÀ» ¼öÇàÇϸç, ¾îµå¹ÙÀÌÀú¿¡ »ç¿ëµÉ send ¹× receive ¸Þ¼Òµåµµ Á¦°øÇÕ´Ï´Ù. °ËÅä ÁßÀÎ ¼­¹ö¿ëÀ¸·Î ÁöÁ¤µÈ Æ÷Æ®¿¡¼­ µ¥ÀÌÅ͸¦ Àü¼ÛÇϰųª ¼ö½ÅÇÏ´Â µ¥ ¾îµå¹ÙÀÌÀú°¡ »ç¿ëµË´Ï´Ù. ¾îµå¹ÙÀÌÀú ±âº» ³»ÀÇ TCP ¸Þ¼Òµå´Â ·Îµå¸¦ °è»êÇϱâ À§ÇØ ½Ã°£À» ÃøÁ¤ÇÕ´Ï´Ù. ¾îµå¹ÙÀÌÀú ±âº» »ý¼ºÀÚ ³»ÀÇ Ç÷¡±×°¡ ±âÁ¸ ·Îµå À§¿¡ ¾îµå¹ÙÀÌÀú·ÎºÎÅÍ ¸®ÅϵǴ »õ·Î¿î ·Îµå¸¦ °ãÃľ²µµ·Ï ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

ÁÖ:
»ý¼ºÀÚ¿¡ ¼³Á¤µÈ °ª¿¡ µû¶ó¼­ ¾îµå¹ÙÀÌÀú ±âº»Àº °¡ÁßÄ¡ ¾Ë°í¸®Áò¿¡ ·Îµå¸¦ ÁöÁ¤µÈ °£°ÝÀ¸·Î Á¦°øÇÕ´Ï´Ù. ¾îµå¹ÙÀÌÀú°¡ 󸮸¦ ¿Ï·áÇÏÁö ¾Ê¾Æ¼­ À¯È¿ÇÑ ·Îµå¸¦ ¸®ÅÏÇÒ ¼ö ¾ø´Â °æ¿ì, ¾îµå¹ÙÀÌÀú ±âº»Àº ÀÌÀü¿¡ º¸°íµÈ ·Îµå¸¦ »ç¿ëÇÕ´Ï´Ù.

¾îµå¹ÙÀÌÀú¿¡´Â ´ÙÀ½ÀÇ ±âº» Ŭ·¡½º ¸Þ¼Òµå°¡ ÀÖ½À´Ï´Ù.

Çʼö ·çƾ¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº ÀÌ ¼½¼ÇÀÇ µÞºÎºÐ¿¡¼­ ¼³¸íÇÕ´Ï´Ù.

Ž»ö ¼ø¼­

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú´Â ¿ø½Ã ¶Ç´Â Ç¥ÁØ ¾îµå¹ÙÀÌÀú¸¦ Ž»öÇÑ ÈÄ¿¡ È£ÃâµË´Ï´Ù. Load Balancer°¡ Ç¥ÁØ ¾îµå¹ÙÀÌÀú ¸ñ·Ï¿¡¼­ ÁöÁ¤µÈ ¾îµå¹ÙÀÌÀú¸¦ ãÁö ¸øÇÏ¸é »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ¸ñ·ÏÀ» ÂüÁ¶ÇÕ´Ï´Ù. ¾îµå¹ÙÀÌÀú¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â WebSphere Application Server Load Balancer °ü¸® ¾È³»¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

À̸§ ÁöÁ¤ ¹× ÆÄÀÏ °æ·Î

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀúÀÇ À̸§°ú °æ·Î¿¡ ´ÙÀ½ÀÇ ¿ä±¸»çÇ×ÀÌ Àû¿ëµË´Ï´Ù.

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ¸Þ¼Òµå ¹× ÇÔ¼ö È£Ãâ

»ý¼ºÀÚ(¾îµå¹ÙÀÌÀú ±âº»¿¡¼­ Á¦°ø)

void ADV_Base Constructor (
        string sName;
        string sVersion;
        int iDefaultPort;
        int iInterval;
        string sDefaultLogFileName;
        boolean replace
)
sName
»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú À̸§.
sVersion
»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ¹öÀü.
iDefaultPort
È£Ãâ¿¡¼­ Æ÷Æ® ¹øÈ£¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ì ¼­¹ö¿Í Á¢¼ÓÇÒ Æ÷Æ® ¹øÈ£.
iInterval
¾îµå¹ÙÀÌÀú°¡ ¼­¹ö¸¦ Á¶È¸ÇÏ´Â °£°Ý.
sDefaultLogFileName
ÀÌ ¸Å°³º¯¼ö´Â ÇʼöÁö¸¸ »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. À¯ÀÏÇÏ°Ô Çã¿ëµÇ´Â °ªÀº ³Î(Null) ¹®ÀÚ¿­, ""ÀÔ´Ï´Ù.
replace
¾îµå¹ÙÀÌÀú ÇÔ¼ö°¡ ¼öÁ¤ ¸ðµåÀÎÁö ¿©ºÎ. °¡´ÉÇÑ °ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.

ADV_AdvisorInitialize()

void  ADV_AdvisorInitialize()

ÀÌ ¸Þ¼Òµå´Â »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¿¡ ÇÊ¿äÇÑ ÃʱâÈ­¸¦ ¼öÇàÇϱâ À§ÇØ Á¦°øµË´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â ¾îµå¹ÙÀÌÀú ±âº» ¸ðµâÀÌ ½ÃÀÛÇÑ ÈÄ¿¡ È£ÃâµË´Ï´Ù.

Ç¥ÁØ ¾îµå¹ÙÀÌÀú¸¦ Æ÷ÇÔÇÑ ´ëºÎºÐÀÇ °æ¿ì, ÀÌ ¸Þ¼Òµå´Â »ç¿ëµÇÁö ¾ÊÀ¸¸ç Äڵ尡 return ¹®À¸·Î¸¸ ±¸¼ºµË´Ï´Ù. ÀÌ ¸Þ¼Òµå¿¡¼­¸¸ À¯È¿ÇÑ suppressBaseOpeningSocket ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.

getLoad()

int getLoad(
        int iConnectTime;
        ADV_Thread *caller
)
iConnectTime
Á¢¼ÓÀÌ ¿Ï·áµÇ´Â µ¥ °É¸° ½Ã°£(¹Ð¸®ÃÊ). ÀÌ ·Îµå ÃøÁ¤Àº ¾îµå¹ÙÀÌÀú ±âº» Äڵ忡 ÀÇÇØ ¼öÇàµÇ¾î »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ÄÚµå·Î Àü´ÞµÇ´Âµ¥, ÀÌ´Â ·Îµå °ªÀ» ¸®ÅÏÇÒ ¶§ ÃøÁ¤À» »ç¿ëÇϰųª ¹«½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¢¼ÓÀ» ÇÒ ¼ö ¾øÀ» °æ¿ì ÀÌ °ªÀ» -1·Î ÁöÁ¤ÇϽʽÿÀ.
caller
¾îµå¹ÙÀÌÀú ±âº» ¸Þ¼Òµå°¡ Á¦°øµÇ´Â ¾îµå¹ÙÀÌÀú ±âº» Ŭ·¡½ºÀÇ ÀνºÅϽº.

»ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¿¡ »ç¿ë °¡´ÉÇÑ ÇÔ¼ö È£Ãâ

´ÙÀ½ ¼½¼Ç¿¡¼­ ¼³¸íÇÒ ¸Þ¼Òµå ¶Ç´Â ÇÔ¼ö´Â »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¿¡¼­ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾îµå¹ÙÀÌÀú ±âº» ÄÚµå´Â ÀÌµé ¸Þ¼Òµå¸¦ Áö¿øÇÕ´Ï´Ù.

ÀϺΠÇÔ¼ö È£ÃâÀº Á÷Á¢ È£ÃâµÉ ¼ö ÀÖÁö¸¸(¿¹: function_name()), ³ª¸ÓÁö È£ÃâÀº caller Á¢µÎºÎ°¡ ÇÊ¿äÇÕ´Ï´Ù. caller´Â ½ÇÇà ÁßÀÎ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ Áö¿øÇÏ´Â ±âº» ¾îµå¹ÙÀÌÀú ÀνºÅϽº¸¦ ³ªÅ¸³À´Ï´Ù.

ADVLOG()

ADVLOG ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú´Â ÅØ½ºÆ® ¸Þ½ÃÁö¸¦ ¾îµå¹ÙÀÌÀú ±âº» ·Î±× ÆÄÀÏ¿¡ ±â·ÏÇÕ´Ï´Ù. Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù.

void  ADVLOG  (int logLevel, string message)
logLevel
¸Þ½ÃÁö°¡ ·Î±× ÆÄÀÏ¿¡ ±â·ÏµÇ´Â »óÅ ·¹º§. ¾îµå¹ÙÀÌÀú ·Î±× ÆÄÀÏÀº ¿©·¯ ´Ü°è·Î ±¸¼ºµË´Ï´Ù. °¡Àå ±ä±ÞÇÑ ¸Þ½ÃÁöÀÇ »óÅ ·¹º§Àº 0ÀÌ¸ç ±ä±ÞÇÏÁö ¾ÊÀº ¸Þ½ÃÁöÀϼö·Ï ´õ ³ôÀº ¹øÈ£ÀÇ ·¹º§ÀÌ ÁÖ¾îÁý´Ï´Ù. °¡Àå ÀÚ¼¼ÇÑ À¯ÇüÀÇ ¸Þ½ÃÁöÀÇ »óÅ ·¹º§Àº 5ÀÔ´Ï´Ù. ·¹º§¿¡ ÀÇÇØ »ç¿ëÀÚ°¡ ½Ç½Ã°£À¸·Î ¹Þ´Â ¸Þ½ÃÁö À¯ÇüÀ» Á¦¾îÇÕ´Ï´Ù(dscontrol ¸í·ÉÀ¸·Î ÀÚ¼¼ÇÑ Á¤µµ¸¦ ¼³Á¤). ½É°¢ÇÑ ¿À·ù´Â Ç×»ó ·¹º§ 0À¸·Î ±â·ÏµÇ¾î¾ß ÇÕ´Ï´Ù.
message
·Î±× ÆÄÀÏ¿¡ ±â·ÏµÉ ¸Þ½ÃÁö. ÀÌ ¸Å°³º¯¼öÀÇ °ªÀº Ç¥ÁØ Java ¹®ÀÚ¿­ÀÔ´Ï´Ù.

getAdvisorName()

getAdvisorName ÇÔ¼ö´Â »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú À̸§ÀÇ Á¢¹ÌºÎ°¡ ÀÖ´Â Java ¹®ÀÚ¿­À» ¸®ÅÏÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ADV_cdload.java·Î À̸§ ÁöÁ¤µÈ ¾îµå¹ÙÀÌÀúÀÇ °æ¿ì, ÀÌ ÇÔ¼ö´Â cdload °ªÀ» ¸®ÅÏÇÕ´Ï´Ù.

ÀÌ ÇÔ¼ö¿¡´Â ¸Å°³º¯¼ö°¡ ¾ø½À´Ï´Ù.

¾îµå¹ÙÀÌÀúÀÇ ÇÑ ÀνºÅϽº ³»¿¡¼­ ÀÌ °ªÀº º¯°æµÉ ¼ö ¾ø½À´Ï´Ù.

getAdviseOnPort()

getAdviseOnPort ÇÔ¼ö´Â È£Ãâ ÁßÀÎ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú°¡ ½ÇÇàµÇ°í ÀÖ´Â Æ÷Æ® ¹øÈ£¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¸®ÅϰªÀº Java Á¤¼ö(int)À̸ç ÇÔ¼ö¿¡´Â ¸Å°³º¯¼ö°¡ ¾ø½À´Ï´Ù.

¾îµå¹ÙÀÌÀúÀÇ ÇÑ ÀνºÅϽº ³»¿¡¼­ ÀÌ °ªÀº º¯°æµÉ ¼ö ¾ø½À´Ï´Ù.

caller.getCurrentServer()

getCurrentServer ÇÔ¼ö´Â ÇöÀç ¼­¹öÀÇ IP ÁÖ¼Ò¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¸®ÅϰªÀº IP ÁÖ¼Ò Çü½ÄÀÇ Java ¹®ÀÚ¿­ÀÔ´Ï´Ù(¿¹: 128.0.72.139).

ÀϹÝÀûÀ¸·Î, ¾îµå¹ÙÀÌÀú ±âº» Äڵ尡 Â÷·Ê·Î ¸ðµç ¼­¹ö ½Ã½ºÅÛÀ» Á¶È¸ÇϹǷÎ, ÀÌ ÁÖ¼Ò´Â »ç¿ëÀÚ°¡ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ È£ÃâÇÒ ¶§¸¶´Ù º¯°æµË´Ï´Ù.

ÀÌ ÇÔ¼ö¿¡´Â ¸Å°³º¯¼ö°¡ ¾ø½À´Ï´Ù.

caller.getCurrentCluster()

getCurrentCluster ÇÔ¼ö È£ÃâÀº ÇöÀç ¼­¹ö Ŭ·¯½ºÅÍÀÇ IP ÁÖ¼Ò¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¸®ÅϰªÀº IP ÁÖ¼Ò Çü½ÄÀÇ Java ¹®ÀÚ¿­ÀÔ´Ï´Ù(¿¹: 128.0.72.139).

ÀϹÝÀûÀ¸·Î, ¾îµå¹ÙÀÌÀú ±âº» Äڵ尡 Â÷·Ê·Î ¸ðµç ¼­¹ö Ŭ·¯½ºÅ͸¦ Á¶È¸ÇϹǷÎ, ÀÌ ÁÖ¼Ò´Â »ç¿ëÀÚ°¡ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ È£ÃâÇÒ ¶§¸¶´Ù º¯°æµË´Ï´Ù.

ÀÌ ÇÔ¼ö¿¡´Â ¸Å°³º¯¼ö°¡ ¾ø½À´Ï´Ù.

getInterval()

getInterval ÇÔ¼ö´Â ¾îµå¹ÙÀÌÀú °£°Ý Áï, ¾îµå¹ÙÀÌÀú Áֱ⠻çÀÌÀÇ ½Ã°£(ÃÊ)À» ¸®ÅÏÇÕ´Ï´Ù. ÀÌ °ªÀº dscontrol ¸í·ÉÀ» »ç¿ëÇÏ¿© ·±Å¸ÀÓ ½Ã °ªÀÌ ¼öÁ¤µÇÁö ¾Ê¾ÒÀ¸¸é »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀúÀÇ »ý¼ºÀÚ¿¡ ¼³Á¤µÈ ±âº»°ª°ú µ¿ÀÏÇÕ´Ï´Ù.

¸®ÅϰªÀº Java Á¤¼ö(int)ÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö¿¡´Â ¸Å°³º¯¼ö°¡ ¾ø½À´Ï´Ù.

caller.getLatestLoad()

getLatestLoad ÇÔ¼ö´Â »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú°¡ ÁÖ¾îÁø ¼­¹ö ¿ÀºêÁ§Æ®ÀÇ ÃÖ±Ù ·Îµå °ªÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ·Îµå °ªÀº ¾îµå¹ÙÀÌÀú ±âº» ÄÚµå ¹× °ü¸®ÀÚ µð¸Õ¿¡ ÀÇÇØ ³»ºÎ Å×ÀÌºí¿¡ À¯ÁöµË´Ï´Ù.

int caller.getLatestLoad (string cluster_IP, int port, string server_IP)

¼¼ °³ÀÇ Àμö°¡ ÇÔ²² ÇϳªÀÇ ¼­¹ö ¿ÀºêÁ§Æ®¿¡ Á¤Àǵ˴ϴÙ.

cluster_IP
ÇöÀç ·Îµå °ªÀ» ¾ò±â À§ÇÑ ¼­¹ö ¿ÀºêÁ§Æ®ÀÇ Å¬·¯½ºÅÍ IP ÁÖ¼Ò. Àμö´Â IP ÁÖ¼Ò Çü½ÄÀÇ Java ¹®ÀÚ¿­À̾î¾ß ÇÕ´Ï´Ù(¿¹: 245.145.62.81).
port
ÇöÀç ·Îµå °ªÀ» ¾ò±â À§ÇÑ ¼­¹ö ¿ÀºêÁ§Æ® ¼­¹ö ¿ÀºêÁ§Æ®ÀÇ Æ÷Æ® ¹øÈ£.
server_IP
ÇöÀç ·Îµå °ªÀ» ¾ò±â À§ÇÑ ¼­¹ö ¿ÀºêÁ§Æ®ÀÇ IP ÁÖ¼Ò. Àμö´Â IP ÁÖ¼Ò Çü½ÄÀÇ Java ¹®ÀÚ¿­À̾î¾ß ÇÕ´Ï´Ù(¿¹: 192.255.201.3).

¸®ÅϰªÀº Á¤¼öÀÔ´Ï´Ù.

ÀÌ ÇÔ¼ö È£ÃâÀº ÀÓÀÇ ÇÁ·ÎÅäÄÝÀ̳ª Æ÷Æ®°¡ ´Ù¸¥ ÇÁ·ÎÅäÄÝÀ̳ª Æ÷Æ®¿Í µ¶¸³ÀûÀ¸·Î ÀÛµ¿µÇµµ·Ï ÇÒ °æ¿ì À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, µ¿ÀÏÇÑ ½Ã½ºÅÛÀÇ ÅÚ³Ý ¼­¹ö°¡ »ç¿ë ºÒ°¡´ÉÇÑ °æ¿ì, ƯÁ¤ Application Server¸¦ »ç¿ë ºÒ°¡´ÉÇÏ°Ô ÇÑ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¿¡¼­ ÀÌ ÇÔ¼ö È£ÃâÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

caller.receive()

receive ÇÔ¼ö´Â ¼ÒÄÏ Á¢¼Ó¿¡¼­ Á¤º¸¸¦ °¡Á®¿É´Ï´Ù.

caller.receive(stringbuffer *response)

response ¸Å°³º¯¼ö´Â °Ë»öµÈ µ¥ÀÌÅͰ¡ À§Ä¡ÇÒ ¹®ÀÚ¿­ ¹öÆÛÀÔ´Ï´Ù. ¶ÇÇÑ ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº Àǹ̸¦ °®´Â Á¤¼ö °ªÀ» ¸®ÅÏÇÕ´Ï´Ù.

caller.send()

send ÇÔ¼ö´Â ÁöÁ¤µÈ Æ÷Æ®¸¦ »ç¿ëÇÏ¿©, ±¸ÃàµÈ ¼ÒÄÏ Á¢¼ÓÀ» ÅëÇØ µ¥ÀÌÅÍ ÆÐŶÀ» ¼­¹ö·Î Àü¼ÛÇÕ´Ï´Ù.

caller.send(string command)

command ¸Å°³º¯¼ö´Â ¼­¹ö¿¡ Àü¼ÛÇÒ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÑ ¹®ÀÚ¿­ÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº Àǹ̸¦ °®´Â Á¤¼ö °ªÀ» ¸®ÅÏÇÕ´Ï´Ù.

suppressBaseOpeningSocket()

suppressBaseOpeningSocket ÇÔ¼ö È£ÃâÀ» »ç¿ëÇÏ¿© »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú´Â ±âº» ¾îµå¹ÙÀÌÀú Äڵ尡 »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ ´ë½ÅÇØ¼­ ¼­¹ö¿¡ ´ëÇØ TCP ¼ÒÄÏÀ» ¿­ °ÍÀÎÁö ¿©ºÎ¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¾îµå¹ÙÀÌÀú°¡ ¼­¹ö »óŸ¦ ÆÇº°Çϱâ À§ÇØ ¼­¹ö¿Í Á÷Á¢ Åë½ÅÇÏÁö ¾Ê´Â °æ¿ì, ÀÌ ¼ÒÄÏÀ» ¿­ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.

ÀÌ ÇÔ¼ö È£ÃâÀº ÇÑ ¹ø¸¸ ¹ßÇàµÉ ¼ö ÀÖÀ¸¸ç ADV_AdvisorInitialize ·çƾ¿¡¼­ ¹ßÇàµÇ¾î¾ß ÇÕ´Ï´Ù.

ÀÌ ÇÔ¼ö¿¡´Â ¸Å°³º¯¼ö°¡ ¾ø½À´Ï´Ù.

¿¹Á¦

´ÙÀ½ ¿¹Á¦¿¡¼­´Â »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú°¡ ±¸ÇöµÇ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

Ç¥ÁØ ¾îµå¹ÙÀÌÀú

ÀÌ ¼Ò½º ÄÚµå »ùÇÃÀº Ç¥ÁØ Load Balancer HTTP ¾îµå¹ÙÀÌÀú¿Í À¯»çÇÕ´Ï´Ù. ÇÔ¼ö´Â ´ÙÀ½°ú °°½À´Ï´Ù.

  1. Àü¼Û ¿äû "HEAD/HTTP" ¸í·ÉÀÌ ¹ßÇàµË´Ï´Ù.
  2. ÀÀ´äÀ» ¹Þ¾Ò½À´Ï´Ù. Á¤º¸´Â ±¸¹® ºÐ¼®µÉ ¼ö ¾øÀ¸³ª ÀÀ´äÀº getLoad ¸Þ¼Òµå¸¦ Á¾·á½ÃÄ×½À´Ï´Ù.
  3. getLoad ¸Þ¼Òµå´Â ¼º°øÀ» Ç¥½ÃÇϱâ À§Çؼ­ 0 ¶Ç´Â ½ÇÆÐ¸¦ Ç¥½ÃÇϱâ À§Çؼ­ -1À» ¸®ÅϽÃÄ×½À´Ï´Ù.

ÀÌ ¾îµå¹ÙÀÌÀú´Â Á¤»ó ¸ðµå¿¡¼­ ÀÛµ¿ÇϹǷΠ·Îµå ÃøÁ¤Àº ¼ÒÄÏÀÇ ¿­±â, Àü¼Û, ¼ö½Å ¹× ´Ý±â ÀÛ¾÷À» ¼öÇàÇÏ´Â µ¥ °æ°úÇÑ ½Ã°£(¹Ð¸®ÃÊ)¿¡ ±â¹ÝÇÕ´Ï´Ù.

package CustomAdvisors;
import com.ibm.internet.lb.advisors.*;
public class ADV_sample extends ADV_Base implements ADV_MethodInterface {
  static final String ADV_NAME ="Sample";
  static final int ADV_DEF_ADV_ON_PORT = 80;
  static final int ADV_DEF_INTERVAL = 7;
  static final string ADV_SEND_REQUEST =
    "HEAD / HTTP/1.0\r\nAccept: */*\r\nUser-Agent: " +
    "IBM_Load_Balancer_HTTP_Advisor\r\n\r\n";

//--------
// Constructor

  public ADV_sample() {
    super(ADV_NAME, "3.0.0.0-03.31.00",
          ADV_DEF_ADV_ON_PORT, ADV_DEF_INTERVAL, "",
          false);
    super.setAdvisor( this );
  }

//--------
  // ADV_AdvisorInitialize

  public void ADV_AdvisorInitialize() {
    return;                                  // usually an empty routine
  }

//--------
// getLoad

  public int getLoad(int iConnectTime, ADV_Thread caller) {
    int iRc; 
    int iLoad = ADV_HOST_INACCESSIBLE;       // initialize to inaccessible

    iRc = caller.send(ADV_SEND_REQUEST);     // send the HTTP request to
                                               // the server
    if (0 <= iRc) {                          // if the send is successful
      StringBuffer sbReceiveData = new StringBuffer("");   // allocate a buffer 
                                                          // for the response
      iRc = caller.receive(sbReceiveData);   // receive the result

      // parse the result here if you need to

      if (0 <= iRc) {          // if the receive is successful
        iLoad = 0;             // return 0 for success
      }                        // (advisor's load value is ignored by
    }                          //  base in normal mode)
    return iLoad;
  }
}

»çÀÌµå ½ºÆ®¸² ¾îµå¹ÙÀÌÀú

ÀÌ ¿¹Á¦´Â ¾îµå¹ÙÀÌÀú ±âº»¿¡ ÀÇÇØ ¿­¸° Ç¥ÁØ ¼ÒÄÏÀ» ¾ïÁ¦ÇÏ´Â °æ¿ì¸¦ ¼³¸íÇÕ´Ï´Ù. ´ë½Å, ÀÌ ¾îµå¹ÙÀÌÀú´Â »çÀÌµå ½ºÆ®¸² Java ¼ÒÄÏÀ» ¿­¾î ¼­¹ö¸¦ Á¶È¸ÇÕ´Ï´Ù. ÀÌ ÇÁ·Î½ÃÀú´Â ¼­¹ö°¡ ¾îµå¹ÙÀÌÀú Á¶È¸¸¦ ÀνÄÇϱâ À§ÇØ Á¤»ó Ŭ¶óÀÌ¾ðÆ® Åë½Å·®¿¡¼­ ´Ù¸¥ Æ÷Æ®¸¦ »ç¿ëÇÏ´Â °æ¿ì À¯¿ëÇÕ´Ï´Ù.

ÀÌ ¿¹Á¦¿¡¼­ ¼­¹ö´Â Æ÷Æ® 11999¸¦ ÀÎ½Ä ÁßÀ̸ç, 16Áø Á¤¼ö "4"°¡ Á¶È¸µÇ¸é ·Îµå °ªÀ» ¸®ÅÏÇÕ´Ï´Ù. ÀÌ ¿¹Á¦´Â ¹Ù²Ù±â ¸ðµå¿¡¼­ ½ÇÇàµË´Ï´Ù. Áï, ¾îµå¹ÙÀÌÀú »ý¼ºÀÚÀÇ ¸¶Áö¸· ¸Å°³º¯¼ö°¡ true·Î ¼³Á¤µÇ°í ¾îµå¹ÙÀÌÀú ±âº» Äڵ尡 °æ°úµÈ ½Ã°£À» »ç¿ëÇÏÁö ¾Ê°í ¸®ÅÏµÈ ·Îµå °ªÀ» »ç¿ëÇÕ´Ï´Ù.

ÃʱâÈ­ ·çƾ¿¡¼­ supressBaseOpeningSocket()¿¡ ´ëÇÑ È£Ãâ¿¡ À¯ÀÇÇϽʽÿÀ. Àü¼ÛµÇ´Â µ¥ÀÌÅͰ¡ ¾ø´Â °æ¿ì ±âº» ¼ÒÄÏÀ» ¾ïÁ¦ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. ¿¹¸¦ µé¾î ¾îµå¹ÙÀÌÀú¸¦ ¼­¹ö¿¡ ¿¬°áÇϱâ À§ÇØ ¼ÒÄÏÀ» ¿­°íÀÚ ÇÒ °æ¿ì°¡ ÀÖ½À´Ï´Ù. À̸¦ ¼±ÅÃÇϱâ Àü¿¡ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ ÀÌ·¯ÇÑ ¼±ÅÃÀÌ ÇÊ¿äÇÑÁö ÁÖÀÇÇØ¼­ °Ë»çÇϽʽÿÀ.

package CustomAdvisors;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.Date;
import com.ibm.internet.lb.advisors.*;
import com.ibm.internet.lb.common.*;
import com.ibm.internet.lb.server.SRV_ConfigServer;

public class ADV_sidea extends ADV_Base implements ADV_MethodInterface {
  static final String ADV_NAME = "sidea";
  static final int ADV_DEF_ADV_ON_PORT = 12345;
  static final int ADV_DEF_INTERVAL = 7;

  // create an array of bytes with the load request message
  static final byte[] abHealth = {(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x04};
  public ADV_sidea() {
    super(ADV_NAME, "3.0.0.0-03.31.00", ADV_DEF_ADV_ON_PORT,
        ADV_DEF_INTERVAL, "", 
        true);         // replace mode parameter is true
    super.setAdvisor( this );
  }

//--------
  // ADV_AdvisorInitialize

  public void ADV_AdvisorInitialize()
  { 
    suppressBaseOpeningSocket();   // tell base code not to open the 
                                   // standard socket 
        return;
  }

//--------
// getLoad

  public int getLoad(int iConnectTime, ADV_Thread caller) {
    int iRc; 
    int iLoad = ADV_HOST_INACCESSIBLE;    // -1
    int iControlPort = 11999;    // port on which to communicate with the server

    string sServer = caller.getCurrentServer();    // address of server to query
      try {
      socket soServer = new Socket(sServer, iControlPort);  // open socket to 
                                                            // server
      DataInputStream disServer = new DataInputStream(soServer.getInputStream());
      DataOutputStream dosServer = new DataOutputStream(soServer.getOutputStream());
      int iRecvTimeout = 10000;  // set timeout (in milliseconds)
                                 // for receiving data  
      soServer.setSoTimeout(iRecvTimeout);

      dosServer.writeInt(4);     // send a message to the server
      dosServer.flush();

      iLoad = disServer.readByte();   // receive the response from the server

    } catch (exception e) {
      system.out.println("Caught exception " + e);
    }
    return iLoad;    // return the load reported from the server
  }
}

Æ÷Æ®°¡ µÎ °³ÀÎ ¾îµå¹ÙÀÌÀú

ÀÌ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú ¿¹Á¦¿¡¼­´Â ¼­¹öÀÇ ÇÑ Æ÷Æ® ÀÚüÀÇ »óÅ¿Í, µ¿ÀÏÇÑ ¼­¹ö ½Ã½ºÅÛÀÇ ´Ù¸¥ Æ÷Æ®¿¡¼­ ½ÇÇà ÁßÀÎ ´Ù¸¥ ¼­¹ö µð¸ÕÀÇ »óÅ¿¡ ±â¹ÝÇÏ¿© ¼­¹öÀÇ ÇÑ Æ÷Æ®¿¡ ´ëÇÑ Àå¾Ö¸¦ ¹ß°ßÇÏ´Â ±â´ÉÀ» º¸¿©ÁÝ´Ï´Ù. ¿¹¸¦ µé¾î, Æ÷Æ® 80ÀÇ HTTP µð¸ÕÀÌ ÀÀ´äÀ» Á¤ÁöÇÏ´Â °æ¿ì, Æ÷Æ® 443ÀÇ SSL µð¸Õ¿¡ ´ëÇÑ Åë½Å·® °æ·Î ÁöÁ¤À» Á¤ÁöÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

ÀÌ ¾îµå¹ÙÀÌÀú´Â ÀÀ´äÀ» Àü¼ÛÇÏÁö ¾Ê´Â ¼­¹öÀÇ ±â´ÉÀ» Á¤ÁöÇß´Ù°í °£ÁÖÇÏ¿© Á¾·á·Î Ç¥½ÃÇÑ´Ù´Â Á¡¿¡¼­, Ç¥ÁØ ¾îµå¹ÙÀÌÀúº¸´Ù ´õ Àû±ØÀûÀÔ´Ï´Ù. Ç¥ÁØ ¾îµå¹ÙÀÌÀú´Â ¹ÝÀÀÀÌ ¾ø´Â ¼­¹ö¸¦ ¼Óµµ°¡ ¸Å¿ì ´À¸®´Ù°í °£ÁÖÇÕ´Ï´Ù. ÀÌ ¾îµå¹ÙÀÌÀú´Â HTTP ¹× SSL Æ÷Æ® Áß ÇÑ Æ÷Æ®¿¡¼­ ÀÀ´äÀÌ ¾øÀ¸¸é ¸ðµÎ¿¡ ´ëÇØ ¼­¹ö¸¦ Á¾·á·Î Ç¥½ÃÇÕ´Ï´Ù.

ÀÌ·¯ÇÑ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú¸¦ »ç¿ëÇÏ·Á¸é °ü¸®ÀÚ´Â Çϳª´Â HTTP Æ÷Æ®¿¡¼­, Çϳª´Â SSL Æ÷Æ®¿¡¼­ ¸ðµÎ µÎ °³ÀÇ ¾îµå¹ÙÀÌÀú ÀνºÅϽº¸¦ ½ÃÀÛÇÕ´Ï´Ù. ¾îµå¹ÙÀÌÀú´Â Çϳª´Â HTTP¿ëÀ¸·Î, Çϳª´Â SSL¿ëÀ¸·Î ¸ðµÎ µÎ °³ÀÇ Á¤Àû ±Û·Î¹ú ÇØ½Ã Å×À̺íÀ» ÀνºÅϽºÈ­ÇÕ´Ï´Ù. °¢ ¾îµå¹ÙÀÌÀú´Â ÇØ´ç ¼­¹ö µð¸Õ°úÀÇ Åë½ÅÀ» ½ÃµµÇϰí, ÀÌ À̺¥Æ®ÀÇ °á°ú¸¦ ÇØ½Ã Å×ÀÌºí¿¡ ÀúÀåÇÕ´Ï´Ù. °¢ ¾îµå¹ÙÀÌÀú°¡ ±âº» ¾îµå¹ÙÀÌÀú Ŭ·¡½º¿¡ ¸®ÅÏÇÏ´Â °ªÀº °¢ÀÚÀÇ ÀÚü ¼­¹ö µð¸Õ°ú Åë½ÅÇÒ ¼ö ÀÖ´Â ±â´É°ú »ó´ë ¾îµå¹ÙÀÌÀú°¡ ÀÚü µð¸Õ°ú Åë½ÅÇÒ ¼ö ÀÖ´Â ±â´É¿¡ µû¶ó ´Ù¸¨´Ï´Ù.

´ÙÀ½ Á¶Á¤ ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

´ÙÀ½ ¿À·ù Á¶°ÇÀÌ ¹ß°ßµË´Ï´Ù.

ÀÌ ¿¹Á¦´Â HTTP¿¡ ´ëÇØ Æ÷Æ® 80À» SSL¿¡ ´ëÇØ Æ÷Æ® 443À» ¿¬°áÇϵµ·Ï ÀÛ¼ºµÇ¾úÀ¸³ª, Æ÷Æ®ÀÇ Á¶ÇÕÀ» »ç¿ëÀÚ¿¡ ¸Â°Ô Á¶Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

package CustomAdvisors;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.Date;
import com.ibm.internet.lb.advisors.*;
import com.ibm.internet.lb.common.*;
import com.ibm.internet.lb.manager.*;
import com.ibm.internet.lb.server.SRV_ConfigServer;

//--------
// Define the table element for the hash tables used in this custom advisor

class ADV_nte implements Cloneable {
  private string  sCluster;
  private int     iPort;
  private string  sServer;
  private int     iLoad;
  private Date    dTimestamp;

//--------
  // constructor

  public ADV_nte(string sClusterIn, int iPortIn, string sServerIn, int iLoadIn) {
    sCluster = sClusterIn;
    iPort = iPortIn;
    sServer = sServerIn;
    iLoad = iLoadIn;
    dTimestamp = new Date();
  }

//--------
// check whether this element is current or expired
  public boolean isCurrent(ADV_twop oThis) {
    boolean bCurrent;
    int iLifetimeMs = 3 * 1000 * oThis.getInterval();   // set lifetime as
                                                        // 3 advisor cycles
    Date dNow = new Date();
    Date dExpires = new Date(dTimestamp.getTime() + iLifetimeMs);

    if (dNow.after(dExpires)) {
      bCurrent = false;
      } else {
      bCurrent = true;
    }
    return bCurrent;
  }

//--------
// value accessor(s)

  public int getLoadValue() { return iLoad; }
  
//--------
// clone (avoids corruption between threads)

  public synchronized Object Clone() {
      try {
      return super.clone();
    } catch (cloneNotSupportedException e) {
      return null;
    }
  }

}

//--------
// define the custom advisor

public class ADV_twop extends ADV_Base 
   implements ADV_MethodInterface, ADV_AdvisorVersionInterface {
 
  static final int ADV_TWOP_PORT_HTTP = 80;
  static final int ADV_TWOP_PORT_SSL = 443;

//--------
  // define tables to hold port-specific history information

  static HashTable htTwopHTTP = new Hashtable();
  static HashTable htTwopSSL = new Hashtable();

  static final String ADV_TWOP_NAME = "twop";
  static final int ADV_TWOP_DEF_ADV_ON_PORT = 80;
  static final int ADV_TWOP_DEF_INTERVAL = 7;
  static final string ADV_HTTP_REQUEST_STRING = 
    "HEAD / HTTP/1.0\r\nAccept: */*\r\nUser-Agent: " +
    "IBM_LB_Custom_Advisor\r\n\r\n";

  //--------
  // create byte array with SSL client hello message
  
  public static final byte[] abClientHello = {
    (byte)0x80, (byte)0x1c,
    (byte)0x01,               // client hello
    (byte)0x03, (byte)0x00,   // SSL version
    (byte)0x00, (byte)0x03,   // cipher spec len (bytes)
    (byte)0x00, (byte)0x00,   // session ID len (bytes)
    (byte)0x00, (byte)0x10,   // challenge data len (bytes)
    (byte)0x00, (byte)0x00, (byte)0x03,   // cipher spec
    (byte)0x1A, (byte)0xFC, (byte)0xE5, (byte)Ox20,  // challenge data
    (byte)0xFD, (byte)0x3A, (byte)0x3C, (byte)0x18,  
    (byte)0xAB, (byte)0x67, (byte)0xB0, (byte)0x52, 
    (byte)0xB1, (byte)0x1D, (byte)0x55, (byte)0x44, (byte)0x0D, (byte)0x0A };

  //--------
  // constructor

  public ADV_twop() {
    super(ADV_TWOP_NAME, VERSION, ADV_TWOP_DEF_ADV_ON_PORT, 
          ADV_TWOP_DEF_INTERVAL, "", 
          false);    // false = load balancer times the response
    setAdvisor ( this );
  }

  //--------
  // ADV_AdvisorInitialize

  public void ADV_AdvisorInitialize() {
        return;
  }

  //--------
  // synchronized PUT and GET access routines for the hash tables

  synchronized ADV_nte getNte(Hashtable ht, String sName, String sHashKey) {
    ADV_nte nte = (ADV_nte)(ht.get(sHashKey));
    if (null != nte) {
      nte = (ADV_nte)nte.clone();
    }
    return nte;
  }
 synchronized void putNte(Hashtable ht, String sName, String sHashKey, 
                          ADV_nte nte) {
   ht.put(sHashKey,nte);
        return;
 }

  //--------
  // getLoadHTTP - determine HTTP load based on server response

  int getLoadHTTP(int iConnectTime, ADV_Thread caller) {
    int iLoad = ADV_HOST_INACCESSIBLE;

    int iRc = caller.send(ADV_HTTP_REQUEST_STRING);  // send request message 
                                                     // to server   
    if (0 <= iRc) {    // did the request return a failure?
      StringBuffer sbReceiveData = new StringBuffer("")    // allocate a buffer 
                                                          // for the response
      iRc = caller.receive(sbReceiveData);    // get response from server

      if (0 <= iRc) {      // did the receive return a failure?
        if (0 < sbReceiveData.length()) {    // is data there?
          iLoad = SUCCESS;        // ignore retrieved data and  
                                  // return success code
        }
      }
    }
    return iLoad;
  }

  //--------
  // getLoadSSL() - determine SSL load based on server response

  int getLoadSSL(int iConnectTime, ASV_Thread caller) {
    int iLoad = ADV_HOST_INACCESSIBLE;

    int iSocket = caller.getAdvisorSocket();    // send hex request to server
    CMNByteArrayWrapper cbawClientHello = new CMNByteArrayWrapper(abClientHello);
    int iRc = SRV_ConfigServer.socketapi.sendBytes(iSocket, cbawClientHello);

    if (0 <= iRc) {    // did the request return a failure?
      StringBuffer sbReceiveData = new StringBuffer("");  // allocate buffer 
                                                          // for the response
      iRc = caller.receive(sbReceiveData);     // get a response from 
                                               // the server
      if (0 <= iRc) {      // did the receive return a failure?
        if (0 < sbReceiveData.length()) {    // is data there?
          iLoad = SUCCESS;    // ignore retrieved data and return success code
        }
      }
    }
    return iLoad;
  }

  //--------
  // getLoad - merge results from the HTTP and SSL methods

  public int getLoad(int iConnectTime, ADV_Thread caller) {
    int iLoadHTTP;
    int iLoadSSL;
    int iLoad;
    int iRc; 

    String sCluster = caller.getCurrentCluster();   // current cluster address
    int iPort = getAdviseOnPort();
    String sServer = caller.getCurrentServer();
    String sHashKey = sCluster = ":" + sServer;       // hash table key

    if (ADV_TWOP_PORT_HTTP == iPort) {                // handle an HTTP server
      iLoadHTTP = getLoadHTTP(iConnectTime, caller);  // get the load for HTTP

      ADV_nte nteHTTP = newADV_nte(sCluster, iPort, sServer, iLoadHTTP);
      putNte(htTwopHTTP, "HTTP", sHashKey, nteHTTP);  // save HTTP load 
                                                               // information
      ADV_nte nteSSL = getNte(htTwopSSL, "SSL", sHashKey);  // get SSL 
                                                               // information
      if (null != nteSSL) {
        if (true == nteSSL.isCurrent(this)) {         // check the time stamp
          if (ADV_HOST_INACCESSIBLE != nteSSL.getLoadValue()) {    // is SSL 
                                                                  // working?
        iLoad = iLoadHTTP;
          } else {    // SSL is not working, so mark the HTTP server down
            iLoad= ADV_HOST_INACCESSIBLE;
          }
        } else {      // SSL information is expired, so mark the 
                      // HTTP server down
      iLoad = ADV_HOST_INACCESSIBLE;
        }
      } else {        // no load information about SSL, report 
                      // getLoadHTTP() results
        iLoad = iLoadHTTP;
      }
    }
    else if (ADV_TWOP_PORT_SSL == iPort) {           // handle an SSL server
      iLoadSSL = getLoadSSL(iConnectTime, caller);   // get load for SSL

      ADV_nte nteSSL = new ADV_nte(sCluster, iPort, sServer, iLoadSSL);
      putNte(htTwopSSL, "SSL", sHashKey, nteSSL);   // save SSL load info.

      ADV_nte nteHTTP = getNte(htTwopHTTP, "SSL", sHashKey);   // get HTTP 
                                                               // information
      if (null != nteHTTP) {
        if (true == nteHTTP.isCurrent(this)) {       // check the timestamp
          if (ADV_HOST_INACCESSIBLE != nteHTTP.getLoadValue()) {  // is HTTP 
                                                                  // working?
        iLoad = iLoadSSL;
          } else {   // HTTP server is not working, so mark SSL down
      iLoad = ADV_HOST_INACCESSIBLE;
          }
        } else {     // expired information from HTTP, so mark SSL down
      iLoad = ADV_HOST_INACCESSIBLE;
        }
      } else {       // no load information about HTTP, report 
                     // getLoadSSL() results
        iLoad = iLoadSSL;
      }
    }

  //--------
  // error handler

    else { 
      iLoad = ADV_HOST_INACCESSIBLE;
    }
    return iLoad;
  }
}

WebSphere Application Server ¾îµå¹ÙÀÌÀú

WebSphere Application Server¿ë »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀú »ùÇÃÀº install_path/servers/samples/CustomAdvisors/ µð·ºÅ丮¿¡ µé¾î ÀÖ½À´Ï´Ù. ÀÌ ¹®¼­¿¡¼­´Â Àüü Äڵ带 ¼ö·ÏÇÏÁö ¾Ê¾Ò½À´Ï´Ù.

¿ÏÀüÇÑ ¾îµå¹ÙÀÌÀú´Â ÀÌ ¿¹Á¦º¸´Ù ¾à°£ º¹ÀâÇÕ´Ï´Ù. Áï, À§¿¡¼­ º» StringTokenizer ¿¹Á¦º¸´Ù ´õ ¾ÐÃàµÈ Ư¼ö ±¸¹® ºÐ¼® ·çƾÀ» Ãß°¡ÇÕ´Ï´Ù.

ÄÚµå »ùÇÃÀÇ ´õ º¹ÀâÇÑ ºÎºÐÀº Java servlet¿¡ ÀÖ½À´Ï´Ù. servlet¿¡´Â ´Ù¸¥ ¸Þ¼Òµå Áß¿¡¼­ servlet ½ºÆå¿¡ ÇÊ¿äÇÑ µÎ °³ÀÇ ¸Þ¼Òµå init() ¹× service()¿Í Java.lang.thread Ŭ·¡½º¿¡ ÇÊ¿äÇÑ ÇÑ °³ÀÇ ¸Þ¼Òµå run()ÀÌ µé¾î ÀÖ½À´Ï´Ù.

servlet ÄÚµåÀÇ °ü·Ã ´ÜÆíµéÀº ¾Æ·¡¿Í °°½À´Ï´Ù.

...

  public void init(ServletConfig config) throws ServletException {
    super.init(config);
    ...
    _checker = new Thread(this);
    _checker.start();
  }
  
  public void run() {
    setStatus(GOOD);

    while (true) {
      if (!getKeepRunning()) 
        return;
      setStatus(figureLoad());
      setLastUpdate(new java.util.Date());

      try {
        _checker.sleep(_interval * 1000);
      } catch (Exception ignore) { ; }
    }
  }

  public void service(HttpServletRequest req, HttpServletResponse res)
                      throws ServletException, IOException {

    ServletOutputStream out = null;
      try {
      out = res.getOutputStream();
    } catch (Exception e) { ... }
    ...
    res.setContentType("text/x-application-LBAdvisor");
    out.println(getStatusString());
    out.println(getLastUpdate().toString());
    out.flush();
        return;
  }

  ...

¾îµå¹ÙÀÌÀú¿¡¼­ ¸®ÅÏµÈ µ¥ÀÌÅÍ »ç¿ë

Application ServerÀÇ ±âÁ¸ ºÎºÐ¿¡ ´ëÇÑ Ç¥ÁØ È£ÃâÀ» »ç¿ëÇϵç, »ç¿ëÀÚÀÇ »ç¿ëÀÚ Á¤ÀÇ ¾îµå¹ÙÀÌÀúÀÇ ¼­¹öÃø ¾îµå¹ÙÀÌÀú°¡ µÉ »õ Äڵ带 Ãß°¡ÇÏµç ¸®ÅϵǴ ·Îµå °ªÀ» °Ë»çÇÏ°í ¼­¹ö ÀÛµ¿À» º¯°æÇÏ·Á°í ÇÒ °æ¿ì°¡ ÀÖ½À´Ï´Ù. Java StringTokenizer Ŭ·¡½º ¹× ÀÌ¿Í ¿¬°üµÈ ¸Þ¼Òµå¸¦ »ç¿ëÇϸé ÀÌ·¯ÇÑ °Ë»ç¸¦ ½±°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀϹÝÀûÀÎ HTTP ¸í·ÉÀº GET /index.html HTTP/1.0ÀÔ´Ï´Ù.

ÀÌ ¸í·É¿¡ ´ëÇÑ ÀϹÝÀûÀÎ ÀÀ´äÀº ´ÙÀ½°ú °°½À´Ï´Ù.

HTTP/1.1 200 OK
Date: Mon, 20 November 2000 14:09:57 GMT
Server: Apache/1.3.12 (Linux and UNIX)
Content-Location: index.html.en
Vary: negotiate
TCN: choice
Last-Modified: Fri, 20 Oct 2000 15:58:35 GMT
ETag: "14f3e5-1a8-39f06bab;39f06a02"
Accept-Ranges: bytes
Content-Length: 424
Connection: close
Content-Type: text/html
Content-Language: en

<!DOCTYPE HTML PUBLIC "-//w3c//DTD HTML 3.2 Final//EN">
<HTML><HEAD><TITLE>Test Page</TITLE></HEAD>
<BODY><H1>Apache server</H1>
<HR>
<P><P>This Web server is running Apache 1.3.12.
<P><HR>
<P><IMG SRC="apache_pb.gif" ALT="">
</BODY></HTML>

°ü½ÉÀÖ´Â Ç׸ñ, ƯÈ÷ HTTP ¸®ÅÏ Äڵ尡 ù Çà¿¡ Æ÷ÇԵ˴ϴÙ.

HTTP ½ºÆåÀÌ ´ÙÀ½°ú °°ÀÌ ¿ä¾àÇÒ ¼ö ÀÖ´Â ¸®ÅÏ Äڵ带 ºÐ·ùÇÕ´Ï´Ù.

¼­¹ö°¡ ¸®ÅÏÇÒ ¼ö ÀÖ´Â Äڵ带 Á¤È®È÷ ¾Ë°í ÀÖ´Â °æ¿ì, Äڵ带 ÀÌ ¿¹Á¦¿Í °°ÀÌ ÀÚ¼¼ÇÏ°Ô ÀÛ¼ºÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ±×·¯³ª ¹ß°ßÇÏ´Â ¸®ÅÏ Äڵ带 Á¦ÇÑÇÏ¸é ³ªÁß¿¡ ÇÁ·Î±×·¥ÀÇ À¶Å뼺À» Á¦ÇÑÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡ À¯ÀÇÇØ¾ß ÇÕ´Ï´Ù.

´ÙÀ½ ¿¹Á¦´Â ÃÖ¼ÒÀÇ HTT Ŭ¶óÀÌ¾ðÆ®¸¦ Æ÷ÇÔÇÏ´Â µ¶¸³Çü Java ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ÀÌ ¿¹Á¦´Â HTTP ÀÀ´äÀ» Á¶»çÇϱâ À§ÇÑ °£´ÜÇÑ ¹ü¿ë ±¸¹® ºÐ¼®±â¸¦ È£ÃâÇÕ´Ï´Ù.

import java.io.*;
import java.util.*;
import java.net.*;

public class ParseTest {
  static final int iPort = 80;
  static final String sServer = "www.ibm.com";
  static final String sQuery = "GET /index.html HTTP/1.0\r\n\r\n";
  static final String sHTTP10 = "HTTP/1.0";
  static final String sHTTP11 = "HTTP/1.1";

  public static void main(String[] Arg) {
    String sHTTPVersion = null;
    String sHTTPReturnCode = null;
    String sResponse = null;
    int iRc = 0;
    BufferedReader brIn = null;
    PrintWriter psOut = null;
    Socket soServer= null;
    StringBuffer sbText = new StringBuffer(40);

      try {
      soServer = new Socket(sServer, iPort);
      brIn = new BufferedReader(new InputStreamReader(soServer.getInputStream()));
      psOut = new PrintWriter(soServer.getOutputStream());
      psOut.println(sQuery);
      psOut.flush();
      sResponse = brIn.readLine();
      try {
        soServer.close();
      } catch (Exception sc) {;}
    }  catch (Exception swr) {;}
    
    StringTokenizer st = new StringTokenizer(sResponse, " ");
    if (true == st.hasMoreTokens()) {
      sHTTPVersion = st.nextToken();
      if (sHTTPVersion.equals(sHTTP110) || sHTTPVersion.equals(sHTTP11)) {
        System.out.println("HTTP Version: " + sHTTPVersion);
      } else {
        System.out.println("Invalid HTTP Version: " + sHTTPVersion);
      }
      } else {
      System.out.println("Nothing was returned");
        return;
    }

    if (true == st.hasMoreTokens()) {
      sHTTPReturnCode = st.nextToken();
      try {
        iRc = Integer.parseInt(sHTTPReturnCode);
      } catch (NumberFormatException ne) {;}

      switch (iRc) {
      case(200): 
        System.out.println("HTTP Response code: OK, " + iRc);
        break; 
      case(400): case(401): case(402): case(403): case(404): 
        System.out.println("HTTP Response code: Client Error, " + iRc);
        break; 
      case(500): case(501): case(502): case(503):
        System.out.println("HTTP Response code: Server Error, " + iRc);
        break; 
      default: 
        System.out.println("HTTP Response code: Unknown, " + iRc);
        break; 
      }
    }

    if (true == st.hasMoreTokens()) {
      while (true == st.hasMoreTokens()) {
        sbText.append(st.nextToken());
        sbText.append("  ");
        }
      System.out.println("HTTP Response phrase: " + sbText.toString());
    }
  }
}
  

»öÀÎ

 °¡   ´Ù   ¶ó   ¸¶   ¹Ù   »ç   ¾Æ   ÀÚ   Ä«   Å¸   ÆÄ   A   C   G   H   I   L   P   R   S   W 
°¡ ´Ù ¶ó ¸¶ ¹Ù »ç ¾Æ ÀÚ Ä« Ÿ ÆÄ A C G H I L P R S W