¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

Java Distributed Computing

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

Written By ½Å¼ºÈ£

skid1206@hitel.net

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

ÇÏÀÌÅÚ ºÐ»ê°´Ã¼ µ¿È£È¸

¡¡

¡¡

¡¡

¡¡

¡¡

¸ñ Â÷

¡¡

¡¡

1. °³ ¿ä

¡¡

2. Socket Programming

¡¡

3. RMI (Remote Method Invocation)

¡¡

4. Corba (Common Object Request Broker

Architecture)

¡¡

5. EJB (Enterprise JavaBeans)

¡¡

6. ±â Ÿ

6.1 JAVA IDL

6.2 RMI_OVER_IIOP

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

1. °³ ¿ä

1) ºÐ»êÄÄÇ»ÆÃ

ºÐ»êÄÄÇ»ÆÃÀº ³×Æ®¿÷»óÀÇ ´Ù¸¥ »ç¿ëÀÚ³ª ÄÄÇ»ÅÍÀÇ ÀÚ¿øÀ» °øÀ¯ÇÒ

¼ö ÀÖ°Ô ÇÑ´Ù.

ÇϳªÀÇ ÄÄÇ»Åͳ»¿¡ ÀÖ´Â ¾ÖÇø®ÄÉÀÌ¼Ç ¹× ¾ÖÇø´Àº Àº ´Ù¸¥±â°è

ÀÇ CPU, Memory, Disk ÀúÀåÀåÄ¡ µîÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

µû¶ó¼­ ºÐ»êÄÄÇ»ÆÃÀº ¿öµåÇÁ·Î¼¼¼­¿Í °°Àº ´ÜÀÏ »ç¿ëÀÚ ¾ÖÇø®ÄÉ

ÀÌ¼Ç µîÀ» Á¦¿ÜÇÑ ¸ÖƼ Ŭ¶óÀÌ¾ðÆ® / ¼­¹ö ȯ°æ¿¡¼­´Â ÇÁ·Î±×·¥ÀÇ

¼º´ÉÀ» Çâ»ó ½Ãų ¼ö °¡ ÀÖ´Ù.

2) ºÐ»ê °´Ã¼

ºÐ»ê°´Ã¼´Â ¿ø°ÝÁö¿¡¼­ Á¢±Ù °¡´ÉÇÑ °´Ã¼¸¦ ¸»ÇÑ´Ù.

À̰ÍÀº ºÐ»ê°´Ã¼°¡ ÀϹÝÀûÀÎ ·ÎÄð´Ã¼Ã³·³ ÇൿÇÏÁö¸¸ ³×Æ®¿÷»ó

ÀÇ ¾î´À°÷¿¡¼­¶óµµ Á¢±ÙµÉ ¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù.

ºÐ»ê°´Ã¼°¡ °®´Â ÀÕÁ¡Àº ´ë´ÜÇÏ´Ù.

RMI(Remote Method Invocation) ³ª CORBA(Common Object

Request Broker Architecture) ¿Í °°Àº ºÐ»ê°´Ã¼°¡ µîÀåÇϱâ ÀÌÀü¿¡

µµ ºÐ»êȯ°æÀº Á¸ÀçÇÏ¿´´Ù.

´ëÇ¥ÀûÀÎ ¿¹·Î Sun ¿¡¼­ ¸¸µç RPC(Remote Procedure Call)°¡

ÀÖÀ¸¸ç ÀÌ °³³äÀº ÇöÀçÀÇ RMI, CORBA, DCOM ÀÇ ±â¹ÝÀÌ µÇ°í

ÀÖ´Ù.

´Ù¸¥Á¡Àº °´Ã¼³Ä ¾Æ´Ï³ÄÀÇ Â÷ÀÌ´Ù.

RPC ´Â ´ÜÁö ¸®¸ðÆ® ÄÄÇ»ÅÍ»óÀÇ Æ¯Á¤ ¸Þ¸ð¸® ¹øÁö¿¡

Á¸ÀçÇÏ´Â ÇÔ¼ö¸¦ È£ÃâÇÒ »ÓÀÌÁö¸¸ À§¿¡¼­ ¾ð±ÞÇÑ ºÐ»ê°´Ã¼´Â

¸®¸ðÆ® °´Ã¼ÀÇ ·¹ÆÛ·±½º¸¦ ÅëÇØ ¼­ºñ½º(Remote Method)¸¦ È£Ãâ

ÇÑ´Ù.

Áï, OOP(Object Oriented Programming) ¿¡¼­ Á¦°øÇÏ´Â »ó¼Ó,

´ÙÇü¼º µîÀÇ ÀÕÁ¡À» ±×´ë·Î ´©¸±¼ö ÀÖ´Ù.

3) ºÐ»ê ÄÄÆ÷³ÍÆ®

°´Ã¼¿Í ÄÄÆ÷³ÍÆ®ÀÇ Â÷ÀÌÁ¡Àº ¹«¾úÀϱî?

ÈçÈñ ¾ê±âÇϵíÀÌ °´Ã¼´Â ¼Ò½ºÄÚµå ¼öÁØÀÇ Àç»ç¿ë¼º¸¸À» Á¦°øÇÏÁö

¸¸ ÄÄÆ÷³ÍÆ®´Â ¹ÙÀ̳ʸ® ÄÚµå ¼öÁØÀÇ Àç»ç¿ëÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù.

Áï, ÄÄÆ÷³ÍÆ®´Â ÀçÄÄÆÄÀϾøÀÌ Tool À» ÀÌ¿ëÇØ ÀÔ¸À¿¡ ¸Â°Ô

Property µîÀ» ¼öÁ¤ÇÑµÚ ¹Ù·Î »ç¿ëµÇ¾î Áú ¼ö ÀÖ´Ù.

ÄÄÆ÷³ÍÆ®´Â ÇϳªÀÌ»óÀÇ °´Ã¼°¡ ¸ð¿©¼­ ±¸¼ºµÈ´Ù.

ÀÚ¹Ù¿¡´Â JavaBeans ¶ó°í ÇÏ´Â ÄÄÆ÷³ÍÆ® ¸ðµ¨ÀÌ ÀÖ´Ù.

ÇÏÁö¸¸ JavaBeans´Â ºÐ»êȯ°æÇÏ¿¡¼­ ¼­¹öÃø Business LogicÀ»

ÄÄÆ÷³ÍƮȭ ÇϱâÀ§ÇÑ ¸ðµ¨Àº ¾Æ´Ï´Ù.

RMI ¼­¹ö°´Ã¼ ¶ÇÇÑ ÄÄÆ÷³ÍÆ®´Â ¾Æ´Ï´Ù.

±×°ÍÀº ÇöÀç±îÁö ³ª¿ÍÀÖ´Â ¹öÀü(2.3)ÀÇ CORBA µµ ¸¶Âù°¡Áö´Ù.

CORBA ÀÇ °¡Àå Å« ´ÜÁ¡Áß¿¡ Çϳª´Â ÄÄÆ÷³ÍÆ® ¸ðµ¨ÀÇ ºÎÀçÀÌ´Ù.

ÇÁ·Î±×·¡¸Ó´Â CORBA ¿¡¼­ Á¦°øÇÏ´Â Service ¹× Facility ¸¦ »ç¿ë

ÇÏ°Ô µÇ¸ç IDL(Interface Definition Language) À» ÅëÇØ Ŭ¶óÀ̾ðÆ®

¸¦ À§ÇÑ ¼­ºñ½º¸¦ Á¤ÀÇÇÏ°Ô µÈ´Ù.

Áï, ÇÁ·Î±×·¡¸Ó¿¡°Ô ÁÖ¾îÁö´Â°ÍÀº IDL ÀÌ ÀüºÎÀ̸ç IDLÀº ÀÎÅÍÆä

À̽º Á¤ÀǾð¾îÀÏ »Ó ÄÄÆ÷³ÍÆ® ¸ðµ¨À» Ç¥ÇöÇÏÁö ¸øÇÑ´Ù.

À̰ÍÀº CORBA °¡ ¾ð¾î¿¡ µ¶¸³ÀûÀ̶ó´Â°ÍÀ» °¨¾ÈÇÑ´Ù¸é ÃæºÐÈ÷

³³µæÇÒ ¼ö ÀÖ´Â ÀÏÀÌ´Ù.

½ÇÁ¦ ±¸Çö¾ð¾î°¡ C++ À̸é COM / DCOM ÀÌ µÉ ¼ö ÀÖÀ»

°ÍÀ̸ç JAVA ¶ó¸é EJB(Enterprise JavaBeans)°¡ µÉ ¼ö ÀÖÀ»

°ÍÀÌ´Ù.

OMG(Object Management Group) ¿¡¼­´Â 99³â 4/4 ºÐ±â¿¡ ³ª¿Ã

CORBA 3.0 Spec ¿¡¼­ EJB ¸¦ ±â¹ÝÀ¸·Î Çϴ ǥÁØ ÄÄÆ÷³ÍÆ® ¸ðµ¨

À» Á¦½ÃÇÑ´Ù°í ÇÏ´Ï ±â´ëÇØµµ ÁÁÀ»µí ÇÏ´Ù.

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

2. Socket Programming

SocketÀº À¯´Ð½º¿¡ ±â¹ÝÇÏ¸ç °´Ã¼±â¹Ý ºÐ»êÄÄÇ»ÆÃÀÌ ³ª¿À±â ÀÌÀü±î

Áö °¡Àå º¸ÆíÀûÀ¸·Î »ç¿ëµÇ¾îÁø Ŭ¶óÀÌ¾ðÆ® / ¼­¹ö °£ÀÇ Åë½Å¹æ¹ýÀÌ

¸ç CORBA ³ª RMIµîÀÇ ½ºÅÓ, ½ºÄÌ·¹Åæ ÀÌ ½ÇÁúÀûÀ¸·Î Åë½ÅÇÏ´Â

¹æ¹ýÀ̱⵵ ÇÏ´Ù.

´º½º±×·ì¿¡ ±ÛÀ» ¿Ã¸®´Â ¿¹Á¦¸¦ µé¾îº¸µµ·Ï ÇϰڴÙ.

1) Ŭ¶óÀÌ¾ðÆ®´Â NNTP ¼­¹ö¿¡ Á¢¼ÓÀ» ÇÑ´Ù.

Socket clientSocket = new Socket("news.kaist.ac.kr", 119);

Ŭ¶óÀÌ¾ðÆ®´Â Æ¯Á¤ µµ¸ÞÀÎ ³×ÀÓÀ̳ª IP ¸¦ ÀÌ¿ëÇØ ƯÁ¤Æ÷Æ®¿¡¼­

¼­ºñ½º ÁßÀÎ ¼­¹ö¿¡ Á¢¼ÓÇÑ´Ù.

¼ÒÄÏÇÁ·Î±×·¡¹Ö¿¡¼­ Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö´Â ¼­·ÎÀÇ ¹°¸®ÀûÀÎ À§Ä¡

¿¡ ¸Å¿ì ¹Î°¨ÇÏ´Ù.

2) Ŭ¶óÀÌ¾ðÆ®´Â ¼­¹ö·Î Posting ÇÑ´Ù.

// Ŭ¶óÀÌ¾ðÆ®´Â ¼­¹ö¿¡°Ô "POST" ¶ó´Â Command¸¦ º¸³¿À¸·Î½á

// Posting Çϰڴٴ ¶æÀ» ÀüÇÑ´Ù.

out.println("Post");

// Ŭ¶óÀÌ¾ðÆ®´Â »ç¿ëÀÚ À̸§°ú ¸ÞÀÏÁÖ¼Ò¸¦ º¸³½´Ù.

out.println("From: " + UserName + "<" + Mail Address + ">");

