Enterprise Java Technologies Tech Tip¿¡ ¿À½Å ¿©·¯ºÐÀ» ȯ¿µÇÕ´Ï´Ù
Enterprise Java Technologies
Å×Å©ÆÁ
2006³â 5¿ù 4ÀÏÀÚ
  À̹ø È£¿¡¼­´Â,

» EJB 3.0À» ÀÌ¿ëÇÏ¿© À¥ ¼­ºñ½º °³¹ßÇϱâ
» Ä¿½ºÅÒ ºóÀ» ÀÌ¿ëÇÏ¿© GlassFish °ü¸® ½Ã½ºÅÛ È®ÀåÇϱâ

¿¡ ´ëÇØ ´Ù·ì´Ï´Ù.

ÀÌ ÆÁµéÀº Java EE 5ÀÇ ¿ÀǼҽº ±¸Çö(GlassFish)À» ÀÌ¿ëÇÏ¿© °³¹ßµÇ¾úÀ¸¸ç, GlassFish ÇÁ·ÎÁ§Æ® ÆäÀÌÁö¿¡¼­ GlassFish¸¦ ´Ù¿î·Îµå ¹ÞÀ¸½Ç ¼ö ÀÖ½À´Ï´Ù.

-»ùÇà ¾ÆÄ«ÀÌºê ´Ù¿î·Îµå ¹Þ±â-
EJB 3.0À» ÀÌ¿ëÇÏ¿© À¥ ¼­ºñ½º °³¹ßÇϱâ
Ä¿½ºÅÒ ºóÀ» ÀÌ¿ëÇÏ¿© GlassFish °ü¸® ½Ã½ºÅÛ È®ÀåÇϱâ
PDF ÆÄÀϹޱ⠠  

EJB 3.0À» ÀÌ¿ëÇÏ¿© À¥ ¼­ºñ½º °³¹ßÇϱâ
 

ÀúÀÚ Manisha Umbarje

Java EE, JSR 109¸¦ À§ÇÑ À¥ ¼­ºñ½º ¸í¼¼¿¡¼­´Â À¥ ¼­ºñ½º¸¦ ±¸ÇöÇÏ´Â µÎ °¡Áö ¹æ¹ýÀ» Á¤ÀÇÇÑ´Ù. ±× Áß ÇÑ °¡Áö ¹æ¹ýÀº Àڹ٠Ŭ·¡½º ÇÁ·Î±×·¡¹Ö ¸ðµ¨¿¡ ±âÃÊÇÑ °ÍÀ¸·Î, À¥ ¼­ºñ½º°¡ À¥ ÄÁÅ×À̳ʿ¡¼­ ½ÇÇàµÇ´Â Àڹ٠Ŭ·¡½º¿¡ ÀÇÇØ ±¸ÇöµÈ´Ù. ¶Ç ´Ù¸¥ ¹æ¹ýÀº EJB(Enterprise JavaBeans) ÇÁ·Î±×·¡¹Ö ¸ðµ¨¿¡ ±âÃÊÇÑ °ÍÀ¸·Î, À¥ ¼­ºñ½º°¡ EJB ÄÁÅ×À̳ʿ¡¼­ ½ÇÇàµÇ´Â stateless ¼¼¼Ç ºóÀ¸·Î ±¸ÇöµÈ´Ù. ÀÌÀüÀÇ Å×Å© ÆÁ JAX-WS¸¦ ÀÌ¿ëÇÑ À¥ ¼­ºñ½º °³¹ß¿¡¼­´Â Àڹ٠Ŭ·¡½º ÇÁ·Î±×·¡¹Ö ¸ðµ¨°ú JAX-WS(Java API for XML Web Services) 2.0, JSR 224¸¦ ÀÌ¿ëÇÏ¿© À¥ ¼­ºñ½º¸¦ °³¹ßÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Ù. À̹ø ÆÁ¿¡¼­´Â JAX-WS¿Í EJB ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» ÀÌ¿ëÇÏ¿© À¥ ¼­ºñ½º¸¦ °³¹ßÇÏ´Â ¹æ¹ýÀ» ¹è¿ì°Ô µÉ °ÍÀε¥, ƯÈ÷ EJB 3.0 stateless ¼¼¼Ç ºóÀ» ÀÌ¿ëÇÏ¿© Calculator ¼­ºñ½º(ÀÌÀü Å×Å© ÆÁ¿¡¼­ ´Ù·é °Í°ú µ¿ÀÏÇÑ Calculator ¼­ºñ½º)¸¦ ±¸ÇöÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ÀÚ¼¼È÷ »ìÆìº¸µµ·Ï ÇÏÀÚ.

º» ÆÁ¿¡´Â ¿¹Á¦ ÆÐŰÁö°¡ Æ÷ÇԵǾî ÀÖ°í, ÀÌ ¿¹Á¦¿¡´Â EJB 3.0 ±â¹ÝÀÇ Calculator ¼­ºñ½º¿¡ ¾×¼¼½ºÇÏ´Â µ¶¸³Çü Àڹ٠Ŭ¶óÀÌ¾ðÆ®°¡ ¼³¸íµÇ¾î ÀÖ´Ù. ¶ÇÇÑ ¿©±â¿¡´Â GlassFish¶ó°í ºÒ¸®´Â Java EE 5ÀÇ ¿ÀÇ ¼Ò½º ·¹ÆÛ·±½º ±¸ÇöÀÌ »ç¿ëµÇ¾ú´Ù. GlassFish´Â GlassFish Ä¿¹Â´ÏƼ ´Ù¿î·Îµå ÆäÀÌÁö¿¡¼­ ´Ù¿î·ÎµåÇÒ ¼ö ÀÖ´Ù.

EJB 3.0 Stateless ¼¼¼Ç ºó Ŭ·¡½º ÀÛ¼ºÇϱâ

¿ì¼± ¼­ºñ½º¸¦ À§ÇÑ stateless ¼¼¼Ç ºóÀ» ÀÛ¼ºÇÏ´Â °ÍºÎÅÍ ½ÃÀÛÇØº¸ÀÚ. Java EE 5 Ç÷§Æû¿¡¼­ Å©°Ô °³¼±µÈ ³»¿ë Áß Çϳª·Î ´ëÆø ´Ü¼øÇØÁø EJB ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» µé ¼ö Àִµ¥, ÀÌ´Â Enterprise JavaBeans 3.0 Specification, JSR-220¿¡ Á¤ÀǵǾî ÀÖ´Ù. ´Ü¼øÈ­µÈ ±â´É Áß ÇÑ °¡Áö¸¦ ¿¹·Î µé¸é, ºó ±¸Çö Ŭ·¡½º°¡ ´õ ÀÌ»ó javax.ejb.SessionBean ¶Ç´Â javax.ejb.EntityBean ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϵµ·Ï ¿ä±¸ÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. ´Ü¼øÈ÷ Ŭ·¡½º¿¡ ÁÖ¼®À» ´Þ±â¸¸ Çϸé Ŭ·¡½º¸¦ ¼¼¼Ç ºóÀ̳ª ¿£Æ¼Æ¼ ºóÀ¸·Î ¼±¾ðÇÒ ¼ö Àִµ¥, ½Ç·Ê·Î Ŭ·¡½º¿¡ @Stateless ÁÖ¼®À» ´Þ¸é Ŭ·¡½º¸¦ stateless ¼¼¼Ç ºóÀ¸·Î ¼±¾ðÇÒ ¼ö ÀÖ´Ù.

EJB 3.0Àº ´ÙÀ½°ú °°ÀÌ ºó ±¸Çö Ŭ·¡½º¸¦ À§ÇÑ Ãß°¡ ±ÔÄ¢À» ¸í½ÃÇÑ´Ù.

  • Ŭ·¡½º´Â ¹Ýµå½Ã publicÀ¸·Î ¼±¾ðµÇ¾î¾ß ÇÏ¸ç ¾î¶² ÀÎÀÚµµ ¹ÞÁö ¾Ê´Â ±âº»°ª »ý¼ºÀÚ(constructor)¸¦ °¡Á®¾ß ÇÑ´Ù.

  • Ŭ·¡½º´Â Àý´ë·Î final ¶Ç´Â abstract¿©¼­´Â ¾È µÇ¸ç ¹Ýµå½Ã Åé ·¹º§ Ŭ·¡½º¿©¾ß ÇÑ´Ù.

  • Ŭ·¡½º´Â finalize() ¸Þ¼Òµå¸¦ Á¤ÀÇÇØ¼­´Â ¾È µÈ´Ù.

