request¿Í client object ¿Í´Â ´Ù¸¥°Ô ÇϳªÀÇ ÇÁ·ÎÁ§Æ®³ª ÇϳªÀÇ Àüü ¼¹ö(¿©·¯ ÇÁ·ÎÁ§Æ®µéÀÇ
ÁýÇÕÀ» Æ÷ÇÔÇÏ´Â)¿¡ °ÉÃļ µ¿½Ã¿¡ °ü¸®µÇ¾îÁö´Â Áï, global°ªÀ» »ç¿ëÇÏ´Â °æ¿ì¿¡ »ç¿ëµÇ´Â objectµéÀÌ´Ù.
°£´ÜÇÑ ¿¹·Î, ÇØ´ç À¥¼¹ö¿¡ ´ëÇÑ Á¢¼Ó °Ç¼ö´Â ¿ÀÁ÷ Çϳª Á¸ÀçÇØ¼, ÇÏÀ§ÀÇ ¸ðµç
¾îÇø®ÄÉÀ̼ǿ¡¼ Á¢¼Ó¶§¸¶´Ù Áõ°¡½ÃÄÑÁÖ¾î¾ß ÇÑ´Ù. À̶§ server³ª project°°Àº object°¡ »ç¿ëµÈ´Ù.
11.1 Project
ÇϳªÀÇ ¾îÇø®ÄÉÀÌ¼Ç ¾È¿¡¼ global°ªÀ¸·Î »ç¿ëµÇ´Â º¯¼ö¸¦
´ã´Â objectÀÌ´Ù. ƯÁ¤ project¸¦ application manager¸¦ ÅëÇØ¼ Á¾·áÇÏ´Â °æ¿ì¿¡ ÆÄ±«µÇ°í,
start, restartÀÇ °æ¿ì ÃʱâȰ¡ ÀÌ·ç¾îÁø´Ù. µû¶ó¼, Áß¿äÇÑ Á¤º¸°¡ ÀÖ´Ù¸é, FileÀ̳ª DataBase¿¡
ÀúÀåÇÏ´Â °ÍÀÌ ÁÁ´Ù.
ÀÌ object´Â ¼¹ö¿¡ ¸Þ¸ð¸®°ø°£À» È®º¸ÇÏ¿© ÀúÀåÇÏ°Ô µÇ¸ç, ¸ðµç project¸¶´Ù µ¶¸³ÀûÀ¸·Î
»ç¿ëµÈ´Ù. º°µµÀÇ Á¤ÀÇµÈ ¼Ó¼ºÀº ¾ø´Ù.
ÇÊ¿äÇÑ °æ¿ì ¾îÇø®ÄÉÀ̼ǰ£ °øÀ¯¸¦ À§Çؼ projectÀÇ ÇÏÀ§
¼Ó¼ºÀ¸·Î µî·ÏÇØ¼ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
11.2 Server
ÀÌ object´Â À¥¼¹ö¿¡¼ °ü¸®ÇÏ´Â global object·Î ¸ðµç ÇÏÀ§ÀÇ ¾îÇø®ÄÉÀ̼ǿ¡¼ Á¢±Ù°¡´ÉÇÏ´Ù.
À¥¼¹ö°¡ startµÇ¸é ÃʱâÈ µÇ°í, À¥¼¹ö¸¦ stop½Ã۸é, ÆÄ±«µÈ´Ù.( ¿©±â¼ ¸»ÇÏ´Â ¼¹ö¶õ,
URLÀÌ ´Ù¸£¸é Áï, Æ÷Æ®°¡ ´Ù¸£¸é ´Þ¶óÁö°Ô µÈ´Ù. ). ¿ª½Ã ÇÊ¿äÇÑ Á¤º¸¸¦ º°µµ·Î º¸°üÇØ¾ß ÇÑ´Ù.
¸î°¡Áö ÁöÁ¤µÈ ¼Ó¼ºÀÌ ÀÖ´Ù.
hostname | Æ÷Æ®¹øÈ£¸¦ Æ÷ÇÔÇÏ´Â URL ex)www.netscape.com:80 |
host | Æ÷Æ®¹øÈ£¾ø´Â URL ex)www.netscape.com |
protocol | ÇÁ·ÎÅäÄÝ ex) http: |
port | ÇÁ·ÎÅäÄÝ ex) http: |
jsVersion | Server Version ex) 3.0 WindowsNT |
ÇÊ¿äÇÑ °æ¿ì °øÀ¯¸¦ À§Çؼ serverÀÇ ÇÏÀ§ ¼Ó¼ºÀ¸·Î µî·ÏÇØ¼ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- LOCK/UNLOCK
project¿Í serverÀÇ ¼Ó¼ºµéÀº µ¿½Ã¿¡ ¿©·¯ »ç¿ëÀÚ°¡ Á¢±ÙÇÏ´Â °æ¿ì°¡ Àֱ⠶§¹®¿¡,
lock, unlock°ú °°Àº ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù.
»óȲ) server.counter¶ó°í ÇØ¼ Á¢¼Ó °Ç¼ö¸¦ ÀúÀåÇÏ´Â °ªÀÌ ÀÖ°í ÇöÀç 3À̶ó°í ÇÏÀÚ, ÀÌ ¶§,
a¶ó´Â »ç¶÷ÀÌ Á¢±ÙÀ» ÇØ¼, server.counter ¿¡ °ªÀ» 4¶ó°í ¾²·Á°í ÇÒ ¶§, b¶ó´Â »ç¶÷µµ Á¢±ÙÀ» Çß´Ù.
°°Àº ÀÛ¾÷À» ÇÏ°Ô µÇ¸é, ¾ÆÁ÷ counterÀÇ °ªÀÌ 3ÀÌ ÀÖÀ» °æ¿ì ÃÖÁ¾ °ªÀº 5°¡ µÇ¾ß ÇÏÁö¸¸,
µÎ»ç¶÷ÀÌ µ¿½Ã¿¡ ¾²°Ô µÇ¸é 4°¡ µÇ¾î ¹ö¸®´Â °á°ú¸¦ ÃÊ·¡ÇϰԵȴÙ.
ÀÌ·¯ÇÑ Çö»óÀ» ¸·±âÀ§ÇØ ÇöÀç ³»°¡ ¾²±â ½ÃÀÛÇÒ ¶§, lock¸¦ °É¾î ³õÀ¸¸é, ´Ù¸¥ »ç¶÷ÀÌ
¾µ·Á°í, unlockÀÌ µÉ ¶§ ±îÁö ±â´Ù¸®°Ô ÇÑ´Ù. À̶§, °è¼Ó ±â´Ù¸®´Ù°¡ TimeoutÀÌ µÇ¸é¼ ¿¡·¯¸Þ¼¼Áö°¡
»ç¿ëÀÚ¿¡°Ô °¥ ¼ö ÀÖ´Ù. ±×·¯¹Ç·Î ÀÌ·± °æ¿ì´Â º°µµÀÇ ¹®ÀåÀ» Ãß°¡Çؼ »ç¿ëÀÚ¿¡°Ô Á¤º¸¸¦ Á¦°øÇؾßÇÑ´Ù.
ÀÌ·¯ÇÑ lock, unlock±â´ÉÀ» Á¦°øÇÏ´Â class°¡ LockÀ̸ç, µÎ ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù. Ãß°¡·Î
isValid()ÇÔ¼ö¸¦ Á¦°øÇÏ¿© »ç¿ëÀÚ°¡ lock¿¡ ´ëÇÑ Àϰü¼ºÀÌ ±úÁö¸é, false¸¦ returnÇÏ°Ô µÈ´Ù.
¿¹) project.cnt °ªÀ» ¿¹·Î µé¾î ¼³¸íÇϸé, ´ÙÀ½°ú °°Àº µÎ°¡Áö ¹æ½ÄÀÌ ÀÖ´Ù.
project.cnt = new Lock();
if( ! project.cnt.isValid() ) {
redirect("lockerr.html");
}
...........
| Lock Class¸¦ »ç¿ëÇÑ °æ¿ì·Î ÇØ´ç request°¡ Á¾·áµÇ°í ³ª¸é, lockÀÌ ÇØÁ¦µÈ´Ù. |
if( project.cnt.lock() ) {
..................
project.cnt.unlock();
}else redirect("lockerr.html");
| lock(), unlock()ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °æ¿ì·Î ¹Ýµå½Ã µÎ°¡Áö ÇÔ¼ö¸¦ ¸í½ÃÀûÀ¸·Î »ç¿ëÇØ¾ß ÇÑ´Ù. |
- Deadlock
µÎ °³ÀÇ ÇÁ·Î¼¼¼°¡ lock¸¦ ¼·Î ±â´Ù¸± ¶§¸¦ ¸»ÇÑ´Ù. Áï, 1¹ø ÇÁ·Î¼¼½º°¡ a.lock()»óÅ¿¡¼
b.lock()À» °É°í, 2¹ø ÇÁ·Î¼¼½º°¡ b.lock()¿¡¼ a.lock()À» °É °Ô µÇ¸é, ¼·Î »ó´ë¹æÀÌ
lock¸¦ °É°í ÀÖ´Â °ªÀÌ Ç®¸± ¶§±îÁö ¸¶³É ±â´Ù¸®°Ô µÇ´Â Çö»óÀÌ ¹ß»ýÇϱ⵵ ÇÑ´Ù. ÀÌ·¯ÇÑ
°æ¿ì¸¦ deadlockÀ̶ó ºÎ¸¥´Ù.
ÀÌ·¯ÇÑ °á°ú¸¦ ÇÇÇϱâ À§Çؼ´Â ÇϳªÀÇ °ªÀ» lock¸¦ °É¾úÀ¸¸é, Ç®¸°µÚ¿¡ ´Ù¸¥ °ª¿¡
lockÀ» °Å´Â °ÍÀÌ´Ù. deadlockÀ» À¥¼¹ö¿¡¼ ÀüÀûÀ¸·Î ÇÇÇÏ°Ô ÇØÁÖ´Â ±â´ÉÀÌ Á¸ÀçÇÏÁö ¾Ê´Â ´Ù´Â °ÍÀ» ¸í½ÉÇ϶ó.
À¥¿¡¼´Â ¿©·¯ client°¡ µ¿½Ã¿¡ Á¢¼ÓÇÏ°Ô µÈ´Ù´Â Á¡À» Ç×»ó ¸í½ÉÇØ¼ lockÀ» °É°í
ÀÛ¾÷ÇÏ´Â ºÎºÐÀÌ ÀÖ´Ù¸é, ¼¼½ÉÇÏ°Ô ½Å°æ½á¾ß Çϸç, Ȥ½Ã »ç¿ëÀÚ°¡ ÀÛ¼ºÇÑ ÇÔ¼ö°¡ Æ÷ÇԵǾî
ÀÖÀ» °æ¿ì¿¡µµ ¹Ýµå½Ã µÚÁ®¼ deadlockÀÇ °¡´É¼ºÀÌ ÀÖ´Â Áö È®ÀÎÇØ¾ß ÇÑ´Ù.
- Last Update : 2001.7.5 by Deadfire(http://www.deadfire.net)
|
|
|