// Ŭ¶óÀÌ¾ðÆ®´Â Æ÷½ºÆÃ ÇϰíÀÚ ÇÏ´Â ´º½º±×·ì¸íÀ» º¸³½´Ù.

out.println("Newsgroups: " + group);

// Á¦¸ñÀ» Àü¼ÛÇÑ´Ù.

out.println("Subject: " + subject);

// ¿Ã¸°±Û¿¡ ´ëÇÑ ´äÀåÀ» ¹Þ±âÀ§ÇÑ ¸ÞÀÏ ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù.

out.println("Reply-To: " + mail address);

// Ŭ¶óÀÌ¾ðÆ®°¡ ¼ÓÇÑ ¼Ò¼ÓÀ» ÁöÁ¤ÇÑ´Ù.

out.println("Organization: " + organization);

// HEAD ÀÇ ³¡À» ¾Ë¸®±â À§ÇØ ºó¶óÀÎÀ» Àü¼ÛÇÑ´Ù.

out.println();

out.println();

// BODY, Áï º»¹®À» Àü¼ÛÇÑ´Ù.

out.println(Message);

// ¸Þ¼¼ÁöÀÇ ³¡À» ¾Ë¸°´Ù.

out.println(".");

Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö´Â RFC¿¡ Á¤ÀÇµÈ Ç¥ÁØ Command(Post,

From µî) ¸¦ ÀÌ¿ëÇØ ¼­·Î Åë½ÅÇÑ´Ù.

¿ì¸®°¡ ÀÍÈ÷ Àß ¾Ë°í ÀÖ´Â CommID.REQUEST, CommID.VALIDATE

µµ Command ¿¡ ÇØ´çÇÑ´Ù.

¼ÒÄÏÇÁ·Î±×·¡¹Ö°ú ÇöÁ¸ÇÏ´Â ºÐ»ê°´Ã¼µéÀÇ Åë½Å¹æ¹ýÀ» °£´ÜÈ÷ ºñ±³

ÇØ º¸¸é...

¼ÒÄÏÀº ¹°¸®ÀûÀÎ À§Ä¡¸¦ ÀÌ¿ëÇØ¼­ ¼­¹ö¸¦ ãÁö¸¸ Corba µîÀÇ ºÐ»ê°´

ü¿¡¼­´Â Directory and Name Service ¸¦ ÀÌ¿ëÇØ¼­ °´Ã¼ÀÇ ¹®ÀÚ¿­

À̸§À» ÅëÇØ ·¹ÆÛ·±½º¸¦ ¾ò¾î¿Â´Ù.

Post, Subject.. µî°ú °°Àº Command ´Â ºÐ»ê°´Ã¼¿¡¼­ÀÇ ¼­ºñ½º

(¸Þ¼Òµå) À̸§°ú ´ëÀÀµÇ¸ç Command: ÀÌÈÄÀÇ ¸Þ¼¼Áö´Â ÇØ´ç ¼­ºñ½º

(¸Þ¼Òµå) ¿¡ ´ëÇÑ Àü´ÞÀÎÀÚ¿¡ ÇØ´çÇÑ´Ù.

ÀÌ»óÀ¸·Î °£·«ÇÏ°Ô ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸¾Ò´Ù.

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

3. RMI (Remote Method Invocation)

RMI ´Â ³×Æ®¿÷»ó¿¡¼­ ÀÚ¹Ù °´Ã¼µéÀ» ºÐ»ê½Ãų¼ö ÀÖ´Â ¹æ¹ýÀÌ´Ù.

RMI ´Â EJB, JINI µî ÀÚ¹Ù ºÐ»ê±â¼úÀÇ ±â¹Ý ±â¼úÀÌ´Ù.

RMI API ´Â ÇÁ·Î±×·¡¸Ó¿¡°Ô °´Ã¼°¡ ³×Æ®¿÷»ó¿¡¼­ ºÐ»êµÇ¾î ÀÖ

´Ù´Â »ç½ÇÀ» ´ëºÎºÐ ¹«½ÃÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.

RMI ´Â JRMP ¶ó´Â ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ°Ô µÇ¸ç Ŭ¶óÀÌ¾ðÆ® / ¼­¹ö

¸ðµÎ ÀÚ¹Ù·Î ±¸ÇöµÇ¾î¾ß ÇÑ´Ù.

RMI ¿¡ ´ëÇØ¼­´Â °£´ÜÈ÷ »ìÆìº¸°í ³Ñ¾î °¡°Ú´Ù.

RMI ¸¦ ºñ·ÔÇÑ ¸ðµç ºÐ»ê°´Ã¼ ½Ã½ºÅÛµéÀÌ °®´Â °øÅëÀûÀΠƯ¡ÀÌ

ÀÖ´Ù.

1). Ŭ¶óÀÌ¾ðÆ®¿¡ ¼­ºñ½ºÇϱâ À§ÇÑ °´Ã¼¸¦ Á¤ÀÇÇÑ´Ù.

Ŭ¶óÀÌ¾ðÆ®´Â ¼­¹ö°¡ Ŭ¶óÀÌ¾ðÆ®¸¦ À§ÇØ Á¦°øÇÏ´Â ¼­ºñ½º¸¸À» È£

ÃâÇÒ ¼ö ÀÖ´Ù.

RMI ¿¡¼­´Â java.rmi.Remote ÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇÏ´Â ÀÎÅÍÆäÀ̽º

¸¦ ¿ø°Ý ÀÎÅÍÆäÀ̽º¶ó°í ÇÏ¸ç ¿ø°Ý ÀÎÅÍÆäÀ̽º³»¿¡ Á¤ÀÇµÈ ¸Þ¼Òµå

¸¸ÀÌ Å¬¶óÀÌ¾ðÆ®·ÎºÎÅÍ È£Ãâ µÉ ¼ö ÀÖ´Ù.

ÀÌ ¿ÜÀÇ Å¬·¡½º³ª ¸Þ¼Òµå´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀ» ó¸®Çϱâ À§ÇØ

¼­¹ö³»ºÎÀûÀ¸·Î »ç¿ëµÇ¾îÁö´Â °ÍµéÀÌ´Ù.

2). Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö´Â ½ºÅÓ(Stub), ½ºÄÌ·¹Åæ(Skeleton) À» ÀÌ¿ëÇØ

Åë½ÅÇÑ´Ù.

- ½ºÅÓ : Ŭ¶óÀ̾ðÆ®Ãø¿¡ À§Ä¡ÇÏ¸ç ¼­¹ö°´Ã¼ÀÇ Proxy ¿ªÇÒÀ»

ÇÑ´Ù.

Ŭ¶óÀÌ¾ðÆ®´Â ½ÇÁ¦·Î ¿ø°Ý°´Ã¼¸¦ È£ÃâÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó

·ÎÄûóÀÇ ½ºÅÓÀ» È£ÃâÇÔÀ¸·Î½á ¼­ºñ½º¸¦ ¿äûÇÑ´Ù.

±×·¯¸é ½ºÅÓÀÌ °¡Áö°í ÀÖ´Â ¿ø°Ý°´Ã¼ÀÇ À§Ä¡Á¤º¸

(IP Address)¸¦ ÀÌ¿ë ½ÇÁ¦·Î ³×Æ®¿÷À» ÅëÇØ ¼­¹ö»óÀÇ

½ºÄÌ·¹ÅæÀ» È£ÃâÇϸç ÀÌ °úÁ¤¿¡¼­ ¸Ó½Å°£ÀÇ ¹ÙÀÌÆ® ¼ø¼­

µîÀÇ Â÷ÀÌÁ¡À» ÇØ°áÇϱâ À§ÇØ ¸¶¼£¸µÀ» ÇÑ´Ù.

- ½ºÄÌ·¹Åæ : ¼­¹öÃø¿¡ À§Ä¡ÇÏ¸ç ½ºÅÓÀ¸·ÎºÎÅÍ ³Ñ¾î¿À´Â

¸Å°³º¯¼ö µîÀ» ¾ð¸¶¼£Çϸç, ³×Æ®¿÷À¸·ÎºÎÅÍ Àü¼ÛµÈ

µ¥ÀÌŸ¸¦ ÀÚ¹Ù °´Ã¼µé·Î º¯È¯ÇÑ ´ÙÀ½ ¿ø°Ý°´Ã¼¿¡

ÀÖ´Â Àû´çÇÑ ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù.

½ºÅÓ, ½ºÄÌ·¹Åæ ±¸Á¶´Â ½ÇÁ¦·Î ºÐ»ê°´Ã¼°£ÀÇ Åë½ÅÀ» °¡´ÉÇϰÔ

ÇØÁÖ´Â °¡Àå Áß¿äÇÑ ¿ä¼ÒÀÌ¸ç ³»ºÎÀûÀ¸·Î´Â ¼­·Î ¼ÒÄÏÀ» ÀÌ¿ëÇÑ

Åë½ÅÀ» ÇÏ°Ô µÇ¸ç ÇÁ·Î±×·¡¸Ó¿¡°Ô´Â »óÀ§·¹º§ÀÇ ÀÎÅÍÆäÀ̽º¸¦

Á¦°øÇÔÀ¸·Î½á ¹Ýº¹µÈ ÀÛ¾÷À» ÁÙ¿©ÁØ´Ù.

¿ø°Ý¸Þ¼Òµå È£Ãâ½Ã Àü´ÞµÇ´Â ¸Å°³º¯¼ö¿Í ¸®ÅϰªÀ» Á÷·ÄÈ­ °¡´É

(±âº»ÀÚ·áÇü ȤÀº java.io.Serializable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â

Ŭ·¡½º)Çϰųª ¿ø°Ý °´Ã¼(¿ø°ÝÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â °´Ã¼)À̾î¾ß

ÇÑ´Ù.

ºñ ¿ø°Ý °´Ã¼ÀÏ °æ¿ì´Â °´Ã¼ Á÷·ÄÈ­ µÇ¾î º¹»çµÈ °´Ã¼°¡ Àü´ÞµÇ¸ç,

¿ø°Ý °´Ã¼ÀÏ °æ¿ì´Â ½ºÅÓŬ·¡½ºÀÇ °´Ã¼°¡ º¹»çµÇ¾î Àü´ÞµÇ¸ç,

°´Ã¼ ÀÚü°¡ º¹»çµÇ¾î Àü´ÞµÇÁö´Â ¾Ê´Â´Ù.

¸¶Áö¸·À¸·Î RMI ¸¦ À§ÇØ ÇÊ¿äÇÑ jdk³»¿¡ Æ÷ÇÔµÈ Åøµé¿¡ ´ëÇØ¼­ ¾Ë¾Æ

º¸ÀÚ

1) RMIC

Ŭ¶óÀÌ¾ðÆ® / ¼­¹ö°£ÀÇ Åë½ÅÀ» À§ÇÑ ½ºÅÓ, ½ºÄÌ·¹ÅæÀ» »ý¼ºÇÏ´Â

ÄÄÆÄÀÏ·¯ÀÌ´Ù.

2) RMIREGISTRY

CORBA ORB Á¦Ç°ÁßÀÇ ÇϳªÀÎ Visibroker ÀÇ OSAgent ¿Í µ¿ÀÏÇÑ

±â´ÉÀ» ÇÏ¸ç °´Ã¼¼­¹ö°¡ ÀÖ´Â ¸Ó½Å»óÀÇ Æ÷Æ®¿¡ ±Í±â¿ïÀ̰í