EJB 3.0¿¡¼­ ´Ü¼øÈ­µÈ ¶Ç ÇÑ °¡Áö ³»¿ëÀº ¼¼¼Ç ºóÀ» À§ÇÑ ÄÄÆ÷³ÍÆ® ÀÎÅÍÆäÀ̽º ¶Ç´Â Ȩ ÀÎÅÍÆäÀ̽º°¡ ´õ ÀÌ»ó ¿ä±¸µÇÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. ¼¼¼Ç ºóÀÌ ÇÊ¿ä·Î ÇÏ´Â ÇÑ °¡Áö ÀÎÅÍÆäÀ̽º´Â ºóÀÇ ºñÁî´Ï½º ¸Þ¼Òµå¸¦ Á¤ÀÇÇÏ´Â ºñÁî´Ï½º ÀÎÅÍÆäÀ̽ºÀÌ´Ù. ºñÁî´Ï½º ÀÎÅÍÆäÀ̽ºÀÇ ºñÁî´Ï½º ¸Þ¼Òµå´Â ÄÄÆ÷³ÍÆ® ÀÎÅÍÆäÀ̽ºÀÇ ºñÁî´Ï½º ¸Þ¼Òµå¿Í ´Þ¸® java.remote.RemoteExceptionÀ» throwÇÒ Çʿ䰡 ¾øÁö¸¸ ºñÁî´Ï½º ¸Þ¼Òµå´Â ÀÓÀÇÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç ¿¹¿Ü¿Í °ü·ÃÇÏ¿© throws ÀýÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ EJB 3.0 ºñÁî´Ï½º ¸Þ¼Òµå´Â static°ú finalÀÌ µÉ ¼ö ¾ø´Ù.

ÀÌ·¯ÇÑ ´Ü¼øÈ­¿Í ±ÔÄ¢À» ÀüÁ¦·Î ÇÏ¿©, EJB 3.0 ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» µû¸£´Â Calculator Ŭ·¡½ºÀÇ stateless ¼¼¼Ç ºó¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ(Calculator Ŭ·¡½ºÀÇ ¼Ò½º ÄÚµå´Â ¼³Ä¡µÈ ¿¹Á¦ ÆÐŰÁöÀÇ ¿£µåÆ÷ÀÎÆ® µð·ºÅ丮¿¡ µé¾î ÀÖÀ½).

   package endpoint;
  
   import javax.ejb.Stateless;
  
   @Stateless  
   public class Calculator {

      public Calculator() {}
      public int add(int i, int j) {
         int k = i +j ;
         System.out.println(i + "+" + j +" = " + k);
         return k;
      }
   }

EJB 3.0 ºóÀº javax.ejb.SessionBean ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÒ Çʿ䰡 ¾ø±â ¶§¹®¿¡ ´õ ÀÌ»ó ejbActivate³ª ejbPassivate¿Í °°Àº ºñ±¸Çö ¶óÀÌÇÁ»çÀÌŬ ¸Þ¼Òµå¸¦ Æ÷ÇÔ½Ãų Çʿ䰡 ¾ø´Ù. µû¶ó¼­ ÈξÀ ´Ü¼øÇÏ°í ¿Ïº®ÇÑ Å¬·¡½º°¡ »ý¼ºµÈ´Ù. EJB 3.0¿¡ Á¤ÀÇµÈ ´Ù¾çÇÑ ÁÖ¼®µéÀº ÄÄÆ÷³ÍÆ®¸¦ À§ÇÑ ¹èÄ¡ ±â¼úÀÚ ÀÛ¼ºÀÇ Çʿ伺À» ÁÙÀ̰ųª ¾ø¾ÖÁÜÀ¸·Î½á °³¹ßÀÚ ¹× ¹èÄ¡ÀÚÀÇ ºÎ´ãÀ» »ó´çÈ÷ ´ú¾îÁØ´Ù.

EJB 3.0 ºóÀ» À¥ ¼­ºñ½º·Î Ç¥½ÃÇϱâ

ºóÀ» À¥ ¼­ºñ½º·Î ¸¸µé·Á¸é °£´ÜÈ÷ Ŭ·¡½º¿¡ @WebService ÁÖ¼®À» ´Þ¸é µÈ´Ù. À̰ÍÀº javax.jws.WebService ÆÐŰÁö¿¡ Á¤ÀÇµÈ ÁÖ¼® ŸÀÔÀ¸·Î, Java Platform, JSR 181À» À§ÇÑ À¥ ¼­ºñ½º ¸ÞŸµ¥ÀÌÅÍ¿¡ ÁöÁ¤µÇ¾î ÀÖ´Ù. ´ÙÀ½Àº À¥ ¼­ºñ½º·Î Ç¥½ÃµÈ Calculator Ŭ·¡½º ÄÚµåÀÌ´Ù.

   package endpoint;
  
   import javax.ejb.Stateless;
   import javax.jws.WebService;

   @Stateless
   @WebService
   public class Calculator {

      public Calculator() {}
      public int add(int i, int j) {
         int k = i +j ;
         System.out.println(i + "+" + j +" = " + k);
         return k;
      }
   }

Àڹ٠Ŭ·¡½º¸¦ @WebService ÁÖ¼®À¸·Î Ç¥½ÃÇÏ¸é ¼­ºñ½º ±¸Çö Ŭ·¡½º°¡ µÈ´Ù. ´Ü, ¼­ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÒ Çʿ䰡 ¾ø´Ù´Â Á¡¿¡ À¯ÀÇÇÒ °Í. JSR 109¿¡ µû¸£¸é, javax.jws.WebService ÁÖ¼®ÀÌ Ã·ºÎµÈ ¼­ºñ½º ±¸Çö ºóÀ» Á¦°øÇϱ⸸ ÇÏ¸é µÈ´Ù. ±×·± ´ÙÀ½ ¹èÄ¡ ÅøÀ» ÀÌ¿ëÇØ¼­ ÀÚ¹Ù WSDL ¸ÅÇÎÀ» À§ÇÑ JAX-WS ±ÔÄ¢À» Àû¿ëÇÔÀ¸·Î½á ¼­ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º´Â ¹°·Ð, WSDL ¹®¼­±îÁö »ý¼ºÇÒ ¼ö ÀÖ´Ù.

À¥ ¼­ºñ½º ÆÐŰÁöÇϱâ

EJB ÇÁ·Î±×·¡¹Ö ¸ðµ¨¿¡ ±âÃÊÇÑ À¥ ¼­ºñ½º´Â JAR ÆÄÀÏ·Î ÆÐŰÁöµÇ¾î¾ß Çϴµ¥, Áï @WebService ÁÖ¼®À» ÀÌ¿ëÇÏ¿© ¼­ºñ½º ±¸Çö ºó Ŭ·¡½º(µ¶¸³ Ŭ·¡½º°¡ ÀÖÀ» °æ¿ì¿¡´Â ÀÌ¿Í ÇÔ²²)¿Í ¼­ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º Ŭ·¡½º(¸í½ÃÀûÀ¸·Î Á¦°øµÉ °æ¿ì)¸¦ ÆÐŰÁöÇϱ⸸ ÇÏ¸é µÈ´Ù. ÀÌ ¿Ü¿¡µµ, @Stateless ÁÖ¼®Àº ejb-jar.xmlÀ» ÆÐŰÁöÇØ¾ß ÇÏ´Â ¼ö°í¸¦ ´ú¾îÁֱ⵵ ÇÑ´Ù. ÀÌ¿Í ´ëÁ¶ÀûÀ¸·Î, EJB 2.0À̳ª ÀÌÀü ¹öÀü¿¡ ±âÃÊÇÑ À¥ ¼­ºñ½º¸¦ JAX-RPC ¹æ½ÄÀ¸·Î ÆÐŰÁöÇÏ´Â °æ¿ì¿¡´Â »ç¿ëÀÚ°¡ ¼­ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º Ŭ·¡½º, ¼­ºñ½º ±¸Çö ºó Ŭ·¡½º(¹× µ¶¸³ Ŭ·¡½º), »ý¼ºµÈ portable artifacts, JAX-RPC ¸ÅÇÎ ÆÄÀÏ, À¥ ¼­ºñ½º ¹èÄ¡ ±â¼úÀÚ(webservices.xml ¹× ejb-jar.xml) µîÀ» Á¦°øÇؾ߸¸ Çß´Ù.

