·Î±×ÀÎ | ȸ¿ø°¡ÀÔ (´º½º·¹ÅͽÅû) | SITEMAP
   
  °³¹ß   Ç÷§Æû   ½Ã½ºÅÛ   ¸Å´ÏÁö¸ÕÆ®   Àüü±â»ç  
ÀÚ¹Ù
´å³Ý
C/C++
DB
¸ðµ¨¸µ
À¥°³¹ß
±âŸ
À¯´Ð½º/¸®´ª½º
À©µµ¿ì
±âŸ
¼­¹ö
³×Æ®¿öÅ©
º¸¾È
±âŸ
BM
PM
±âŸ
 
±â»çÀúÀå
0
 
¸¶ÀÌ ½ºÅ©·¦
[¸ÞŸµ¥ÀÌÅÍ È°¿ë ¨è] ÀÚ¹ÙEE5ÀÇ ¾î³ëÅ×ÀÌ¼Ç È°¿ë

±è¿ø¼® (Ƽ¸Æ¼ÒÇÁÆ®ÀÇ WASÁ¦Ç°, Á¦¿ì½º °³¹ßÀÚ)   2007/11/28
1ºÎ | °³¹ßÀÚ¸¦ À§ÇÑ ³¡¾ø´Â °æÀï ÀÚ¹Ù vs ´å³ÝÀÇ ¸ÞŸµ¥ÀÌÅÍ È°¿ë
2ºÎ | °³¹ß »ý»ê¼º Çâ»óÀ» À§ÇÑ ÀÚ¹ÙEE5ÀÇ ¾î³ëÅ×ÀÌ¼Ç È°¿ë
3ºÎ | ÇüÀÌ»óÇÐÀû ¸ÞŸµ¥ÀÌÅÍ È°¿ëÀ» À§ÇÑ ¾î³ëÅ×ÀÌ¼Ç ÀÎ ¾×¼Ç
4ºÎ | ´å³Ý °³¹ßÀÚ¸¦ À§ÇÑ ¾îÆ®¸®ºäÆ® ¿À¸®¿£Æ¼µå ÇÁ·Î±×·¡¹Ö
5ºÎ | ÀÚ¹Ù ¾î³ëÅ×À̼ÇÀÇ ÁøÈ­ ¿ÀǼҽº¿Í ¾î³ëÅ×À̼Ç
ÀÚ¹Ù
ÀÚ¹Ù EE 5¿¡¼­´Â ±âÁ¸¿¡ XML¿¡ ±â¹ÝÀ» µÐ º¹ÀâÇÑ ÇÁ·Î±×·¡¹Ö ¸ðµ¨¿¡¼­ Å»ÇÇÇÏ¿© Á» ´õ ½±°í Á÷°üÀûÀ¸·Î ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ ¼ö ÀÖµµ·Ï ¸ÞŸµ¥ÀÌÅÍ ¾î³ëÅ×À̼ÇÀ» Àû±ØÀûÀ¸·Î Ȱ¿ëÇϱ⠽ÃÀÛÇÏ¿´´Ù. ƯÁý 2ºÎ¿¡¼­´Â ÀÚ¹Ù EE 5¿¡¼­ ¾î³ëÅ×À̼ÇÀ» ¾î¶² °æ¿ì¿¡ »ç¿ëÇØ¾ß ÇÏ´ÂÁö ¾Ë¾Æº»´Ù.

ÀÚ¹Ù EE 5°¡ ÀÛ³â ÀÚ¹Ù¿ø¿¡¼­ °ø½Ä ¸±¸®Áî µÈÁö ¹ú½á 1³âÀÌ Áö³µ´Ù. µ¶ÀÚ ¿©·¯ºÐµéµµ Àß ¾Ë°í ÀÖµíÀÌ ´ëºÎºÐÀÇ ÀÚ¹Ù EE ±â¼úÀº ¼±¾ðÀûÀÎ ÇÁ·Î±×·¡¹Ö ¸ðµ¨(Declarative Programming Model)¿¡ ±â¹ÝÇϰí ÀÖ°í ÀÌ´Â ÀÌ¹Ì ´ë¼¼·Î ÀÚ¸® ÀâÀº µíÇÏ´Ù.

ÀÚ¹Ù EE 5 ÀÌÀü¿¡´Â ¼±¾ðÀûÀÎ ÇÁ·Î±×·¡¹Ö ¸ðµ¨ÀÇ ´ëºÎºÐÀ» XML µð½ºÅ©¸³Å͸¦ ÅëÇØ¼­ ±¸¼ºÇß´Ù. ¹Ý¸é¿¡ ÀÚ¹Ù EE 5 ÀÌÈĺÎÅÍ´Â ¸ÞŸµ¥ÀÌÅÍ ¾î³ëÅ×À̼Ç(metadata annotation)À» ÅëÇØ Á» ´õ ½±°í Á÷°üÀûÀÎ °³¹ßÀÌ °¡´ÉÇØ Á³´Ù.

ÇÏÁö¸¸, Àß »ìÆìº¸¸é ÀÚ¹Ù EE 5¿¡¼­ µµÀÔµÈ ¾î³ëÅ×À̼ÇÀÌ ¿ÏÀüÈ÷ »õ·Î¿î ¹æ½ÄÀº ¾Æ´Ï´Ù. ÀÌ¹Ì ¿¹ÀüºÎÅÍ ¸¹Àº °³¹ßÀÚµéÀÌ EJB ÄÄÆ÷³ÍÆ®¸¦ °³¹ßÇÒ ¶§ ÇÙ½É ·ÎÁ÷ÀÌ ´ã±ä Ŭ·¡½º À̿ܿ¡µµ º¹ÀâÇÑ XML µð½ºÅ©¸³ÅÍ¿Í ¿©·¯ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÏ´Â °Í¿¡ ´ëÇØ ºÒ¸¸ÀÌ ¸¹¾Ò´Ù. µû¶ó¼­ À̸¦ ÇØ°áÇϰíÀÚ XDoclet°ú °°Àº ¿ÀÇ ¼Ò½º ÇÁ·ÎÁ§Æ®°¡ °¢±¤À» ¹Þ¾Ò´Ù.

XDocletÀº ÃÊâ±âÀÇ ¸ÞŸµ¥ÀÌÅÍ ¾î³ëÅ×À̼ÇÀ¸·Î º¼ ¼ö Àִµ¥ ÇöÀç ÀÚ¹Ù ¾ð¾î¿¡¼­ Á¦°øÇÏ´Â ¾î³ëÅ×À̼ǰú ÇüŰ¡ ¸Å¿ì À¯»çÇÏ´Ù. ÇÏÁö¸¸, ¼Ò½º ¼öÁØ¿¡¼­¸¸ ÇØ´ç Á¤º¸°¡ À¯ÁöµÇ´Â Á¦¾àÀÌ ÀÖ¾î ÄÚµå »ý¼º ÅøÀ» À§ÇÑ ¸ÞŸµ¥ÀÌÅͷθ¸ »ç¿ëÇÒ ¼ö ÀÖ¾ú´Ù. ÇöÀç ÀÚ¹Ù ¾ð¾îÀÇ ¾î³ëÅ×À̼ÇÀº ·±Å¸ÀÓ¿¡¼­ ÇØ´ç Ŭ·¡½ºÀÇ ¾î³ëÅ×À̼ÇÀ» ÀÐ¾î ¿Ã ¼ö Àֱ⠶§¹®¿¡ ´õ ¸¹Àº ºÐ¾ß¿¡¼­ Ȱ¿ëµÇ°í ÀÖÀ¸¸ç ´ëÇ¥ÀûÀÎ ºÐ¾ß°¡ ¹Ù·Î Java EE ±â¼ú ºÐ¾ßÀÌ´Ù.

  ¾î³ëÅ×À̼ÇÀÇ ÀåÁ¡

ÀÚ¹Ù EE 5°¡ ÀÌÀü ¹öÀü¿¡ ºñÇØ »ý»ê¼ºÀÌ ¾ó¸¶³ª ¸¹ÀÌ Çâ»óµÇ¾ú´ÂÁö ¾Ë¾Æº¸±â À§ÇØ <Ç¥ 1>À» »ìÆìº¸ÀÚ. <Ç¥ 1>À» º¸¸é ±²ÀåÈ÷ °í¹«ÀûÀÌ´Ù. ÀÌ´Â ÀÚ¹Ù EE 5¿¡¼­ °³¼±µÈ ¿©·¯ °¡Áö Ãø¸é¿¡¼­ ¼³¸íÇÒ ¼ö ÀÖÁö¸¸ ¾î³ëÅ×À̼ÇÀ» µµÀÔÇÑ °ÍÀÌ °¡Àå Å« ¿µÇâÀ» ÁÖ¾ú´Ù°í ÇÒ ¼ö ÀÖ´Ù.


¾î³ëÅ×À̼ÇÀÌ ÀÌ·¸°Ô XML¿¡ ºñÇØ¼­ °³¹ß »ý»ê¼ºÀ» ȹ±âÀûÀ¸·Î ³ô¿©Áشٸé, XMLÀ» ÅëÇØ ¸ÞŸµ¥ÀÌÅ͸¦ ¼³Á¤ÇÏ´Â °ÍÀº ÀÌÁ¦ ±¸½Ã´ëÀÇ »ê¹°ÀÌ¸ç ´õ ÀÌ»ó »ç¿ëÇÏÁö ¸»¾Æ¾ß ÇÏ´Â °ÍÀϱî?

ÀÌ Áú¹®¿¡ ´ëÇÑ ´ë´äÀ» ÇÏ·Á¸é ¸ÕÀú ¾î³ëÅ×À̼ǰú XMLÀÌ °¡Áö´Â Àå/´ÜÁ¡À» ºñ±³ÇØ º¸´Â °ÍÀÌ ÁÁÀ» °Í °°´Ù. ¸ÕÀú, ¾î³ëÅ×À̼ÇÀÌ °¢±¤À» ¹ÞÀº °ÍÀº ºÐ¸í XML¿¡ ºñÇØ ¾Æ·¡¿Í °°Àº ÀåÁ¡ÀÌ Àֱ⠶§¹®ÀÌ´Ù.

¡Ü ÄÚµåÀÇ °¡µ¶¼º Áõ´ë - °ü·ÃµÈ ÄÚµå °ç¿¡ ¸ÞŸµ¥ÀÌÅ͸¦ ¼³Á¤ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÇØ´ç ÄÚµåÀÇ ±¸Á¶¸¦ ÆÄ¾ÇÇϱâ À§ÇØ XMLÀ» ÀÏÀÏÀÌ È®ÀÎÇØ¾ß ÇÒ Çʿ䰡 ¾ø´Ù.