ÀÖÀ¸¸ç, °´Ã¼ ¼­¹ö´Â Ưº°ÇÑ ÇüÅÂÀÇ URL(rmi://...)À» ÅëÇØ °´Ã¼

ÀνºÅϽº¸¦ ÀÌ Æ÷Æ®¿¡ Â÷·Ê·Î ¹ÙÀεùÇÔÀ¸·Î½á ³ªÁß¿¡ Ŭ¶óÀ̾ðÆ®

°¡ ¼­¹ö°´Ã¼¸¦ ¹ß°ßÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù.

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

4. Corba (Common Object Request Broker Architecture)

Corba ´Â 1984³â 700 ¿©°³ ÀÌ»óÀÇ ÄÄÇ»ÆÃ °ü·Ã ȸ»çµéÀÌ °øµ¿ ¼³¸³

ÇÑ ÄÁ¼Ò½Ã¾öÀÎ OMG(Object Management Group)¿¡¼­ Á¦¾ÈÇÑ OMA

(Object Management Architecture) Ç¥ÁØÀÇ ÀϺÎÀÌ´Ù.

OMA´Â Corba, UML µî°ú °°Àº °´Ã¼, ºÐ»ê µî¿¡ °üÇÑ ¼Ö·ç¼ÇÀ» Á¦°ø

ÇÑ´Ù.

Corba ´Â ÁÖ·Î ºÐ»êȯ°æÇÏ¿¡¼­ °´Ã¼°£ÀÇ Åë½Å±â´É°ú À̸¦ Á¶ÀÛÇÏ´Â

µ¥ ÇÊ¿äÇÑ ±â´ÉµéÀ» ÁÖ·Î ¾ð±ÞÇϰí ÀÖÀ¸¸ç ORB ´Â Corba Ç¥ÁؾÈÀ¸

·Î½á ÁÖ·Î Åë½ÅºÎºÐ¸¸ ´ã´çÇϰí ÀÖ´Ù.

Corba ÀÇ ¸ñÀûÀº Ç÷§Æû, ¾ð¾î¿¡ µ¶¸³ÀûÀ̰í À§Ä¡¿¡ Åõ¸íÇÑ ¹æ½ÄÀ¸

·Î Ŭ¶óÀÌ¾ðÆ® / ¼­¹ö°¡ Åë½ÅÇÒ ¼ö ÀÖ´Â ÇϺα¸Á¶¸¦ Á¦°øÇÑ´Ù.

Áï, Corba ´Â ¹æ¹ý·ÐÀÌ´Ù.

1) IDL (Interface Definition Language)

IDL Àº ¼­·Î´Ù¸¥ ¾ð¾î, Ç÷§Æû°£ÀÇ Åë½ÅÀ» À§ÇÑ Ç¥ÁØÀ» Á¦°øÇÑ´Ù.

IDL Àº ÄÚ¹Ù°´Ã¼°¡ Á¦°øÇÏ´Â ¼­ºñ½º¸¦ Á¤ÀÇÇϱâ À§ÇÑ ¸í¼¼¾ð¾î

À̸ç IDL Àº ¼±¾ð¸¸ ÀÖÀ»»Ó ±¸ÇöÀº ¾ø´Ù.

2) ORB (Object Request Broker)

ORB´Â Corba °´Ã¼ ¹ö½º(Bus)ÀÌ´Ù.

ORB ÀÇ ¸ñÀûÀº Corba °´Ã¼ÀÇ À§Ä¡ Åõ¸í¼ºÀ» º¸ÀåÇϱâ À§ÇÔÀ̸ç

ÇÁ·Î¼¼½º³», µ¿ÀÏ ÄÄÇ»Åͳ», ´Ù¸¥ ¸Ó½®°£ÀÇ ÄÚ¹Ù°´Ã¼È£ÃâÀ» ÁßÀç

ÇÔÀ¸·Î½á ÄÚ¹Ù°´Ã¼¿¡ À§Ä¡ Åõ¸í¼ºÀ» º¸ÀåÇÑ´Ù.

Áï, ORB ´Â Ŭ¶óÀÌ¾ðÆ® °´Ã¼°¡ ¼­¹ö°´Ã¼ÀÇ ¿ÀÆÛ·¹À̼Ǹ¦ È£ÃâÇÒ

¶§ Ŭ¶óÀ̾ðÆ®ÀÇ È£ÃâÀ» ¹Þ¾Æ ÀÚ½ÅÀÌ °¡Áö°í ÀÖ´Â ¼­¹ö°´Ã¼µéÀÇ

Á¤º¸¸¦ ÂüÁ¶ÇÏ¿© Ŭ¶óÀÌ¾ðÆ®°¡ ¿øÇÏ´Â ¼­¹ö°´Ã¼¸¦ ã°í Ŭ¶óÀ̾ð

Æ®¿¡¼­ º¸³»ÁØ ¼­ºñ½º ¿äûÁ¤º¸¸¦ ÇØ´ç ¼­¹ö°´Ã¼¿¡°Ô Àü´ÞÇÏ¿©

°´Ã¼·Î ÇÏ¿©±Ý ±× ÀÛ¾÷À» ¼öÇàÇÏ°Ô ÇÑ´Ù.

±×¸®°í ÀÛ¾÷ÀÌ ¿Ï·áµÇ¸ç ORB ´Â ¿ªÀ¸·Î ±× °á°ú °ªÀ» ¹Þ¾Æ Ŭ¶ó

ÀÌ¾ðÆ®¿¡°Ô Àü´ÞÇÏ´Â ¿ªÇÒÀ» ¼öÇàÇÑ´Ù.

µû¶ó¼­ Corba Ŭ¶óÀ̾ðÆ®, ¼­¹ö´Â ¸ðµÎ ORB ¸¦ ÇÊ¿ä·Î ÇÏ¸ç ¼­·Î

´Ù¸¥ ȸ»çÁ¦Ç°ÀÇ ORB °¡ ¼­·Î »óÈ£ÀÛ¿ëÇÒ ¼ö ÀÖµµ·Ï ORB °£

Ç¥ÁØ Åë½Å ÇÁ·ÎÅäÄÝÀÎ IIOP(Internet Inter ORB Protocol) À» »ç¿ë

ÇÏ¿© Åë½ÅÇÑ´Ù.

3) ÀÎÅÍÆäÀ̽º ÀúÀå¼Ò (Interface Repository)

ÀÎÅÍÆäÀ̽ºÀúÀå¼Ò´Â IDLÀÌ ÀúÀåµÇ¾î ÀÖ´Â µ¥ÀÌŸº£À̽ºÀÌ´Ù.

°¡Àå Áß¿äÇÑ ¸ñÀûÀº ÄÚ¹Ùµ¿ÀûÈ£Ãâ(DII, Dynamic Invocation

Interface) À» °¡´ÉÇÏ°Ô ÇÏ¸ç ¼­¹ö¿Í ´Ù¸¥ ¾ð¾î·Î ÀÛ¼ºµÈ Ŭ¶óÀ̾ð

Æ®°¡ ¼­ºñ½º¸¦ È£ÃâÇÒ ¼ö ÀÖµµ·Ï Á¤º¸¸¦ Á¦°øÇÏ´Â °ÍÀÌ´Ù.

4) °´Ã¼ ¾î´ðÅÍ(Object Adapter)

ÄÚ¹Ù°´Ã¼¸¦ ´ë½ÅÇÏ¿© ½ºÅÓÀ¸·ÎºÎÅÍÀÇ È£Ãâ¿äûÀ» ¹Þ¾Æ Àü´ÞÇØ

ÁÖ¸ç, ÄÚ¹Ù°´Ã¼¿¡ °´Ã¼ ID(°´Ã¼ÂüÁ¶) ¸¦ ÇÒ´çÇÑ´Ù.

°´Ã¼ ¾î´ðÅÍ´Â BOA(Basic Object Adapter) ¿Í POA(Portable

Object Adapter) °¡ ÀÖÀ¸¸ç BOA ´Â º¥´õ¸¶´Ù ¼­·Î´Ù¸¥ ¹æ½ÄÀ» »ç¿ë

ÇÔÀ¸·Î À̽ļºÀÌ ¶³¾îÁüÀ¸·Î JDK1.2 ¿¡¼­´Â POA ¸¸À» Áö¿øÇÑ´Ù.

5) ½ºÅÓ(Stub), ½ºÄÌ·¹Åæ(Skeleton)

Corba ÀÇ Á¤ÀûÈ£ÃâÀ» À§ÇØ »ç¿ëµÇ¸ç IDL ÄÄÆÄÀÏ·¯·ÎºÎÅÍ ÇØ´ç±¸Çö

¾ð¾î·Î »ý¼ºµÈ´Ù.

6) µ¿Àû È£Ãâ ÀÎÅÍÆäÀ̽º (DII, Dynamic Invocation Interface)

½ºÅÓ, ½ºÄÌ·¹ÅæÀ» ÀÌ¿ëÇÑ Á¤ÀûÈ£ÃâÀÌ¾Æ´Ñ ·±Å¸Àӽà »õ·ÎÀÌ »ý¼ºµÇ

µÈ ÄÚ¹Ù°´Ã¼¸¦ Ŭ¶óÀÌ¾ðÆ®¿¡¼­ È£ÃâÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

7) µ¿Àû ½ºÄÌ·¹Åæ ÀÎÅÍÆäÀ̽º (DSI, Dynamic Skeleton Interface)

½ºÅÓ, ½ºÄÌ·¹ÅæÀÌ ¾ø´Â ÄÚ¹Ù°´Ã¼¿¡ ´ëÇÑ È£Ãâ ¿äûÀ» ó¸®Çϴµ¥

»ç¿ëµÈ´Ù.

8) ÄÚ¹Ù °´Ã¼ ÂüÁ¶

- Corba °´Ã¼ ÂüÁ¶´Â ºÐ»êȯ°æ¿¡¼­ Corba °´Ã¼¸¦ ã¾Æ³»±â À§ÇÑ

°´Ã¼ ½Äº°ÀÚ(ID) ÀÌ´Ù.

- Ŭ¶óÀÌ¾ðÆ®´Â ÄÚ¹Ù °´Ã¼ÂüÁ¶¸¦ ¾ò¾î¾ß¸¸ ÄÚ¹Ù °´Ã¼¸¦ È£ÃâÇÒ

¼ö ÀÖ´Ù.

- ÄÚ¹Ù °´Ã¼ÂüÁ¶´Â ÄÚ¹Ù ³×ÀÌ¹Ö ¼­ºñ½º¸¦ »ç¿ëÇÏ¿© °´Ã¼À̸§

(¹®ÀÚ¿­)À¸·Î ¾òÀ» ¼ö ÀÖ´Ù.

- ÀÌ¹Ì ¾ò¾îÁø °´Ã¼ ÂüÁ¶·Î ÄÚ¹Ù °´Ã¼¸¦ È£ÃâÇÏ¿© ´Ù¸¥ ÄÚ¹Ù °´Ã¼

ÂüÁ¶¸¦ ¾òÀ» ¼ö µµ ÀÖ´Ù.

- ÀÎÅÍÆäÀ̽º ÀúÀå¼Ò API ¸¦ »ç¿ëÇÏ¿© °´Ã¼ ÂüÁ¶¸¦ ¾òÀ» ¼ö ÀÖ´Ù.

9) IIOP (Internet Inter ORB Protocol)

ÄÚ¹Ù¿¡¼­ Åë½ÅÀ» À§ÇØ »ç¿ëÇÏ´Â GIOP ¸¦ TCP/IP »ó¿¡¼­ ±¸ÇöÇÑ °ÍÀÓ

10) Corba Service

°¢°¢ÀÇ Corba ±¸Çö º¥´õ¿¡¼­ Á¦°øÇØ¾ß ÇÏ´Â ½Ã½ºÅÛ Â÷¿øÀÇ ¼­ºñ½º

ÀÌ¸ç ´ÙÀ½°ú °°Àº 15°³ÀÇ Ç¥ÁØ ¼­ºñ½º°¡ ÀÖ´Ù.