JSR 224, JSR 109, JSR 181 ¹× JSR 220ÀÇ °æ¿ì, ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö ¹èÄ¡ ÅøÀ» ÀÌ¿ëÇÏ¿© À¥ ¼­ºñ½º ¹èÄ¡¸¦ À§ÇÑ ¹èÄ¡ ±â¼úÀÚ(»ç¿ëÀÚ°¡ ¸í½ÃÀûÀ¸·Î Á¦°øÇÏÁö ¾ÊÀº °æ¿ì)¸¦ ºñ·ÔÇÏ¿© ÇÊ¿äÇÑ ¸ðµç artifacts¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. EJB JAR ÆÄÀÏ¿¡ ¹øµé·Î Æ÷ÇÔµÈ ÀÌ artifacts´Â EJB ÄÁÅ×À̳ʿ¡ ¹èÄ¡µÈ´Ù. ¹èÄ¡ÀÚ´Â Àü¼úÇÑ artifacts¸¦ ¸í½ÃÀûÀ¸·Î Á¦°øÇÏ°í ¹èÄ¡ ½Ã À̸¦ EJB ¸ðµâ¿¡ ÆÐŰÁöÇÔÀ¸·Î½á @WebService¿Í @Stateless ÁÖ¼®¿¡ ÀÇÇØ ÁöÁ¤µÈ °ªµéÀ» ¿À¹ö¶óÀÌÆ®ÇÒ ¼ö ÀÖ´Ù. º» ÆÁÀÇ °æ¿ì¿¡´Â ´ÙÀ½ ÆÄÀϵéÀÌ ¹èÄ¡µÉ EJB ¸ðµâ¿¡ ÆÐŰÁöµÇ¾î ÀÖ´Ù.

  endpoint/Calculator.class
  endpoint/jaxws/Add.class
  endpoint/jaxws/AddResponse.class

³ª¸ÓÁö ¹èÄ¡ artifacts´Â ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö(ÀÌ °æ¿ì GlassFish)¿¡ ÀÇÇØ »ý¼ºµÈ´Ù.

Ŭ¶óÀÌ¾ðÆ® ÀÛ¼ºÇϱâ

À¥ ¼­ºñ½º¸¦ ¹èÄ¡ÇÑ ÈÄ¿¡´Â Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À¸·Î ¾×¼¼½º°¡ °¡´ÉÇѵ¥, Ŭ¶óÀÌ¾ðÆ®´Â @WebServiceRef ÁÖ¼®À» ÀÌ¿ëÇÏ¿© EJB 3.0 ±â¹ÝÀÇ À¥ ¼­ºñ½º¿¡ ·¹ÆÛ·±½º¸¦ ¼±¾ðÇÑ´Ù. @WebServiceRef ÁÖ¼®Àº javax.xml.ws ÆÐŰÁö¿¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç, Java Platform, JSR 181À» À§ÇÑ JAX-WS 2.0 À¥ ¼­ºñ½º ¸ÞŸµ¥ÀÌÅÍ¿¡ ÁöÁ¤µÇ¾î ÀÖ´Ù. º» ÆÁ¿¡ »ç¿ëµÈ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ JAXWSClientÀÇ ¼Ò½º Äڵ带 »ìÆìº¸¸é(JAXWSClientÀÇ ¼Ò½º ÄÚµå´Â ¼³Ä¡µÈ ¿¹Á¦ ÆÐŰÁöÀÇ client µð·ºÅ丮¿¡ µé¾î ÀÖÀ½), ´ÙÀ½°ú °°Àº ³»¿ëÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

   @WebServiceRef(wsdlLocation=
    "http://localhost:8080/CalculatorService/Calculator?WSDL")
   static endpoint.CalculatorService service;

@WebServiceRef ³»ÀÇ wsdlLocation ÆÄ¶ó¹ÌÅÍÀÇ °ªÀº ÀÏÁ¾ÀÇ URL·Î, ·¹ÆÛ·±½ºµÈ ¼­ºñ½ºÀÇ WSDL ÆÄÀÏÀÇ À§Ä¡¸¦ ³ªÅ¸³½´Ù. (@WebServiceRef ÁÖ¼®Àº ¿É¼ÇÀ¸·Î Á¦°øµÇ´Â Ãß°¡ ¼Ó¼ºÀ» Áö¿øÇϸç, ÀÌ ¿É¼Ç ¼Ó¼ºÀº JAX-WS 2.0 ½ºÆåÀÇ ¼½¼Ç 7.9¿¡ ÁöÁ¤µÇ¾î ÀÖ´Ù.) service·Î ¸í¸íµÈ Á¤Àû º¯¼ö´Â ¾ÖÇø®ÄÉÀÌ¼Ç Å¬¶óÀÌ¾ðÆ® ÄÁÅ×À̳ʿ¡ ÀÇÇØ ÀÎÁ§Æ®µÈ´Ù.

JAXWSClientÀÇ ¼Ò½º Äڵ带 Á»´õ »ìÆìº¸¸é ´ÙÀ½°ú °°Àº ³»¿ëÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

   endpoint.Calculator port = service.getCalculatorPort();

service ¿ÀºêÁ§Æ®´Â À¥ ¼­ºñ½ºÀÇ Calculator Æ÷Æ®¿¡ ¾×¼¼½ºÇϱâ À§ÇÑ getCalculatorPort ¸Þ¼Òµå¸¦ Á¦°øÇÑ´Ù. ´Ü, endpoint.CalculatorService¿Í endpoint.Calculator ¸ðµÎ wsimport À¯Æ¿¸®Æ¼¸¦ ÀÌ¿ëÇÏ¿© »ý¼ºµÇ´Â portable artifacts¶ó´Â Á¡¿¡ À¯ÀÇÇÒ °Í. wsimport À¯Æ¿¸®Æ¼´Â JAX-WS artifacts »ý¼º¿¡ »ç¿ëµÇ´Âµ¥, ¿¹Á¦ ÇÁ·Î±×·¥ ½ÇÇà ½Ã Å¬¶óÀÌ¾ðÆ® ±¸ÃàÀ» À§ÇØ È£ÃâµÈ´Ù.

Æ÷Æ®¸¦ ȹµæÇÑ ÈÄ¿¡´Â ¿ÀºêÁ§Æ® »ó¿¡¼­ ÀÚ¹Ù ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â °Íó·³ Æ÷Æ® »ó¿¡¼­ ºñÁî´Ï½º ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, JAXWSClientÀÇ ´ÙÀ½ ÇàÀº CalculatorÀÇ add ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù.

  int ret = port.add(i, 10);

¿¹Á¦ ÄÚµå ½ÇÇàÇϱâ