¡Ü °³¹ß È¿À²¼º Áõ´ë - º¹ÀâÇÑ XML ½ºÅ°¸¶¸¦ ÆÄ¾ÇÇÏÁö ¾Ê¾Æµµ µÇ¸ç, ´Ù¸¥ ¾ð¾î ±¸¹®°ú ¸¶Âù°¡Áö·Î strong type üũ¸¦ ÇϹǷΠ°³¹ß Åø°ú ÄÄÆÄÀÏ·¯ÀÇ µµ¿òÀ» ¹ÞÀ» ¼ö ÀÖ´Ù.

¡Ü ÇÁ·Î±×·¥ ±¸Á¶ÀÇ Àϰü¼º È®º¸ – XML ¼³Á¤Àº ÀǵµÀûÀ̵ç ÀǵµÀûÀÌÁö ¾ÊµçÁö °£¿¡ À߸ø ¼öÁ¤Çϰųª ¼³Á¤ÇÏ¸é ¿ø·¡ µðÀÚÀÎ Àǵµ¿Í ´Ù¸¥ ¹æ½ÄÀ¸·Î µ¿ÀÛÇÒ ¼ö ÀÖ´Ù.

XML ¼³Á¤¿¡ ±â¹ÝÀ» µÐ EJB 2.1 ºó°ú ¾î³ëÅ×À̼Ǹ¸À¸·Î ÀÛ¼ºµÈ EJB 3.0 ºóÀ» ºñ±³Çغ¸¸é ¾Õ¼­ ¸»ÇÑ ÀåÁ¡À» ºÐ¸íÈ÷ ÀνÄÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

  ¾î³ëÅ×À̼ÇÀÇ ´ÜÁ¡

±×·¯¸é, ¹Ý´ë·Î ¾î¶² Á¡¿¡ ÀÖ¾î ¾î³ëÅ×À̼ÇÀº ¹®Á¦°¡ ȤÀº ¾àÁ¡ÀÌ ÀÖÀ»±î? Çϳª¾¿ »ìÆìº¸µµ·Ï ÇÏÀÚ.

1. ÇØ´ç Ŭ·¡½º°¡ ÇÑ ¹ø ÄÄÆÄÀÏ µÇ¸é ´õ ÀÌ»ó ¸ÞŸµ¥ÀÌÅ͸¦ ¼öÁ¤ÇÒ ¼ö ¾ø´Ù. Áï, µðÇ÷ÎÀÌ µÇ´Â ȯ°æ¿¡ µû¶ó¼­ ¼³Á¤À» ¼öÁ¤ÇÒ ¼ö ¾ø´Ù.
ÀÚ¹Ù EE¿¡¼­´Â °³¹ßµÈ ¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÁ¦ µðÇ÷ÎÀÌ Çϴ ȯ°æ¿¡ °ü°è¾øÀÌ À̽ļº ÀÖ°Ô ¸¸µå´Â °ÍÀ» Áß¿äÇϱ⠶§¹®¿¡, µðÇ÷ÎÀÌ È¯°æ¿¡ ¸Â°Ô ¼³Á¤À» ¼öÁ¤ÇÒ ¼ö ¾ø´Ù¸é Å« ¹®Á¦°¡ ¾Æ´Ò ¼ö ¾ø´Ù. º¸¾È ¼³Á¤À̳ª µ¥ÀÌÅͺ£À̽º ¼³Á¤°ú °°Àº °ÍÀÌ ±×·± ¿¹Àε¥ À̽ļºÀ» °í·ÁÇÑ´Ù¸é ÀÌ·± ¼³Á¤Àº XML¿¡ ´ã´Â °ÍÀÌ ÀûÇÕÇÏ´Ù.

2. ¾î³ëÅ×À̼ÇÀº ¸ðµâÀ̳ª ¾ÖÇø®ÄÉÀÌ¼Ç Àü¹ÝÀûÀÎ ¸ÞŸµ¥ÀÌÅ͸¦ ¼³Á¤ÇÒ ¼ö ¾ø´Ù.
¾î³ëÅ×À̼ÇÀº ¹üÀ§°¡ Ä¿ ºÁ¾ß Ŭ·¡½º³ª ÆÐŰÁö ·¹º§·Î ÇÑÁ¤Çϱ⠶§¹®¿¡ ¿©·¯ Ŭ·¡½º¿¡ °ÉÄ£ °øÅëÀûÀÎ ¼³Á¤À̳ª ¸ðµâ·¹º§ ¼³Á¤ÀÌ ¾î·Æ´Ù.

¿¹¸¦ µé¾î, EJB¿¡¼­ ¸ðµç ºó(Bean)¿¡ ´ëÇØ¼­ °øÅë ÀÎÅͼÁÅ͸¦ ´Þ°í ½Í´Ù°Å³ª, JPA¿¡¼­ ¸ðµç ¿£Æ¼Æ¼ Ŭ·¡½º¿¡ ´ëÇØ¼­ °øÅëÀûÀ¸·Î DBÀÇ ¾î¶² ½ºÅ°¸¶¸¦ ¾²°Ô ÇÏ°í ½Í´Ù¸é À̸¦ ¾î³ëÅ×À̼ÇÀ¸·Î ÇÒ ¼ö°¡ ¾ø´Ù. µû¶ó¼­ ÀÌ·± ¼³Á¤Àº ÇöÀç XMLÀ» ÅëÇØ¼­¸¸ °¡´ÉÇÏ´Ù.

3. ¾î³ëÅ×ÀÌ¼Ç Ã³¸® ½Ã ¸®Ç÷º¼ÇÀ» ÅëÇØ ÇØ´ç Ŭ·¡½º¸¦ ºÐ¼®ÇØ¾ß ÇÏ´Â ¿À¹öÇìµå°¡ ÀÖ´Ù.
À̰ÍÀº µðÇ÷ÎÀÌ ½Ã°£°ú °ü·Ã Àִµ¥, ¾î³ëÅ×À̼ÇÀ» ¾²¸é Ç×»ó ´À¸®´Ù´Â À̾߱â´Â ¾Æ´Ï´Ù. XMLµµ ½ÇÁ¦·Î ÆÄ½ÌÇϰí ó¸®ÇÏ´Â ¿À¹öÇìµå°¡ Àֱ⠶§¹®¿¡ °æ¿ì¿¡ µû¶ó¼­ ¾î³ëÅ×ÀÌ¼Ç Ã³¸®°¡ ´õ ºü¸¦ ¼ö ÀÖ´Ù.

¾î³ëÅ×ÀÌ¼Ç Ã³¸®´Â ó¸®ÇØ¾ß Çϴ Ŭ·¡½ºÀÇ °³¼ö¿¡ ºñ·ÊÇÑ´Ù. ¶§¹®¿¡ ¸¸¾à ¸ðµâ ¾È¿¡ Ŭ·¡½º°¡ ¾öû³ª°Ô ¸¹°í ¾î¶² Ŭ·¡½º°¡ ¾î³ëÅ×À̼ÇÀ» °¡Áö°í ÀÖ´ÂÁö ¾Ë ¼ö ¾ø´Ù¸é ¸ðµç Ŭ·¡½º¸¦ ½ºÄµ ÇØºÁ¾ß ÇϹǷΠ½Ã°£ÀÌ XML 󸮿¡ ºñÇØ »ó´ëÀûÀ¸·Î ¿À·¡ °É¸®°Ô µÈ´Ù.

EJB 3.0 ¸ðµâÀ̳ª JAX-WS À¥¼­ºñ½º, JPA ¿£Æ¼Æ¼°¡ Æ÷ÇÔµÈ ¸ðµâÀÇ °æ¿ì°¡ ÀÌ¿¡ ÇØ´çÇϹǷΠµðÇ÷ÎÀÌ ½Ã°£ÀÌ ÇѾøÀÌ ´À¸®´Ù¸é ÀÌ·± Á¡À» °í·ÁÇØ¾ß ÇÑ´Ù.

4. ¼Ò½º°¡ ¾Æ´Ñ ¹ÙÀ̳ʸ®¸¦ »ìÆìº¸´Â °æ¿ì ¾î³ëÅ×À̼ÇÀº ´«¿¡ º¸ÀÌÁö ¾Ê±â ¶§¹®¿¡ ÇØ´ç ¸ðµâÀÇ ±¸Á¶¸¦ ÆÄ¾ÇÇϱⰡ ¾î·Æ´Ù.
¿¹¸¦ µé¾î, EJB 2.1ÀÇ °æ¿ì ÇØ´ç ¸ðµâÀÇ XML µð½ºÅ©¸³Å͸¦ ¿­¾îº¸¸é ¾î¶² ºóµéÀÌ ÀÖ°í, ¾î¶² ŸÀÔÀÎÁö ÀÌ·± Á¤º¸¸¦ ¿ÜºÎ¿¡¼­ º¸±â°¡ ½¬¿ü´Ù. ¹Ý¸é¿¡ ¾î³ëÅ×À̼Ǹ¸À» »ç¿ëÇØ¼­ ¸¸µé¾îÁø EJB 3.0ÀÇ °æ¿ì´Â Ŭ·¡½ºµé ¹Û¿¡ ¾ø±â ¶§¹®¿¡ ÀÌ·± °ÍµéÀ» ¹Ù·Î ÆÄ¾ÇÇÒ ¼ö°¡ ¾ø´Ù.

¶ÇÇÑ, ÇöÀç±îÁö ³ª¿Í ÀÖ´Â µðÄÄÆÄÀÏ·¯¶ÇÇÑ ¾î³ëÅ×À̼ÇÀ» º¸¿©ÁÖÁö ¾Ê±â ¶§¹®¿¡ ¹ÙÀ̳ʸ®¸¸ °¡Áö°í ±¸Á¶¸¦ ÆÄ¾ÇÇϱⰡ ½±Áö ¾Ê´Ù. À̸¦ À§Çؼ­ Ŭ·¡½ºÀÇ ±¸Á¶¿Í ¾î³ëÅ×À̼ÇÀ» ÆÄ¾ÇÇØ¼­ º¸¿©ÁÖ´Â ÅøÀÌ ÀÖ´Ù¸é Æí¸®ÇÒ °Í °°Àºµ¥, ¾ÆÁ÷±îÁö´Â ±×·± ÅøÀ» ³ª¿Í ÀÖÁö ¾Ê´Ù.

  XML°ú ¾î³ëÅ×À̼ǰ°ÀÌ ¾²±â

±×·¯¸é ÀÌÁ¦ ¾Õ¼­ Á¦±âÇÑ Áú¹®¿¡ ´äÀ» ÇÒ ¼ö ÀÖ´Â ½ÃÁ¡ÀÌ µÈ °Í °°´Ù. ¾î³ëÅ×À̼ÇÀº ±× ³ª¸§´ë·ÎÀÇ ¿ªÇÒÀÌ ÀÖÁö¸¸ XMLÀ» ¿ÏÀüÈ÷ ´ëüÇÒ ¼ö´Â ¾ø´Ù. µû¶ó¼­ ÀÚ¹Ù EE 5¿¡¼­´Â µÎ °¡Áö ÇüÅÂÀÇ ¸ÞŸµ¥ÀÌÅ͸¦ ´Ù ¾µ ¼ö ÀÖµµ·Ï Áö¿øÇϰí ÀÖ´Ù. ÀÌ °æ¿ì ´ÙÀ½°ú °°ÀÌ 3°¡Áö Á¶ÇÕÀÌ °¡´ÉÇÏ´Ù.