- ³×À̹Ö(Naming) ¼­ºñ½º

°¡Àå±âº»ÀûÀ̸鼭µµ °¡Àå Áß¿äÇÑ ¼­ºñ½ºÀÌ´Ù.

ÄÚ¹Ù°´Ã¼ À̸§À» ÅëÇØ °´Ã¼ÂüÁ¶¸¦ ¾ò±âÀ§ÇÑ ¼­ºñ½ºÀÌ´Ù.

- »ý¸íÁÖ±â (Life Cycle) ¼­ºñ½º

°´Ã¼ÀÇ »ý¼º, ¼Ò¸ê, À̵¿, º¹»ç µîÀÇ Á¶ÀÛ±â´ÉÀ» Á¦°øÇÑ´Ù.

- ¿µ¼Ó¼º (Persistence) ¼­ºñ½º

ODBMS, RDBMS, File System µî¿¡ °´Ã¼¸¦ ÀúÀåÇϱâ À§ÇÑ

¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÑ´Ù.

- ¿ÜºÎÈ­ (Externalization) ¼­ºñ½º

½ºÆ®¸² ¹æ½ÄÀ» »ç¿ëÇÏ¿© °´Ã¼ÀÇ ³»¿ëÀ» ÀúÀå, Àü¼ÛÇϰųª °Ë»ö,

Àü¼Û¹Þ¾Æ ä¿ö³ÖÀ» ¼ö ÀÖ´Â ¼­ºñ½º ÀÌ´Ù.

- À̺¥Æ® (Event) ¼­ºñ½º

ƯÁ¤ °´Ã¼¿¡°Ô À̺¥Æ®¸¦ Àü´ÞÇÏ¿© »õ·Î¿î ¼­ºñ½º¸¦ ¿ä±¸Çϰųª

¼öÇà½Ã۱â À§ÇÑ ¼­ºñ½º¸¦ Á¦°øÇÑ´Ù.

- ÇÁ·ÎÆÛƼ(Peoperty) ¼­ºñ½º

IDLÀ» ÅëÇØ Á¤ÀÇµÈ Á¤ÀûÀÎ ¼Ó¼ºµé¿¡ µ¿ÀûÀ¸·Î Ãß°¡ÀûÀÎ ¼Ó¼ºÀ»

Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.

Áï, ÇÁ·Î±×·¥ ¼öÇàÁß¿¡ »õ·Î¿î µ¥ÀÌŸ¸â¹ö¸¦ Ŭ·¡½º¿¡ Ãß°¡ÇÏ

°Ô ÇØ ÁÖ´Â ±â´ÉÀÌ´Ù.

- °ü°è (Relationship) ¼­ºñ½º

°´Ã¼°£ÀÇ µ¿ÀûÀÎ ¸µÅ©ÀÇ »ý¼º ¹× ÀÌµé ¸µÅ©ÀÇ °Ë»öÀ» À§ÇÑ

¼­ºñ½ºÀÌ´Ù.

- ÁúÀÇ (Query) ¼­ºñ½º

ÄÚ¹Ù°´Ã¼¿¡ ´ëÇÑ ÁúÀÇ ¼­ºñ½º·Î½á SQL À» Æ÷ÇÔÇϸç SQL3 ¹×

OQL(Object Query Language)¿¡ ±â¹ÝÇÑ´Ù.

- °´Ã¼ Æ®·£Àè¼Ç ¼­ºñ½º(OTS, Object Transaction Service)

°¡Àå ÁÖ¸ñ¹Þ´Â ¼­ºñ½º ÁßÀÇ ÇϳªÀÌ¸ç ±âÁ¸ÀÇ ¹Ìµé¿þ¾î·Î ¸¹ÀÌ

¾²ÀÌ´Â TP-Monitor(Åνõµ, ¿£½Ã³ª µî) ¸¦ ´ëüÇÏ´Â Â÷¼¼´ë

¹Ìµé¿þ¾î·Î½á Corba °¡ ÁÖ¸ñ¹ÞÀ» ¼ö ÀÖ´Â Áß¿äÇÑ ¼­ºñ½ºÀÌ´Ù.

OTS ´Â Flat Transaction, Nested Transaction µÑ´Ù¸¦ Áö¿øÇϸç

2-phase commit ¹æ½ÄÀÌ´Ù.

- µ¿½Ã¼º Á¦¾î (Concurrency Control) ¼­ºñ½º

Æ®·£Àè¼Ç, ¾²·¹µå°£ÀÇ lock À» °ü¸®ÇÏ´Â lock °ü¸®ÀÚÀÌ´Ù.

- °´Ã¼ ½Ã°£ (Object Time) ¼­ºñ½º

½Ã°£ µ¿±âÈ­ ¹× ½Ã°£±â¹ÝÀÇ À̺¥Æ®¸¦ Á¤ÀÇ, »ý¼ºÇϴ°ÍÀ» °¡´É

ÇÏ°Ô ÇÑ´Ù.

- ¶óÀ̼¾½º (Licensing) ¼­ºñ½º

¾ÆÁÖ Àç¹ÌÀÖ´Â ¼­ºñ½º·Î¼­ °´Ã¼ »ç¿ë¿¡ °üÇÑ ºñ¿ëÀ» °è»êÇϱâ

À§ÇÑ ¼­ºñ½º¸¦ Á¦°øÇÑ´Ù.

ÃøÁ¤·®Àº ¼¼¼Ç´ÜÀ§, ³ëµå´ÜÀ§, ÀνºÅϽº ´ÜÀ§, »çÀÌÆ® ´ÜÀ§ µî

ÀÌ µÉ ¼ö ÀÖ´Ù.

- °´Ã¼ º¸¾È (Object Security) ¼­ºñ½º

ÀÎÁõ, Á¢±ÙÁ¦¾î¸®½ºÆ®(ACL, Access Control List), ½Å·Úµµ µîÀ»

À§ÇÑ ¼­ºñ½º¸¦ Á¦°øÇÑ´Ù.

ÀÌ ¼­ºñ½º´Â ¹ÌÁ¤ºÎ°¡ Á¦Á¤ÇÑ º¸¾ÈÇ¥ÁØ µî±ÞÀÎ C2 Â÷¿øÀÇ

º¸¾È ±â´ÉÀ» Á¦°øÇÑ´Ù.

Áï, ID, ¾ÏÈ£ ÀÎÁ¤ÀýÂ÷¸¦ °ÅÄ¡µµ·Ï ÇÏ´Â ¹æ¹ýÀÌ´Ù.

- Æ®·¹À̵ù(Trading) ¼­ºñ½º

Corba Æ®·¹À̵ù ¼­ºñ½º´Â 114 ÀüÈ­ ¾È³»¿Í °°Àº ¿ªÇÒÀ» ÇÑ´Ù.

Ŭ¶óÀÌ¾ðÆ®´Â ÇÁ·Î±×·¥ ¼öÇà Áß Æ®·¹À̵ù ¼­ºñ½º¸¦ ÅëÇØ ¿øÇÏ

´Â ¼­ºñ½º¸¦ Á¦°øÇÏ´Â ¼­¹ö°´Ã¼¸¦ ã°í µ¿ÀûÈ£Ãâ ±â´ÉÀ» »ç¿ë

ÇÏ¿© ¿øÇÏ´Â ¼­ºñ½º¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.

- Ä÷º¼Ç (Collections) ¼­ºñ½º

°´Ã¼µéÀÇ ÁýÇÕÀ» »ý¼ºÇϰí Á¶ÀÛÇϵµ·Ï ÇÏ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù.

¡¡

11) Corba Facilities

Corba Facilities ´Â Corba Serice ¿Í´Â´Þ¸® »óÀ§·¹º§ÀÇ ¼­ºñ½ºÀ̸ç

ƯÁ¤ µµ¸ÞÀÎ(±ÝÀ¶, Á¦Á¤...)¿¡¼­ °øÅëÀûÀ¸·Î »ç¿ë°¡´ÉÇÑ ¼­ºñ½º

µéÀÌ´Ù.

¿©±â¿¡´Â ´ÙÀ½ µÎ°¡Áö ¿Ü¿¡ ¿©·¯°¡Áö Facilities µéÀÌ Á¸ÀçÇÑ´Ù.

- Mobile Agent

°´Ã¼ÀÇ µ¿ÀûÀÎ À̵¿±â´É°ú À¯¿ë¼ºÀ» Áö¿øÇϱâ À§ÇÑ Åä´ë¸¦ Á¦°ø

ÇÑ´Ù.

- Data Interchange

°´Ã¼µé »çÀÌÀÇ µ¥ÀÌŸ Àü¼Û°ú ÀÀ¿ëÇÁ·Î±×·¥ ¼öÁØÀÇ »óȣȣȯÀ»

À§ÇÑ ±â´ÉÀÌ´Ù.

12) Corba 3.0 ¿¡ Æ÷Ç﵃ ±â´Éµé

- ºñµ¿±â Åë½ÅÀ» À§ÇÑ ¸Þ¼¼Â¡ ¼­ºñ½º

- IIOP firewall proxy

- CORBA / DCOM ¿¬µ¿

- EJB ¿¡ ±â¹ÝÇÑ ºñÁî´Ï½º °´Ã¼ °ñ°Ý±¸Á¶

- µµ¸ÞÀÎ ¼­ºñ½º °ñ°Ý±¸Á¶ : Á¦Á¶, ÀüÀÚ»ó°Å·¡, ¼ö¼Û, Åë½Å µî

¡¡

Áö±Ý±îÁö Corba¿¡¼­ ¸¹ÀÌ ¾²ÀÌ´Â ¿ë¾î¸¦ Áß½ÉÀ¸·Î »ìÆìº¸¾Ò´Ù.

Corba ´Â ¿©·¯°¡Áö ¼­ºñ½º¸¦ Á¦°øÇÑ´Ù.

³Ê¹« ¸¹´Ù º¸´Ï ³×Àּ̹­ºñ½º, À̺¥Æ® ¼­ºñ½º, Æ®·£Á§¼Ç ¼­ºñ½º µî

À» Á¦¿ÜÇÑ ³ª¸ÓÁö °ÍµéÀº ±¸°æÇϱâ Á¶Â÷ Èûµç Áö°æÀÌ´Ù.

Áï, ½ÇÁ¦ Corba ±¸Çö Á¦Ç°À» ³»³õÀº º¥´õµéÀÌ ÀÌ ¸¹Àº ±â´ÉÀ» ¸ðµÎ

±¸ÇöÇÏ´Â °ÍÀÌ Èûµç°Í °°´Ù.

¿¹·Î½á ¸¹ÀÌ ¾²ÀÌ´Â Inprise ÀÇ Visibroker for Java ¿¡´Â ORB ¿Í ÇÔ²²

³×Àּ̹­ºñ½º, À̺¥Æ® ¼­ºñ½º ¸¸À» Á¦°øÇÑ´Ù.

Æ®·£Àè¼Ç ¼­ºñ½º¸¦ À§Çؼ­´Â ITS ¶ó´Â Á¦Ç°À» Ãß°¡·Î »ç¿ëÇØ¾ß ÇÑ´Ù.

±×¿ÜÀÇ ¼­ºñ½ºµéÀº Çà¹æºÒ¸íÀΰ¡?

±×°Ç ±×·¸°í...

ÀÚ¹ÙÇÁ·Î±×·¡¸ÓµéÀº Corba ¸¦ ¿©·¯¹æ¹ýÀ¸·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.

IDL À» ¸ð¸£´Â °³¹ßÀÚ¶óµµ Caffeine on Visibroker ¸¦ ÀÌ¿ëÇϸé ÀÚ¹Ù