º» Å×Å©ÆÁ¿¡´Â ¿¹Á¦ ÆÐŰÁö°¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç, ¿¹Á¦ ÆÐŰÁö¿¡¼­´Â Å×Å©ÆÁ¿¡¼­ ´Ù·é ±â¹ýÀ» ¿¹½ÃÇÑ´Ù. ¿¹Á¦¸¦ ¼³Ä¡ÇÏ°í ½ÇÇàÇÏ·Á¸é ´ÙÀ½ÀÇ ÀÛ¾÷ ÀýÂ÷¸¦ µû¸£µµ·Ï ÇÑ´Ù.

  1. GlassFish¸¦ ¾ÆÁ÷ ±¸ÇÏÁö ¸øÇß´Ù¸é GlassFish Ä¿¹Â´ÏƼ ´Ù¿î·Îµå ÆäÀÌÁö¿¡¼­ ´Ù¿î·ÎµåÇÑ´Ù.

  2. ±×·± ´ÙÀ½ ¾Æ·¡ÀÇ È¯°æ º¯¼ö¸¦ ¼³Á¤ÇÑ´Ù.

    GLASSFISH_HOME: GlassFishÀÇ ¼³Ä¡ Àå¼Ò(°¡·É C:\Sun\AppServer)À» Ç¥½ÃÇØ¾ß ÇÑ´Ù.

    ANT_HOME: antÀÇ ¼³Ä¡ Àå¼Ò¸¦ Ç¥½ÃÇØ¾ß ÇÑ´Ù. ant´Â ´Ù¿î·ÎµåÇÑ GlassFish ¹øµé¿¡ Æ÷ÇԵǾî ÀÖ´Ù. (Windows¿¡¼­´Â lib\ant ¼­ºêµð·ºÅ丮¿¡ À§Ä¡ÇÔ)

    JAVA_HOME: »ç¿ëÀÚ ½Ã½ºÅÛ¿¡¼­ÀÇ JDK 5.0 À§Ä¡¸¦ Ç¥½ÃÇØ¾ß ÇÑ´Ù.

    ¾Æ¿ï·¯, ant À§Ä¡¸¦ °¢ÀÚÀÇ PATH ȯ°æ º¯¼ö¿¡ Ãß°¡ÇÑ´Ù.

  3. ÇØ´ç Å×Å©ÆÁÀÇ ¿¹Á¦ ÆÐŰÁö¸¦ ´Ù¿î·ÎµåÇÏ¿© ¾ÐÃàÀ» Ǭ´Ù. ÀÌ ¶§, »õ·Î ¾ÐÃàÀÌ Ç®¸° µð·ºÅ丮´Â <sample_install_dir>/ttmar2006ejb-ws·Î Ç¥½ÃµÇ¾î¾ß Çϴµ¥, ¿©±â¼­ <sample_install_dir>Àº ¿¹Á¦ ÆÐŰÁö°¡ ¼³Ä¡µÈ µð·ºÅ丮ÀÌ´Ù. ¿¹¸¦ µé¾î, WindowsÀÇ C:\¿¡ ¾ÐÃàÀ» ÇØÁ¦Çß´Ù¸é »õ·Î »ý¼ºµÈ µð·ºÅ丮´Â C:\ttmar2006ejb-ws°¡ µÇ¾î¾ß ÇÑ´Ù. ttmar2006ejb-ws ¾Æ·¡ÀÇ ejb-techtip µð·ºÅ丮¿¡´Â ¿¹Á¦¸¦ À§ÇÑ ¼Ò½º ÆÄÀϰú ±âŸ Áö¿ø ÆÄÀÏÀÌ Æ÷ÇԵǾî ÀÖ´Ù.

  4. ejb-techtip µð·ºÅ丮·Î À̵¿ÇÏ¿© build.properties ÆÄÀÏÀ» ÀûÀýÈ÷ ÆíÁýÇØ¾ß Çϴµ¥, ¿¹¸¦ µé¾î admin È£½ºÆ®°¡ ¿ø°ÝÀÎ °æ¿ì¿¡´Â admin.hostÀÇ ±âº»°ª(localhost)À» ÇØ´ç ¿ø°Ý È£½ºÆ®·Î º¯°æÇÏ¸é µÈ´Ù.

  5. ´ÙÀ½ ¸í·É¾î¸¦ ÀÔ·ÂÇÏ¿© GlassFish¸¦ ½ÃÀÛÇÑ´Ù.

    <GF_install_dir>/bin/asadmin start-domain domain1

    ÀÌ ¶§, <GF_install_dir>Àº GlassFish°¡ ¼³Ä¡µÈ µð·ºÅ丮¸¦ ³ªÅ¸³½´Ù.

  6. ejb-techtip µð·ºÅ丮¿¡¼­ ´ÙÀ½ ¸í·É¾î¸¦ ½ÇÇàÇÑ´Ù.

    ant build

    ºôµå µð·ºÅ丮°¡ »ý¼ºµÇ°í Ŭ·¡½º°¡ ÄÄÆÄÀÏµÈ ´ÙÀ½, ÄÄÆÄÀÏµÈ Å¬·¡½º°¡ ºôµå µð·ºÅ丮·Î µé¾î°£´Ù. ¶ÇÇÑ ¾ÆÄ«ÀÌºê µð·ºÅ丮¿Í JAR ÆÄÀÏÀÌ »ý¼ºµÇ°í, JAR ÆÄÀÏÀÌ ¾ÆÄ«ÀÌºê µð·ºÅ丮·Î µé¾î°£´Ù.

    ant deploy

    ÀÌ ¸í·É¾î´Â JAR ÆÄÀÏÀ» GlassFish »ó¿¡ ¹èÄ¡ÇÑ´Ù.

    ant build-client

    ÀÌ ¸í·É¾î´Â portable artifacts¸¦ »ý¼ºÇϰí Ŭ¶óÀÌ¾ðÆ® ¼Ò½º Äڵ带 ÄÄÆÄÀÏÇÑ´Ù.

    ant run

    ÀÌ ¸í·É¾î´Â ¾ÖÇø®ÄÉÀÌ¼Ç Å¬¶óÀÌ¾ðÆ®¸¦ ½ÇÇàÇϰí Calculator ¼­ºñ½º¿¡¼­ add ¿¬»êÀ» 10ȸ È£ÃâÇÏ¿© 0¿¡¼­ 9±îÁöÀÇ ¼ýÀÚ¿¡ 10À» Ãß°¡ÇÑ´Ù. ÀÌ ¶§, ´ÙÀ½°ú °°Àº ³»¿ëÀÌ Ç¥½ÃµÇ¾î¾ß ÇÑ´Ù.

    ½ÇÇà:

        [echo] Executing appclient with client class as 
        client.JAXWSClient
        [exec] Retrieving port from the service 
        endpoint.CalculatorService@159780d
        [exec] Invoking add operation on the calculator port
        [exec] Adding : 0 + 10 = 10
        [exec] Adding : 1 + 10 = 11
        [exec] Adding : 2 + 10 = 12
        [exec] Adding : 3 + 10 = 13
        [exec] Adding : 4 + 10 = 14
        [exec] Adding : 5 + 10 = 15
        [exec] Adding : 6 + 10 = 16
        [exec] Adding : 7 + 10 = 17
        [exec] Adding : 8 + 10 = 18
        [exec] Adding : 9 + 10 = 19
    
  7. GlassFish¿¡¼­ EJB ¸ðµâÀ» ¹èÄ¡ ÇØÁ¦ÇÏ·Á¸é ´ÙÀ½ ¸í·É¾î¸¦ ½ÇÇàÇÑ´Ù.

    ant undeploy

ÀúÀÚ ¼Ò°³

Manisha Umbarje´Â Sun Java System Application ServerÀÇ Á¦Ç° ¿£Áö´Ï¾î¸µ ±×·ì ¼Ò¼ÓÀÓ.

¸ÇÀ§·Î

Ä¿½ºÅÒ ºóÀ» ÀÌ¿ëÇÏ¿© GlassFish °ü¸® ½Ã½ºÅÛ È®ÀåÇϱâ
 

ÀúÀÚ Nandini Ektare¿Í Kedar Mhaswade

