¼Ò¼³°°Àº ÀÚ¹Ù 4ºÎ  Á¦18Àå R M I  18.4 ¾ÖÇø´¿¡¼­ÀÇ RMI »ç¿ë  

 

18.4 ¾ÖÇø´¿¡¼­ÀÇ RMI »ç¿ë

 

ÀÚ¹Ù ÇÁ·Î±×·¥ÀÇ ¶Ç ´Ù¸¥ ÇüÅ·ΠÀ¥ ºê¶ó¿ìÀú¿¡¼­ ½ÇÇàµÇ´Â ¾ÖÇø´À» »ý°¢ÇØ ³¾ ¼ö ÀÖ½À´Ï´Ù. ¾ÖÇø´Àº ¼­¹ö¿¡¼­ºÎÅÍ ´Ù¿î·Îµå ¹Þ¾ÆÁ®¼­, Ŭ¶óÀ̾ðÆ®ÀÇ À¥ ºê¶ó¿ìÀú¿¡¼­ ½ÇÇàÀÌ µË´Ï´Ù. ¾ÖÇø´Àº Ŭ¶óÀ̾ðÆ®ÀÇ À¥ ºê¶ó¿ìÀú »ó¿¡¼­ ½ÇÇàµÇ±â ¶§¹®¿¡, ¸¸¾à ¾ÖÇø´¿¡°Ô ¾Æ¹«·± º¸¾È»óÀÇ Á¦¾àÀÌ ¾ø´Ù¸é, ¾ÖÇø´Àº Ŭ¶óÀ̾ðÆ®ÀÇ ¸Þ¸ð¸®³ª ·ÎÄà Çϵå¿Í °°Àº ÀÚ¿øµé¿¡ ¸¶À½´ë·Î Á¢±ÙÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. À̰ÍÀº Ŭ¶óÀ̾ðÆ®ÀÇ ÄÄÇ»ÅÍ¿¡ ¾Æ¹«³ª µé¾î¿Ã ¼ö ÀÖ´Â Ä¿´Ù¶õ ±¸¸ÛÀ» ¶Õ¾î ³õ´Â °Í°ú ¸¶Âù°¡Áö ÀÔ´Ï´Ù. ÀÚ¹Ù¿¡¼­´Â ¾ÖÇø´ÀÇ º¸¾È»óÀÇ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ, ¾ÖÇø´ÀÌ ½ÇÇàµÇ´Â À¥ ºê¶ó¿ìÀú°¡ ¾ÖÇø´ÀÇ ¸¹Àº ±â´ÉµéÀ» °¨½ÃÇϵµ·Ï ¸¸µé¾ú½À´Ï´Ù. ƯÈ÷, ¾ÖÇø´Àº Ŭ¶óÀÌ¾ðÆ®¿Í ¿ÜºÎ¸¦ ¼ÒÄϰú °°Àº ¹æ¹ýÀ» »ç¿ëÇØ¼­ ¿¬°áÇÏ·Á°í ÇÒ ¶§ ºê¶ó¿ìÀú·ÎºÎÅÍ ¸¹Àº Á¦¾àÀ» ¹Þ½À´Ï´Ù.

 

ÀÌ·¯ÇÑ ¾ÖÇø´¿¡¼­ RMI¸¦ »ç¿ëÇÏ·Á¸é ¸î °¡Áö °í·ÁÇØ¾ß ÇÒ »çÇ×µéÀÌ ÀÖ½À´Ï´Ù. RMI°¡ ³×Æ®¿öÅ© °ü·Ã ¼¼ºÎ »çÇ×µéÀ» Àß °¨Ãß¾î ÁØ ´öºÐ¿¡, ¿ì¸®´Â ÀÏ¹Ý °´Ã¼¸¦ ´Ù·çµíÀÌ ¸Þ¼­µå¸¦ °£´ÜÇÏ°Ô È£ÃâÇÔÀ¸·Î½á ¼­¹öÀÇ ¼­ºñ½º¸¦ ½ÇÇàÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù. ÇÏÁö¸¸, ½ÇÁ¦·Î ³»ºÎ¿¡¼­´Â RMI°¡ Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö »çÀÌÀÇ Åë½ÅÀ» À§ÇØ ¼ÒÄÏ Åë½ÅÀ» »ç¿ëÇØ¼­ º¹ÀâÇÑ °úÁ¤À» ó¸®Çϰí ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î, ¾ÖÇø´¿¡¼­ RMI¸¦ »ç¿ëÇÑ´Ù´Â °ÍÀº Ŭ¶óÀ̾ðÆ®ÀÇ À¥ ºê¶ó¿ìÀú¿¡¼­ ½ÇÇà µÇ°í ÀÖ´Â ¾ÖÇø´ÀÌ ¼­¹ö¿Í ¼ÒÄÏÀ¸·Î ¿¬°áµÉ ¼ö ÀÖ¾î¾ß ÇÑ´Ù´Â ¾ê±âÀÔ´Ï´Ù.

 