1. ¾î³ëÅ×À̼Ǹ¸À» ¾²´Â °æ¿ì
2. ¾î³ëÅ×À̼ǰú XMLÀ» °°ÀÌ ¾²´Â °æ¿ì
3. ÀÌÀü ¹æ½Äó·³ XML¸¸ »ç¿ëÇÏ´Â °æ¿ì

¾î³ëÅ×À̼ǰú XMLÀ» È¥¿ëÇÏ¿© »ç¿ëÇÏ´Â °æ¿ì¿¡ XMLÀº ¾î³ëÅ×À̼ÇÀ» º¸ÃæÇϰųª overrideÇÏ´Â ¿ªÇÒÀ» ¸Ã°Ô µÈ´Ù. ÀÚ¹Ù EE 5ÀÇ ¸ðµç ¾î³ëÅ×À̼ÇÀº ±×¿¡ ÇØ´çÇÏ´Â XML ¼³Á¤ÀÌ Á¸ÀçÇϴµ¥ ÀÌ·± °æ¿ì¿¡ ¿ì¼±¼øÀ§´Â Ç×»ó XML¿¡°Ô ÀÖ´Ù.

¿©±â¼­ °í¹ÎÀÌ ½ÃÀ۵Ǵµ¥, ±×·¯¸é ¾î¶² °æ¿ì¿¡ ¾î³ëÅ×À̼ÇÀ» ½á¾ß ÇÏ°í ¾î¶² °æ¿ì¿¡ XMLÀ» ½á¾ß ÇÒ±î? 3°¡Áö °æ¿ì°¡ ´Ù ¾²ÀÓ»õ°¡ Àֱ⠶§¹®¿¡ ¾Æ½±°Ôµµ Á¤´äÀº ¾ø°í °æ¿ì¿¡ µû¶ó¼­ ¼±ÅÃÀ» ÇØ¾ß ÇÑ´Ù.

¸ÕÀú, ¾î³ëÅ×À̼Ǹ¸ »ç¿ëÇÏ´Â °æ¿ì´Â °£´ÜÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇϰųª »¡¸® ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇϰíÀÚ ÇÒ ¶§ À¯¿ëÇÒ °ÍÀÌ´Ù. ¾î³ëÅ×À̼ÇÀº XML¿¡ ºñÇØ »ç¿ëÇϱⰡ ½±±â ¶§¹®¿¡, ªÀº ½Ã°£¿¡ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù.

XML¸¸ »ç¿ëÇÏ´Â °æ¿ì´Â ÀÌ¹Ì ±âÁ¸ ¾ÖÇø®ÄÉÀ̼ÇÀÌ J2EE 1.4 ±â¹ÝÀ¸·Î ÀÛ¼ºµÇ¾î Àְųª, ÇØ´ç ¾ÖÇø®ÄÉÀ̼ǿ¡ Ŭ·¡½º°¡ ¼ö¾øÀÌ ¸¹¾Æ µðÇ÷ÎÀÌ ½Ã°£ÀÌ ¿À·¡ °É¸°´Ù°Å³ª Àüü ¾ÖÇø®ÄÉÀÌ¼Ç ±¸¼ºÀ» ¼Ò½º°¡ ¾Æ´Ñ ¹ÙÀ̳ʸ®¿Í XMLÀ» ÅëÇØ ÆÄ¾ÇÇØ¾ß ÇÒ Çʿ伺ÀÌ ÀÖ´Â °æ¿ì¿¡ À¯¿ëÇÒ ¼ö ÀÖ´Ù.

ÀÌ·± °æ¿ì¸¦ À§Çؼ­ ÀÚ¹Ù EE 5 µð½ºÅ©¸³ÅÍ¿¡´Â <¸®½ºÆ® 1>°ú °°ÀÌ metadata-complete¶ó´Â ¼Ó¼ºÀ» true °ªÀ¸·Î ¼¼ÆÃÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ¼³Á¤ÇÏ¸é ¾î³ëÅ×ÀÌ¼Ç Ã³¸®¸¦ ÀüÇô ÇÏÁö ¾Ê°í XML¸¸ ó¸®ÇÏ°Ô µÈ´Ù.

 <¸®½ºÆ® 1> metadata-complete ¼Ó¼º


metadata-complete ¼Ó¼ºÀÇ ±âº» °ªÀº falseÀ̱⠶§¹®¿¡ º¸ÅëÀº ¾î³ëÅ×À̼ǿ¡ ´ëÇÑ Ã³¸®°¡ ¼öÇàµÈ´Ù. ÇÑ °¡Áö ÁÖÀÇÇÒ Á¡ÀÌ ÀÖ´Ù¸é, EJB 2.1°ú °°ÀÌ ±âÁ¸ J2EE 1.4 ¸ðµâÀ» »ç¿ëÇÒ °æ¿ì¿¡´Â ¾î³ëÅ×ÀÌ¼Ç Ã³¸®°¡ ÇÊ¿ä ¾ø±â ¶§¹®¿¡ À̸¦ ó¸®ÇÏÁö ¾Ê´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù.

ÇÏÁö¸¸ À̸¦ ±¸ºÐÇϱâ À§ÇØ WAS¿¡ µû¶ó¼­ µð½ºÅ©¸³ÅÍ¿¡ ÀÖ´Â version attribute °ªÀ» º¸°Ô µÈ´Ù. µû¶ó¼­ <¸®½ºÆ® 2>¿Í °°ÀÌ ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇØ ³õ°í µð½ºÅ©¸³ÅÍ¿¡ versionÀ» ÀÚ¹Ù EE 5 ÀÌÀü ¹öÀüÀ¸·Î ÇØ³õÀ¸¸é ¾î³ëÅ×ÀÌ¼Ç Ã³¸®°¡ µÇÁö ¾ÊÀ» ¼ö ÀÖ´Ù(Á¦Ç°¸¶´Ù ´Ù¸¦ ¼ö ÀÖÀ¸¸ç JEUS 6ÀÇ °æ¿ì ó¸®ÇÏÁö ¾Ê´Â´Ù).

 <¸®½ºÆ® 2> EJB 3.0 ºó¿¡ 2.1¿ë ejb-jar.xml¸¦ »ç¿ëÇÏ´Â °æ¿ì


¸¶Áö¸·À¸·Î, ¾î³ëÅ×À̼ǰú XMLÀ» °°ÀÌ »ç¿ëÇÏ´Â °æ¿ì´Ù. ¾Æ¸¶ ´ëºÎºÐÀÇ ÀϹÝÀûÀÎ ¾ÖÇø®ÄÉÀ̼ǿ¡ ÀûÇÕÇÑ ¹æ¹ýÀÏ °ÍÀÌ´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç »ó¿¡¼­ µðÀÚÀΠŸÀÓ¿¡ °áÁ¤µÇ´Â ºÎºÐ¿¡ ´ëÇØ¼­´Â ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ°í, ½ÇÁ¦ µðÇ÷ÎÀÌ È¯°æ¿¡ µû¶ó ¹Ù²ð ¼ö ÀÖ´Â ºÎºÐÀÇ °æ¿ì XMLÀ» »ç¿ëÇÏ¿© Ç¥±âÇÏ´Â °ÍÀÌ ÁÁ´Ù.

¿¹¸¦ µé¾î, EJB¿Í °°Àº °æ¿ì ÇØ´ç ºóÀÌ Stateless ¼¼¼Ç ºóÀÎÁö Stateful ¼¼¼Ç ºóÀÎÁö´Â ÇØ´ç Ŭ·¡½º µðÀÚÀΠŸÀÓ¿¡ °áÁ¤µÈ´Ù. ºñÁî´Ï½º ¸Þ¼Òµå°¡ CMT(Container-Managed Transaction)¸¦ »ç¿ëÇÒ Áö BMT(Bean-Managed Transaction)¸¦ »ç¿ëÇÒÁöµµ µðÀÚÀΠŸÀÓ¿¡ °áÁ¤µÈ´Ù. µû¶ó¼­ ÀÌ·± ºÎºÐÀº ¾î³ëÅ×À̼ÇÀ¸·Î Ç¥±âÇÏ´Â °ÍÀÌ ÀûÇÕÇÏ´Ù.

ÇÏÁö¸¸ ÇØ´ç ºóÀÌ ½ÇÁ¦·Î ¾î¶² JNDI À̸§À¸·Î ¹ÙÀεù µÉ °ÍÀÎÁö, ±×¸®°í ¸Þ¼Òµå¿¡ ¾î¶² º¸¾È Á¤Ã¥À» ºÎ¿©ÇÒ °ÍÀÎÁö´Â µðÇ÷ÎÀÌ È¯°æ¿¡ µû¶ó ´Þ¶óÁú ¼ö Àֱ⠶§¹®¿¡ ÀÌ´Â XML ¼³Á¤À¸·Î Ç¥±âÇÏ´Â °ÍÀÌ ÀûÇÕÇÏ´Ù.

JPAÀÇ °æ¿ìµµ ÇØ´ç ¿£Æ¼Æ¼ Ŭ·¡½ºÀÇ ¾î¶² Çʵ尡 DB·Î ¸ÅÇÎ µÉ °ÍÀÎÁö³ª ¾î¶² JPQL(Java Persistence Query Language)À» »ç¿ëÇϴ°¡ ¿ª½Ã µðÀÚÀΠŸÀÓ¿¡ °áÁ¤µÇ´Â ¹®Á¦À̹ǷΠ¾î³ëÅ×À̼ÇÀ¸·Î Ç¥±âÇÑ´Ù.

½ÇÁ¦ DB Å×À̺íÀÇ À̸§À̳ª Ä®·³ À̸§ ±×¸®°í Ȥ½Ã DB¿¡ ƯȭµÈ SQLÀ» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â À̸¦ XML¿¡ µî·ÏÇÏ¿© ÄÚµå ¼öÁ¤ ¾øÀÌ º¯°æÇÒ ¼ö ÀÖ°Ô ÇÏ´Â °ÍÀÌ À̽ļº ³ôÀº ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÏ´Â ¹æ¹ýÀÌ´Ù.

  Á¦Ç°¿¡ ƯȭµÈ(vendor-specific) ¾î³ëÅ×À̼Ç