ÀÎÅÍÆäÀ̽º·Î ½ÃÀÛÇØ¼­ IDL, ½ºÅÓ, ½ºÄÌ·¹Åæ µîÀ» ¾òÀ» ¼ö ÀÖ´Ù.

±×¸®°í JDK1.2 Core ³»¿¡´Â ±âº»Àû ¼­ºñ½º¿Í ORB °¡ Æ÷ÇԵǾî

ÀÖ´Ù.

¶ÇÇÑ, ÀÌÈÄ¿¡ ¼³¸íÇÒ RMI_OVER_IIOP ¸¦ ÀÌ¿ëÇϸé RMI ¸¦ ÀÌ¿ëÇØ¼­

ÄÚ¹Ù¿Í Åë½ÅÀÌ °¡´ÉÇÏ´Ù.

ÄÚ¹Ù¿Í ÀÚ¹Ù´Â ±× À¯¸íÇÑ "ObjectWeb" À̶ó´Â °³³äÀ» ź»ý½ÃŲ

À庻ÀδÙ.

ÀÚ¹Ù´Â »ê¾÷°è Ç¥ÁØÀÎ ÄÚ¹Ù¸¦ ÀÌ¿ëÇØ ¿µ¿ªÀ» È®´ë ÇÒ ¼ö ÀÖ°í

ÄÚ¹Ù ¶ÇÇÑ ÀÚ¹Ù¶ó´Â ¾ð¾î¿¡ ÈûÀÔ¾î ¸¹Àº °ÍµéÀ» ¾ò°ÔµÉ °ÍÀÌ´Ù.

´ÙÀ½ Àå¿¡¼­´Â Àå¾ÈÀÇ È­Àç(?)°¡ µÇ°í ÀÖ´Â EJB ¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸ÀÚ

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

¡¡

5. EJB (Enterprise JavaBeans)

Sun ÀÇ Enterprise JavaBeans ½ºÆÑ¿¡ µû¸£¸é "EJB´Â ºÐ»êȯ°æÇÏÀÇ

ÄÄÆ÷³ÍÆ® ¾ÆÅ°ÅØÃ³"¶ó°í Á¤ÀǵǾî ÀÖ´Ù.

Áï, EJB ´Â ƯÁ¤ User Interface ¸¦ °¡ÁöÁö ¾Ê´Â ¼­¹öÃø ÄÄÆ÷³ÍÆ®

¸ðµ¨À̸ç Java ÀÇ ¿©·¯°¡Áö Enterprise API(JNDI, RMI, JAVA IDL,

SERVLET & JSP, JMS, JTS, JTA, JDBC µî)µé°ú ¾î¿ì·¯Á® ¶ÇÇϳªÀÇ

¿Ïº®ÇÑ ºÐ»êȯ°æÀÌ ¸¸µé¾î Áø´Ù.

Sun ÀÇ ¿£ÅÍÇÁ¶óÀÌÁî ½ÃÀåÀ» À§ÇÑ ³ë·ÂÀÌ °á½ÇÀ» °ÅµÎ°í ÀÖ´Â °ÍÀÌ

´Ù.

EJB ÀÇ Æ¯Â¡Àº ´ÙÀ½°ú °°´Ù.

1) Enterprise Bean's instances µéÀº Container ¿¡ ÀÇÇØ RunTime

¿¡ »ý¼ºµÇ°í °ü¸®µÈ´Ù.

2) Enterprise Bean ´Â environment properties¸¦ ¼öÁ¤ÇÔÀ¸·Î½á

deployment time ¿¡ ÃÖÀûÈ­ µÉ¼ö ÀÖ´Ù.

3) Æ®·£Àè¼Ç¸ðµå, º¸¾È¼Ó¼ºµî ´Ù¾çÇÑ Metadata ´Â EnterPrise

Beans Ŭ·¡½º ·ÎºÎÅÍ ¿ÜºÎ¿¡ ºÐ¸®Çؼ­ À§Ä¡ÇÒ¼ö ÀÖ´Ù.

À̰ÍÀº design and deployment time ¿¡ Container Tools ¸¦

ÀÌ¿ëÇØ ´Ù·ç¾î Áú¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù.

4) Client Access ´Â Container ȤÀº EJB Server(OS, DBMS µî)¿¡

ÀÇÇØ Á¶Á¤µÉ¼ö ÀÖ´Ù.

5) Enterprise Bean ÀÌ EJB specification ¿¡ Á¤ÀÇµÈ standard

container services ¸¸ »ç¿ëÇÑ´Ù¸é ¾î¶² Container ¿¡¼­µµ ÀçÄÄÆÄ

ÀÏ ¾øÀÌ »ç¿ë°¡´ÉÇÏ´Ù.

6) Enterprise Bean ´Â ÀçÄÄÆÄÀÏÀ̳ª ¼Ò½ºÄÚµå º¯°æ¾øÀÌ ¾ÖÇø®ÄÉÀÌ

¼Ç±¸¼º¿¡ Æ÷ÇԵɼö ÀÖ´Ù.

EJB °¡ µ¹¾Æ°¡±â À§Çؼ­´Â EJB ¼­¹ö¿Í EJB ÄÁÅ×À̳ʰ¡ ÇÊ¿äÇÏ´Ù.

´ëÇ¥ÀûÀÎ EJB ¼­¹ö´Â DBMS°¡ µÉ ¼öÀÖÀ¸¸ç OS ¹× File System ÀÌ µÉ

¼ö µµ ÀÖ´Ù.

ÀÌµé ¼­¹ö´Â EJB ÀÇ »óÅÂÀúÀå¼Ò ¿ªÇÒÀ» ÇÑ´Ù.

EJB ÄÁÅ×À̳ʴ EJB °¡ µ¿ÀÛÇϴ ȯ°æÀ» Á¦°øÇÑ´Ù.

³î¶ø°Ôµµ ÇöÀç ³ª¿ÍÀÖ´Â EJB ¼­¹ö´Â 100¿©°¡Áö°¡ ³Ñ´Â´Ù.

BEA Weblogic Server, IBM À¥½ºÇÇ¾î µî°ú°°Àº µ¢Ä¡Å« ÄÁÅ×À̳ʰ¡

ÀÖ´Â ¹Ý¸é Voyager Server, OrbixHome, PowerTier ¿Í °°Àº ºÒ°ú

¸î ¸Þ°¡¿¡ ´ÞÇÏ´Â thin ¼­¹öµµ Á¸ÀçÇÑ´Ù.

±×·³ EJB ¿¡ ´ëÇØ Á»´õ ÀÚ¼¼È÷ ¾Ë¾Æº¸ÀÚ

ÇϳªÀÇ Enterprise JavaBeans ´Â 2°³ÀÇ ÀÎÅÍÆäÀ̽º¿Í 1°³ÀÇ Å¬·¡½º

·Î ÀÌ·ç¾î Áø´Ù.

1) Ȩ ÀÎÅÍÆäÀ̽º

javax.ejb.EJBHome ÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇϸç Ŭ¶óÀÌ¾ðÆ®´Â JNDI

(Java Naming and Directory Interface) ¸¦ ÀÌ¿ëÇÏ¿© ȨÀÎÅÍÆäÀ̽º¸¦

¾òÀ» ¼ö ÀÖ´Ù.

Ŭ¶óÀÌ¾ðÆ®´Â Ç×»ó EJB ÀÇ ¸®¸ðÆ® °´Ã¼¸¦ ¾ò±âÀü¿¡ Ȩ ÀÎÅÍÆäÀ̽º¸¦ ¾ò¾î

¾ß¸¸ ¸®¸ðÆ® ÀÎÅÍÆäÀ̽º¸¦ ¾òÀ» ¼ö ÀÖ´Ù.

2) ¸®¸ðÆ® ÀÎÅÍÆäÀ̽º

javax.ejb.EJBObject ÀÎÅÍÆäÀ̽º¸¦ »ó¼ÓÇϸç Ŭ¶óÀÌ¾ðÆ®´Â È¨

ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ ¸®¸ðÆ® ÀÎÅÍÆäÀ̽º¸¦ ¾òÀ» ¼ö ÀÖ´Ù.

¸®¸ðÆ® ÀÎÅÍÆäÀ̽º´Â Enterprise Bean Ŭ·¡½º¸¦ À§ÇÑ Proxy ÀÌ´Ù.

Áï, Ŭ¶óÀÌ¾ðÆ®´Â ½ÇÁ¦ Enterprise Bean Ŭ·¡½º³»ÀÇ ¸Þ¼Òµå¸¦ Á÷Á¢

È£Ãâ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¸®¸ðÆ® ÀÎÅÍÆäÀ̽º ³»ÀÇ ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù

3) Enterprise Bean Ŭ·¡½º

¿£Æ¼Æ¼ºóÀÏ °æ¿ì´Â javax.ejb.EntityBean ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϸç

¼¼¼ÇºóÀÏ °æ¿ì´Â javax.ejb.SessionBean ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϸç

Ãß°¡ÀûÀ¸·Î SessionSynchronization ¶ÇÇÑ ±¸Çö°¡´ÉÇÏ´Ù

ÀÌ Å¬·¡½º´Â ½ÇÁ¦ ¸ðµç ºñÁî´Ï½º ·ÎÁ÷ÀÌ ±¸ÇöµÇ¾î Àִ Ŭ·¡½ºÀÌ´Ù.

EJB ´Â Å©°Ô Session Bean°ú Entity BeanºóÀ¸·Î ³ª´¶´Ù.

Session Bean Àº ¶ÇÇÑ Statefull Session Bean °ú Stateless Session

Bean À¸·Î ³ª´µ¸ç Entity Bean Àº Bean Managed Entity Bean ¿Í

Container Managed Entity Bean À¸·Î ³ª´µ¾î Áø´Ù.

1) Session Bean

ÀϹÝÀûÀ¸·Î ¸»ÇÏ´Â ÄÄÆ÷³ÍÆ®(DCOM µî)°¡ Session Bean ÀÌ´Ù.

Áï, ºñÁî´Ï½º ·ÎÁ÷À» Æ÷ÇÔÇϰí ÀÖ´Â ºóÀÌ´Ù.

Session Bean Àº ¼­¹ö»ó¿¡¼­ ½ÇÇàÇÏ´Â ºñÁî´Ï½º ·ÎÁ÷À» ´Ù·ç´Â

ºñÁö¼Ó¼º °´Ã¼ÀÌ¸ç ¸ÖÆ¼ Ŭ¶óÀÌ¾ðÆ®»çÀÌ¿¡¼­ °øÀ¯µÇÁö ¾Ê´Â °´Ã¼

ÀÌ´Ù.

Ŭ¶óÀÌ¾ðÆ®´Â JNDI ¸¦ ÀÌ¿ëÇØ Home Interface ¸¦ ã°í Home

ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ Remote °´Ã¼¿¡ ´ëÇÑ ·¹ÆÛ·±½º¸¦ ȹµæÇÑ´Ù.

±×·±´ÙÀ½ ÀÌ ·¹ÆÛ·±½º¸¦ ÅëÇÑ ¸ðµç ¸Þ¼Òµå È£ÃâÀº ½ÇÁ¦ ·ÎÁ÷ÀÌ

±¸ÇöµÇ¾î ÀÖ´Â Enterprise Beans °´Ã¼³»ÀÇ ´ëÀÀµÇ´Â ¸Þ¼Òµå È£Ãâ

·Î Àü´ÞµÈ´Ù.

ÀÌ·¯ÇÑ °úÁ¤Àº entity Bean µµ ¸¶Âù°¡Áö´Ù.

- Stateless Session Bean

Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀÌ ÀÖÀ»¶§ ½ÇÇàÀÌ µÈ´Ù.