À§¿¡¼­ ¾ð±ÞÇßµíÀÌ ¾ÖÇø´Àº, ¾ÖÇø´ÀÌ ½ÇÁ¦ µ¿ÀÛÇϰí ÀÖ´Â ±â¹ÝÀÎ À¥ ºê¶ó¿ìÀú ³»¿¡ ¼³Ä¡µÇ¾î ÀÖ´Â ÀÚ¹Ù°¡»ó¸Ó½ÅÀÇ Áö¹è¸¦ ¹Þ½À´Ï´Ù. ´ëºÎºÐÀÇ ºê¶ó¿ìÀúÀÇ ÀÚ¹Ù°¡»ó¸Ó½Å¿¡¼­´Â º¸¾È»óÀÇ ÀÌÀ¯·Î, ¾ÖÇø´Àº ÀÚ½ÅÀÌ ·ÎµåµÈ ¼­¹ö¸¸ ¼ÒÄÏÀ» ¿¬°áÇÒ ¼ö ÀÖ°Ô Á¦ÇÑÇÕ´Ï´Ù.

 

±×¸² 18‑9 ¾ÖÇø´°ú ¼­¹öÀÇ ¿¬°á

ÀÌ·¯ÇÑ ¾ÖÇø´ÀÇ º¸¾È»óÀÇ Á¦¾à ¶§¹®¿¡, ¾ÖÇø´¿¡¼­ RMI¸¦ »ç¿ëÇÏ·Á¸é RMI¿¡ »ç¿ëµÉ ÇÁ·Î±×·¥µéÀÇ À§Ä¡°¡ Áß¿äÇØÁý´Ï´Ù.

 

¾ÖÇø´¿¡¼­ RMI¸¦ ½ÇÇàÇϱâ À§Çؼ­´Â ¸ÕÀú, ¾ÖÇø´ÀÌ »ç¿ëÇÒ ¿ø°Ý °´Ã¼¿Í ¿ø°Ý °´Ã¼ÀÇ ÀÎÅÍÆäÀ̽º°¡ °°Àº ¼­¹ö ÂÊ ÇÁ·Î±×·¥µéÀº ¾ÖÇø´ÀÌ ·Îµå µÈ ¼­¹ö¿Í °°Àº ÄÄÇ»ÅÍ¿¡ Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù. ±×·¡¾ß¸¸ ÀÚ½ÅÀÌ ·Îµå µÈ ¼­¹ö¸¸ Åë½ÅÀÌ °¡´ÉÇÑ ¾ÖÇø´ÀÇ Á¦¾àÀ» ¹þ¾î³ªÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ¸¶Âù°¡Áö·Î ¾ÖÇø´¿¡°Ô ¿ø°Ý °´Ã¼¸¦ ³Ñ°ÜÁÙ RMI Registry ¿ª½Ã ¾ÖÇø´ÀÌ ·Îµå µÈ ¼­¹ö¿¡¼­ ½ÇÇà µÇ¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ® °ü·Ã ÆÄÀÏÀÎ StubŬ·¡½º´Â ¾ÖÇø´ Äڵ尡 »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¾ÖÇø´ ÄÚµå¿Í °°Àº °ø°£ ¾È¿¡ ÀúÀå µÇ¾î¾ß ÇÕ´Ï´Ù.

 

Á¤¸®ÇÏ¸é ´ÙÀ½ Ç׸ñµéÀº ¸ðµÎ °°Àº ¼­¹ö ³»¿¡ Á¸ÀçÇϰųª ½ÇÇà µÇ¾î¾ß¸¸, ¾ÖÇø´ÀÌ RMI¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

 

n         ¾ÖÇø´À» Æ÷ÇÔÇÒ À¥ ÆäÀÌÁöµé

n         ¾ÖÇø´ ÄÚµå

n         Stub Ŭ·¡½º

n         ¿ø°Ý °´Ã¼µé

n         RMI Registry

 

¾Æ·¡ ±×¸²Àº ½ÇÁ¦·Î °ü·Ã ÆÄÀϵéÀÌ ¼­¹ö¿¡ ¹èÄ¡µÈ ¸ð½ÀÀ» ³ªÅ¸³À´Ï´Ù.

 