ÀÚ¹Ù EE 5 Ç¥ÁØ ½ºÆåÀÌ Á¤ÀÇµÈ ¾î³ëÅ×À̼ǵéÀº ±× ¹üÀ§°¡ Ç¥ÁØ µð½ºÅ©¸³ÅÍ¿¡¼­ Á¤ÀÇÇÒ ¼ö Àִ ǥÁØ ¼³Á¤¿¡¸¸ ÇÑÁ¤µÇ¾î ÀÖ´Ù. ¾Ë´Ù½ÃÇÇ °¢ WAS´Â Á¦Ç° Ư¼º º°·Î °íÀ¯ÀÇ XML µð½ºÅ©¸³ÅÍ ¼³Á¤ÀÌ ÀÖ´Ù.

±×·¯¸é ÀÌ·± Á¦Ç°º° È®Àå(extensions) ¼³Á¤Àº ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖÀ»±î? ÀÌ°Ç Á¦Ç°¿¡ µû¶ó ´Ù¸£´Ù.

WebLogic Server 10Àº ÀÌ·± È®Àå ¾î³ëÅ×À̼ÇÀ» ÀüÇô Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡ ¿©ÀüÈ÷ ¼³Á¤À» À§ÇØ XML µð½ºÅ©¸³ÅͰ¡ ÇÊ¿äÇÏ´Ù. Á¦¿ì½º 6À̳ª JBossÀÇ °æ¿ì ¸î °¡Áö ¼³Á¤¿¡ ´ëÇØ¼­(¿¹¸¦ µé¾î, @Clustered, @Idempotent¿Í °°Àº Ŭ·¯½ºÅ͸µ ¼³Á¤) ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

ÇÏÁö¸¸, ¸ðµç ¼³Á¤À» ¾î³ëÅ×À̼ÇÀ¸·Î ÇÒ ¼ö ÀÖµµ·Ï Áö¿øÇÏÁö´Â ¾Ê±â ¶§¹®¿¡ ¼¼¹ÐÇÑ ¼³Á¤À» ÇÏ´Â °æ¿ì¿¡´Â XML µð½ºÅ©¸³ÅͰ¡ ¿©ÀüÈ÷ ÇÊ¿äÇÒ °ÍÀÌ´Ù.

JPA ÇÁ·Î¹ÙÀÌ´õ Áß¿¡µµ ÇÏÀ̹ö³×ÀÌÆ®³ª Å鸵ũ(11g ºÎÅÍ)ÀÇ °æ¿ì È®Àå ¾î³ëÅ×À̼ÇÀ» Áö¿øÇÏ¿© Ç¥ÁØ ½ºÆå ÀÌ¿ÜÀÇ È®ÀåµÈ ORM ±â´ÉÀ» »ç¿ëÇÒ ¼ö°¡ ÀÖ´Ù.

vendor-specific ¾î³ëÅ×À̼ÇÀÇ °æ¿ì ÇØ´ç ¾î³ëÅ×ÀÌ¼Ç Å¬·¡½º°¡ ¾ø¾îµµ JVM¿¡¼­´Â À̸¦ ¹«½ÃÇϱ⠶§¹®¿¡ ƯÁ¤ Á¦Ç°ÀÇ ¾î³ëÅ×À̼ÇÀ» ½è´Ù°í ÇØ¼­ ´Ù¸¥ Á¦Ç°¿¡¼­ µ¹¸± ¶§ ClassNotFoundException°ú °°Àº ¿¡·¯´Â ³ªÁö ¾Ê´Â´Ù. °á±¹ ƯÁ¤ Á¦Ç°¿¡ Á¾¼Ó(Lock-in) µÇ´Â ¹®Á¦´Â º°·Î ¾ø´Ù°í º¼ ¼ö ÀÖ´Ù.

Áö±ÝÀº ¾Æ´ÏÁö¸¸, ¾ÕÀ¸·Î °¢ Á¦Ç°µéÀÌ Á¡Á¡ ¾î³ëÅ×À̼ÇÀ» ´õ ¸¹ÀÌ Áö¿øÇÒ °ÍÀ̶ó°í »ý°¢µÈ´Ù. ÀÌ¿¡ µû¶ó XML ¼³Á¤¿¡ ´ëÇÑ Çʿ伺Àº ¸¹ÀÌ ÁÙ¾îµé °ÍÀÌ´Ù.

  ÀÚ¹Ù EE 6¿¡¼­ÀÇ ¾î³ëÅ×ÀÌ¼Ç È°¿ë

ÇöÀç ³íÀǵǰí ÀÖ´Â ÀÚ¹Ù EE 6¿¡´Â Web Beans¿Í EJB 3.1, ÀÚ¹Ù ÆÛ½Ã½ºÅϽº(Java Persistence) 2.0°ú °°Àº ºñÁî´Ï½º ·ÎÁ÷ ·¹À̾î¿Í Servlet 3.0À̳ª JSF 2.0°°Àº ÇÁ¸®Á¨Å×ÀÌ¼Ç ·¹ÀÌ¾î ±â¼úµéÀÌ Æ÷Ç﵃ °ÍÀ¸·Î º¸ÀδÙ.

Áö±ÝºÎÅÍ´Â ÀÌ Áß¿¡¼­ ÇöÀç ¾î´À Á¤µµ ÁøÇàµÇ°í ÀÖ´Â ¿£Æ¼Æ¼Web Beans¿Í EJB 3.1 ±â¼ú¿¡ ´ëÇØ¼­ »ìÆìº¸°í ¾î¶² ½ÄÀ¸·Î ¾î³ëÅ×À̼ÇÀ» Ȱ¿ëÇÏ´ÂÁö »ìÆìº¸ÀÚ.

¿£Æ¼Æ¼Web Beans(JSR 299)´Â JBoss SeamÀ» ¸¸µç °³ºó Å·(Gavin King, ÇÏÀ̹ö³×ÀÌÆ® °³¹ßÀڷεµ À¯¸íÇÑ)ÀÌ ½ÃÀÛÇÑ °ÍÀ¸·Î JSF¿Í EJB 3.0 ÄÄÆ÷³ÍÆ® ±â¼úÀ» ¿¬°áÇÏ´Â ½ºÆåÀÌ´Ù. ±âº»ÀûÀ¸·Î JBoss SeamÀÇ ÄÄÆ÷³ÍÆ® ±â¼úÀ» Ç¥ÁØÈ­Çϱâ À§ÇØ ½ÃÀÛÇÏ¿´Áö¸¸, ÇöÀç´Â ±¸±Û Guice(ÁÖÀ̽º ȤÀº Á꽺·Î ¹ßÀ½ÇÑ´Ù) Áø¿µÀÇ Âü¿©·Î Á» ´õ ÀϹÝÀûÀÎ ÄÄÆ÷³ÍÆ® ±â¼ú·Î ³íÀǰ¡ ÁøÇà µÇ°í ÀÖ´Ù. ¿£Æ¼Æ¼ Web Beans¸¦ »ìÆìº¸±â À§Çؼ­´Â ÀÌ ±â¼úÀÇ ±âº» ¹è°æÀÎ Seam ±â¼ú¿¡ ´ëÇØ ¸ÕÀú ÀÌÇØÇÒ Çʿ䰡 ÀÖÀ» µíÇÏ´Ù.

JBoss Seam
SeamÀº JSF°¡ ºñÁî´Ï½º ·ÎÁ÷À» ´ã´çÇÏ´Â ºÎºÐÀ» POJO(Plain-Old Java Object) Managed Bean(ȤÀº Backing Bean)À¸·Î ó¸®ÇÑ´Ù. °á±¹ DB¿Í °°Àº Æ®·£Àè¼ÇÇÑ ¸®¼Ò½º´Â EJB ºóÀ¸·Î ó¸®ÇÏ´Â °Í¿¡ Âø¾ÈÇÏ¿© Áߺ¹µÈ Äڵ带 ÁÙÀ̰í EJB ºóÀ» ¾Æ¿¹ JSFÀÇ Managed Bean ¿ªÇҷΠȰ¿ëÇϰíÀÚ ÇÏ´Â ¾ÆÀ̵ð¾î¿¡¼­ Ãâ¹ßÇÏ¿´´Ù.

»ç½Ç ÀÌÁ¦ EJB ºóÀº JSFÀÇ Managed Beanó·³ POJO ÇüÅ·Π¸¸µé ¼ö ÀÖÀ¸¹Ç·Î ±¸Çö»ó º° Â÷À̰¡ ¾ø´Ù.

¶Ç, CMT(Container-Managed Transaction)¸¦ Áö¿øÇϱ⠶§¹®¿¡ DB¸¦ ´Ù·ç´Â Æ®·£Àè¼Ç Äڵ带 ½±°Ô ÀÛ¼ºÇÒ ¼ö°¡ ÀÖÀ¸¸ç, JSF¿Í ´Þ¸® ¾î³ëÅ×ÀÌ¼Ç Áß½ÉÀ¸·Î ºóÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ÀÎÅͼÁÅÍ¿Í °°Àº AOP °³³äÀ» Àû¿ëÇÒ ¼öµµ Àֱ⠶§¹®¿¡ ¿©·¯ °¡Áö Ãø¸é¿¡¼­ Ȱ¿ë°¡´É¼ºÀÌ ´õ ³ô´Ù.

µû¶ó¼­ SeamÀº EJB Stateless ¼¼¼Ç ºó°ú Stateful ¼¼¼Ç ºó ±×¸®°í JPA ¿£Æ¼Æ¼ ºóÀ» ¹Ù·Î JSF Managed BeanÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. ±×·¡¼­ µ¥ÀÌÅÍ¿¡ ÇØ´çÇÏ´Â ºÎºÐÀº POJO ¿£Æ¼Æ¼ ºóÀ¸·Î ¼¼ÆÃÇØ ³õ°í ÀÖ´Ù°¡ ¾î¶² ¾×¼ÇÀÌ µé¾î¿À¸é ¼¼¼Ç ºóÀ» ÅëÇØ DB¿Í µ¿±âÈ­ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ°Ô µÈ´Ù.

¶ÇÇÑ, SeamÀº ÀüÅëÀûÀÎ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¸ÖƼ-À©µµ¿ì(Multi-window) ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ÄÁÅØ½ºÆ®¿¡ ±â¹ÝÇÑ ÇÁ·Î±×·¡¹Ö ¸ðµ¨(Contextual Programming Model)¿¡ ±â¹ÝÇϰí ÀÖ´Ù. ¿¹¸¦ µé¾î, ¾î¶² »ç¿ëÀÚ°¡ ¼îÇθô¿¡¼­ ÁÖ¹®À» Çϴµ¥ ¿©·¯ À©µµ¿ì¸¦ ¿­¾î³õ°í µ¿½Ã¿¡ ¿©·¯ »óǰÀ» ÁÖ¹®ÇÏ´Â »óȲÀ» »ý°¢Çغ¸ÀÚ.

