2´Ü°è´Â ¿ø°Ý °´Ã¼ ¹× ¼¹ö ÇÁ·Î±×·¥ ÀÛ¼ºÀÔ´Ï´Ù. ¿©±â¼ ÀÛ¼ºÇÑ ¿ø°Ý °´Ã¼ ¾È¿¡´Â 1´Ü°è¿¡¼ ÀÛ¼ºÇÑ ÀÎÅÍÆäÀ̽º¿¡¼ Á¤ÀǵǾú´ø ¸Þ¼µåµéÀÌ ½ÇÁ¦·Î ±¸ÇöµË´Ï´Ù. ¿ø°Ý °´Ã¼ ¿ª½Ã ÀÎÅÍÆäÀ̽º¸¦ ÀÛ¼ºÇÒ ¶§¿Í ¸¶Âù°¡Áö·Î, ¹Ýµå½Ã ÁöÄÑ¾ß ÇÏ´Â ¸î °¡Áö ±ÔÄ¢ÀÌ ÀÖ½À´Ï´Ù.
n ¿ø°Ý ÀÎÅÍÆäÀ̽ºÀÇ ¸ðµç ¸Þ¼µåµéÀ» ±¸ÇöÇØ¾ß ÇÑ´Ù.
n ÀϹÝÀûÀ¸·Î java.rmi.server.UnicastRemoteObject Ŭ·¡½º¸¦ »ó¼Ó ¹Þ¾Æ¾ß ÇÑ´Ù.
¿ø°Ý °´Ã¼°¡ »ó¼Ó ¹Þ¾Æ¾ß ÇÏ´Â UnicastRemoteObject Ŭ·¡½º´Â, RMI¿¡¼ ¿ø°Ý °´Ã¼°¡ ¼¹ö·Î¼ÀÇ ¿ªÇÒÀ» ÇÒ ¼ö ÀÖµµ·Ï, »ó¼ÓÀ» ¹ÞÀº °´Ã¼¿¡°Ô ¿ø°Ý °´Ã¼¸¦ »ý¼ºÇÏ°í ³»º¸³»´Â ±â´ÉÀ» Á¦°øÇØ ÁÝ´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì, ¿ì¸®°¡ ÀÛ¼ºÇÏ´Â ¿ø°Ý °´Ã¼µéÀº UnicastRemoteObject¸¦ ¹Ýµå½Ã »ó¼Ó ¹Þ¾Æ¾ß ÇÕ´Ï´Ù.
´ÙÀ½ BankImplŬ·¡½º´Â 1 ´Ü°è¿¡¼ ÀÛ¼ºÇß´ø BankÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ¿ø°Ý °´Ã¼ÀÔ´Ï´Ù.
BankImpl.java (RMI¿¡¼ÀÇ ¼¹ö Ŭ·¡½º ¿¹Á¦) |
import java.rmi.*; import java.rmi.server.*; public class BankImpl extends UnicastRemoteObject implements Bank { private int total; public BankImpl(int total) throws RemoteException { this.total = total; } public int getBalance() throws RemoteException { return total; } public int deposit(int amount) throws RemoteException { total += amount; return getBalance(); } public int withdraw(int amount) throws RemoteException { total -= amount; return getBalance(); } public static void main(String[] args) throws Exception { BankImpl bankip = new BankImpl(10000); Naming.rebind("//localhost/BankIp", bankip); System.out.println("bank was rebinded with name 'BankIp"); } } |
C:\JavaExample\18>javac BankImpl.java |
BankImplŬ·¡½º¿¡´Â ¿ì¸®°¡ BankÀÎÅÍÆäÀ̽º¿¡¼ Á¤ÀÇÇß´ø ¸ðµç ¸Þ¼µåµéÀÌ ½ÇÁ¦·Î ±¸ÇöµÇ¾î ÀÖ½À´Ï´Ù.
n implements Bank
À§ ¿¹Á¦¿¡ ±¸ÇöµÈ ¸Þ¼µåµéÀÌ ½ÇÁ¦·Î Ŭ¶óÀÌ¾ðÆ®°¡ ¸Þ¼µå È£ÃâÀ» ¿äûÇßÀ» ¶§ ½ÇÇàÀÌ µÇ´Â ¸Þ¼µåµéÀÔ´Ï´Ù. ¸ðµç ¸Þ¼µå´Â (»ý¼ºÀÚ±îÁö Æ÷ÇÔÇØ¼) BankÀÎÅÍÆäÀ̽º¿¡¼ Á¤ÀǵǾú´ø °Íó·³, RemoteExceptionÀ» ´øÁö°í ÀÖ½À´Ï´Ù.
n throws RemoteException
ÀÌ ¿ø°Ý °´Ã¼´Â ¼¹öÀÇ ±â´ÉÀ» ÇÒ ¼ö ÀÖµµ·Ï, UnicastRemoteObject¸¦ »ó¼ÓÇϰí ÀÖ½À´Ï´Ù.
n extends UnicastRemoteObject
¸¸µé¾îÁø ¿ø°Ý °´Ã¼¿¡ Ŭ¶óÀÌ¾ðÆ®°¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï, ¿ø°Ý °´Ã¼ÀÇ ÂüÁ¶ÀÚ´Â RMI Registry¿¡ ½Äº° °¡´ÉÇÑ À̸§°ú ÇÔ²² µî·ÏµÇ¾î¾ß ÇÕ´Ï´Ù. ¿ì¸®´Â java.rmi.NamingÀ̶ó´Â Ŭ·¡½ºÀÇ ¸Þ¼µåµéÀ» ÅëÇØ¼ RMI Registry¿¡ ¿ø°Ý ÂüÁ¶ÀÚ¸¦ ÀúÀåÇÏ°í ºÒ·¯¿Ã ¼ö ÀÖ½À´Ï´Ù. ÀÌ NamingŬ·¡½º´Â RMI Registry¿¡ °´Ã¼¸¦ µî·ÏÇÏ°í °Ë»öÇÏ´Â µîÀÇ ÀÏÀ» À§ÇÑ ÀÏ·ÃÀÇ ¸Þ¼µåµéÀ» °¡Áö°í ÀÖ½À´Ï´Ù. NamingŬ·¡½º°¡ °¡Áö°í ÀÖ´Â ¸Þ¼µåµéÀº ÀüºÎ staticÀ¸·Î ¼±¾ðµÇ¾îÀֱ⠶§¹®¿¡, Ưº°ÇÑ »ý¼º °úÁ¤ ¾øÀÌ ¹Ù·Î È£ÃâÇØ¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·³ ¿©±â¼ NamingŬ·¡½ºÀÇ ÁÖ¿ä ¸Þ¼µåµéÀ» Çѹø »ìÆìº¸°í ³Ñ¾î°¡ÁÒ.
Naming Ŭ·¡½º ÁÖ¿ä ¸Þ¼µå |
public static void bind (String name, Remote obj) : ÁÖ¾îÁø À̸§°ú ¿ø°Ý °´Ã¼¸¦ ¿¬°áÇØÁØ´Ù. public static String[] list (String name) : RMI Registry¿¡ µî·ÏµÇ¾î ÀÖ´Â À̸§µéÀÇ ¸®½ºÆ®¸¦ ¹ÝÈ¯ÇØ ÁØ´Ù. public static Remote lookup (String name) : ÁÖ¾îÁø À̸§°ú ¿¬°áµÇ¾î ÀÖ´Â ¿ø°Ý °´Ã¼ÀÇ ÂüÁ¶ÀÚ¸¦ ¹ÝÈ¯ÇØ ÁØ´Ù. public static void rebind (String name, Remote obj) : ÁÖ¾îÁø À̸§°ú »õ·Î¿î ¿ø°Ý °´Ã¼¸¦ ¿¬°áÇØ ÁØ´Ù. public static void unbind (String name) : ÁÖ¾îÁø À̸§À¸·Î ¿¬°áµÇ¾î ÀÖ´Â °´Ã¼¿Í ¿¬°áÀ» ÇØÁ¦ ÇÑ´Ù. |
¿¹Á¦¿¡¼´Â BankImpl°´Ã¼ÀÇ ÂüÁ¶ÀÚ¸¦ µî·ÏÇϱâ À§ÇØ Naming.rebind()¶ó´Â ¸Þ¼µå¸¦ »ç¿ëÇß½À´Ï´Ù. ÀÌ ¸Þ¼µå´Â StringÇüÅ·ΠÁÖ¾îÁø À̸§°ú ¿ø°Ý °´Ã¼ÀÇ ÂüÁ¶ÀÚ¸¦ ¸ÊÇÎ(mapping) ½ÃÄѼ ÀúÀåÇØ ÁÝ´Ï´Ù. Naming.bind()¸Þ¼µåµµ °°Àº ÀÏÀ» ÇÏÁö¸¸, rebind()¸Þ¼µåÀÇ °æ¿ì´Â, ÀÌÀü¿¡ ¸ÊÇεǾî ÀÖ´Â Á¤º¸¸¦ ¹«½ÃÇÏ°í ¹«Á¶°Ç ´Ù½Ã ÀúÀåÇØÁÝ´Ï´Ù.
¿ø°Ý °´Ã¼ÀÇ ÂüÁ¶ÀÚ¸¦ ½Äº°Çϴµ¥ »ç¿ëµÇ´Â À̸§Àº ´ÙÀ½°ú °°Àº Çü½ÄÀ» °¡Áý´Ï´Ù.
n //host:port/name
host´Â RMI Registry°¡ Á¸ÀçÇϴ ȣ½ºÆ®ÀÇ ÁÖ¼ÒÀÔ´Ï´Ù. Áï, localhost³ª remote host°¡ µÅ°ÚÁÒ? ¸¸¾à host°¡ ÁöÁ¤ µÇÁö ¾Ê´Â´Ù¸é localhost°¡ ±âº»°ªÀ¸·Î »ç¿ëµË´Ï´Ù. RMI Registry´Â ±âº»ÀûÀ¸·Î 1099Æ÷Æ®¸¦ »ç¿ëÇϴµ¥, ƯÁ¤ Æ÷Æ®¸¦ ÁöÁ¤ÇØ ÁÙ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹Á¦¿¡¼´Â ±âº» Æ÷Æ®¸¦ »ç¿ëÇßÀ¸¹Ç·Î, Æ÷Æ® ¹øÈ£¸¦ »ý·«Çß½À´Ï´Ù. ±×¸®°í nameÀº ¿ø°Ý°´Ã¼ÀÇ À̸§À» ³ªÅ¸³À´Ï´Ù.
¾î·ÆÁÒ? RMI Registry¿¡ µî·ÏÇÏ´Â nameÀ» ½±°Ô À̾߱âÇϸé ÀÌ·¸½À´Ï´Ù. ½¬¿î ¿¹¸¦ µé¸é °¾ÆÁö°¡ ÇѸ¶¸® Àִµ¥ ÀÌ °¾ÆÁö À̸§ÀÌ ¡®¸Û¸ÛÀÌ¡¯Àε¥ ¡®¶¯Ä¥ÀÌ¡¯¶ó´Â ¿¹¸íÀ» ÇϳªÁÝ´Ï´Ù. ³ªÁß¿¡ ¡®¶¯Ä¥¾Æ!¡¯¶ó°í ºÎ¸£¸é ±× ¸Û¸ÛÀ̰¡ ÀÚ±âÀÚ½ÅÀ» ºÎ¸£´Â °ÍÀÎ °É ¾Ë°í ´Þ·Á¿À°Ô µÇ´Â µË´Ï´Ù. ÀÌ¿Í °°Àº ¿ø¸®¶ó°í »ý°¢À» ÇÏ½Ã¸é µË´Ï´Ù. ¿©±â¼´Â Ŭ¶óÀÌ¾ðÆ®¿¡¼ BankIp¸¦ ãÀ¸¸é ¼¹ö¿¡¼´Â bankip °´Ã¼µéÀÌ ´Þ·Á¿Í¼ ÀÏÀ» ÇÏ°Ô µË´Ï´Ù.
n Naming.rebind("//localhost/BankIp", bankip);
¢Ñ 2 ´Ü°è |
¿ø°Ý °´Ã¼ ÀÛ¼º½Ã ÁöÄÑ¾ß ÇÒ ±ÔÄ¢ 1. ¿ø°ÝÀÎÅÍÆäÀ̽ºÀÇ ¸Þ¼µåµéÀ» ±¸ÇöÇØ¾ß ÇÑ´Ù. 2. java.rmi.server.UnicastRemoteObjectŬ·¡½º¸¦ »ó¼Ó ¹Þ¾Æ¾ß ÇÑ´Ù. 3. RMI Registry¿¡ ¿ø°Ý °´Ã¼ÀÇ ÂüÁ¶ÀÚ¸¦ µî·ÏÇÑ´Ù. |
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù4ºÎ ÀúÀÚ:ÃÖ¿µ°ü |