±×¸² 18‑10 ¾ÖÇø´¿¡¼­ RMI¸¦ »ç¿ëÇϱâ À§ÇØ ÆÄÀϵéÀ» ¹èÄ¡ÇÑ ¸ð½À

ÀÌó·³, ³×Æ®¿öÅ© Åë½Å¿¡¼­»Ó¸¸ ¾Æ´Ï¶ó, ¾ÖÇø´Àº Ŭ¶óÀ̾ðÆ®ÀÇ ·ÎÄà ÀÚ¿ø¿¡ Á¢±ÙÇÏ·Á°í ÇÒ ¶§µµ ¿ª½Ã Á¦¾àÀ» ¹Þ½À´Ï´Ù. ¸¸¾à ¼­¹ö¿¡¼­ Á¦°øÇÏ´Â ¸Þ¼­µå°¡ Ŭ¶óÀ̾ðÆ®ÀÇ ·ÎÄà ÀÚ¿ø¿¡ Á¢±ÙÇÏ·Á°í ÇÑ´Ù¸é ÀüºÎ ¼öÁ¤ µÇ¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù.

 

¡®¹é¹®ÀÌ ºÒ¿©ÀϰßÀÌ°í ¹é¹®ÀÌ ºÒ¿©ÀÏŸ(ÝÕåýìéöè)¶ó¡¯ ¹é¹ø º¸´Â °Í º¸´Ù Çѹø ÄÚµùÇØº¸´Â °ÍÀÌ ÀÌÇØ°¡ ´õ Àß µÇ´Â °Í ¾Æ´Ï°Ú½À´Ï±î? À§ RMI¾îÇø®ÄÉÀÌ¼Ç ¸¸µé¾î º¸±â¿¡¼­ ½ÇÇàÇØ º¸¾Ò´ø Çö±ÝÀÎÃâ±â ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ¼­ ¾ÖÇø´¿¡¼­ RMI°¡ ¾î¶»°Ô ½ÇÇàÀÌ µÇ´ÂÁö¸¦ ¾Ë¾Æº¸°Ú½À´Ï´Ù. ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µå´Â ¼ø¼­´Â À§¿¡¼­ ¾ð±ÞÇÑ µ¥·Î ÇÏ½Ã¸é µÇ°í ½ÇÇà ¶ÇÇÑ ¸¶Âù°¡Áö·Î ÇÏ½Ã¸é µË´Ï´Ù. ½±°Ô »ý°¢Çϸé Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥¿¡ ¾ÖÇø´ÀÌ Ã·°¡ µÇ¾ú´Ù°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ¿©±â¿¡¼­´Â ¾ÖÇø´À» ½ÇÇàÇÏ´Â ÇÁ·Î±×·¥¸¸À» ¿¹Á¦·Î Á¦½ÃÇÏ°í ³ª¸ÓÁö ÇÁ·Î±×·¥µéÀº À§ ¿¹Á¦¿¡¼­ ÂüÁ¶Çؼ­ ½ÇÇà½ÃÄѺ¸°Ú½À´Ï´Ù.

 

¸ÕÀú ¿ø°Ý °´Ã¼¸¦ »ç¿ëÇÒ ¾ÖÇø´ ½ÇÇàÀ» À§ÇÑ Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥°ú HTMLÆÄÀÏÀ» ¸¸µé¾î º¸°Ú½À´Ï´Ù. À§¿¡¼­ ¸»ÇßµíÀÌ ¿ø°Ý°´Ã¼¸¦ »ç¿ëÇÏ´Â º¸ÅëÀÇ Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥°ú º° ´Ù¸¦ °ÍÀÌ ¾ø½À´Ï´Ù.

 

BankApplet.java (¾ÖÇø´ ½ÇÇàÀ» À§ÇÑ Å¬·¡½º)

import java.awt.*;

import java.rmi.*;

import java.applet.Applet;

public class BankApplet extends Applet {

  int balance, balance1, balance2 = 0;

  String a,b,c =null;

  public void init() {

    try {

      Bank bank = (Bank)Naming.lookup("//localhost/BankIp");

      balance = bank.getBalance();

       balance1 = bank.deposit(1000);

       balance2 = bank.withdraw(5000);

       a = balance + "";

       b = balance1 + "";

       c = balance2 + "";

    }

    catch (Exception e) {

      System.out.println("BankApplet exception: " + e.getMessage());

      e.printStackTrace();

    }

  }