ÁÖ¹®ÀÌ ¿©·¯ ÆäÀÌÁö¿¡ °ÉÃÄ ÀÖ´Ù°í ÇÑ´Ù¸é º¸ÅëÀº °¢ ÁÖ¹®¿¡ °ü·ÃµÈ Áß°£ µ¥ÀÌÅÍ(»óǰÀ̳ª ½Å¿ëÄ«µå Á¤º¸ µî)¸¦ ¼¼¼Ç(HttpSession)¿¡ ÀúÀåÇÒ °ÍÀÌ´Ù.

¹®Á¦´Â ¿©·¯ À©µµ¿ì´Â °°Àº ¼¼¼ÇÀ» »ç¿ëÇϱ⠶§¹®¿¡ µ¿½Ã¿¡ ÁÖ¹®ÀÌ ÀϾ¸é µ¥ÀÌÅͰ¡ ¼­·Î ¾ûÄѼ­ ÁÖ¹®ÀÌ ÀÌ»óÇÏ°Ô µÉ ¼ö°¡ ÀÖ´Ù´Â µ¥ ÀÖ´Ù. ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é °¢ ÁÖ¹®Àº µ¶¸³ÀûÀÎ conversationÀ¸·Î ´Ù·ç¾î¾ß ÇÑ´Ù.

ÀÌ·± »óȲÀº ¼îÇθôÀÌ ¾Æ´Ï´õ¶óµµ ¾î¶² À¥ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­µµ ºñ½ÁÇÏ°Ô ÀϾ ¼ö ÀÖ´Â ½Ã³ª¸®¿ÀÀÌ´Ù. Seam¿¡¼­´Â ¼¼¼Ç scopeº¸´Ù ´õ ÀÛÀº °³³äÀÇ conversation scope¸¦ Á¦°øÇϸç ÀÌ·¯ÇÑ ÄÁÅØ½ºÆ® scope¸¦ °ü¸®ÇØ ÁØ´Ù.

¶ÇÇÑ, SeamÀº ÀÚ¹Ù EE 5¿Í ¸¹Àº IoC ÄÁÅ×À̳ʿ¡¼­ Á¦°øÇϰí ÀÖ´Â ÀÎÁ§¼Ç(Dependency Injection) º¸´Ù Á» ´õ È®ÀåµÈ µ¿Àû ¹ÙÀÌÁ§¼Ç(Bijection)À̶ó´Â Ư¡À» Á¦°øÇÑ´Ù. ¹ÙÀÌÁ§¼ÇÀº ÀÎÁ§¼Ç(Injection)°ú ¾Æ¿ôÁ§¼Ç(Outjection)À» Æ÷°ýÇÑ ¸»·Î ¾ç¹æÇ⼺ Ư¼ºÀÌ ÀÖ´Ù.

ÀÌ´Â ÇöÀç ÄÁÅØ½ºÆ®¿¡¼­ ºóÀ» È£ÃâÇϱâ Àü¿¡ º¯¼ö¿¡ ÀÎÁ§¼ÇÀ» ÇØÁÖ°í, È£Ãâ ÈÄ¿¡´Â ÇØ´ç º¯¼ö¸¦ ´Ù½Ã ÄÁÅØ½ºÆ®¿¡ ´Ù½Ã ¹ÙÀεù ÇØÁÖ°Ô µÇ¾î Á» ´õ ´Ü¼øÇÏ°Ô ÄÁÅØ½ºÆ®¿¡ ±â¹ÝÇÑ ÇÁ·Î±×·¥À» ÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. Seam¿¡ ´ëÇÑ ÀÌÇØ¸¦ Á» ´õ ³ôÀ̱â À§ÇÑ ¿¹Á¦·Î <¸®½ºÆ® 3>À» »ìÆìº¸ÀÚ.

 <¸®½ºÆ® 3> Seam ºó Ŭ·¡½º ¿¹Á¦


<¸®½ºÆ® 3>Àº Seam¿¡ Æ÷ÇԵǾî Àִ ȣÅÚ ¿¹¾à ¿¹Á¦ ÇÁ·Î±×·¥ÀÇ ÀϺÎÀÌ´Ù. HotelBookingAction Ŭ·¡½º´Â EJB Stateful ¼¼¼Ç ºóÀε¥, ¹Ù·Î conversation »óŸ¦ °ü¸®ÇÏ´Â Seam ºóÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. SeamÀº EJB 3.0¿¡¼­ Á¤ÀÇÇÑ ¾î³ëÅ×ÀÌ¼Ç À̿ܿ¡ SeamÀÇ ºóÀ¸·Î Ȱ¿ëÇϱâ À§Çؼ­ ¿©·¯ ¾î³ëÅ×À̼ÇÀ» Á¤ÀÇÇØ ³õ¾Ò´Ù.

(1)ÀÇ @NameÀº ÇØ´ç ÄÄÆ÷³ÍÆ®¸¦ SeamÀÇ ºóÀ¸·Î ¸í½ÃÇϸ鼭 °íÀ¯ À̸§À» ÇÒ´çÇϱâ À§ÇÑ °ÍÀÌ´Ù. ÀÌ À̸§À» ÀÌ¿ëÇÏ¿© JSF ÆäÀÌÁö¿¡¼­ ELÀ» ÅëÇØ ´ÙÀ½°ú °°ÀÌ ºó¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.

<h:commandButton id="bookHotel" action="#{hotelBooking.bookHotel}" />

(2)ÀÇ @InÀº µ¿Àû ÀÎÁ§¼ÇÀ» ÅëÇØ ´Ù¸¥ ÄÄÆ÷³ÍÆ®¸¦ ¼¼¼Ç ÄÁÅØ½ºÆ®¿¡¼­ ¾ò¾î¿À´Â °ÍÀÌ´Ù. ¿©±â¼­ User, Hotel, BookingÀº JPA ¿£Æ¼Æ¼ ºóÀ¸·Î DB¿¡ ÇØ´çÇÏ´Â °´Ã¼ µµ¸ÞÀÎ ¸ðµ¨À» ³ªÅ¸³½´Ù. Seam¿¡¼­´Â ¿£Æ¼Æ¼ ºóÀ» Seam ºóÀ¸·Î ¹Ù·Î ¾µ ¼ö Àֱ⠶§¹®¿¡ º°µµÀÇ ºóÀ» ¸¸µé Çʿ䰡 ¾ø¾îÁ³´Ù.

°¢°¢ ¡®user¡¯, ¡®hotel¡¯, ¡®booking¡¯À̶ó´Â À̸§À¸·Î ÇöÀç ÄÁÅØ½ºÆ®¿¡¼­ ¾ò¾î¿Í ÇØ´ç Çʵ忡 ÀÎÁ§¼ÇÀ» ÇØÁÖ°Ô µÇ¹Ç·Î À̸¦ ¾ò¾î¿À±â À§ÇØ º°µµÀÇ ÄÚµùÀ» ÇÒ Çʿ䰡 ¾ø´Ù.

hotel°ú booking Çʵå´Â (3)ÀÇ @OutÀ̶ó´Â ¾Æ¿ôÁ§¼Ç ¾î³ëÅ×À̼ǵµ °¡Áö°í Àִµ¥ ÀÌ´Â ÇØ´ç Çʵ带 ¸Þ¼Òµå È£Ãâ ÈÄ¿¡ ´Ù½Ã ÇöÀç conversation ÄÁÅØ½ºÆ®¿¡ ¹ÙÀεù ÇÏ°Ô µÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌ·± ½ÄÀ¸·Î ºóÀº Á» ´õ ÄÁÅØ½ºÆ® Áß½ÉÀûÀÎ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö°¡ ÀÖÀ¸¸é¼­ ¹ÙÀÌÁ§¼ÇÀ» ´öÅÃÀ¸·Î ÄÁÅØ½ºÆ®¿¡¼­ °ªÀ» ¾ò¾î¿À°Å³ª ¼¼ÆÃÇÏ´Â Äڵ带 ÁÙ¿©ÁØ´Ù.

(4)ÀÇ selectHotel() ¸Þ¼Òµå´Â @BeginÀ» °¡Áö°í Àִµ¥, ÀÌ´Â »õ·Î¿î conversationÀ» ½ÃÀÛ½ÃŲ´Ù. ¹Ý´ë·Î (5)ÀÇ @End´Â ÇØ´ç conversationÀ» Á¾·á½ÃŲ´Ù.

conversationÀº º°µµÀÇ Å¸ÀӾƿô °ªÀ» °¡Áö°í À־ ¾î´À Á¤µµ ½Ã°£ÀÌ Áö³ª¸é ÀÚµ¿À¸·Î »èÁ¦µÇ±â ¶§¹®¿¡ ºê¶ó¿ìÀú¸¦ ±×³É ´Ý°Å³ª ÇÏ´Â µîÀÇ ºñÁ¤»óÀûÀÎ Á¾·á°¡ ÀÖ´õ¶óµµ ¸Þ¸ð¸®¸¦ °è¼Ó Áõ°¡½ÃŰÁö´Â ¾Ê´Â´Ù.

¹°·Ð SeamÀº ÀÏ¹Ý JavaBean Çüŵµ Áö¿øÇϱ⠶§¹®¿¡ À§ ºóÀ» ¹Ýµå½Ã Stateful ¼¼¼Ç ºóÀ¸·Î ¸¸µéÁö ¾Ê¾Æµµ µÈ´Ù. ÇÏÁö¸¸, EJB´Â ÄÁÅ×À̳ʿ¡¼­ Æ®·£Àè¼ÇÀ» °ü¸®ÇØ ÁÖ´Â ±â´É(CMT)ÀÌ Àֱ⠶§¹®¿¡ º°µµÀÇ Æ®·£Àè¼Ç ÄÚµå ¾øÀ̵µ DB¿Í µ¿±âÈ­¸¦ À§ÇÑ JPA Äڵ带 ½±°Ô ±¸ÇöÇÒ ¼ö ÀÖ°Ô µÈ´Ù.

¸¸¾à EJB°¡ ¾Æ´Ï¾ú´Ù¸é ÇØ´ç ºóÀº ·ÎÁ÷°ú °ü°è¾ø´Â ¸¹Àº Æ®·£Àè¼Ç Äڵ带 °¡Áö°í ÀÖ¾úÀ» °ÍÀÌ´Ù. ÀÌ·± ÀÌÀ¯·Î Seam¿¡¼­´Â stateful ¼¼¼Ç ºó°ú ¿£Æ¼Æ¼ ºóÀ» ¸¹ÀÌ »ç¿ëÇÏ°Ô µÈ´Ù.

Seam¿¡ ´ëÇØ¼­´Â ÀÌ Á¤µµ·Î ´Ù·ç±â·Î Çϰí Á» ´õ ÀÚ¼¼ÇÑ ³»¿ëÀ» ¾Ë°í ½ÍÀº µ¶ÀÚ´Â Seam Æ©Å丮¾óÀ» »ìÆìº¸±æ ¹Ù¶õ´Ù.