J2SE(Java 2 Platform, Standard Edition) 5.0¿¡¼­ Å©°Ô °³¼±µÈ ºÎºÐÀ¸·Î ¸ð´ÏÅ͸µ°ú °ü¸® ±â´ÉÀ» µé ¼ö ÀÖÀ¸¸ç, J2SE 5.0¿¡ µµÀÔµÈ ÁÖ¿ä Æ¯Â¡¿¡´Â instrumented JVM(Java Virtual Machine)°ú JVMÀ» ¸ð´ÏÅÍÇÏ°í °¨½ÃÇϱâ À§ÇÑ java.lang.management API°¡ Æ÷ÇԵȴÙ. ¶ÇÇÑ API´Â ¸Þ¸ð¸® ÀÌ¿ë·ü, ½º·¹µå »óÅÂ, Ŭ·¡½º ·Îµù Ȱµ¿, °¡ºñÁö Ä÷º¼Ç Àü·« µîÀ» ºñ·ÔÇÏ¿© ´Ù¾çÇÑ JVM °ü·Ã Á¤º¸¿¡ ´ëÇÑ ·ÎÄà ¹× ¿ø°Ý ¾×¼¼½º¸¦ °¡´ÉÇÏ°Ô ÇØÁØ´Ù. ÀÌ¿Í °°ÀÌ °­È­µÈ ÅëÇÕ °ü¸® ¹× ¸ð´ÏÅ͸µ Áö¿ø ±â´ÉÀº J2SE 5.0 ±â¹ÝÀÇ ¾î¶°ÇÑ °ü¸® ¾ÖÇø®ÄÉÀ̼ǿ¡¼­µµ ÀÌ¿ëÀÌ °¡´ÉÇÏ´Ù.

GlassFish¿Í MBeans

ÀÌ·± ±â´ÉÀ» Ȱ¿ëÇÏ´Â Åø Áß Çϳª°¡ ¹Ù·Î Java EE 5ÀÇ ¿ÀÇ ¼Ò½º ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö ±¸ÇöÀÎ GlassFishÀε¥, GlassFish ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö´Â ÀÚüÀÇ °ü¸® ÀÎÇÁ¶ó ³»¿¡¼­ J2SE 5.0 ±â¹ÝÀÇ °­È­µÈ ¸ð´ÏÅ͸µ ¹× °ü¸® ±â´ÉÀ» ¸ðµÎ Ȱ¿ëÇÑ´Ù. ¶ÇÇÑ ¿©±â¿¡´Â Ç÷§Æû MBean ¼­¹ö¸¦ ÀÌ¿ëÇÏ¿© ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö MBeans¸¦ µî·ÏÇÏ´Â ±â´Éµµ Æ÷ÇԵǾî ÀÖ´Ù. Management Beans(Àϸí "MBeans")´Â JMX(Java Management Extensions) ½ºÆå¿¡ ÁØÇÑ µðÀÚÀÎ ÆÐÅÏÀ» µû¸£´Â ÀÚ¹Ù ¿ÀºêÁ§Æ®·Î, ¸®¼Ò½º¸¦ °ø±ÞÇÏ´Â µ¥ ÀÌ¿ëµÈ´Ù. º» ÆÁÀº »ç¿ëÀÚ°¡ JMX¿¡ ´ëÇÑ ±âº» Áö½ÄÀ» ÀÌ¹Ì °¡Áö°í ÀÖ´Â °ÍÀ¸·Î °¡Á¤ÇÑ´Ù. JMX¿¡ °üÇÑ °³¿ä¸¦ º¸·Á¸é Å×Å©ÆÁ JMX ±â¼ú ÀÌÇØÇϱ⸦ ÂüÁ¶ÇÒ °Í.

J2SE 5.0¿¡ ÇÔ²² µµÀÔµÈ Ç÷§Æû MBean ¼­¹ö´Â JVM¿¡ ³»ÀåµÈ JMX ±â¹Ý ¿¡ÀÌÀüÆ®·Î, °ü¸® ¾ÖÇø®ÄÉÀ̼ÇÀÌ MBeans¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. ÀÌ ¿¡ÀÌÀüÆ®´Â JVM¿¡¼­ ½ÇÇàµÇ´Â ¸ðµç ¸Å´ÏÁöµå ÄÄÆ÷³ÍÆ®¿¡ ÀÇÇØ °øÀ¯µÉ ¼ö ÀÖ´Ù. GlassFish´Â Ç÷§Æû MBean ¼­¹ö¸¦ ÅëÇØ ½Ã½ºÅÛ°ú ¾ÖÇø®ÄÉÀ̼Ǻ°·Î MBeans¿¡ ´ëÇÑ Á¾ÇÕÀûÀ̰í ÅëÇÕµÈ ¸ð´ÏÅ͸µ ¹× °ü¸® ºä¸¦ Á¦°øÇÒ ¼ö ÀÖÀ¸¸ç, J2SE 5.0 ÀÌÀü¿¡ ¿ä±¸µÇ¾ú´ø °Íó·³ ÀÚü ¿¡ÀÌÀüÆ®ÀÇ ÀνºÅϽº¸¦ »ý¼ºÇÏ´Â ´ë½Å ÀÌ ³»Àå ¿¡ÀÌÀüÆ®¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö MBeans´Â Ç÷§Æû MBean ¼­¹ö ¸®Æ÷ÁöÅ丮¿¡ µî·ÏµÇ±â ¶§¹®¿¡, ÀÚ¹Ù ¸ð´ÏÅ͸µ ¹× °ü¸® ÄܼÖ(JConsole)°ú °°Àº ÅøÀº ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö MBeans¿¡ ÀÇÇØ Á¦°øµÇ´Â ¸ðµç ¸®¼Ò½º¿¡ °üÇÑ Á¤º¸¸¦ µð½ºÇ÷¹ÀÌÇÒ ¼ö ÀÖ´Ù.

GlassFish¿Í Ä¿½ºÅÒ MBeans

»ç¿ëÀÚ´Â ÀÚü Ä¿½ºÅÒ MBeans¸¦ »ý¼ºÇÏ¿© µî·ÏÇÔÀ¸·Î½á GlassFishÀÇ °ü¸® ±â´ÉÀ» È®ÀåÇÒ ¼ö ÀÖ´Ù. Ä¿½ºÅÒ MBeans´Â ¸ð´ÏÅ͸µ ¹× °ü¸® ±â´ÉÀÇ µ¿Àû ÀÎÁ§¼ÇÀ» °¡´ÉÄÉ ÇØÁÙ »Ó ¾Æ´Ï¶ó instrumented Ä¿½ºÅÒ MBean ¼Ó¼ºÀ» Áö¼Ó½ÃÄÑ ÁÜÀ¸·Î½á ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö¸¦ Àç½ÃÀÛÇØ¾ß ÇÒ °æ¿ì¿¡¶óµµ Ȱ¼º »óŸ¦ ±×´ë·Î À¯ÁöÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. Ä¿½ºÅÒ MBeansÀÇ À¯¿ë¼ºÀ» ¿³º¼ ¼ö ÀÖ´Â ÇÑ °¡Áö ¿¹°¡ ¹Ù·Î GlassFishÀÇ ÀÚü °ü¸® ÇÁ·¹ÀÓ¿öÅ©Àε¥, ÀÌ´Â ±ÔÄ¢ ±â¹ÝÀÇ À̺¥Æ® °ü¸® ½Ã½ºÅÛÀ¸·Î, »ç¿ëÀÚ´Â Ä¿½ºÅÒ MBeans·Î ±¸ÇöµÇ´Â Ä¿½ºÅÒ ¾×¼ÇÀ» ½Ã½ºÅÛ °ü¸® ±ÔÄ¢¿¡ Ãß°¡ÇÒ ¼ö ÀÖ´Ù.

¿¹Á¦: ¸ð´ÏÅ͸µ ¹× °ü¸® ±â´É È®ÀåÇϱâ