°ÅÀÇ ´ëºÎºÐ »ç¿ëÀÚ ¿äûÀ» ó¸®ÇÑÈÄ ¼Ò¸êµÈ´Ù.

À̸§¿¡¼­¾Ë ¼ö ÀÖµíÀÌ ¼¼¼ÇºóÀº 1ȸ¿ëÀÌ´Ù.

¾î¶²ÇÑ »óÅÂÁ¤º¸µµ ÀúÀåµÇÁö ¾Ê´Â ºóÀÌ´Ù.

´ëÇ¥ÀûÀÎ »ç¿ë¿¹´Â Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀ» ¹Þ¾Æ DBMS ¿¡ Äõ¸®¸¦

º¸³½ÈÄ °á°ú¸¦ Ŭ¶óÀÌ¾ðÆ®·Î ¸®ÅÏÇѴٰųª ´Ù¸¥ Session Bean

À̳ª Entity Bean À» È£ÃâÇϴµ¥ »ç¿ëµÇ¾î Áú ¼ö ÀÖ´Ù.

- Statefull Session Bean

Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀÌ ÀÖÀ»¶§ ½ÇÇàµÇ°í Socket ÀÚ¿øÀ̳ª JDBC

Connection ÀÚ¿øµîÀÇ »óÅÂÁ¤º¸¸¦ ÆÄÀϽýºÅÛÀ̳ª DBMS ¿¡ ÀúÀå

ÇÒ ¼ö ÀÖ´Ù.

ÀÌ·±ÇÑ »óÅÂÁ¤º¸´Â Á÷·ÄÈ­ °¡´ÉÇÑ µ¥ÀÌÅÍ ¸â¹öÀÌ´Ù.

2) Entity Bean

Entity Bean Àº IBM ¿¡¼­ Á¦¾ÈÇÑ °ÍÀ¸·Î ¾ÆÁÖ Àç¹ÌÀÖ´Â ³ðÀÌ´Ù.

ÄÁÅ×À̳ʳ»ÀÇ Entity Bean °´Ã¼µéÀº DBMS ȤÀº File System µî¿¡

ÀúÀåµÇ¾î Áö¼Ó¼ºÀ» °¡Áø´Ù.

ÇϳªÀÇ Entity Bean Ŭ·¡½º´Â µ¥ÀÌŸº£À̽º³»ÀÇ ÇϳªÀÇ Å×À̺í,

ȤÀº ÆÄÀÏ ½Ã½ºÅÛ ³»ÀÇ ÇϳªÀÇ µð·ºÅ丮¿¡ ´ëÀÀµÇ¸ç

Entity Bean Ŭ·¡½º ³»ÀÇ µ¥ÀÌŸ ¸â¹öµéÀº Å×ÀÌºí³»ÀÇ ÇϳªÀÇ Çʵå

¿¡ ÀúÀåµÈ´Ù.

µû¶ó¼­ ÇϳªÀÇ Entity Bean °´Ã¼´Â DB Å×ÀÌºí³»ÀÇ ÇϳªÀÇ

·¹Äڵ带 Â÷ÁöÇÏ°Ô µÈ´Ù.

Áï, 10°³ÀÇ °´Ã¼°¡ create µÇ¾ú´Ù¸é 10°³ÀÇ ·¹Äڵ尡 ¸¸µé¾îÁ³´Ù

´Â °ÍÀÌ´Ù.

ÀÌ·¸°Ô »ý¼ºµÈ °´Ã¼´Â ÀÌÈÄ¿¡ ejbFind~() µîÀÇ ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ¼­

´Ù½Ã ãÀ» ¼ö ÀÖ´Ù.

(¼¼¼ÇºóÀº ºñ Áö¼Ó¼ºÀ̹ǷΠfind~ ¸Þ¼Òµå°¡ ¾ø¾î¾ß¸¸ ÇÑ´Ù)

Bean Managed entity Bean ÀÎ °æ¿ì´Â °³¹ßÀÚ°¡ Á÷Á¢Enterprise Bean ³»¿¡

¼­ JDBC¸¦ »ç¿ëÇÏ¿© DB ¿¡ ÀúÀåÇϰí ÀоîµéÀδÙ.

Container Managed Bean Àΰæ¿ì´Â µ¥ÀÌŸ ¸â¹ö¸¦ DBMS ¿¡ ÀúÀå

ÇÏ°í ²¨³»¿À´Â ÀÏ·ÃÀ» ÀϵéÀ» ÄÁÅ×À̳ʰ¡ ¾Ë¾Æ¼­ ó¸®ÇÑ´Ù.

Áï, Àû´çÈ÷ JDBC³ª JSQL Code ¸¦ »ðÀÔÇØ ÁØ´Ù.

ÇÁ·Î±×·¡¸Ó´Â ´ÜÁö ºó Ŭ·¡½º°¡ ¾î¶²ÇÑ Å×ÀÌºí¿¡ ´ëÀÀÇÏ´ÂÁö ¶Ç

µ¥ÀÌŸ¸â¹ö°¡ Å×ÀÌºí ³»ÀÇ ¾î¶°ÇÑ Çʵ忡 ÀúÀåµÇ¾î¾ß ÇÏ´ÂÁö¸¸À»

ÁöÁ¤ÇÏ¸é ³¡ÀÌ´Ù.

Á÷Á¢ »ç¿ëÇØº¸¸é Á¤¸» Æí¸®ÇÏ´Ù´Â °ÍÀ» ´À³¥¼ö°¡ ÀÖÀ» °ÍÀÌ´Ù.

´Ù¸¸ ÆÛÆ÷¸Õ½º´Â ¶³¾îÁö´Â ÆíÀÌ´Ù.

¸ðµç EJB ÄÁÅ×À̳ʰ¡ Entity Bean À» Áö¿øÇÏ´Â °ÍÀº ¾Æ´Ï´Ù.

±×°ÍÀº EJB ½ºÆÑ»ó¿¡¼­µµ ¸í½ÃµÇ¾úÁö¸¸ ÇöÀç±îÁö ¹öÀü(1.1) Àº

¿É¼ÇÀ̸ç 1³âÈÄ¿¡ ³ª¿Ã EJB2.0 ¿¡¼­´Â ÇʼöÁ¶°ÇÀÌ µÈ´Ù°í ÇÑ´Ù.

À§¿¡¼­ ¼³¸íÇÑ Voyager Server´Â Container Managed EntityBeanÀÌ Áö¿øµÇÁö

¾ÊÀ¸¸ç, Oracle 8i´Â ¿£Æ¼Æ¼ºóÀ» ¾Æ¿¹ Áö¿øÇÏÁö ¾Ê°íOrbixHome¿¡¼­

Container Managed Entity Bean Àº Oracle¿¡¼­¸¸ °¡´ÉÇϰí, IBM À¥½ºÇǾî´Â

DB2 ¸¸À» Áö¿øÇÕ´Ï´Ù.

ÀÌÁ¦ EJBÀÇ Æ®·£Àè¼Ç 󸮿¡ ´ëÇØ¼­ ¾Ë¾Æº¸ÀÚ

ºó °³¹ßÀÚ´Â JTS ¸¦ ÀÌ¿ëÇØ Æ®·£Àè¼ÇÀÇ ¹üÀ§¸¦ ÁöÁ¤ÇØ ÁÙ ¼ö ÀÖ°í

ÄÁÅ×ÀÌ³Ê º¥´õ´Â JTA ¸¦ ÀÌ¿ëÇØ¼­ ½ÇÁ¦ Æ®·£Àè¼Ç ·ÎÁ÷À» ±¸ÇöÇÑ´Ù.

Enterprise JavaBeans ´Â OMG Object Transaction Service 1.1 (OTS)

À» µû¸£´Â flat transactions À» Áö¿øÇÑ´Ù.

Enterprise JavaBeans ÀÇ Æ¯Â¡Áß Çϳª°¡ ºÐ»ê Æ®·£Àè¼ÇÀ» Áö¿øÇÑ´Ù´Â °ÍÀÌ´Ù.

Áï, ¼­·Î´Ù¸¥ DBMS, ¼­·Î´Ù¸¥ Container ¸¦ °¡·ÎÁú·¯ Æ®·£Àè¼Ç 󸮰¡

°¡´ÉÇÏ´Ù´Â °ÍÀÌ´Ù.

¹°·Ð, ÀÌ°Ç ½ºÆå»óÀÇ ¾ê±â°í ±×·±Ã³¸®¸¦ ÇØÁÖÁö ¸øÇÏ´Â ÄÁÅ×À̳ʰ¡ ´ëºÎºÐÀÌ

´Ù.

´ÙÀ½Àº Æ®·£Àè¼ÇÀ» À§ÇÑ ¼Ó¼º°ªÀ̰í À̰͵éÀº enterprise Bean's deployment

descriptor ³»¿¡ ÁöÁ¤µÈ´Ù.

ÀÌ·± ¼Ó¼º°ªÀº ºó Àüü¿¡ Àû¿ëµÉ¼öµµ ÀÖ°í °³°³ÀÇ ¸Þ¼Òµå ´ÜÀ§·Î Àû¿ëµÉ¼öµµ

ÀÖ´Ù.

1) TX_NOT_SUPPORTED

Ŭ¶óÀ̾ðÆ®ÀÇ Æ®·£Àè¼Ç »óÅ À¯¹«¿¡ °ü°è¾øÀÌ ºóÁî ³»ºÎÀÇ Æ®·£Àè¼ÇÀº

Áö¿øµÇÁö ¾Ê´Â´Ù

¸¸¾à Ŭ¶óÀÌ¾ðÆ®°¡ Æ®·£Àè¼Ç »óÅ¿¡¼­ È£ÃâÇÑ´Ù¸é ÄÁÅ×À̳ʴ ºó¿¡´ëÇÑ

¸Þ¼Òµå È£ÃâÀ» À§ÀÓÇϱâ ÀÌÀü¿¡ ÇöÀç ¾²·¹µå¿Í ÇÔ²² Æ®·£Àè¼ÇÀ» suspend

Çϰí, ºó ¸Þ¼ÒµåÀÇ ½ÇÇàÀÌ ¿Ï·áÇϸé resume ÇÑ´Ù.

Ŭ¶óÀ̾ðÆ®ÀÇ suspendµÈ transaction context ´Â enterprise Bean

object ·ÎºÎÅÍ È£ÃâµÇ´Â ´Ù¸¥ enterprise Bean object ¶Ç´Â resource

¿¡°Ô·Î Àü´ÞµÇÁö ¾Ê´Â´Ù.

2) TX_BEAN_MANAGED

ºó ³»ºÎ¿¡¼­ javax.jts.UserTransaction interface ¸¦ ÀÌ¿ëÇØ Æ®·£Àè¼ÇÀ»

Á¶ÀýÇÒ ¼ö ÀÖ´Ù.

3) TX_REQUIRED

Ŭ¶óÀÌ¾ðÆ®°¡ Æ®·£Àè¼Ç ÇÏ¿¡¼­ ¸Þ¼Òµå¸¦ È£ÃâÇϸé ÄÁÅ×À̳ʴ Ŭ¶óÀ̾ðÆ®ÀÇ

transaction context¿Í ÇÔ²² ºóÀÇ ¸Þ¼Òµå¸¦ È£ÃâÇϰí,

Ŭ¶óÀÌ¾ðÆ®°¡ Æ®·£Àè¼Ç »óÅ¿¡ ÀÖÁö ¾ÊÀ¸¸é ÄÁÅ×À̳ʴ ÀÚµ¿ÀûÀ¸·Î »õ·Î¿î