Web Beans
Web Beans´Â SeamÀÇ ÄÄÆ÷³ÍÆ® ¸ðµ¨¿¡ ±â¹ÝÀ» µÎ°í ÀÖÁö¸¸ ±¸±Û GuiceÀÇ ÀåÁ¡À» ¸¹ÀÌ ¼ö¿ëÇϰí ÀÖ´Ù. Áï, Guiceó·³ ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ¿© ´Ù¾çÇÑ scopeÀ» Á¤ÀÇÇÒ ¼ö ÀÖ°í ÇϳªÀÇ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇØ ¿©·¯ °³ÀÇ ±¸Çö Ŭ·¡½º¸¦ °¡Áú ¼öµµ À־ »óȲ¿¡ ¸Â°Ô ÀÎÁ§¼Ç ÇØÁÖ´Â µîÀÇ À¯»çÇÑ Æ¯Â¡À» °¡Áö°í ÀÖ´Ù(Web Beans JSR¿¡ Guice °³¹ßÀÚ°¡ ÁÖµµÀûÀ¸·Î Âü¿©Çϰí ÀÖÀ½).

Âü°í·Î JSR 299´Â ¾ÆÁ÷ Early Draft ÀÌÀü´Ü°è·Î ¿©±â¼­ ¾ð±ÞÇÑ ³»¿ëÀº ¾ó¸¶µçÁö ÃßÈÄ¿¡ ¹Ù²ð ¼ö ÀÖ´Ù(ÁÁÀº ÀǰßÀÌ ÀÖ´Ù¸é ¾ðÁ¦µçÁö ÇÊÀÚ¿¡°Ô Çǵå¹éÀ» ÁÖ¸é ½ºÆå ³íÀÇ »ó¿¡ ÃæºÐÈ÷ °í·ÁÇϰڴÙ).

Web Beans´Â Seamó·³ ¾î³ëÅ×À̼ÇÀ» ÅëÇØ ÄÄÆ÷³ÍÆ®¸¦ Á¤ÀÇÇÏ°Ô µÈ´Ù. ¿¹¸¦ µé¾î <¸®½ºÆ® 4>¿Í °°ÀÌ ÀÏ¹Ý JavaBeanÀ̳ª EJB ºóÀ» @Component¸¦ ÅëÇØ ÄÄÆ÷³ÍÆ®·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

 <¸®½ºÆ® 4> Web Bean ÄÄÆ÷³ÍÆ®


ÄÄÆ÷³ÍÆ®´Â ÇØ´ç ÄÄÆ÷³ÍÆ®¿¡ Á¢±ÙÇϱâ À§ÇÑ ÀÎÅÍÆäÀ̽º¸¦ °¡Áö´Âµ¥ À̸¦ ÅëÇØ ½ÇÁ¦ »ç¿ëµÉ ÄÄÆ÷³ÍÆ® Ŭ·¡½º¸¦ °áÁ¤ÇÏ°Ô µÈ´Ù. ÀÎÁ§¼ÇÀº ´ÙÀ½°ú °°ÀÌ ¼öÇàÇϸç ÇØ´ç ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ÄÄÆ÷³ÍÆ® Ŭ·¡½ºÀÇ ÀνºÅϽº°¡ ÀÎÁ§¼Ç µÈ´Ù(ÀÚ¹Ù EE 5ÀÇ ÀÎÁ§¼Ç°ú À¯»çÇÏÁö¸¸ ¾Õ¼­ ¸»ÇÑ Seam°ú °°ÀÌ ¸Þ¼Òµå È£Ãâ Àü¿¡ µ¿ÀûÀ¸·Î ÀÎÁ§¼ÇÀÌ ÀÌ·ç¾îÁø´Ù).

@In PaymentProcessor paymentProcessor;

Seam°ú ´Þ¸® Web Beans´Â ÇϳªÀÇ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ¿©·¯ °³ÀÇ ÄÄÆ÷³ÍÆ® ±¸Çö Ŭ·¡½º¸¦ Áö¿øÇϱâ À§ÇØ ¹ÙÀεù ¾î³ëÅ×À̼Ç(Binding Annotation)À̶ó´Â GuiceÀÇ °³³äÀ» µµÀÔÇÏ¿´´Ù. Áï, ´ÙÀ½°ú °°ÀÌ @BindingTypeÀ¸·Î ¾î³ëÅ×À̼ÇÀ» Á¤ÀÇÇÒ ¼ö Àִµ¥ À̸¦ ÄÄÆ÷³ÍÆ®¿Í ÀÎÁ§¼Ç µÇ´Â Çʵ忡 »ç¿ëÇÒ ¼ö ÀÖ´Ù.

@BindingType
@Retention(RUNTIME)
@Target({TYPE, FIELD, METHOD})
public @interface Synchronous {}

Á¤ÀÇµÈ ¾î³ëÅ×À̼ÇÀ» ´ÙÀ½°ú °°ÀÌ ½ÇÁ¦ ÄÄÆ÷³ÍÆ®¿¡ ¹ÙÀεù ¾î³ëÅ×À̼ÇÀ¸·Î ÁöÁ¤ÇÏ°Ô µÈ´Ù.

@Synchronous @Component
public class SynchronousPaymentProcessorImpl implements PaymentProcessor { ... }

±×·¯¸é, °á±¹ ´ÙÀ½°ú °°ÀÌ ¹ÙÀεù ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ¿© ¿øÇϴ ŸÀÔÀÇ ÄÄÆ÷³ÍÆ®¸¦ ÀÎÁ§¼ÇÇÒ ¼ö°¡ ÀÖ°Ô µÈ´Ù.

@In @Synchronous PaymentProcessor paymentProcessor;
@In @Asynchronous PaymentProcessor paymentProcessor;

¾Õ¼­ @Named("loginAction")¸¦ »ç¿ëÇÏ¿© ÄÄÆ÷³ÍÆ®¸¦ Á¤ÀÇÇÏ¿´´Âµ¥ À̴ Ư¼öÇÑ ÇüÅÂÀÇ ¹ÙÀεù ¾î³ëÅ×À̼ÇÀÌ´Ù. ÁÖ·Î ´ÙÀ½°ú °°ÀÌ Å¸ÀÔ ±â¹ÝÀÌ ¾Æ´Ñ EL°ú °°Àº À̸§ ±â¹ÝÀÇ È¯°æ¿¡¼­ ÄÄÆ÷³ÍÆ®¸¦ Âü°íÇÒ ¶§ »ç¿ëµÈ´Ù.

<h:commandButton value="#{loginAction.login}"/>

Seam¿¡¼­´Â Ç×»ó ÄÄÆ÷³ÍÆ®°¡ À̸§À» ÅëÇØ¼­¸¸ Á¢±ÙÇÒ ¼ö ÀÖ¾ú´Ù(ELÀ̵ç Àڹ٠Ŭ·¡½º¿¡¼­µç). Web Beans¿¡¼­´Â ÀÌ »Ó¸¸ ¾Æ´Ï¶ó ¾î³ëÅ×À̼ÇÀ» Ȱ¿ëÇÏ¿© Guice¿Í ¸¶Âù°¡Áö·Î ŸÀÔ ±â¹Ý ÀÎÁ§¼Çµµ Áö¿øÇÏ°í µ¿ÀÏÇÑ ÀÎÅÍÆäÀ̽ºÀÇ ¿©·¯ ±¸Çö Ŭ·¡½º¸¦ Áö¿øÇÏ´Â µî Á» ´õ À¯¿¬ÇÑ ÄÄÆ÷³ÍÆ® »ç¿ë ȯ°æÀ» Á¦°øÇÑ´Ù.

Seam°ú ´Ù¸¥ Web BeansÀÇ ¶Ç ´Ù¸¥ Ư¡Àº ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÏ¿© »ç¿ëÀÚ Á¤Àǰ¡ °¡´ÉÇÑ custom scope¸¦ Áö¿øÇÑ´Ù´Â °ÍÀÌ´Ù.

¹ÙÀεù¾î³ëÅ×À̼ÇÀÌ ¾î¶² ÄÄÆ÷³ÍÆ® ±¸Çö Ŭ·¡½º¸¦ »ç¿ëÇÒ Áö¸¦ °áÁ¤ÇÏ´Â ¸ÅÄ¿´ÏÁòÀ̶ó¸é scopeÀº ÇØ´ç Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¾î¶² ¹üÀ§¿¡¼­ °øÀ¯ÇÒ °ÍÀΰ¡¸¦ °áÁ¤ÇÏ´Â ¸ÞÄ¿´ÏÁò°ú °ü·ÃµÇ¾î ÀÖ´Ù. ÀÌ¹Ì ¾Õ¿¡¼­ Seam¿¡¼­´Â ÄÁÅØ½ºÆ®¿¡ ±â¹ÝÇÑ ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» À§Çؼ­ Conversation scope¸¦ Æ÷ÇÔÇÏ¿© ´Ù¾çÇÑ scopeÀ» Áö¿øÇÑ´Ù°í Çß´Ù.

Web Beans ¿ª½Ã ±âº»ÀûÀ¸·Î no scope¿Í request, session, conversation, application(singleton) scopeÀ» Áö¿øÇÑ´Ù. ¶ÇÇÑ »ç¿ëÀÚ Á¤Àǰ¡ °¡´ÉÇÑ custom scopeÀ» Áö¿øÇϱ⠶§¹®¿¡ º¹ÀâÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ̳ª »õ·Î¿î ÇÁ·¹ÀÓ¿öÅ©¿¡ È®À强À» Á¦°øÇÑ´Ù.

¿¹¸¦ µé¾î, BPM°ú °°Àº ¿µ¿ª¿¡¼­´Â ÇϳªÀÇ process¿¡ ÇØ´ç ÇÏ´Â ¿À·¡ Áö¼ÓµÇ´Â scopeÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ¶Ç, Æ®·£Àè¼Ç ±â¹Ý ¾ÖÇø®ÄÉÀ̼ǿ¡¼­´Â ÇϳªÀÇ Æ®·£Àè¼Ç¿¡ ¹ÙÀεù µÇ´Â transaction scope°ú °°Àº °Íµµ Á¤ÀÇÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

¿¹¸¦ µé¾î, ´ÙÀ½°ú °°ÀÌ ÀÌ¹Ì Á¤ÀÇµÈ conversationscopeÀ» »ç¿ëÇÏ¸é º°µµÀÇ ÄÚµå ¾øÀÌ ÇØ´ç scope ¾È¿¡¼­ ÇϳªÀÇ ÀνºÅϽº¸¸ À¯ÁöÇÏ¿© conversation »óŸ¦ °ü¸®ÇÏ°Ô µÈ´Ù.

@Component @ConversationScoped
public class PaymentProcessorImpl implements PaymentProcessor { ... }