º» ÆÁ¿¡¼­´Â Ä¿½ºÅÒ MBeans¸¦ ÀÌ¿ëÇÏ¿© GlassFishÀÇ ¸ð´ÏÅ͸µ ¹× °ü¸® ±â´ÉÀ» È®ÀåÇÏ´Â ¿¹Á¦¸¦ Á¦½ÃÇϰí, ÀÌ ¿¹Á¦¸¦ ÅëÇØ À¥ ¼­ºñ½º·ÎºÎÅÍ Á¤±âÀûÀ¸·Î ȹµæÇÏ´Â µ¥ÀÌÅ͸¦ ó¸®ÇÏ´Â Java EE ¾ÖÇø®ÄÉÀ̼ÇÀ» È®ÀåÇØ º¸µµ·Ï ÇÑ´Ù. ¶ÇÇÑ °ü¸® È®ÀåÀ» À§ÇØ ¸ð´ÏÅÍ ´ë»ó À̺¥Æ®, ±×¸®°í ±× À̺¥Æ®¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î ¾ÖÇø®ÄÉÀ̼ÇÀÌ ÃëÇÒ ¾×¼ÇÀ» Ãß°¡Çϵµ·Ï ÇÑ´Ù.

À̺¥Æ®´Â À̸ÞÀÏ ÁÖ¼Ò ¸ñ·ÏÀ» ¾÷µ¥ÀÌÆ®ÇÏ´Â °ÍÀ̰í, ¾×¼ÇÀº ¾÷µ¥ÀÌÆ®µÈ À̸ÞÀÏ ÁÖ¼Ò ¸ñ·ÏÀ¸·Î À̸ÞÀÏÀ» Àü¼ÛÇÏ´Â °ÍÀÌ´Ù. ÀÌ ½Ã³ª¸®¿À¿¡¼­, À¥ ¼­ºñ½ºÀÇ Å¬¶óÀ̾ðÆ®À̱⵵ ÇÑ Ä¿½ºÅÒ MBeanÀº À¥ ¼­ºñ½º¸¦ Æú¸µÇÑ ÈÄ¿¡ À̸ÞÀÏ ÁÖ¼Ò ¸ñ·ÏÀ» ¾÷µ¥ÀÌÆ®ÇÑ´Ù. ÇÏÁö¸¸, ÀÌ ¿¹Á¦¿¡¼­´Â ´Ü¼øÈ­¸¦ À§Çؼ­ À̸ÞÀÏ ÁÖ¼ÒÀÇ ¹®ÀÚ¿­ÀÌ Ä¿½ºÅÒ MBeanÀÇ ¼Ó¼ºÀ¸·Î µÇ¾î ÀÖ´Ù. »ç¿ëÀÚ´Â JConsoleÀ» ÀÌ¿ëÇÏ¿© Á÷Á¢ ¸ñ·ÏÀ» ¼öÁ¤Çϰí, ¼Ó¼ºÀÌ ¼öÁ¤µÇ¸é ¸®½º´× Ä¿½ºÅÒ MBean¿¡ ÅëÁö°¡ ÀÌ·ç¾îÁø´Ù. ±×·± ´ÙÀ½ ¸®½º´× Ä¿½ºÅÒ MBeanÀÌ ¾÷µ¥ÀÌÆ®µÈ À̸ÞÀÏ ÁÖ¼Ò ¸ñ·Ï(Áï, ¾÷µ¥ÀÌÆ®µÈ ¼Ó¼ºÀÇ °ª)¿¡ À̸ÞÀÏÀ» Àü¼ÛÇÏ¿© À̺¥Æ®¸¦ ó¸®ÇÑ´Ù.

º» Å×Å©ÆÁ¿¡´Â ¿¹Á¦ ¾ÆÄ«À̺갡 Æ÷ÇԵǾî ÀÖÀ¸¸ç, ¿©±â¿¡´Â ¿¹Á¦¸¦ À§ÇÑ ¼Ò½º ÄÚµå, ±×¸®°í ÄÄÆÄÀÏµÈ Å¬·¡½º¸¦ ºñ·ÔÇÏ¿© ¿¹Á¦¿¡¼­ »ç¿ëµÇ´Â Ŭ·¡½º¸¦ À§ÇÑ javadocÀÌ ÇÔ²² Æ÷ÇԵǾî ÀÖ´Ù.

1´Ü°è: ¼Â¾÷

Ãʱ⠼³Á¤ ÀÛ¾÷ºÎÅÍ ½ÃÀÛÇØº¸ÀÚ. GlassFish¸¦ ¾ÆÁ÷ ±¸ÇÏÁö ¸øÇß´Ù¸é GlassFish ´Ù¿î·Îµå ÆäÀÌÁö¿¡¼­ ´Ù¿î·ÎµåÇÑ ´ÙÀ½ ¾Æ·¡ÀÇ È¯°æº¯¼ö¸¦ ¼³Á¤ÇÑ´Ù.

  • GLASSFISH_HOME. GlassFishÀÇ ¼³Ä¡ Àå¼Ò(°¡·É C:\Sun\AppServer)À» Ç¥½ÃÇØ¾ß ÇÑ´Ù.

  • JAVA_HOME. »ç¿ëÀÚ ½Ã½ºÅÛ¿¡¼­ÀÇ JDK 5.0 À§Ä¡¸¦ Ç¥½ÃÇØ¾ß ÇÑ´Ù.

2´Ü°è: GlassFish ½ÃÀÛÇϱâ

´ÙÀ½ ¸í·É¾î¸¦ ÀÔ·ÂÇÏ¿© GlassFish¸¦ ½ÃÀÛÇÑ´Ù.

      <GF_install_dir>/bin/asadmin start-domain domain1

ÀÌ ¶§, <GF_install_dir>Àº GlassFish°¡ ¼³Ä¡µÈ µð·ºÅ丮¸¦ ³ªÅ¸³½´Ù.

3´Ü°è: ¿¹Á¦ ¾ÆÅ°ÀÌºê ´Ù¿î·ÎµåÇϱâ

ÇØ´ç ÆÁÀÇ ¿¹Á¦ ¾ÆÄ«À̺긦 ´Ù¿î·ÎµåÇÏ¿© ¾ÐÃàÀ» Ǭ´Ù.

   jar xvf ttmar2006custmbean.jar

¾ÐÃàÀ» Ç®°í ³ª¸é META-INF, techtip ¹× javadoc µð·ºÅ丮°¡ Ç¥½ÃµÇ¾î¾ß ÇÑ´Ù. techtip µð·ºÅ丮¿¡´Â ¿¹Á¦¿ë ¼Ò½º ÄÚµå, ±×¸®°í ÄÄÆÄÀÏµÈ Å¬·¡½º°¡ Æ÷ÇԵǾî ÀÖ´Ù.

4´Ü°è: Ä¿½ºÅÒ MBeans »ý¼ºÇϱâ

º» ¿¹Á¦¿¡¼­´Â 2°³ÀÇ Ä¿½ºÅÒ MBeans--À̺¥Æ® ¼Ò½º¿ë°ú À̺¥Æ® ûÃë¿ë(À̺¥Æ® "½ÌÅ©")--¸¦ »ç¿ëÇÑ´Ù. ÀÌ 2°³ÀÇ MBeans¸¦ À§ÇÑ ¼Ò½º ÄÚµå´Â techtip/src µð·ºÅ丮¿¡ µé¾î ÀÖ´Ù.

Ä¿½ºÅÒ MBeanÀº MBean ÀÎÅÍÆäÀ̽º¿Í MBean ±¸Çö Ŭ·¡½º¸¦ ÇÊ¿ä·Î Çϴµ¥, À̺¥Æ® ¼Ò½º¿ë Ä¿½ºÅÒ MBean ÀÎÅÍÆäÀ̽º´Â EventSourceCustomMBeanÀ̸ç, ±× ±¸Çö Ŭ·¡½º´Â EventSourceCustomÀÌ´Ù. ±×¸®°í À̺¥Æ® ½ÌÅ©¸¦ À§ÇÑ Ä¿½ºÅÒ MBean ÀÎÅÍÆäÀ̽º´Â EventSinkCustomMBeanÀ̸ç, ±× ±¸Çö Ŭ·¡½º´Â EventSinkCustomÀÌ´Ù.