Æ®·£Àè¼ÇÀ» ½ÃÀÛÇÏ°í ºóÀ» È£ÃâÇÏ¸ç ¸Þ¼Òµå È£ÃâÀÌ ¿Ï·áµÇ°í °á°ú°¡ Ŭ¶óÀÌ

¾ðÆ® ¿¡ º¸³»¾îÁö±â ÀÌÀü¿¡ commit ¸¦ ½ÃµµÇÑ´Ù.

transaction context ´Â enterprise Bean object·ÎºÎÅÍ È£ÃâµÇ´Â ´Ù¸¥

enterprise Bean object ¶Ç´Â resource ¿¡°Ô·Î Àü´ÞµÈ´Ù.

4) TX_SUPPORTS

Ŭ¶óÀÌ¾ðÆ®°¡ Æ®·£Àè¼Ç »óÅ¿¡ ÀÖÁö ¾Ê´Ù¸é ºóÁî¶ÇÇÑ »õ·Î¿î Æ®·£Àè¼ÇÀÇ

½ÃÀÛ¾øÀÌ È£ÃâµÈ´Ù.

¸¸¾à Á¸ÀçÇÑ´Ù¸é transaction context ´Â enterprise Bean object·ÎºÎÅÍ

È£ÃâµÇ´Â ´Ù¸¥ enterprise Bean object ¶Ç´Â resource ¿¡°Ô·Î Àü´ÞµÈ´Ù.

5) TX_REQUIRES_NEW

ºóÀÌ È£ÃâµÉ¶§¸¶´Ù »õ·Î¿î Æ®·£Àè¼ÇÀ» ½ÃÀÛ½ÃŲ´Ù.

Ŭ¶óÀÌ¾ðÆ®°¡ Ʋ·£Àè¼Ç »óÅ¿¡¼­ ºóÀ» È£ÃâÇÑ´Ù¸é »õ·Î¿î Æ®·£Àè¼ÇÀÌ ½ÃÀÛµÇ

±âÀü ¿¡ suspend µÇ°í »õ·Î¿î Æ®·£Àè¼ÇÀÌ Á¾·áµÈÈÄ resume µÈ´Ù.

New transaction context ´Â enterprise Bean object·ÎºÎÅÍ È£ÃâµÇ´Â ´Ù¸¥

enterprise Bean object ¶Ç´Â resource ¿¡°Ô·Î Àü´ÞµÈ´Ù.

¡¡

6) TX_MANDATORY

Ŭ¶óÀÌ¾ðÆ®´Â ¹Ýµå½Ã Æ®·£Àè¼Ç »óÅ¿¡¼­ ºóÀ» È£ÃâÇØ¾ß ÇÑ´Ù.

¸¸¾à Ŭ¶óÀÌ¾ðÆ®°¡ Æ®·£Àè¼Ç»óŰ¡ ¾Æ´Ï¶ó¸é ÄÁÅ×À̳ʴ Ŭ¶óÀÌ¾ðÆ®¿¡°Ô

TransactionRequired exception À» ´øÁú °ÍÀÌ´Ù.

transaction context ´Â enterprise Bean object·ÎºÎÅÍ È£ÃâµÇ´Â ´Ù¸¥

enterprise Bean object ¶Ç´Â resource ¿¡°Ô·Î Àü´ÞµÈ´Ù

¡¡

6. ±â Ÿ

6.1 JAVA IDL

java IDL ÀÌ ±âÃÊ·Î ÇϰíÀÖ´Â ³»¿ëÀº ´ÙÀ½°ú °°´Ù

- IDL to Java Mapping : IDLÀÇ °¢¿ä¼Ò¸¦ ÀÚ¹Ù ¾ð¾î ¿ä¼Ò¿¡ ¸ÅÇÎÇÑ´Ù.

- idltojava ÄÄÆÄÀÏ·¯ : IDL Á¤ÀǷκÎÅÍ ½ºÅÓ°ú ½ºÄÌ·¹Åæ ÆÄÀÏÀ» Á¦°øÇÑ´Ù.

- IIOP¸¦ Áö¿øÇÏ´Â ÀÚ¹Ù ORB : ½ºÅÓ°ú ½ºÄÌ·¹Åæ°£ÀÇ Åë½Å°ú OAÀÇ Åõ¸íÇÑ

»ý¼ºÀ» Áö¿øÇÑ´Ù. ±×¸®°í ´Ù¾çÇÑ ORB »çÀÌ

ÀÇ Åë½ÅÀ» Áö¿øÇÑ´Ù

- ÀϽÃÀûÀÎ °´Ã¼ ³×ÀÓ ¼­¹ö(Tnameserv) : °èÃþÀûÀÎ °´Ã¼ °ø°£À¸·ÎºÎÅÍ

¿ø°Ý °´Ã¼¿¡ ´ëÇÑ ÂüÁ¶¸¦ ±¸ÇÒ ¼ö

ÀÖ°Ô ÇØÁØ´Ù.

- API ÆÐŰÁöÀÇ org.omg.CORBA¿Í org.omg.CosNaming ÆÐ¹Ð¸® :

CORBA ¿Í ÀÚ¹Ù°´Ã¼¸¦ ÅëÇÕÇϱâ À§ÇØ ÇÊ¿äÇÑ ÀÚ¹Ù API Ŭ·¡½º¿Í

ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù.

Object Times ¿¡ ½Ç¸° ±ÛÀ» º¸¸é "Java + Corba = Java IDL" ¶ó´Â ¹®±¸°¡

ÀÖ´Ù.

Áï java IDL Àº ¼ø¼ö ÀÚ¹Ù ¼Ö·ç¼Ç¸¸À¸·Î ÄÚ¹Ù ÇÁ·Î±×·¡¹ÖÀ» °¡´ÉÇÏ°Ô ÇØÁØ

´Ù.

´ÙÀ½±ÛÀº Object TimesÀÇ ±â»ç¸¦ ¹ßÃéÇß´Ù.

Sun»ç¿¡¼­ Java2 Ç÷§ÆûÀÌ ¹ßÇ¥µÇ¸é¼­ »õ·Ó°Ô µîÀåÇÑ Æ¯Â¡ °¡¿îµ¥ Çϳª

´Â Java ¾ð¾î¿Í ºÐ»ê Ç¥ÁØ ¾ÆÅ°ÅØÃÄÀÎ CORBA¿ÍÀÇ »óÈ£ ¿¬µ¿À» Áö¿øÇÏ´Â

¡°Java IDL¡± À̶ó°í º¼ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¡¸ÓµéÀÌ Æ¯Á¤ ¾ð¾î·Î °³¹ßÇÑ ¸ðµâ

ÀÌ ¼­·Î ´Ù¸¥ Ç÷§ÆûÀ̳ª ¼­·Î ´Ù¸¥ ¾ð¾î·Î °³¹ßµÈ ´Ù¸¥ ¸ðµâ°ú »óÈ£ ¿¬µ¿

ÀÌ ÀÌ·ç¾îÁø´Ù¸é °³¹ßµÈ ÇÁ·Î±×·¥ÀÌ ÈξÀ ¾ÈÁ¤ÀûÀÌ°Ô µÉ °ÍÀÌ´Ù. »õ·Ó°Ô

µîÀåÇÑ Java IDLÀÌ ¹Ù·Î ÀÌ·¯ÇÑ ºÎºÐÀ» ÇØ°áÇØ ÁØ´Ù. º» ±â»ç¿¡¼­´Â Java

2 Ç÷§ÆûÀÇ ÀϺκÐÀ¸·Î Á¦°øµÇ´Â Java IDL¿¡ ´ëÇÑ °³¿ä¿Í CORBA¿Í ¾î

¶»°Ô ¿¬µ¿ÇÒ ¼ö ÀÖ´ÂÁö¿¡ ´ëÇØ »ìÆìº¸°íÀÚ ÇÑ´Ù.

1) Java IDLÀÇ Á¤Ã¼

Java IDLÀº JDK 1.2¶ó°í ¾Ë·ÁÁø Java 2 Ç÷§ÆûÀÇ ÇÑ ºÎºÐÀÌ´Ù. ÀÌ Java

IDLÀº IDL ½ºÆå(Specification)À» Java ÀÎÅÍÆäÀ̽º·Î ÄÄÆÄÀÏÇØ¼­ Java ¾ð

¾î·Î ÀÛ¼ºµÈ ÇÁ·Î±×·¥µéÀÌ CORBA¸¦ ±¸ÇöÇÑ ¸ðµç ORB¿Í ¿¬µ¿ÇÒ ¼ö

ÀÖµµ·Ï ÇÑ´Ù. Áï, Java IDLÀº IDL ÄÄÆÄÀÏ·¯¿Í ORB¸¦ Æ÷ÇÔÇÏ´Â °ÍÀ̶ó°í

»ý°¢ÇÏ¸é µÈ´Ù. Java ¾ÖÇø®ÄÉÀ̼ǰú Java ¾ÖÇø´µéÀÌ ¾î¶°ÇÑ ORB¿Íµµ

»óÈ£ ¿¬µ¿ÀÌ °¡´ÉÇϸç ORB·Î ¿¬°áµÈ ¸ðµç ½Ã½ºÅÛ°úµµ ¿¬µ¿ÀÌ °¡´ÉÇϰÔ

µÈ´Ù. µû¶ó¼­, ÀÌÁ¦´Â ¾ÖÇø´µµ ORB¸¦ ÅëÇØ ±¸Çö ¾ð¾î¿¡ »ó°ü¾øÀÌ ±âÁ¸

ÀÇ Legacy ½Ã½ºÅÛ°ú »óÈ£ ¿¬µ¿ÀÌ °¡´ÉÇÏ°Ô µÈ´Ù.

2) Java ORB

Java IDL¿¡´Â IIOP ¸¦ ÀÌ¿ëÇÑ ºÐ»ê ÄÄÇ»ÆÃÀ» À§ÇÑ Java ORB°¡ Æ÷ÇÔµÇ

¾î ÀÖ°í, ´Ù¸¥ ORB¿Í Java °´Ã¼µéÀ» ¿¬µ¿½Ã۱â À§ÇÑ Stub°ú Server

Ŭ·¡½ºµéÀÌ Æ÷ÇԵǾî ÀÖ´Ù. Java ORB´Â CORBA/IIOP 2.0 ½ºÆåÀ» ±â¹ÝÀ¸

·Î ÇÑ ORBÀÌ´Ù. ±×·¯³ª, ÇöÀç ¹öÀü¿¡¼­´Â ´ÜÁö COSNaming ¼­ºñ½º¸¸

Áö¿øµÇ°í ÀϽÃÀû(Transient)ÀÎ CORBA °´Ã¼µé¸¸ Áö¿øÇÑ´Ù. µû¶ó¼­ Java

ORB »óÀÇ °´Ã¼µéÀº ¼­¹öÀÇ ÇÁ·Î¼¼½º°¡ »ì¾Æ ÀÖÀ» µ¿¾È¿¡¸¸ °´Ã¼µéÀÌ

Á¸ÀçÇÏ°Ô µÈ´Ù. Áï, ¼­¹ö ÇÁ·Î¼¼½º°¡ ³¡³ª¸é °´Ã¼µéµµ ¼Ò¸êµÇ°Ô µÈ´Ù.

3) Java Name ¼­¹ö

Java IDLÀº °´Ã¼µéÀ» Æ®¸® µð·ºÅ丮 ±¸Á¶¿¡ ÀúÀåÇϱâ À§ÇØ transientÇÑ

name ¼­¹ö¸¦ Á¦°øÇϰí ÀÖ´Ù. ÀÌ name ¼­¹ö´Â CORBAÀÇ Common

Object Services ½ºÆå¿¡ ÀÖ´Â Naming Service ½ºÆåÀ» ±¸ÇöÇÑ °ÍÀÌ´Ù.