ȤÀº, ´ÙÀ½°ú °°ÀÌ custom scopeÀ» Á¤ÀÇÇÒ ¼öµµ ÀÖ´Ù. À̶§´Â Context API¸¦ »ç¿ëÇÏ¿© Á÷Á¢ scopeÀ» ½ÃÀÛ/Á¾·á ÇÏ°Ô µÈ´Ù(¾Æ¸¶ Web Beans ±â¹Ý Á¦ 3ÀÇ ÇÁ·¹ÀÓ¿öÅ©¿¡ À¯¿ëÇÑ ±â´ÉÀÌ µÉ µíÇÏ´Ù).

@ScopeType ...
public @interface TransactionScoped {}

@Component @TransactionScoped
public class TransactionScopeProcessorImpl implements Processor { ... }

Áö±Ý±îÁö »ìÆìº» Web Beans´Â ÇöÀç Ãʱâ´Ü°èÀÌ¸ç ¾ÕÀ¸·Î °è¼Ó Èï¹Ì·Î¿î ³»¿ëµéÀÌ Ãß°¡µÉ °ÍÀÌ´Ù. ÀÌ´Â µû·Î µû·Î ¹ßÀüÇÏ´ø À¥ ±â¼ú°ú EJB ±â¼úÀÇ ´ëÅëÇÕ(?)À» À§ÇÑ ¹Ø°Å¸§À» Á¦°øÇÑ´Ù´Â Á¡¿¡¼­ ÁÖ¸ñÇÒ ¸¸ÇÑ Áß¿ä ±â¼úÀÌ µÉ °ÍÀ¸·Î ¿¹»óµÈ´Ù.

EJB 3.1
EJB 3.0¿¡¼­´Â °³¹ßÀÇ ÆíÀǼºÀ» Çâ»ó½Ã۱â À§Çؼ­ ¾î³ëÅ×À̼ÇÀ» µµÀÔÇÏ´Â µî ¸¹Àº °³¼±ÀÌ ÀÖ¾ú´Ù. EJB 3.1Àº ÀÌ¿¡ ´õÇØ¼­ À¥ ȯ°æ¿¡¼­ EJB¸¦ »ç¿ëÇϱ⠽±°Ô ÇÏÀÚ´Â µî ´ÙÀ½°ú °°Àº °³¼±¾ÈÀ» °¡Áö°í Áغñ ÁßÀÌ´Ù.

¡Ü ºñÁî´Ï½º ÀÎÅÍÆäÀ̽º ¾ø´Â ·ÎÄà ºó
¡Ü WAR ¾È¿¡ EJB¸¦ ÆÐŰ¡ÇÏ´Â ±â´É
¡Ü ½Ì±ÛÅÏ(singleton) ºó
¡Ü ºóÀÌ ÄÁÄ¿·±½Ã¸¦ °ü¸®ÇÏ´Â ±â´É(Bean-managed concurrency) µîÀÇ ¿©·¯ °¡Áö ÄÁÄ¿·±½Ã ¿É¼Ç
¡Ü Å©·Ð(cron) ½ºÅ¸ÀÏÀÇ Å¸ÀÌ¸Ó ¼­ºñ½º
¡Ü ºñµ¿±â(Asynchronous) ¸Þ¼Òµå Áö¿ø

¾ÕÀÇ ¼¼ °¡Áö °³¼±»çÇ×Àº Seam°ú °°Àº À¥ ±â¹Ý ÄÄÆ÷³ÍÆ® ±â¼ú¿¡¼­ EJB¸¦ »ç¿ëÇϸ鼭 Çʿ伺ÀÌ Áõ´ëµÇ¾ú´Ù. »ç½Ç, À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ °æ¿ì ÁÖ·Î ELÀ» ÅëÇØ ºóÀ» Á¢±ÙÇϹǷΠº°µµÀÇ ÀÎÅÍÆäÀ̽º°¡ ÇÊ¿äÇÏÁö ¾Ê´Ù. ¶§¹®¿¡ EJB ºóµµ ÀÌ¿¡ ¸ÂÃß¾î º°µµÀÇ ÀÎÅÍÆäÀ̽º¸¦ ¸¸µé Çʿ䰡 ¾ø´Ù¸é ÁÁÀ» °ÍÀÌ´Ù(ÀÌ¹Ì JPA ¿£Æ¼Æ¼ ºóÀº ÀÎÅÍÆäÀ̽º°¡ ÇÊ¿ä ¾ø´Ù).

¶ÇÇÑ, SeamÀ̳ª Web Beans¿Í °°Àº À¥ ¾ÖÇø®ÄÉÀÌ¼Ç È¯°æ¿¡¼­ EJB ºóÀ» »ç¿ëÇÏ´Â °æ¿ì ±»ÀÌ EJB¸¦ º°µµÀÇ ¸ðµâ·Î ÆÐŰ¡Çϰí À̸¦ ´Ù½Ã EAR·Î ÆÐŰ¡ÇÏ´Â °ÍÀº ¶Ç ÇϳªÀÇ ºÒÇÊ¿äÇÑ º¹ÀâÇÑ °úÁ¤ÀÌ´Ù. ´ë½Å¿¡ À̸¦ WAR ¾È¿¡ °°ÀÌ ³ÖÀ» ¼ö ÀÖ´Ù¸é ÆÐŰ¡ÀÌ Á» ´õ ´Ü¼øÇØ Áú °ÍÀÌ´Ù.

¶ÇÇÑ, ½Ì±ÛÅÏ ºóÀº ½Ì±ÛÅÏ scope(Web Beans¿¡¼­´Â application scope)¸¦ °¡Áö´Â ºóÀ» ÇÊ¿ä·Î ÇÏ´Â °æ¿ì¿¡ À¯¿ëÇÑ ±â´ÉÀÌ µÉ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ·± °æ¿ì¿¡ ±»ÀÌ ±âÁ¸ EJB ºóó·³ Ç®¸µÀ» ÇÒ Çʿ䰡 ¾ø´Ù. ½Ì±ÛÅÏ ºóÀº µ¿½Ã¿¡ ¿©·¯ Ŭ¶óÀÌ¾ðÆ®°¡ Á¢±ÙÇÒ °æ¿ì ÄÁÄ¿·±½Ã ÄÁÆ®·ÑÀ» ¾î¶»°Ô ÇÒ °ÍÀ̳Ĵ ¹®Á¦°¡ ÀÖ´Ù.

À̸¦ À§Çؼ­ <¸®½ºÆ® 5>¿Í °°ÀÌ @ReadOnly, @ReadWrite¿Í °°Àº ÄÁÄ¿·±½Ã ¾î³ëÅ×À̼ÇÀ» Á¤ÀÇÇÏ¿© ÄÁÅ×À̳ʰ¡ Read/Write ¶ô(lock)À» ÅëÇØ ÄÁÄ¿·±½Ã¸¦ ÄÁÆ®·Ñ ÇØÁÖµµ·Ï ÇÑ´Ù.

 <¸®½ºÆ® 5> ½Ì±ÛÅÏ ºó


¶ÇÇÑ, ÄÁÅ×À̳ʿ¡°Ô ±»ÀÌ ÄÁÄ¿·±½Ã ÄÁÆ®·ÑÀ» ¸Ã±â°í ½ÍÁö ¾ÊÀº °æ¿ì¸¦ À§ÇØ @BeanManagedConcurrency¿Í ¾î³ëÅ×À̼ÇÀ» ÅëÇØ À̸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Â ±â´Éµµ Á¦°øÇÑ´Ù.

Àç¹ÌÀÖ´Â °ÍÀº ´Ù¾çÇÑ ºñµ¿±â ¹æ½ÄÀ» Áö¿øÇϱâ À§ÇÑ °³¼±¾Èµµ ÀÖ´Ù´Â »ç½ÇÀÌ´Ù. EJB´Â ±âÁ¸ºÎÅÍ Å¸ÀÌ¸Ó ¼­ºñ½º¸¦ Áö¿øÇÏ¿© Statelsss ¼¼¼Ç ºóÀ̳ª MDBÀÇ °æ¿ì ÀÏÁ¤ ½Ã°£¸¶´Ù ¸Þ¼Òµå°¡ È£ÃâµÇ°Ô ÇÒ ¼ö ÀÖ¾ú´Ù.

ÇÏÁö¸¸ ÀÌ´Â µðÇ÷ÎÀ̰¡ µÇ¸é ½ÃÀ۵Ǵ °ÍÀÌ ¾Æ´Ï¶ó ¾î¶² API¸¦ ÅëÇØ Á÷Á¢ ½ÃÀÛ½ÃÄÑ¾ß ÇÏ´Â ºÒÆíÇÔÀÌ À־ Å©·Ð(cron) ½ºÅ¸ÀÏÀÇ ÁÖ±âÀûÀΠŸÀÌ¸Ó ÀÛ¾÷À» ¼öÇà½ÃŰ±â¿¡´Â ºÎÁ·ÇÏ¿´´Ù. À̸¦ <¸®½ºÆ® 6>ó·³ Å©·Ð ÀÛ¾÷°ú °°ÀÌ ¼±¾ðÀûÀ¸·Î Á¤ÀÇÇÏ¿© ŸÀÌ¸Ó ÀÛ¾÷À» ¼öÇà½Ãų ¼ö ÀÖ´Â ±â´ÉÀÌ °í·ÁµÇ°í ÀÖ´Ù.

 <¸®½ºÆ® 6> Å©·Ð ½ºÅ¸ÀÏ Å¸ÀÌ¸Ó ºó


¶Ç ´Ù¸¥ ¹æ½ÄÀ¸·Î <¸®½ºÆ® 7>¿Í °°ÀÌ ¸Þ¼Òµå È£Ãâ ÀÚü¸¦ ºñµ¿±â È£ÃâÀÌ µÇµµ·Ï ÇÏ´Â ±â´Éµµ °í·ÁµÇ°í ÀÖ´Ù.

 <¸®½ºÆ® 7> ºñµ¿±â ¸Þ¼Òµå¸¦ °¡Áö´Â ºó


JSR 303 Beans Validation
¾î³ëÅ×À̼ÇÀ» ÀÌ¿ëÇÑ ¶Ç ÇϳªÀÇ Àç¹ÌÀÖ´Â ÀÀ¿ëÀº JSR 303¿¡¼­ ³íÀǵǰí ÀÖ´Â validation ¸ÞŸµ¥ÀÌÅÍ´Ù. JSR 303 Beans Validation ½ºÆåÀº <¸®½ºÆ® 8>¿¡¼­ º¸µíÀÌ ÀÚ¹Ù ±âº» ŸÀÔ¿¡ ¾î¶² Á¦¾à»çÇ×(constraint)À» °¡ÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Â °øÅë validation ¸ÞŸµ¥ÀÌÅ͸¦ Á¤ÀÇÇÑ´Ù.