Ä¿½ºÅÒ MBeans¸¦ À§ÇÑ ¼Ò½º ÆÄÀÏÀ» »ý¼ºÇÑ ÈÄ¿¡´Â ÆÄÀϵéÀ» com.example.mbeans ÆÐŰÁö ±¸Á¶¿¡ ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù(ÀÌ´Â ¿É¼Ç»çÇ×À̸ç, ÄÄÆÄÀÏµÈ Å¬·¡½º´Â ¿¹Á¦ ¾ÆÄ«À̺꿡 Æ÷ÇԵǾî ÀÖÀ½). ÆÄÀÏÀ» ÄÄÆÄÀÏÇÏ·Á¸é ´ÙÀ½À» ÀÔ·ÂÇÑ´Ù.

   javac -d . EventSourceCustom.java EventSourceCustomMBean.java 
   javac -d . EventSinkCustom.java EventSinkCustomMBean.java 

EventSinkCustom Ŭ·¡½º¸¦ ÄÄÆÄÀÏÇÒ ¶§´Â °¢ »ç¿ëÀÚÀÇ Å¬·¡½ºÆÐ½º¿¡ mail.jar¿Í activation.jar ÆÄÀÏÀÌ µé¾î ÀÖ´ÂÁö È®ÀÎÇØ¾ß ÇÑ´Ù.

5´Ü°è: Ä¿½ºÅÒ MBean Ŭ·¡½º º¹»çÇϱâ

com/example/mbeans µð·ºÅ丮¿Í ±× ³»¿ëÀ» MBean Ŭ·¡½º·Î´õ µð·ºÅ丮¿¡ º¹»çÇÑ´Ù. MBean Ŭ·¡½º·Î´õ µð·ºÅ丮´Â <domain>/applications/mbeansÀ̰í, ÀÌ ¶§ <domain>Àº ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¹èÄ¡µÈ µµ¸ÞÀÎÀ» ³ªÅ¸³½´Ù. º» ¿¹Á¦¿¡¼­´Â ¾ÖÇø®ÄÉÀ̼ÇÀÌ ±âº»°ª GlassFish µµ¸ÞÀÎÀÎ domain1¿¡ ¹èÄ¡µÈ °ÍÀ¸·Î °¡Á¤ÇÑ´Ù. µû¶ó¼­ com/example/mbeans µð·ºÅ丮¿Í ±× ³»¿ëÀ» <GF_install_dir>/glassfish/domains/domain1/applications/mbeans¿¡ º¹»çÇÑ´Ù. ±×·¯¸é /com/example/mbeans µð·ºÅ丮°¡ »ý¼ºµÇ°í Ä¿½ºÅÒ MBean Ŭ·¡½º¿Í ÀÎÅÍÆäÀ̽º°¡ <GF_install_dir>/glassfish/domains/domain1/applications/mbeans¿¡ º¹»çµÈ´Ù.

6´Ü°è: À̺¥Æ® ¼Ò½º Ä¿½ºÅÒ MBean ¹èÄ¡Çϱâ

´ÙÀ½°ú °°ÀÌ À̺¥Æ® ¼Ò½º Ä¿½ºÅÒ MBean, EventSourceCustomÀ» ¹èÄ¡ÇÑ´Ù(¸í·É¾î´Â ÇÑ Çà¿¡ ÀÔ·ÂÇØ¾ß ÇÑ´Ù).

   <GF_install_dir>/bin/asadmin create-mbean --user admin 
   --passwordfile password.txt --port 4848 
   com.example.mbeans.EventSourceCustom  

Ç÷§Æû MBean ¼­¹ö¿¡ EventSourceCustomÀÌ µî·ÏµÈ´Ù.

´ÙÀ½ ¸í·É¾î¸¦ ÀÌ¿ëÇÏ¿© Ä¿½ºÅÒ MBeanÀÌ ¹èÄ¡µÇ¾ú´ÂÁö È®ÀÎÇÒ ¼ö ÀÖ´Ù(¸í·É¾î´Â ÇÑ Çà¿¡ ÀÔ·ÂÇØ¾ß ÇÑ´Ù).

   <GF_install_dir>/bin/asadmin list-mbeans --user admin 
   --passwordfile password.txt  

´ÙÀ½°ú °°Àº ³»¿ëÀÌ Ç¥½ÃµÇ¾î¾ß ÇÑ´Ù.

   com.example.mbeans.EventSourceCustom 
   user:impl-class-name=com.example.mbeans.EventSourceCustom,
   name=com.example.mbeans.EventSourceCustom Enabled
   Command list-mbeans executed successfully.

7´Ü°è: À̺¥Æ® ½ÌÅ© Ä¿½ºÅÒ MBean ¹èÄ¡Çϱâ

´ÙÀ½°ú °°ÀÌ À̺¥Æ® ½ÌÅ© Ä¿½ºÅÒ MBean, EventSinkCustomÀ» ¹èÄ¡ÇÑ´Ù(¸í·É¾î´Â ÇÑ Çà¿¡ ÀÔ·ÂÇØ¾ß ÇÑ´Ù).

   <GF_install_dir>/bin/asadmin create-mbean --user admin 
   --passwordfile password.txt --port 4848 --objectname 
   "user:impl-class-name=com.example.mbeans.EventSinkCustom, 
   name=custom-event-sink" 
   --attributes HostName=<yourmailserver>:Id=<yourId>:
   Password=<yourpw> com.example.mbeans.EventSinkCustom

´Ü, ¸í·É¾îÀÇ HostName, Id, Password µîÀÇ ÆÄ¶ó¹ÌÅÍ¿¡ À¯ÀÇÇÒ °Í. ¸ÞÀÏ ¼­¹ö¿¡ Á¢¼ÓÇÏ·Á¸é ÀÌ ÆÄ¶ó¹ÌÅ͵éÀÌ ÁöÁ¤µÇ¾î¾ß ÇÑ´Ù. ÆÄ¶ó¹ÌÅÍ´Â Ä¿½ºÅÒ MBeanÀÇ ¼Ó¼ºÀÌ´Ù. <yourmailserver>´Â °¢ÀÚÀÇ ¸ÞÀÏ ¼­¹ö À̸§À¸·Î, <yourId>´Â °¢ÀÚÀÇ ID·Î, <yourpw>´Â °¢ÀÚÀÇ ºñ¹Ð¹øÈ£·Î ´ëüÇÑ´Ù.

¾Õ¿¡¼­ ¾ð±ÞÇÑ °Íó·³, instrumented Ä¿½ºÅÒ MBean ¼Ó¼ºÀ» Áö¼Ó½ÃÄÑ ÁÜÀ¸·Î½á ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö¸¦ Àç½ÃÀÛÇØ¾ß ÇÒ °æ¿ì¿¡¶óµµ Ȱ¼º »óŸ¦ ±×´ë·Î À¯ÁöÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­, ¸í·É¾îÀÇ ÆÄ¶ó¹ÌÅ͸¦ ÁöÁ¤Çϸé Ä¿½ºÅÒ MBeanÀÇ ·±Å¸ÀÓ ÆÄ¶ó¹ÌÅͰ¡ ±¸¼ºµÈ´Ù. ÇÏÁö¸¸ MBeanÀÌ »ý¼ºµÈ ÈÄ¿¡´Â ¼­¹ö°¡ Àç½ÃÀÛÇÏ´õ¶óµµ ÆÄ¶ó¹ÌÅÍ´Â ±âÁ¸ÀÇ »óŸ¦ Áö¼ÓÇÏ°Ô µÈ´Ù.

À̹ø¿¡µµ ´ÙÀ½ ¸í·É¾î¸¦ ÀÌ¿ëÇÏ¿© Ä¿½ºÅÒ MBeanÀÌ ¹èÄ¡µÇ¾ú´ÂÁö È®ÀÎÇÒ ¼ö ÀÖ´Ù(¸í·É¾î´Â ÇÑ Çà¿¡ ÀÔ·ÂÇØ¾ß ÇÑ´Ù).

   <GF_install_dir>/bin/asadmin list-mbeans --user admin 
   --passwordfile password.txt  