  public void paint(Graphics g) {

    g.drawString(a, 25, 20);

     g.drawString(b, 125, 20);

  g.drawString(c, 225, 20);

  }

}

C:\JavaExample\18>javac BankApplet.java

 

Bank.html (¾ÖÇø´ ½ÇÇà HTML ¿¹Á¦)

<HTML>

<title>Bank RMI</titlt>

<body>

<center> <h1>Bank RMI</h1> </center>

The balance from the BankServer is:

<p>

<applet code="BankApplet" width=500 height=120>

</applet>

</body>

</HTML>

 

ÀÌÁ¦ Áغñ°¡ ´Ù µÆÀ¸´Ï ¾ÖÇø´À» ½ÇÇà ÇØ º¸°Ú½À´Ï´Ù. ¸ÕÀú RMI Registry ¼­ºñ½º¸¦ ½ÃÀÛ ÇÏ°í³ª¼­ ¼­¹öÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.

 

C:\JavaExample\18>rmiregistry

 

C:\JavaExample\18>java BankImpl

bankip was rebinded with name 'BankIp'

 

¸¶Áö¸·À¸·Î ¾ÖÇø´ºä¾î(Appletviewer)¸¦ ½ÇÇàÇØ º¸°Ú½À´Ï´Ù.

 

C:\JavaExample\18>appletviewer Bank.html

 

¿¹Á¦¸¦ ½ÇÇàÇØ º¸¸é ¾Õ¿¡¼­ ¼³¸íÇÑ ¾ÖÇø´¿¡¼­ RMI¼­ºñ½º¿¡ Á¢±ÙÇÑ´Ù´Â °ÍÀÌ ¾î·Æ°í ³­ÇØÇϱ⸸ ÇÏ´Ù´Â »ý°¢Àº »ç¶óÁö°í ¡®¾î º° °Í ¾Æ´Ï³×¡¯ ¶ó´Â »ý°¢ÀÌ µå½Ç °ÍÀÔ´Ï´Ù. ±× ÀÌÀ¯´Â ±¸ÇöµÇ´Â ¸ð½ÀÀÌ RMI¼­ºñ½º¸¦ ¹Þ´Â ´Ù¸¥ ÇÁ·Î±×·¥µé°ú º° Â÷À̾ø´Ù°í »ý°¢Çϱ⠶§¹®À̰ÚÁö¸¸ ¾ÖÇø´¿¡¼­ RMI¼­ºñ½º¿¡ Á¢±ÙÇÑ´Ù´Â °ÍÀº RMI¼­¹ö°¡ µ¿ÀÛÇÏ´Â ÄÄÇ»ÅÍ¿¡¼­¸¸ µ¿ÀÛÀ» ÇÑ´Ù´Â °Í¿¡ À¯³äÇØ¾ß ÇÕ´Ï´Ù. ÀÌ°Ç RMI¼­ºñ½º¿¡¼­¸¸ ±¹ÇÑµÈ °ÍÀÌ ¾Æ´Ï¶ó ¾ÖÇø´À» »ç¿ëÇÏ´Â ¸ðµç ÇÁ·Î±×·¥¿¡ ÇØ´çµÇ´Â ¸»ÀÏ °ÍÀÔ´Ï´Ù. 

 

¢Ñ  ¾ÖÇø´¿¡¼­

RMI »ç¿ëÇϱâ

¾ÖÇø´ÀÇ º¸¾È»óÀÇ Á¦¾à ¶§¹®¿¡ ´ÙÀ½Àº ¸ðµÎ °°Àº ¼­¹ö¿¡ À§Ä¡ÇØ¾ß ÇÑ´Ù

1. ¾ÖÇø´À» Æ÷ÇÔÇÏ´Â À¥ ÆäÀÌÁöµé

2. ¾ÖÇø´ ÄÚµå

3. Stub Ŭ·¡½º

4. ¿ø°Ý °´Ã¼

5. RMI Registry

 

 ÀÌ·¯ÇÑ ¾ÖÇø´ÀÇ ¹®Á¦Á¡¿¡ º¸¾È ÀÎÁõ¼­¸¦ Ãß°¡ÇÑ´Ù¸é À§¿Í °°Àº ¹®Á¦µéÀº »ç¶óÁö°ÚÁö¸¸ ±×·¸Áö ¾Ê´Ù¸é ±âÁ¸ ¾ÖÇø´ÀÇ º¸¾ÈÀ» ÁöÄÑ¾ß ÇÕ´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù4ºÎ
ÀúÀÚ:ÃÖ¿µ°ü