À̹Ì, ÇÏÀ̹ö³×ÀÌÆ®¿¡¼­´Â ÀÌ·± ÇüÅÂÀÇ ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÒ ¼ö°¡ ÀÖ¾ú´Âµ¥(Hibernate Validator) À̸¦ Á» ´õ Ç¥ÁØÈ­ ÇÏ¿© ÀϹÝÀûÀÎ JavaBean°ú JPA¿Í °°Àº °÷¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀÌ JSR 303ÀÌ Ãß±¸ÇÏ´Â ¹æÇâÀÌ´Ù. JSR 303ÀÌ ¿Ï·áµÇ¸é JPA 2.0¿¡¼­ À̸¦ äÅÃÇÒ °ÍÀ¸·Î º¸ÀδÙ.

 <¸®½ºÆ® 8> Bean ValidationÀ» Àû¿ëÇÑ ¿£Æ¼Æ¼ ºó


¸¸¾à <¸®½ºÆ® 8>¿¡¼­ Á¦¾à»çÇ×À» XML ¸ÞŸµ¥ÀÌÅÍ·Î Á¤ÀÇÇϰíÀÚ Çß´Ù¸é ±²ÀåÈ÷ ºÒÆíÇϰí ÄÚµåÀÇ °¡µ¶¼ºµµ ¶³¾îÁ³À» °ÍÀÌ´Ù. ¾î³ëÅ×À̼ÇÀº ÀÌ·± Ãø¸é¿¡¼­ ±²ÀåÈ÷ Æí¸®ÇÏ´Ù.

Áö±Ý±îÁö ÀÚ¹Ù EE 5¿¡¼­ µµÀÔµÈ ¾î³ëÅ×À̼ÇÀÌ °¡Áö´Â Àå/´ÜÁ¡°ú XML°úÀÇ °ü°è, ±×¸®°í ÀÚ¹Ù EE 6¿¡¼­ ³íÀǵǰí ÀÖ´Â ¿©·¯ ¾î³ëÅ×ÀÌ¼Ç ±â¼ú¿¡ ´ëÇØ¼­ »ìÆìº¸¾Ò´Ù.

¾î³ëÅ×À̼ÇÀº ±âÁ¸ XML ¸ÞŸµ¥ÀÌÅÍ¿¡ ºñÇØ¼­ ÄÚµåÀÇ °¡µ¶¼º, »ç¿ë»ó Æí¸®¼º ¹× È¿À²¼º µî¿¡¼­ ÀåÁ¡ÀÌ Àֱ⠶§¹®¿¡ ¾ÕÀ¸·Î ¸¹Àº Â÷±â ÀÚ¹Ù EE ±â¼ú¿¡¼­ ¾Õ´ÙÅõ¾î äÅÃµÉ °ÍÀ¸·Î º¸ÀδÙ. ¾Õ¼­ »ìÆìº» Web Beans¿Í °°Àº ÄÄÆ÷³ÍÆ® ¸ðµ¨À» XML·Î ±¸ÇöÇÑ´Ù¸é ±²ÀåÈ÷ º¹ÀâÇØÁ³À» ÅÙµ¥ ¾î³ëÅ×À̼ÇÀ» ÅëÇØ ³î¶ó¿ï Á¤µµ·Î ½±°Ô ¸ðµ¨À» Á¤ÀÇÇϰí Çϰí ÀÖ´Ù.

¶ÇÇÑ, Beans Validation°ú °°Àº ±â¼úÀº ÀÚ¹ÙÀÇ Å¸ÀÔÀ» Á» ´õ »ó¼¼ÇÏ°Ô Á¤ÀÇÇÒ ¼ö ÀÖ´Â Áß¿äÇÑ ±â¹ÝÀ» Á¦°øÇϰí ÀÖ´Ù. ÀÌ·¸°Ô ¾î³ëÅ×À̼ÇÀº ´Ü¼øÈ÷ XMLÀ» ´ëüÇÏ´Â ¸ÞŸµ¥ÀÌÅͰ¡ ¾Æ´Ï¶ó ÀÚ¹Ù ±â¼ú¿¡ À־ »õ·Î¿î µµ¾àÀ» ÀǹÌÇÏ´Â Áß¿äÇÑ ¿ä¼Ò·Î Á¡Á¡ °¢±¤À» ¹Þ°í ÀÖ´Ù.

ÇÏÁö¸¸ ¾î³ëÅ×À̼ÇÀº XMLÀ» ¿ÏÀüÈ÷ ´ëüÇÏ´Â ¸ÞŸµ¥ÀÌÅÍ´Â ¾Æ´Ï¹Ç·Î ¿©ÀüÈ÷ XMLÀº ²À ¹è¿ö¾ß ÇÏ´Â Ç׸ñ¿¡¼­ ºüÁöÁö´Â ¾ÊÀ» °ÍÀ¸·Î º¸ÀδÙ. ¿ÀÈ÷·Á ÈǸ¢ÇÑ °³¹ßÀÚ¶ó¸é ¾î´À °æ¿ì¿¡ ¾î³ëÅ×À̼ÇÀ» ¾²°í, ¾î´À °æ¿ì¿¡ XMLÀ» ½á¾ß ÇÏ´ÂÁö ÀûÀýÇÏ°Ô ÆÇ´ÜÀ» ÇÏ¿© »ç¿ëÇÏ´Â ´É·ÂÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù. µ¶ÀÚ ¿©·¯ºÐµéµµ ¾î³ëÅ×À̼ÇÀ» Àû±ØÀûÀ¸·Î µµÀÔÇÏ°í ½ÃµµÇÏ¿© ´Ù¾çÇÑ È°¿ë°¡´É¼ºÀ» Á¡Ã帴 °Íµµ Àç¹ÌÀÖÀ» °ÍÀÌ´Ù. @


Âü°íÀÚ·á
1. JSR 299 Web Beans ? http://jcp.org/en/jsr/detail?id=299
2. JSR 303 Beans Validation ? http://jcp.org/en/jsr/detail?id=303
3. JBoss Seam - http://www.jboss.com/products/seam
4. Google Guice - http://code.google.com/p/google-guice/
5. JavaOne 2007 - http://developers.sun.com/learning/javaoneonline/


* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ Á¦ÈÞ¸ÅüÀÎ
¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.
°ü·Ã±â»ç
[ÇÁ·¹ÀÓ¿öÅ© Àü·« ¨è] ÇÁ·¹ÀÓ¿öÅ© À̸ÓÀü½ºÀÇ ¹ÌÇÐ
ÀÚ¹Ù°³¹ßÀÚ Æä½ºÆ¼¹ú - The Power Of The Java¡¸2006 ÀÚ¹Ù¿ø ÄÁÆÛ·±½º¡¹
POJO·Î µ¹¾Æ¿Â¡¸EJB 3.0°ú ÀÚ¹Ù ÆÛ½Ã½ºÅϽº API¡¹
À¥ 2.0 ½Ã´ë¸¦ ¼±µµÇÒ¡¸ÀÚ¹Ù À¥ ¼­ºñ½º 2.0¡¹
ÇÁ·¹ÀÓ¿öÅ© Ȱ¿ëÀü·«
[ÀÚ¹Ù SOA °³¹ß, ¥Á¿Í ¥Ø] ¨ê ¾À Ŭ¶óÀÌ¾ðÆ®¿Í J2ME Ŭ¶óÀÌ¾ðÆ® ±¸Ãà
[ÀÚ¹Ù SOA °³¹ß, ¥Á¿Í ¥Ø] ¨é EJB¿Í ¸®Ä¡ Ŭ¶óÀÌ¾ðÆ® ±¸Ãà
[ÀÚ¹Ù SOA °³¹ß, ¥Á¿Í ¥Ø] ¨è SOA ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ¹æÇâ
µ¶ÀÚÀÇ°ß ³²±â±â (·Î±×ÀÎ ÈÄ µ¶ÀÚ ÀǰßÀ» ³²±â½Ç ¼ö ÀÖ½À´Ï´Ù.)
¾ÆÀ̵ð ºñ¹Ð¹øÈ£
 
 
?>
[DDD ¨ç] µµ¸ÞÀÎ ÁÖµµ °³¹ß
À©µµ¿ìCE µð¹ö±ë¿¡ °üÇÑ 12°¡Áö...
'°¡»óÈ­ °ü¸®'¿¡ ´ëÇÑ 10°¡Áö ...
[±â°í]±×¸° ½ºÅ丮Áö·Î °¡´Â±æ
°¡»óÈ­¿¡ ½ÇÆÐÇÏ´Â 10°¡Áö ÀÌÀ¯
[Ã¥¼Ò°³] À¥ °³¹ßÀÚ¸¦ À§ÇÑ ½ºÇÁ...
À¥ ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇÑ ÆÐÅ¶Ææ½º
[Weekend TV]'½ºÅ¸Å©·¡ÇÁÆ®' ¼º´ë¸ð»çÀÇ ´ÞÀÎ [00:01:20]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
[¼­¹ü±ÙÀÇ À¯ÄèÇÑ ¸®ºä]'º£Å×¶û' ·¹ÀÎÄÞ VS '½ÅÂü³»±â' TG»ïº¸ÀÇ 'PMP½ÃÀå ÀïÅ»Àü' [00:03:42]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
º¸¾È°­È­ ±¸±Û ¡°À©µµ ¹ö¸®°í À¥À¸...
¡®À©µµXP¡¯½Ã´ë Æó¸·, »ç¿ëÀÚ¿¡°Ô...
ÀÎÅÍ³Ý ¹ðÅ· ºê¶ó¿ìÀú´Â µû·Î ÀÖ´Ù...
¡®³ªÈ¦·Î ¾×ƼºêX¡¯¡¦¼¼°è ÀÎÅͳݰú...
SKT µ¶Á¡ 800MHz Á֯ļö,...
´ÙÀ½ vs Á¶Áßµ¿, Á¤¸éÃæµ¹·Î Ä¡...
[Àλç]¹®È­Ã¼À°°ü±¤ºÎ
BT, 'GSM-CDMA Áö¿ø' ...
SKT '¾ÆÀ̽º¹Ú½º', ÅëÇÕ UC...
2011³â, LCD TV 10´ë ...
´Ù¿ì±â¼ú, À̸ÞÀÏ ¾ÆÄ«À̺ù ¼Ö·ç¼Ç...
 
 
The Korean edition of 'ZDNet' is published under license from CNET Networks, Inc., San Francisco, CA, USA. Editorial items appearing in 'ZDNet Korea' that were originally published in the US Edition of 'ZDNet', 'CNET', and 'CNET News.com' are the copyright properties of CNET Networks, Inc. or its suppliers.
Copyright ¨Ï 2008 CNET Networks, Inc. All Rights Reserved. 'ZDNet', 'CNET' and 'CNET News.com' are trademarks of CNET Networks, Inc.