´ÙÀ½°ú °°Àº ³»¿ëÀÌ Ç¥½ÃµÇ¾î¾ß ÇÑ´Ù.

   com.example.mbeans.EventSourceCustom 
   user:impl-class-name=com.example.mbeans.EventSourceCustom,
   name=com.example.mbeans.EventSourceCustom Enabled
   com.example.mbeans.EventSinkCustom 
   user:impl-class-name=com.example.mbeans.Event
   SinkCustom, name=custom-event-sink Enabled
   Command list-mbeans executed successfully.      

8´Ü°è: À̸ÞÀÏ ¸ñ·Ï ¾÷µ¥ÀÌÆ®Çϱâ

º» ¿¹Á¦¿¡¼­´Â JConsoleÀ» ÀÌ¿ëÇÏ¿© À̸ÞÀÏ ÁÖ¼ÒÀÇ ¹®ÀÚ¿­ÀÌ Æ÷ÇÔµÈ Ä¿½ºÅÒ MBeanÀÇ ¼Ó¼ºÀ» ¾÷µ¥ÀÌÆ®ÇÑ´Ù.

´ÙÀ½ ¸í·É¾î¸¦ ÀÔ·ÂÇÏ¿© JConsoleÀ» ½ÃÀÛÇÑ´Ù.

   <JAVA_HOME>/bin/jconsole

JConsole¸¦ ½ÃÀÛÇϸé Local/Remote/Advanced JMX Á¢¼Ó ÅÇÀÌ ÀÖ´Â Á¢¼Ó ´ëÈ­»óÀÚ°¡ Ç¥½ÃµÇ¾î¾ß ÇÑ´Ù. Remote ÅÇÀ» Ŭ¸¯Çϰí ÇØ´ç È£½ºÆ®(localhost), Æ÷Æ®(GlassFishÀÇ JMX Á¢¼Ó ¼­¹ö´Â Æ÷Æ® 8686¿¡¼­ ûÃë), »ç¿ëÀÚ À̸§(admin), ºñ¹Ð¹øÈ£(adminadmin) µîÀÇ °ªÀ» ÀÔ·ÂÇÑ´Ù.

Remote ÅÇÀÇ µð½ºÇ÷¹ÀÌ¿¡¼­ Connect ¹öưÀ» Ŭ¸¯Çϸé RMI Ä¿³ØÅ͸¦ ÅëÇØ Ç÷§Æû MBean ¼­¹ö·ÎÀÇ Á¢¼ÓÀÌ ÀÌ·ç¾îÁø´Ù. À̾îÁö´Â Connection â¿¡¼­ MBeans ÅÇÀ» Ŭ¸¯Çϰí, âÀÇ ¿ÞÂÊ ±¸È¹¿¡ À§Ä¡ÇÑ MBean Æ®¸®¿¡¼­ »ç¿ëÀÚ ºê·£Ä¡¸¦ È®ÀåÇÑ´Ù. com.example.mbeans.EventSourceCustom ¾Æ·¡¿¡ ¼­¹ö ¿£Æ®¸®°¡ Ç¥½ÃµÉ ¶§±îÁö »ç¿ëÀÚ ºê·£Ä¡ÀÇ ÇÏÀ§ ºê·£Ä¡µéÀ» °è¼Ó È®ÀåÇϰí, ¼­¹ö ¿£Æ®¸®¸¦ Ŭ¸¯ÇÑ´Ù. ÀÌÁ¦ âÀÇ ¿À¸¥ÂÊ ÆÐ³Î¿¡ ÀÖ´Â Infor ÅÇ¿¡ MBean¿¡ °üÇÑ Á¤º¸°¡ Ç¥½ÃµÇ¾î¾ß ÇÑ´Ù.

âÀÇ ¿À¸¥ÂÊ ÆÐ³Î¿¡ ÀÖ´Â Attributes ÅÇÀ» Ŭ¸¯ÇÑ ´ÙÀ½ EmailRecipientsString ¼Ó¼ºÀ» À§ÇÑ °ª Çʵ忡 °¢ÀÚÀÇ À̸ÞÀÏ ÁÖ¼Ò¸¦ ÀÔ·ÂÇÑ´Ù.

EmailRecipientsString ¼Ó¼ºÀ» º¯°æÇϸé À̺¥Æ® ¼Ò½º Ä¿½ºÅÒ MBeanÀÌ ÅëÁö¸¦ ¹ß¼ÛÇϴµ¥, ÀÌ ¶§ AttributeChangeNotification Ŭ·¡½º¿¡ ÀÇÇØ Á¤ÀǵǴ ÅëÁö¸¦ ûÃëÇϰí ÀÌ ¼Ó¼ºÀÇ »õ °ªÀ» °¡Á®¿Â´Ù. ´ÙÀ½Àº ÀÌ ÀÛ¾÷°ú °ü·ÃÇÑ EventSinkCustom ³»ÀÇ ÄÚµåÀÌ´Ù.

   AttributeChangeNotification attrnotif = 
       (AttributeChangeNotification) notif;

   String newEmailIdStr = (String)attrnotif.getNewValue();

À̾ À̺¥Æ® ½ÌÅ© Ä¿½ºÅÒ MBeanÀÌ ¾÷µ¥ÀÌÆ®µÈ ÁÖ¼Ò·Î À̸ÞÀÏÀ» Àü¼ÛÇÑ´Ù.

9´Ü°è: À̸ÞÀÏ È®ÀÎÇϱâ

¸®½º´× Ä¿½ºÅÒ MBeanÀÌ °¢ÀÚÀÇ ÁÖ¼Ò·Î À̸ÞÀÏÀ» Àü¼ÛÇß´ÂÁö È®ÀÎÇϱâ À§ÇØ ¿ì¼± À̸ÞÀÏÀ» »ìÆìº»´Ù. ´ÙÀ½°ú °°Àº ¸Þ½ÃÁö°¡ ¼ö½ÅµÇ¾î¾ß ÇÑ´Ù.

This message has been generated and sent as part of the Glassfish Techtip sample example execution

´õ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ »çÀÌÆ®¸¦ ÂüÁ¶ÇÒ °Í.

ÀúÀÚ ¼Ò°³

Nandini Ektare´Â ½ã ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁîÀÇ ½ã ÀÚ¹Ù ½Ã½ºÅÛ ¾ÖÇø®ÄÉÀÌ¼Ç ¼­¹ö °³¹ß ±×·ì ¼Ò¼ÓÀ¸·Î, JMX¿Í Java EEÀÌ ±×³àÀÇ ÁÖ¿ä °ü½É ºÐ¾ßÀÌ´Ù.

Kedar Mhaswade´Â ½ã ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁîÀÇ ½ºÅÂÇÁ ¿£Áö´Ï¾î·Î, JSR 003: Java Management Extensions Àü¹®°¡ ±×·ìÀÇ ÀÏ¿øÀÌ´Ù. ±×ÀÇ ÁÖ¿ä °ü½É ºÐ¾ß·Î´Â ¿ÀǼҽº ¼ÒÇÁÆ®¿þ¾î, JMX, Java EE µîÀÌ ÀÖ´Ù.

¸ÇÀ§·Î

º» ¸ÞÀÏÀº ¼ö½ÅÀ» µ¿ÀÇÇÑ È¸¿ø´Ô¿¡°Ô¸¸ ¹ß¼ÛµË´Ï´Ù.
º» ¸ÞÀÏÀÇ ¼ö½ÅÀ» °ÅºÎÇϰųª ¼ö½ÅÁÖ¼Ò¸¦ º¯°æÇÏ·Á¸é SKDN@Sun.comÀ¸·Î ¹®ÀÇ Áֽñ⠹ٶø´Ï´Ù.

SKDN(Sun Korea Developers Network)¿¡¼­ J2EE/J2SE Å×Å©ÆÁ µî ´Ù¾çÇÑ ¾ÆÆ¼Å¬µéÀ» Âü°íÇϼ¼¿ä.

Copyright 2003-2006 Sun Korea, Ltd. All rights reserved.