Java IDL¿¡¼­ ÀÌ name ¼­¹ö¸¦ ±¸µ¿½Ã۱â À§Çؼ­´Â µµ½º âÀÇ Ä¿¸Çµå

¶óÀÎ(¸í·É¾î ¶óÀÎ) »ó¿¡¼­ ¡°tnameserv¡± ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ¾ß ÇÑ´Ù.

¿¹) c:\>tnameserv -ORBInitialPort 1234

ORBInitialPort ´ÙÀ½¿¡ »ç¿ëµÈ ¹øÈ£(1234)´Â name ¼­¹ö¿Í ¿¬°áÇϱâ À§ÇÑ

Æ÷Æ® ¹øÈ£¿¡ ÇØ´çÇÑ´Ù. µðÆúÆ®·Î tnameserv´Â 900Æ÷Æ®¿¡¼­ ½ÇÇàµÈ´Ù.

±×·¯³ª ÀϹÝÀûÀ¸·Î 1024ÀÌÇÏÀÇ Æ÷Æ® ¹øÈ£µéÀº ½Ã½ºÅÛ ¼­ºñ½º ¿ëÀ¸·Î ¿ë

µµ°¡ Á¦ÇѵǾú±â ¶§¹®¿¡ 1024 ÀÌÇÏÀÇ Æ÷Æ®¹øÈ£´Â »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ

¹Ù¶÷Á÷ÇÏ´Ù.

Name ¼­¹ö´Â Æ®¸® ±¸Á¶¿¡ À̸§¿¡ ±â¹ÝÀ¸·Î °´Ã¼ ·¹ÆÛ·±½ºµéÀ» ÀúÀåÇÑ

´Ù. Ŭ¶óÀÌ¾ðÆ®´Â À̸§À» °¡Áö°í °´Ã¼ ·¹ÆÛ·±½º¸¦ ã´Â´Ù. Name ¼­¹ö´Â

transientÇÑ ¼­¹öÀ̱⠶§¹®¿¡, Àüü µð·ºÅ丮 ±¸Á¶´Â tnameserv°¡ ½Ç

ÇàÀ» ¸ØÃß¸é »ó½ÇÇÏ°Ô µÈ´Ù.

4) JavaIDL ORB¸¦ ÀÌ¿ëÇÑ ºÐ»ê ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß °úÁ¤

ÀÌÁ¦ JavaIDL ORB¸¦ ÀÌ¿ëÇÏ¿© ºÐ»ê ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â °úÁ¤À»

»ìÆìº¸ÀÚ. Àüü °³¹ß °úÁ¤À» ¿ä¾àÇÏ¸é ´ÙÀ½°ú °°Àº ¼ø¼­·Î ÁøÇàµÈ´Ù.

- IDL ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇÑ´Ù.

- Á¤ÀÇµÈ idl ½ºÆå¿¡ ´ëÇØ ¡°idltojava¡± ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇÏ¿© ÄÄÆÄÀÏÇÑ´Ù.

- ¼­¹ö Ŭ·¡½º(ÇÁ·Î±×·¥)¸¦ ±¸ÇöÇÑ´Ù.

- Ŭ¶óÀÌ¾ðÆ® Å¬·¡½º(ÇÁ·Î±×·¥)¸¦ ±¸ÇöÇÑ´Ù.

- Name ¼­¹ö/orb¸¦ ÃʱâÈ­ ÇÑ´Ù.

- ¼­¹ö¸¦ ½ÇÇàÇÑ´Ù.

- Ŭ¶óÀÌ¾ðÆ®¸¦ ½ÇÇàÇÑ´Ù.

6.2 RMI_OVER_IIOP

RMI_OVER_IIOP ´Â RMI ÀÌ´Ù.

Â÷ÀÌÁ¡Àº java.rmi ÆÐŰÁö¿¡ ÀÖ´Â RMI´Â JRMP ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇϴµ¥

¹ÝÇØ RMI_OVER_IIOP´Â javax.rmi ÆÐŰÁö³»¿¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç IIOP ÇÁ·Î

ÅäÄݻ󿡼­ À籸ÇöµÇ¾ú´Ù.

RMI_OVER_IIOP ´Â Sun ÀÇ ÄÚ¹Ù¸¦ À§ÇÑ ¶Ç´Ù¸¥ ³ë·ÂÀÌ´Ù.

RMI´Â ´Ù¸¥¾ð¾î¿ÍÀÇ À̽ļºÀÌ ºÎÁ·ÇÏ´Ù

¿Ö³ÄÇÏ¸é ºñÇ¥ÁØ Åë½Å ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇϱ⠶§¹®¿¡ Corba °´Ã¼¿Í Åë½ÅÇÒ

¼ö ¾ø´Ù.

RMI_OVER_IIOP ÀÇ ¸ñÀûÀº ±âÁ¸ÀÇ RMI ¿Í µ¿ÀÏÇѹæ½ÄÀ¸·Î °£ÆíÇÑ ÇÁ·Î±×

·¡¹ÖÀ» Á¦°øÇϸ鼭 CORBA °´Ã¼¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°Ô ÇÏ´Â °ÍÀÌ´Ù.

ÇöÀç RMI_OVER_IIOP ´Â º£Å¸¹öÀü±îÁö ¸±¸®Áî µÇ ÀÖÀ¸¸ç

IIOP ¸¦ À§ÇÑ ½ºÅÓÀ» »ý¼ºÇÏ´Â »õ·Î¿î RMIC ÄÄÆÄÀÏ·¯¿Í Call By value¸¦

Áö¿øÇÏ´Â »õ·Î¿î idlj ÄÄÆÄÀÏ·¯¸¦ °¡Áö°í ÀÖ´Ù.

ÀÌÁ¦ RMI_OVER_IIOPÀÇ »õ·Î¿î ¸éÀ» ¾Ë¾Æº¸ÀÚ

1) ¸¸ÀÏ ³×ÀÓ ¼­ºñ½º¸¦ À§ÇØ RMI registry ¸¦ »ç¿ëÇÑ´Ù¸é CosNaming Ç÷¯±×

Àΰú ÇÔ²² JNDI ¸¦ »ç¿ëÇ϶ó

- Ŭ¶óÀÌ¾ðÆ® / ¼­¹ö Äڵ忡 ´ÙÀ½°ú °°ÀÌ º¯°æÇ϶ó

import javax.naming.*;

Context initialContext = new InitialContext();

- ±âÁ¸ÀÇ RMI registry ÀÇ lookup(), bind() ¸Þ¼Òµå¸¦ »ç¿ëÇÏÁö ¸¶¶ó

RMI_OVER_IIOP¿¡¼­´Â JNDI ÀÇ lookup()°ú bind() ¸¦ »ç¿ëÇ϶ó

Áï, ¾Æ·¡¿Í °°Àº ÄÚµå ´ë½Å¿¡...

import java.rmi.*;

Naming.rebind("MyObject", myobj);

´ÙÀ½°ú °°Àº Äڵ带 »ç¿ëÇ϶ó

import javax.naming.*;

initialNamingContext.rebind("MyObject", myobj);

- ¸¸ÀÏ Å¬¶óÀÌ¾ðÆ®°¡ ¾ÖÇø´À̶ó¸é JNDI ÀÇ CosNaming Ç÷¯±×Àο¡ this

¸¦ Àü´ÞÇ϶ó

import java.util.*;

import javax.naming.*;

Hashtable env = new Hashtable();

env.put("java.naming.applet", this);

Context ic = new InitialContext(env);

2) ¸¸¾à RMI registry ¸¦ ³×ÀÓ ¼­ºñ½º·Î »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é Ãʱ⠸®¸ðÆ®

°´Ã¼ÀÇ ·¹ÆÛ·±½º¸¦ bootstrapping ÇϱâÀ§ÇÑ ¿©·¯°¡Áö ¹æ¹ýÀ» »ç¿ëÇÒ

¼ö ÀÖ´Ù.

¿¹¸¦ µé¾î ¼­¹ö ÄÚµå´Â RMI °´Ã¼ ÂüÁ¶¸¦ ObjectOutputStreamÀ¸·Î

¾²°í Ŭ¶óÀÌ¾ðÆ® Äڵ忡 º¸³½ÈÄ ´Ù½Ã ¿ªÁ÷·ÄÈ­ÇÏ´Â Java Serialization

À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¼­¹öÃø¿¡¼­´Â ½ºÅÓÀ» ¾ò±â À§ÇØ PortableRemoteObject.toStub() À»

È£ÃâÇÒ¼ö ÀÖ°í, ±×·±´ÙÀ½ weiteObject() ¸¦ ÀÌ¿ëÇØ ½ºÅÓÀ» Á÷·ÄÈ­

ÇÑ´Ù.

±×·± ÄÚµå´Â ´ÙÀ½°ú °°Àº ¸ð½ÀÀÏ °ÍÀÌ´Ù.

org.omg.CORBA.ORB myORB = org.omg.CORBA.ORB.init(new String[0], null);

Wombat myWombat = new WombatImpl();

javax.rmi.CORBA.Util.write_RemoteObject(myORB.create_output_stream(),

myWombat);

// myWombat Àº ÀÌÁ¦ myORB ¿¡ ¿¬°áµÇ¾ú´Ù

// °°Àº ORB ³»ÀÇ ´Ù¸¥ °´Ã¼¿¡ ¿¬°áÇϱâ À§Çؼ­´Â

// PortableRemoteObject.connect(nextWombat, myWombat);

// ¸¦ »ç¿ëÇ϶ó

FileOutputStream myFile = new FileOutputStream("t.tmp");

ObjectOutputStream myStream = new ObjectOutputStream(myFile);

myStream.writeObject(PortableRemoteObject.toStub(myWombat));

¡¡

Ŭ¶óÀÌ¾ðÆ® Ãø¿¡¼­´Â ¿ªÁ÷·ÄÈ­¸¦ À§ÇØ readObject() ¸¦ »ç¿ëÇÑ´Ù.

FileInputStream myFile = new FileInputStream("t.tmp");

ObjectInputStream myStream = new ObjectInputStream(myFile);

Wombat myWombat = (Wombat)myStream.readObject();

org.omg.CORBA.ORB myORB = org.omg.CORBA.ORB.init(new String[0], null);

((javax.rmi.CORBA.Stub)myWombat).connect(myORB);

// myWombat Àº ÀÌÁ¦ myORB ¿¡ ¿¬°áµÇ¾ú´Ù

// °°Àº ORB ³»ÀÇ ´Ù¸¥ °´Ã¼¿¡ ¿¬°áÇϱâ À§Çؼ­´Â

// PortableRemoteObject.connect(nextWombat, myWombat);

// ¸¦ »ç¿ëÇ϶ó

3) CosNaming ¼­¹ö¸¦ ½ÃÀÛÇϱâ À§ÇØ "tnameserv"¸¦ »ç¿ëÇ϶ó

µðÆúÆ® Æ÷Æ® 900¹øÀ» ¹Ù²Ù±â À§Çؼ­´Â "tnameserv -ORBInitialPort 1050"

°ú °°ÀÌ »ç¿ëÇ϶ó

4) Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö¸¦ ½ÇÇàÇϱâ ÀÌÀü¿¡ ´ÙÀ½°ú °°Àº ¿É¼ÇÀ» Á־ ½ÃÀÛ

Ç϶ó.

java -Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory

-Djava.naming.provider.url=iiop://<hostname>:900 <appl_class>

¸¸¾à Ŭ¶óÀÌ¾ðÆ®°¡ ¾ÖÇø´À̶ó¸é ´ÙÀ½°ú°°Àº applet tag ¸¦ »ç¿ëÇ϶ó

java.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory

java.naming.provider.url=iiop://<hostname>:900