[Áöµð³ÝÄÚ¸®¾Æ]À¥ ¼ºñ½º¶ó´Â ¿ë¾î°¡ À¯Çà¾îó·³ ³Î¸® ÆÛÁøÁöµµ ÀÌ¹Ì ¸î ³âÀÌ Èê·¶´Ù. ÇÏÁö¸¸ ±× ³ôÀº °ü½É¿¡ ºñÇØ Àû¿ëµµ´Â ±×´ÙÁö ³ôÁö ¾Ê¾Ò´Ù°í ¸»ÇÒ ¼ö Àִµ¥, ±× ÀÌÀ¯¿¡´Â ¿©·¯ °¡Áö°¡ ÀÖ¾ú°ÚÁö¸¸, ±× ÁßÀÇ Çϳª¸¦ ²ÅÀÚ¸é ±â¼úÀûÀÎ ¼º¼÷µµ°¡ µÇ°Ú´Ù.
¶Ç ÇÑ °¡Áö´Â ¼³Á¤ÀÇ ¾î·Á¿ò°ú °°Àº °³¹ß ÀÛ¾÷ÀÇ ³ÇØÇÔ°ú °°Àº ¹®Á¦¸¦ µé ¼ö ÀÖ°Ú´Ù. ±â¼úÀûÀÎ ¼º¼÷µµÀÇ ¹®Á¦´Â ÇØ¸¦ °ÅµìÇØ°¡¸é¼ »õ·Î¿î Ç¥Áذú ±â¼úµéÀ» ³»³õÀ¸¸é¼ ¸¹ÀÌ ÇØ°áµÇ¾úÀ¸³ª, ¼³Á¤ÀÇ ¾î·Á¿ò°ú °°Àº ¹®Á¦´Â ¿©ÀüÈ÷ ³²¾Æ ÀÖ¾ú´Ù. ÇÏÁö¸¸ ÀÚ¹Ù À¥ ¼ºñ½º 2.0À̶ó´Â »õ·Î¿î À¥ ¼ºñ½º ¸ðµ¨Àº ÀÌ·± ¼³Á¤ÀÇ ¾î·Á¿òÀ» ÇØ°áÇÔ°ú µ¿½Ã¿¡ ¿©·¯ »õ·Î¿î ±â´ÉµéÀÌ Ãß°¡µÊÀ¸·Î½á »õ·Î¿î µµ¾àÀ» ÇÒ ¼ö ÀÖ´Â ±â¹ÝÀ» ¸¶·ÃÇÏ¿´´Ù.
 | ¿¹Á¦¿Í ÀÚ¹Ù EE 5 ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹ö |  | |  | |
| | À̹ø ƯÁý¿¡ °ÔÀçµÈ »ùÇõéÀº ±âº»ÀûÀ¸·Î ÀÚ¹ÙEE 5 ¾ÖÇø®ÄÉÀÌ¼Ç ¼¹ö¿¡¼ µ¿ÀÛÇÑ´Ù. »ùÇõé Áß ÀϺκп¡¼ ƯÁ¤ º¥´õ¿¡¼ Á¦°øÇÏ´Â ±â´ÉÀ» À§ÁÖ·Î ¼³¸íÇÑ ºÎºÐµµ ÀÖÁö¸¸ ±×·¯ÇÑ °ÍµéÀº °³¹ß ¹× ¹èÄ¡ ÀÛ¾÷ÀÇ ÆíÀÇ»ó º¥´õ¿¡¼ Á¦°øÇÏ´Â ±â´ÉÀ» »ç¿ëÇÏ¿´À» »ÓÀÌ´Ù. ±âº»ÀûÀ¸·Î´Â JAXWS º»¿¬ÀÇ Æ¯¼ºÀ» ¼³¸íÇϴµ¥ ÀÖ¾î ¿µÇâÀ» ¹ÌÄ¡Áö´Â ¾Ê´Â´Ù. ÇöÀç ÀÚ¹ÙEE 5 ȣȯ ÀÎÁõÀ» ¼¼°è ÃÖÃÊ·Î Åë°úÇÑ Á¦¿ì½º(JEUS) 6.0 ÇÁ¸®ºä¸¦ Ȱ¿ëÇÒ ¼ö ÀÖÀ¸¸ç ½ã¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî(ÀÌÇÏ ½ã)ÀÇ ÀÚ¹ÙEE 5 SDKµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ »ç¿ëÀÚ ÆíÀǼº Ãø¸é ¶§¹®¿¡ Á¦¿ì½º 6.0¿¡ ÀϺΠÀÇÁ¸¼ºÀÌ ÀÖ´Â ³»¿ëÀÌ ÀÖÀ¸´Ï Á¦¿ì½º 6.0À» Ȱ¿ëÇÑ´Ù¸é ´õ Æí¸®ÇÒ °ÍÀÌ´Ù. | | | | | |
| |
 | »õ·Î¿î À¥ ¼ºñ½º ¸ðµ¨ - ÀÚ¹Ù À¥ ¼ºñ½º 2.0 |  |
»õ·Ó°Ô À籸¼ºµÈ ÀÚ¹ÙEE 5 À¥ ¼ºñ½ºÀÇ °¡Àå ÇÙ½ÉÀº JAXWS 2.0ÀÌ´Ù. JAX-WS 2.0Àº À¥ ¼ºñ½º¿¡ ÀÖ¾î¼ ±âÁ¸ÀÇ JAXRPC¸¦ ´ëüÇÏ´Â ¼ö´ÜÀ¸·Î ¼³°èµÇ¾úÀ¸¸ç ÀÌÁ¦ ¸· ±× À§¿ëÀ» µå·¯³»°Ô µÇ¾ú´Ù. ÇÏÁö¸¸ ¿Ö ±âÁ¸ÀÇ JAX-RPC¶ó´Â À̸§À» ¹ö¸®°íJ AX-WS¶ó´Â À̸§À» ÅÃÇØ¾ß ÇßÀ»±î?
óÀ½¿¡´Â JAX-WS 2.0Àº JAX-RPC 2.0À̶ó´Â À̸§À» °¡Áö°í ½ÃÀ۵Ǿú°í JAX-RPC 1.1°úÀÇ ÇÏÀ§ ȣȯ¼ºÀ» Áö¿øÇϵµ·Ï ¼³°è°¡ ½ÃÀ۵Ǿú´Ù. ±×·±µ¥ °³¹ß °úÁ¤¿¡¼ ¿©·¯ ¹®Á¦¿¡ ºÀÂøÇØ °á±¹ ÇÏÀ§ ȣȯ¼ºÀ» Æ÷±âÇϰí À̸§ ¶ÇÇÑ JAX-WS·Î ¹Ù²î°Ô µÈ °ÍÀÌ´Ù. °á±¹ JAX-RPC¿Í JAX-WS´Â ±â¼úÀûÀ¸·Î´Â ¿ÏÀüÈ÷ ´Ù¸¥ Àǹ̸¦ Áö´Ï°Ô µÇ¾ú´Ù. ÀÌ·¸°Ô ÀüÇô ´Ù¸¥ ¸ð½ÀÀ¸·Î µîÀåÇÑ JAXWSÀÇ ¹è°æ¿¡´Â JAXB 2.0ÀÇ µîÀåÀÌ ÀÖ´Ù. JAXB 2.0Àº ¸ðµç XML ½ºÅ°¸¶ ŸÀÔÀ» ¿ÏÀüÈ÷ Áö¿øÇÏ°Ô µÊÀ¸·Î½á ±âÁ¸¿¡ Á¸ÀçÇß´ø Àڹ٠ŸÀÔ°ú XML ŸÀÔ°£ÀÇ ¸ÅÇÎÀ» º¸´Ù ¸íÈ®ÇÏ°Ô Á¤ÀÇÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. ±âÁ¸¿¡ JAX-RPC ½ºÆå¿¡ Á¸ÀçÇÏ´ø Àڹ٠ŸÀÔ°ú XML ŸÀÔ°£ÀÇ ¸ÅÇο¡ ´ëÇÑ ÀÇÁ¸¼ºÀ» Á¦°ÅÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ¿øµ¿·ÂÀÌ µÇ¾ú´Ù.
¿©±â¿¡´Ù SOAP 1.2 ¸Þ½ÃÁö¸¦ Á÷Á¢ ´Ù·ê ¼ö ÀÖ°Ô ÇÏ´Â SAAJ 1.3±îÁö Æ÷ÇÔÇÏ¿©, ÀÚ¹Ù À¥ ¼ºñ½º 2.0À̶ó´Â »õ·Î¿î À¥ ¼ºñ½º ¸ðµ¨ÀÌ µîÀåÇÏ°Ô µÈ °ÍÀÌ´Ù.
 | ÀÚ¹Ù À¥ ¼ºñ½º 2.0ÀÇ ÇÙ½É JAX-WS 2.0 |  |
¾Õ¿¡¼ ¾ð±ÞÇßµíÀÌ ÀÚ¹Ù À¥ ¼ºñ½º 2.0Àº JAX-WS 2.0, JAXB 2.0, SAAJ 1.3À̶ó´Â ¿ÏÀüÈ÷ »õ·Î¿î ¶óÀξ÷À¸·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç À̵éÀÇ ÇÑ °¡¿îµ¥ À̹ø ÁÖÁ¦¿¡¼ ´Ù·ç·Á°í ÇÏ´Â JAXWS 2.0ÀÌ Á¸ÀçÇÑ´Ù. ¿ì¼± ÀÚ¹Ù À¥ ¼ºñ½º 2.0ÀÇ ÇÙ½ÉÀÎ JAXWS 2.0ÀÌ ±âÁ¸ÀÇ JAX-RPC 1.1¿¡ ºñÇØ ¾î¶»°Ô ´Þ¶óÁ³´ÂÁö Áß¿äÇÑ °Íµé À§ÁÖ·Î »ìÆìº¸ÀÚ.
¸ÕÀú ´«¿¡ ¶ç´Â Â÷ÀÌ´Â JAX-RPC¿¡¼ ´ã´çÇÏ´ø XML ŸÀÔ°ú Àڹ٠ŸÀÔ°£ÀÇ ¸ÅÇΠ󸮸¦ JAXB 2.0¿¡¼ ó¸®Çϵµ·Ï ÀÏÀÓÇÑ °ÍÀÌ´Ù. ±âÁ¸¿¡ JAX-RPC ½ºÆå¿¡¼´Â ²¬²ô·¯¿î Àڹ٠ŸÀÔ°ú XML ŸÀÔ°£ÀÇ ¸ÅÇο¡ ´ëÇÑ Á¤ÀǸ¦ ½ºÆå ¾È¿¡ Æ÷ÇÔÇϰí ÀÖ¾ú´Ù.
ÀÌ·¯ÇÑ ÀÛ¾÷Àº JAX-RPC ½ºÆå¿¡ ÀÛÁö ¾ÊÀº ºÎ´ãÀ» ÁÖ°í ÀÖ¾ú´Ù. ÀÌ´Â JAX-RPC ½ºÆåÀÌ ¿Ï¼ºµÉ ÁîÀ½¿¡ XML ½ºÅ°¸¶¸¦ 100% Áö¿øÇÏ´Â JAXB 2.0ÀÌ Á¸ÀçÇÏÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù.
JAXB 2.0ÀÌ ¿Ï¼ºµÇ¾î ¼¼»ó¿¡ ³ª¿Â ÀÌ»ó ´õ ÀÌ»ó Àڹ٠ŸÀÔ°ú XML ŸÀÔ°£ÀÇ ¸ÅÇÎÀ» Áߺ¹ÇÏ¿© Á¤ÀÇÇÒ Çʿ䰡 ¾ø°Ô µÇ¾ú´Ù.
µû¶ó¼ Àڹ٠ŸÀÔ°ú XML ŸÀÔÀÇ ¸ÅÇÎÀº JAXB¿¡ ¸ðµÎ ¸Ã±â°Ô µÇ¾ú´Ù. ±×·Î ÀÎÇØ ¾Æ½¬¿î Á¡µµ »ý°å´Ù. ºÎ¼öÀûÀ¸·Î´Â ´õ ÀÌ»ó ¡®SOAP ÀÎÄÚµù¡¯¹æ½ÄÀÇ À¥ ¼ºñ½º¸¦ Áö¿øÇÏÁö ¾Ê°Ô µÇ¾úÀ¸¸ç, À¥ ¼ºñ½º °£¿¡ ÁÖ°í¹Þ´Â ¸Þ½ÃÁö´Â ¸ðµÎ XML ½ºÅ°¸¶·Î Á¤ÀǵǴ¡®Literal¡¯¹æ½ÄÀÇ À¥ ¼ºñ½º¸¸À» Áö¿øÇϱ⠶§¹®ÀÌ´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ »ç½ÇÁ¶Â÷µµ À¥ ¼ºñ½º ±¸Çö º¥´õ°£ÀÇ »óÈ£ ¿î¿µ¼ºÀ» ÀúÇØÇÏ´Â ÀáÀçÀûÀÎ ¿ä¼Ò¸¦ ¹Ì¿¬¿¡ Á¦°ÅÇÑ´Ù´Â »ç½ÇÀ» °í·ÁÇÏ¸é ±àÁ¤ÀûÀÎ Ãø¸éµµ ÀÖ´Ù.
| ¾î³ëÅ×À̼Ç(Annotation)ÀÇ È°¿ë |
|
JAX-WS 2.0Àº JDK 1.5¿¡¼ºÎÅÍ Áö¿øµÇ´Â ¾î³ëÅ×À̼ÇÀ» Àû±Ø Ȱ¿ëÇÏ¿© À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ®ÀÇ ÀÛ¼º°ú Ŭ¶óÀÌ¾ðÆ®¸¦ ÀÛ¼ºÇÒ ¶§, Àڹ٠ŸÀÔ°ú WSDL°£ÀÇ ¸ÅÇÎÀ» ¸í½ÃÀûÀ¸·Î Á¤ÀÇÇÒ ¼ö ÀÖ°Ô ÇÏ¿´°í À̸¦ ·±Å¸ÀÓ ½Ã¿¡µµ Ȱ¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ¿´´Ù. ¶ÇÇÑ ±âÁ¸ÀÇ J2EE 1.4 ¿£ÅÍÇÁ¶óÀÌÁî À¥ ¼ºñ½º¸¦ »ý¼ºÇϱâ À§ÇØ ¹ø°Å·Ó°Ô ÀÛ¼ºÇؾ߸¸ Çß´ø À¥ ¼ºñ½º ¹èÄ¡ ¼¼úÀÚ °°Àº °ÍÀº ¸ðµÎ ¾î³ëÅ×À̼ÇÀ¸·Î ´ëü °¡´ÉÇÏ°Ô µÇ¾ú´Ù. ÀÌÁ¦²¯ ¹®Á¦½Ã µÇ¾ú´ø À¥ ¼ºñ½º ÀÛ¼º¿¡ Á¸ÀçÇß´ø ¹ø°Å·Î¿òÀ» Å©°Ô °æ°¨½ÃÄÑÁÖ´Â Àý´ëÀûÀÎ ¿ªÇÒÀ» ÇÏ°Ô µÇ¾ú´Ù. ½ÇÁ¦·Î À¥ ¼ºñ½º¿¡ °¡Àå Å« ÁøÀÔ À庮 ÁßÀÇ Çϳª´Â ¹«¾ùº¸´Ù ¹ø°Å·Î¿î ¼³Á¤ ÀÛ¾÷À̾úÀ¸¸ç, ÀÌ·¯ÇÑ ¾î·Á¿òÀ» ¾î³ëÅ×À̼ÇÀ» ÅëÇØ Å©°Ô ÇØ°áÇÏ°Ô µÈ °ÍÀÌ´Ù.
±âÁ¸ JAX-RPC¿¡¼´Â SOAP/HTTP¸¦ ±âº»À¸·Î Áö¿øÇÏ¿´À¸³ª, JAX-WS¿¡¼´Â SOAP ÇüÅÂÀÇ ¸Þ½ÃÁö»Ó ¾Æ´Ï¶ó XML ÇüÅÂÀÇ ¸Þ½ÃÁö ÀÚü¸¦ À¥ ¼ºñ½º ¼ÒºñÀÚ¿Í ¼ºñ½º °£¿¡ ÁÖ°í¹Þ¾Æ ó¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÏ¿´´Ù.
ÀÌ ¹Û¿¡µµ ¹ÙÀ̳ʸ® µ¥ÀÌÅÍÀÇ È¿°úÀûÀÎ Àü¼ÛÀ» À§ÇØ MTOM(SOAP Message Transmission Optimization Mechanism)ÀÇ Áö¿ø, À¥ ¼ºñ½º Ŭ¶óÀÌ¾ðÆ®¿¡¼ÀÇ ºñµ¿±â È£Ãâ APIÀÇ Áö¿ø µîÀÇ ¸¹Àº º¯È°¡ ÀÖÀ¸³ª ÀÌ Æ¯¼ºµéÀÇ ¼Ò°³´Â ´ÙÀ½ ±âȸ·Î ¹Ì·ç±â·Î ÇÑ´Ù.
 | JAX-WS 2.0¿¡ ±â¹ÝÇÑ À¥ ¼ºñ½ºÀÇ »ý¼º |  |
¼·ÐÀÌ ±æ¾ú´Ù. ±×¸¸Å ¸¹Àº º¯È°¡ ÀÖ¾ú´Ù´Â ¹ÝÁõÀ̱⵵ Çѵ¥, Á÷Á¢ À¥ ¼ºñ½º¸¦ »ý¼ºÇϰí È£ÃâÇÏ´Â ÀÛ¾÷À» ¼Ò°³ÇÏ¿© ±× ÀÌÇØ¸¦ µµ¿ï±î ÇÑ´Ù. JAX-WS 2.0¿¡¼´Â ±âÁ¸ÀÇ J2EE 1.4 ȯ°æ¿¡¼¿Í ¸¶Âù°¡Áö·Î µÎ °¡ÁöÀÇ À¥ ¼ºñ½º »ý¼º ¹æ½ÄÀ» Á¦°øÇÑ´Ù. Çϳª´Â Àڹ٠Ŭ·¡½º ŸÀÔÀ¸·ÎºÎÅÍ ½ÃÀÛÇÏ´Â From Java ¹æ½ÄÀÌ°í ¶Ç ´Ù¸¥ Çϳª´Â ÀÌ¹Ì Á¤ÀǵǾî ÀÖ´Â WSDL·ÎºÎÅÍ ½ÃÀÛÇÏ´Â From WSDL ¹æ½ÄÀÌ´Ù. ÀÌ µÎ °¡Áö ¹æ½ÄÀ¸·Î À¥ ¼ºñ½º¸¦ »ý¼ºÇϱâ À§Çؼ´Â JAX-WS 2.0¿¡¼ ¾î¶»°Ô ÇØ¾ß ÇÏ´ÂÁö ¾Ë¾Æº¸ÀÚ.
| From Java ¹æ½ÄÀÇ À¥ ¼ºñ½º »ý¼º |
|
From Java ¹æ½ÄÀÇ À¥ ¼ºñ½º »ý¼ºÀº ±âº»ÀûÀ¸·Î ´ÙÀ½°ú °°Àº ÀýÂ÷¸¦ µû¸¥´Ù.
1. À¥ ¼ºñ½º ¾î³ëÅ×À̼ÇÀÌ Æ÷ÇÔµÈ ¼ºñ½º ±¸Çö ºóÀÇ ÀÛ¼º
2. Ÿ º¥´õ°£¿¡ ÀÌ½Ä °¡´ÉÇÑ »êÃâ¹°(Portable Artifact)ÀÇ »ý¼º
3. À¥ ¼ºñ½º ÆÐŰ¡°ú ¹èÄ¡
ÀÌ¿Í °°Àº ÀýÂ÷¸¦ Á» ´õ »ìÆìº¸¸é Àü¹ÝÀûÀ¸·Î´Â ±âÁ¸ÀÇ JAXRPC ȯ°æ¿¡¼ »ý¼ºÇÑ »êÃâ¹°À» ±â¾÷¿ë À¥ ¼ºñ½º·Î °ø°³Çϱâ À§ÇØ ²À ÇÊ¿äÇß´ø ¹èÄ¡ ¼¼úÀÚÀÇ ÀÛ¼º µî ¹ø°Å·Î¿î ÀÛ¾÷ÀÌ »ý·« °¡´ÉÇÏ°Ô µÇ¾úÀ½À» ¾Ë ¼ö ÀÖ´Ù.
¡Ü ¼ºñ½º ±¸Çö ºó(Service Implementation Bean)ÀÛ¼º
±×·³ ¸ÕÀú ¼ºñ½º ±¸Çö ºó(Service Implementation Bean)ÀÇ ÀÛ¼º ¹æ½ÄºÎÅÍ ¸ÕÀú »ìÆìº¸ÀÚ. ¼ºñ½º ±¸Çö ºóÀ» ÀÛ¼ºÇÒ °æ¿ì¿¡´Â ¸î °¡ÁöÀÇ Çʼö Á¦¾à Á¶°ÇÀÌ µû¸£°Ô µÇ´Âµ¥, ÀÌ·¯ÇÑ Çʼö Á¦¾à Á¶°ÇµéÀº ´ÙÀ½°ú °°´Ù.
- javax.jws.WebService ¾î³ëÅ×À̼ÇÀ» Æ÷ÇÔ½ÃÄѼ ÀÌ Å¬·¡½º°¡ ¼ºñ½º ±¸Çö ºóÀÓÀ» ¸í½ÃÇÑ´Ù.
- À¥ ¼ºñ½º ¸Þ¼ÒµåÀÇ ÀÎÀÚ¿Í ¸®ÅÏ Å¸ÀÔÀº JAXB 2.0ÀÇ ÀÚ¹Ù¿Í XML ½ºÅ°¸¶ °£ÀÇ ¸ÅÇÎ Á¤ÀÇ¿Í È£È¯µÇ¾î¾ß ÇÑ´Ù.
- À¥ ¼ºñ½º ¸Þ¼ÒµåÀÇ ÀÎÀÚ¿Í ¸®ÅÏ Å¸ÀÔÀº java.rmi.Remote ÀÎÅÍÆäÀ̽º¸¦ Á÷Á¢ ȤÀº °£Á¢ÀûÀ¸·Î ±¸ÇöÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.
ÀÌ¿Í °°Àº ¿ä¼Òµé ¸»°íµµ, javax.jws ÆÐŰÁö¿¡ Á¤ÀǵǾî ÀÖ´Â ¿©·¯ ¾î³ëÅ×À̼ÇÀ» Ȱ¿ëÇÏ¸é ¸Þ¼ÒµåÀÇ ÀÎÀÚ¿Í ¸®ÅÏ Å¸ÀÔ, ¹ÙÀεù ¹æ½Ä µîÀÇ Ä¿½ºÅ͸¶ÀÌ¡ÀÌ °¡´ÉÇÏ´Ù. ±×·³ °£´ÜÇÑ ¿¹Á¦ Äڵ带 ÅëÇØ ½ÇÁ¦ ¼ºñ½º ±¸Çö ºóÀÌ ¾î¶»°Ô ÀÛ¼ºµÇ¾î¾ß ÇÏ´ÂÁö »ìÆìº¸ÀÚ. <¸®½ºÆ® 1>Àº °£´ÜÇÑ À¥ ¼ºñ½º¸¦ ±¸ÇöÇÑ Å¬·¡½ºÀÇ ¿¹ÀÌ´Ù.
| <¸®½ºÆ®1>JAX-WS 2.0ÀÇ ¼ºñ½º ±¸Çö ºó | | | |
package fromjava.server;
import javax.jws.WebService;
// JEUS¿¡¼ Á¦°øÇÏ´Â À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ¼³Á¤À» À§ÇÑ ¾î³ëÅ×À̼Ç
import jeus.webservices.annotation.EndpointDescription;
// ÀÌ Å¬·¡½º°¡ À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÓÀ» ¸í½ÃÇÔ
@WebService
// ÀÌ À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ®ÀÇ URLÀÌ "HelloService" °¡ µÇµµ·Ï ¼³Á¤ÇÔ
@EndpointDescription(endpointUrl="HelloService")public class HelloServiceImpl {
// À¥ ¼ºñ½º ¸Þ¼Òµå. ½ºÆ®¸µ °ªÀ» ¹Þ¾Æ¼ ¸®ÅÏÇÑ´Ù.
public String hello(String sHello){
return sHello;
}
}
| |
 |
JAX-WS 2.0¿¡¼´Â ±âÁ¸ Àڹ٠Ŭ·¡½º¸¦ À¥ ¼ºñ½º·Î °ø°³ÇϱⰡ ¾ÆÁÖ ½±´Ù. <¸®½ºÆ® 1>¿¡¼¿Í °°ÀÌ @WebService ¾î³ëÅ×À̼ÇÀ» Ãß°¡ÇÔÀ¸·Î½á ½±°Ô ±âÁ¸ Àڹ٠Ŭ·¡½º¸¦ À¥ ¼ºñ½º·Î º¯È¯ÇÏ¿© ¸¸µé ¼ö ÀÖ´Ù. @WebService ¾î³ëÅ×ÀÌ¼Ç À̿ܿ¡µµ ºÎ°¡ÀûÀÎ À¥ ¼ºñ½ºÀÇ ¿£µåÆ÷ÀÎÆ®µµ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. @Endpoint DescriptionÀ̶ó´Â Àڹ٠Ŭ·¡½º°¡ À¥ ¼ºñ½º·Î ¹èÄ¡µÇ¾úÀ» °æ¿ì °ø°³µÇ´Â À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® URLÀ» ¡°HelloService¡±¿Í °°ÀÌ Æ¯Á¤ÇÑ °ªÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù(@EndpointDescription´Â Á¦¿ì½º 6.0¿¡¼ Á¦°øÇÏ´Â ¾î³ëÅ×À̼ÇÀÌ´Ù). ÀÌ´Â ±âÁ¸ÀÇ JAXRPC¸¦ ä¿ëÇÑ J2EE 1.4 À¥ ¼ºñ½º ȯ°æ¿¡¼´Â web.xml°ú °°Àº ¹èÄ¡ ¼¼úÀÚ¿¡ Ãß°¡ÀûÀÎ ¼³Á¤À» ÇØ ÁÖ¾ú¾î¾ß¸¸ °¡´É Çß´ø °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÚ¹Ù EE 5 À¥ ¼ºñ½º ȯ°æ¿¡¼´Â º°µµÀÇ web.xml °°Àº ¹èÄ¡ ¼¼úÀÚ¸¦ ÀÛ¼ºÇÒ Çʿ䰡 ¾øÀ¸¸ç Ãß°¡ÀûÀÎ ¼³Á¤Àº ¾Õ¿¡¼¿Í °°ÀÌ À¥ ¼ºñ½º ¾î³ëÅ×À̼ÇÀ» ¼ºñ½º ±¸Çö ºó¸¸ Ãß°¡ÇÏ¸é µÈ´Ù.
¡Ü Ÿ º¥´õ °£¿¡ ÀÌ½Ä °¡´ÉÇÑ »êÃâ¹°(Portable Artifact)ÀÇ »ý¼º
¼ºñ½º ±¸Çö ºóÀ» ÀÛ¼ºÇϰí ÄÄÆÄÀÏ ±îÁö ¼öÇàÇß´Ù¸é, JAXWS ·±Å¸ÀÓ¿¡¼ »ç¿ëÇÒ Å¸ º¥´õ °£¿¡ ÀÌ½Ä °¡´ÉÇÑ »êÃâ¹°À» »ý¼ºÇØ¾ß ÇÑ´Ù. ¿©±â¼ Ÿ º¥´õ °£¿¡ ÀÌ½Ä °¡´ÉÇÑ »êÃâ¹°À̶õ, JAXWS ½ºÆåÀ» ÁؼöÇÏ´Â ¸ðµç º¥´õ¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â JAX-WS ÅøÀ» ÅëÇØ ¸¸µé¾î³½ »êÃâ¹°À» ÀǹÌÇÑ´Ù. ÀÚ¹ÙÀÇ ÆÄ¶ó¹ÌÅ͸¦ ½ÇÁ¦ WSDLÀÇ ¸Þ½ÃÁö·Î Á¤È®ÇÏ°Ô ¸ÅÇÎÇϱâ À§ÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Â Àڹ٠Ŭ·¡½º¿Í WSDL µîÀÌ ¿©±â¿¡ Æ÷ÇԵȴÙ. Á¦¿ì½º 6.0¿¡¼´Â wsgenÀ̶ó´Â ÄÁ¼Ö ½ºÅ©¸³Æ®¸¦ Á¦°øÇϴµ¥ ÀÌ ½ºÅ©¸³Æ®´Â %JEUS_HOME%/bin µð·ºÅ丮 ¹Ø¿¡ Á¸ÀçÇÑ´Ù.
| <¸®½ºÆ® 2>JAX-WS ÅøÀ» ÀÌ¿ëÇÑ ÀÌ½Ä °¡´ÉÇÑ »êÃâ¹°ÀÇ »ý¼º | | | |
wsgen -cp -d
fromjava.server.HelloServiceImpl
| |
 |
<¸®½ºÆ® 2>¿Í °°ÀÌ ¸í·ÉÀ» ½ÇÇàÇϸé ÁöÁ¤ÇÑ °æ·Î¿¡ ÀÌ½Ä °¡´ÉÇÑ »êÃâ¹°ÀÌ »ý¼ºµÇ´Â °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. À§ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¶§ -wsdl ¿É¼ÇÀ» ÁÖ¸é WSDL±îÁö »ý¼ºÇÒ ¼ö ÀÖ´Ù.
JAX-WS 2.0¿¡¼´Â À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ®¿¡ WSDLÀ» Æ÷ÇÔ½ÃŰÁö ¾Ê¾Æµµ µÇ¹Ç·Î ¿©±â¼ -wsdl ¿É¼ÇÀ» ÁÖÁö ¸»¾Æ¾ß ÇÑ´Ù. ´ÙÀ½Àº ÀÌ »êÃâ¹°µéÀ» ¹¾î¼ ¼¹ö¿¡ ¹èÄ¡ÇÏ´Â ÀÛ¾÷À» ÁøÇàÇØ º¸ÀÚ.
¡Ü À¥ ¼ºñ½º ÆÐŰ¡°ú ¹èÄ¡
ÇöÀç ÀÛ¼ºÇϰí ÀÖ´Â À¥ ¼ºñ½º¸¦ ÆÐŰ¡ ÇÑ´Ù´Â °ÍÀº ¼ºñ½º ±¸Çö ºó, ¼ºñ½º ±¸Çö ºóÀÌ ÂüÁ¶Çϰí ÀÖ´Â Àڹ٠Ŭ·¡½º¿Í ºÎ¼öÀûÀÎ ¹èÄ¡ ¼¼úÀÚµéÀ» WAR Çü½ÄÀ¸·Î ¹´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¿©±â¼´Â ÀÌ¹Ì ¾Õ¿¡¼ ÀÛ¼ºÇß´ø ÆÄÀÏÀÎ fromjava.server.Hello ServiceImpl Ŭ·¡½º¿Í wsgen ½ºÅ©¸³Æ®¸¦ ÅëÇØ »ý¼ºÇß´ø fromjava.server.jaxws.Hello, fromjava.server.jaxws.HelloResponse Ŭ·¡½º¸¸À» Æ÷ÇÔÇÏ¸é µÈ´Ù. ÀÌ Å¬·¡½ºµéÀº WEB-INF/classes ¹Ø¿¡ Æ÷ÇÔ½ÃŰ¸é µÈ´Ù. ÆÐŰ¡ ÇÒ ÆÄÀÏ À̸§À» HelloService.war·Î ÇÏ¿© WAR·Î ÆÐŰ¡ ÇÑ µÚ¿¡ Á¦¿ì½º 6.0¿¡ ¹èÄ¡ÇÏ·Á¸é, %JEUS_HOME%/webhome/deploy_home¿¡ WAR ÆÐŰ¡À» º¹»çÇØ µÎ±â¸¸ ÇÏ¸é µÈ´Ù. ±×·¯¸é ½ÇÁ¦ ÀÌ ¼ºñ½º¸¦ È£ÃâÇÒ ¼ö ÀÖ´Â HTTP»óÀÇ ÁÖ¼Ò´Â ´ÙÀ½°ú °°ÀÌ µÈ´Ù.
http://localhost:8088/HelloService/HelloService½ÇÁ¦ ÀÌ ÁÖ¼Ò·Î À¥ ºê¶ó¿ìÀú »ó¿¡¼ È£ÃâÇØº¸¸é <ȸé 1>°ú °°ÀÌ ¼º°øÀûÀ¸·Î À¥ ¼ºñ½º°¡ µÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.
 |
| <ȸé 1>¼º°øÀûÀ¸·Î ¹èÄ¡µÈ HelloService |
¡Ü EJB ¿£µåÆ÷ÀÎÆ® À¥ ¼ºñ½ºÀÇ »ý¼º
ÀÚ¹ÙEE À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ®´Â ¿£µåÆ÷ÀÎÆ®°¡ ±¸µ¿µÇ´Â ȯ°æ¿¡ µû¶ó ¼ºí¸´ ¿£µåÆ÷ÀÎÆ® À¥ ¼ºñ½º¿Í EJB ¿£µåÆ÷ÀÎÆ® À¥ ¼
ºñ½º·Î ³ª´ ¼ö ÀÖ´Ù. Áï EJB ¿£µåÆ÷ÀÎÆ® À¥ ¼ºñ½º´Â À¥ ¼ºñ½ºÀÇ ºñÁî´Ï½º ·ÎÁ÷ÀÌ ¹«»óÅ ¼¼¼Ç ºó¿¡ ±¸ÇöµÇ¾î ÀÖ´Â °æ¿ìÀÇ À¥ ¼ºñ½º¸¦ ¸»ÇÑ´Ù. ª°Ô ÁÙ¿©¼ EJB À¥ ¼ºñ½º¶ó°íµµ ÇÑ´Ù.
JAX-WS 2.0¿¡¼ÀÇ EJB À¥ ¼ºñ½º »ý¼º ¹æ½ÄÀº ¼ºí¸´ À¥ ¼ºñ½ºÀÇ »ý¼º ¹æ½Ä°ú À¯»çÇÏ´Ù. <¸®½ºÆ® 3>Àº EJB ÇüÅÂÀÇ ¼ºñ½º ±¸Çö ºóÀÌ´Ù. ¿©±â¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ @WebService ¾î³ëÅ×À̼Ǹ¸ Ãß°¡ÇÏ¸é ±âÁ¸ÀÇ ¹«»óÅ ¼¼¼Ç ºó Ŭ·¡½º°¡ À¥ ¼ºñ½º·Î °ø°³µÉ ¼ö ÀÖ´Ù. ÀÌ´Â ±âÁ¸ÀÇ J2EE 1.4 ȯ°æ¿¡¼ EJB À¥ ¼ºñ½º¸¦ »ý¼ºÇϱâ À§Çؼ ejb-jar.xml, webservices.xml°ú °°Àº ¹èÄ¡ ¼¼úÀÚµéÀ» ÇʼöÀûÀ¸·Î ÀÛ¼ºÇØ¾ß Çß´ø °Í¿¡ ºñÇØ¼´Â °ý¸ñÇÒ ¸¸ÇÑ º¯ÈÀÌ´Ù.
| <¸®½ºÆ® 3>EJB À¥ ¼ºñ½ºÀÇ ±¸Çö - HelloServiceEJB.java | | | |
package fromjava.server;
import javax.jws.WebService;
import javax.ejb.Stateless;
import jeus.webservices.annotation.EndpointDescription;
// ÀÌ EJB ºó Ŭ·¡½º°¡ À¥¼ºñ½º ¿£µåÆ÷ÀÎÆ®ÀÓÀ» ¸í½ÃÇÑ´Ù.
@WebService
// JEUS 6.0¿¡¼ Á¦°øÇÏ´Â ±â´ÉÀ¸·Î HTTP»ó¿¡¼ Á¢±Ù °¡´ÉÇÑ °æ·Î°¡ ¼³Á¤ °¡´ÉÇÏ´Ù.
@EndpointDescription(contextPath="webservice",
endpointUrl="HelloService")
// ÀÌ Å¬·¡½º°¡ ¹«»óÅ ¼¼¼Ç ºó Ŭ·¡½ºÀÓÀ» ¸í½ÃÇÑ´Ù.
@Stateless
public class HelloServiceEJB {
// ½ÇÁ¦ À¥ ¼ºñ½º ¸Þ¼Òµå·Î °ø°³µÇ´Â ºÎºÐÀÌ´Ù.
public String hello(String sHello){
return sHello;
}
}
| |
 |
ÀÌ·¸°Ô ÀÛ¼ºµÈ EJB ºó Ŭ·¡½º¸¦ ÀÏ¹Ý EJB 3.0ÀÇ ÆÐŰ¡ ¹æ½ÄÀ¸·Î ¹¾î¼ ¹èÄ¡ÇÏ¸é ´ÙÀ½ ÁÖ¼Ò·Î ÀÌ À¥ ¼ºñ½º¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. http://localhost:8088/webservice/HelloService
 |
| <ȸé 2>¼º°øÀûÀ¸·Î ¹èÄ¡µÈ HelloServiceEJB |
| From WSDL ¹æ½ÄÀÇ À¥ ¼ºñ½º »ý¼º |
|
From Java ¹æ½ÄÀÇ À¥ ¼ºñ½º ¹æ½ÄÀÌ ÀÌ¹Ì ÀÛ¼ºÇÑ ÀÚ¹Ù RPC ¸ðµ¨À» À¥ ¼ºñ½º·Î °ø°³ÇÏ´Â °ÍÀÌ ÃÊÁ¡ÀÌ´Ù. ÇÑÆí, From WSDL ¹æ½ÄÀÇ À¥ ¼ºñ½º´Â ÀÌ¹Ì ¼·Î°£¿¡ Åë½ÅÇÒ SOAP ¸Þ½ÃÁö¸¦ ¸ÕÀú Á¤ÀÇÇϰí WSDL¸¦ ÅëÇØ ±× Á¤º¸¸¦ °øÀ¯ÇÑ µÚ¿¡ Á¤ÀÇµÈ ¸Þ½ÃÁö ŸÀÔ¿¡ ¸Âµµ·Ï Àڹ٠Ŭ·¡½º¸¦ »ý¼ºÇÏ´Â °ÍÀÌ ÃÊÁ¡À̶ó ÇÒ ¼ö ÀÖ´Ù. ÀϹÝÀûÀÎ From WSDL ¹æ½ÄÀÇ À¥ ¼ºñ½º »ý¼ºÀº ´ÙÀ½°ú °°Àº ÀýÂ÷¸¦ µû¸¥´Ù. ±×·³ ÀÌ·± ÀýÂ÷¿¡ µû¶ó¼ Á÷Á¢ From WSDL ¹æ½ÄÀÇ À¥ ¼ºñ½º¸¦ »ý¼ºÇØ º¸µµ·Ï ÇÏÀÚ.
1. ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º(Service Endpoint Interface)ÀÇ »ý¼º
2. ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽ºÀÇ ±¸Çö
3. À¥ ¼ºñ½º ÆÐŰ¡°ú ¹èÄ¡
¡Ü ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º(Service Endpoint Interface)ÀÇ »ý¼º
ÀÌ °úÁ¤¿¡¼´Â ÀÌ¹Ì °ø°³µÇ¾î ÀÖ´Â WSDLÀ» ±â¹ÝÀ¸·Î À¥ ¼ºñ½ºÀÇ ÀÚ¹Ù ÀÎÅÍÆäÀ̽º ÆÄÀϰú ÀÚ¹Ù ÀÎÅÍÆäÀ̽º ÆÄÀÏÀÌ »ç¿ëÇÏ´Â Àڹ٠ŸÀÔ Å¬·¡½º ÆÄÀϵéÀ» »ý¼ºÇÑ´Ù. À̶§ Á¦¿ì½º 6.0¿¡¼ Á¦°øÇÏ´Â wsimport¶ó´Â ÄÁ¼Ö ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¸é µÇ°í, ÇÊ¿äÇÑ ½ºÅ©¸³Æ®´Â %JEUS_HOME%/bin¿¡ ÀÖ´Ù.
| <¸®½ºÆ® 4>JAX-WS ÅøÀ» ÀÌ¿ëÇÑ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽ºÀÇ(SEI) »ý¼º | | | |
// ÀÌ °æ¿ì, WSDL ÆÄÀÏÀº ./wsdl À̶ó´Â °æ·Î¿¡ Á¸ÀçÇÏ´Â °ÍÀ¸·Î °¡Á¤Çϸç,
// »ý¼ºµÈ SEI´Â fromwsdl.server ÆÐŰÁö À̸§À¸·Î »ý¼ºµÇ°Ô µÈ´Ù
wsimport -keep -p fromwsdl.server -d ./build
./wsdl/HelloServiceImplService.wsde
| |
 |
<¸®½ºÆ® 4>¿Í °°ÀÌ ¸í·ÉÀ» ½ÇÇàÇϸé, ÁöÁ¤ÇÑ °æ·Î¿¡ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¿Í ¼ºñ½º Á¤ÀÇ Å¬·¡½º¸¦ Æ÷ÇÔÇÑ ¿©·¯ »êÃâ¹°µéÀÌ ¸¸µé¾îÁø´Ù. ÀÌ Áß, »ý¼ºµÈ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º´Â <¸®½ºÆ® 5>¿Í °°ÀÌ º¸ÀÌ°Ô µÉ °ÍÀÌ´Ù. ÀÌ·¸°Ô »ý¼ºµÈ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º´Â JAX-WS 2.0 ·±Å¸ÀÓ¿¡ »ç¿ëµÉ Á¤º¸µéÀ» ¾î³ëÅ×ÀÌ¼Ç ÇüÅ·ΠÆ÷ÇÔÇϰí ÀÖ´Ù.
@WebService ¾î³ëÅ×À̼ÇÀº ÀÌ ÀÎÅÍÆäÀ̽º°¡ À¥ ¼ºñ½º ¿£µå Æ÷ÀÎÆ®·Î »ç¿ëµÇ°í ÀÖÀ½À» ³ªÅ¸³»°Ô µÇ°í, @WebMethod ¾î³ëÅ×À̼ÇÀº ÀÌ ¾î³ëÅ×À̼ÇÀÌ ºÙÀº ¸Þ¼Òµå°¡ À¥ ¼ºñ½º·Î °ø°³ µÉ ºñÁî´Ï½º ¸Þ¼ÒµåÀÓÀ» ³ªÅ¸³½´Ù. WSDL¿¡ Á¤ÀÇ µÇ¾î ÀÖ´Â ¸Þ½ÃÁöÀÇ ½ºÅ°¸¶ ŸÀÔÀº JAXB 2.0ÀÇ ÀÚ¹Ù·ÎÀÇ ¸ÅÇÎ ¹ýÄ¢¿¡ ÀÇÇØ ƯÁ¤ÇÑ Àڹ٠Ŭ·¡½º·Î »ý¼ºÀÌ µÇ¾ú´Ù. ÀÌµé ÆÄ¶ó¹ÌÅÍ¿Í ¸®ÅÏ Å¸ÀÔÀ» ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¿¡ À̾î ÁÖ´Â ¿ªÇÒÀ» ÇÏ´Â °ÍÀÌ ¹Ù·Î @RequestWrapper¿Í @Response WrapperÀÌ´Ù.
| <¸®½ºÆ® 5>JAX-WS ÅøÀ» ÀÌ¿ëÇØ »ý¼ºÇÑ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º(SEI) | | | |
package fromwsdl.server;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
// ÀÌ »ý¼ºµÈ ÀÎÅÍÆäÀ̽º°¡ À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ®ÀÓÀ» ¸í½ÃÇÑ´Ù.
@WebService(name = "HelloServiceImpl",
targetNamespace = "http://server.fromjava/",
wsdlLocation = "./wsdl/HelloServiceImplService.wsdl")
public interface HelloServiceImpl {
/**
*
* @param arg0
* @return
* returns java.lang.String
*/
// ÀÌ ¸Þ¼Òµå°¡ À¥ ¼ºñ½º ¸Þ¼Òµå·Î °ø°³µÉ ¸Þ¼ÒµåÀÓÀ» ¸í½ÃÇÑ´Ù.
@WebMethod
@WebResult(targetNamespace = "")
// À¥ ¼ºñ½º¿Í À¥ ¼ºñ½º ¼ÒºñÀÚ °£ÀÇ ÁÖ°í ¹Þ´Â ¸Þ½ÃÁö ŸÀÔ¿¡ °üÇÑ Á¤ÀÇÀÌ´Ù.
@RequestWrapper(localName = "hello",
targetNamespace = "http://server.fromjava/",
className = "fromwsdl.server.Hello")
@ResponseWrapper(localName = "helloResponse",
targetNamespace = "http://server.fromjava/",
className = "fromwsdl.server.HelloResponse")
public String hello(
//ÁÖ°í ¹Þ´Â À¥ ¸Þ¼ÒµåÀÇ ÆÄ¶ó¹ÌÅͰ¡ SOAP ¸Þ½ÃÁö ¾È¿¡¼ ½ÇÁ¦·Î Ç¥±âµÇ´Â ¹æ½ÄÀ» Á¤ÀÇÇÑ´Ù.
@WebParam(name = "arg0", targetNamespace = "")
String arg0);
}
| |
 |
¡Ü ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽ºÀÇ ±¸Çö
¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º°¡ ¸¸µé¾îÁ³´Ù¸é, ´ÙÀ½ ´Ü°è´Â ÀÌ ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ½ÇÁ¦ ºñÁî´Ï½º ·ÎÁ÷À» °¡Áö°í ÀÖ´Â ¼ºñ½º ±¸Çö ºóÀ» ÀÛ¼ºÇÏ´Â °ÍÀÌ´Ù. ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ¼ºñ½º ±¸Çö ºóÀ» ÀÛ¼ºÇÒ ¶§¿¡´Â @WebService ¾î³ëÅ×À̼ÇÀ» Ãß°¡ÇØ¾ß ÇÑ´Ù. ÀÌ ¾î³ëÅ×À̼ÇÀº ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¸¦ ¸í½ÃÇÑ endpointInterface ¸âÅ͸¦ ¼Ó¼ºÀ¸·Î °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. <¸®½ºÆ® 6>¿¡¼´Â ½ÇÁ¦·Î ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ¼ºñ½º ±¸Çö ºóÀ» º¸¿©ÁØ´Ù. ¿©±â¼µµ @EndpointDescriptionÀ̶ó´Â ¾î³ëÅ×À̼ÇÀ» Ãß°¡ÇÏ¿© HTTP »ó¿¡ °ø°³ÇÒ ¿£µåÆ÷ÀÎÆ® URLÀ» ÀÓÀÇÀÇ °ªÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
| <¸®½ºÆ® 6>¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ¼ºñ½º ±¸Çö ºó | | | |
package fromwsdl.server;
import javax.jws.WebService;
import jeus.webservices.annotation.EndpointDescription;
// ÀÌ Å¬·¡½º°¡ ½ÇÁ¦·Î À¥ ¼ºñ½ºÀÇ ¿£µåÆ÷ÀÎÆ® ÀÓÀ» ¸í½ÃÇϸç, º¸´Ù »ó¼¼ÇÑ À¥ ¼ºñ½º¿¡´ëÇÑ
// ¼¼úÀº Àû½ÃÇÑ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¸¦ ÂüÁ¶ÇÒ °ÍÀ» ¸í½ÃÇÑ´Ù.
@WebService(endpointInterface="fromwsdl.server.HelloServiceImpl")
// ¼ºñ½º¿¡ Á¢±ÙÇϱâ À§Çؼ ÇÊ¿äÇÑ URLÀ» ¸í½ÃÀûÀ¸·Î ¼³Á¤ÇÑ´Ù.
@EndpointDescription(endpointUrl="HelloServiceTopdown")
// wsimport¸¦ ÅëÇØ »ý¼ºÇÏ¿´´ø ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º
HelloServiceImpl¸¦ ±¸ÇöÇϰí ÀÖ´Ù.
public class HelloServiceImplSoapBinding implements
HelloServiceImpl{
// ½ÇÁ¦ ±¸ÇöµÈ À¥ ¼ºñ½º ¸Þ¼Òµå´Ù.
public String hello(String sHello){
return sHello;
}
}
| |
 |
¿©±â±îÁö ÇØ¼ ¼ºñ½º ±¸Çö ºó±îÁö ÀÛ¼ºÇß´Ù¸é À̸¦ À¥ ¼ºñ½º·Î °ø°³ÇÏ´Â ÀÛ¾÷À» ÁøÇàÇØº¸ÀÚ.
¡Ü À¥ ¼ºñ½º ÆÐŰ¡°ú ¹èÄ¡
À¥ ¼ºñ½º·Î °ø°³Çϱâ À§ÇØ WAR ÇüÅ·ΠÆÐŰ¡ ÇÏ´Â ÀÛ¾÷Àº ÀÌÀüÀÇ From Java ¹æ½ÄÀÇ À¥ ¼ºñ½º ÆÐŰ¡ ¹× ¹èÄ¡ ÀÛ¾÷°ú À¯»çÇÏ´Ù. wsimport ½ºÅ©¸³Æ®¸¦ ÅëÇØ »ý¼ºÇÑ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¸¦ Æ÷ÇÔÇÑ ¸î °¡ÁöÀÇ »êÃâ¹°µé°ú ¼ºñ½º ±¸Çö ºóÀ» WEB-INF/classes¿¡ µÎ°í WAR ÇüÅ·ΠÆÐŰ¡ ÇÏ¸é µÈ´Ù. À̶§ÀÇ WAR ÆÐŰÁöÀÇ À̸§À» HelloServiceTopdown.war¶ó°í ÇÏ¿´À» °æ¿ì, À̸¦ Á¦¿ì½º 6.0¿¡ ¹èÄ¡ÇÏ¸é ´ÙÀ½°ú °°Àº ÁÖ¼Ò·Î Á¢±ÙÇÒ ¼ö ÀÖ°Ô µÈ´Ù. http://localhost:8088/HelloServiceTopdown/HelloServiceTopdown
½ÇÁ¦ ÀÌ ÁÖ¼Ò·Î À¥ ºê¶ó¿ìÀú »ó¿¡¼ È£ÃâÇÏ¸é ´ÙÀ½°ú °°ÀÌ ¼º°øÀûÀ¸·Î À¥ ¼ºñ½º°¡ ¹èÄ¡µÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.
 |
| <ȸé 3>¼º°øÀûÀ¸·Î ¹èÄ¡µÈ From WSDL ¹æ½ÄÀÇ À¥ ¼ºñ½º |
Áö±Ý±îÁö From Java ¹æ½Ä°ú From WSDL ¹æ½ÄÀÇ À¥ ¼ºñ½º »ý¼ºÀ» JAX-WS 2.0 ȯ°æ¿¡¼ ÁøÇàÇÏ´Â ¹æ¹ýÀ» ¿¹Á¦¿Í ÇÔ²² ¾Ë¾Æº¸¾Ò´Ù. J2EE 1.4 ȯ°æ¿¡¼ À¥ ¼ºñ½º ÀÛ¼º ÀÛ¾÷À» ÁøÇàÇÑ °æÇèÀÌ ÀÖ´Â µ¶ÀÚµéÀº ÀÌ ÀÛ¾÷µéÀÌ ¾ó¸¶³ª °£¼ÒÇØÁ³´ÂÁö ½±°Ô ¾Ë ¼ö ÀÖ¾úÀ» °ÍÀÌ´Ù.
 | À¥ ¼ºñ½º Ŭ¶óÀ̾ðÆ®ÀÇ ÀÛ¼º°ú À¥ ¼ºñ½º È£Ãâ |  |
À¥ ¼ºñ½º¿¡ Á¢±ÙÇÏ·Á¸é ¸ÕÀú À¥ ¼ºñ½º Ŭ¶óÀÌ¾ðÆ®¸¦ ÀÛ¼ºÇÏ¿©¾ß ÇÑ´Ù. À¥ ¼ºñ½º Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥Àº ±¸µ¿ ȯ°æ¿¡ µû¶ó ÀÚ¹ÙSE Ŭ¶óÀÌ¾ðÆ®¿Í ÀÚ¹ÙEE Ŭ¶óÀÌ¾ðÆ®·Î ±¸ºÐÇÒ ¼ö ÀÖ´Ù.
ÀÚ¹ÙSE Ŭ¶óÀÌ¾ðÆ®´Â ÀÏ¹Ý ÀÚ¹Ù ÇÁ·Î±×·¥°ú ¸¶Âù°¡Áö·Î ±¸µ¿µÇ¸ç ÀÚ¹ÙEE Ŭ¶óÀÌ¾ðÆ®´Â EJB³ª À¥ ÄÁÅ×ÀÌ³Ê °°ÀÌ ÀÚ¹ÙEE ȯ°æ¿¡¼ ±¸µ¿µÈ´Ù´Â Ư¡ÀÌ ÀÖ´Ù. ¸ÕÀú °£´ÜÇÑ ÀÚ¹ÙSE Ŭ¶óÀ̾ðÆ®ÀÇ ÀÛ¼º¹ýºÎÅÍ »ìÆìº¸ÀÚ.
| Java SE Ŭ¶óÀ̾ðÆ®ÀÇ ÀÛ¼º |
|
JAX-WS 2.0¿¡¼´Â ±âº»ÀûÀ¸·Î À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ®¿¡ ´ëÀÀÇÏ´Â µ¿Àû ÇÁ·Ï½Ã¸¦ ³»ºÎÀûÀ¸·Î »ý¼ºÇÏ¿© ¸¶Ä¡ À̸¦ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöüÀÎ °Íó·³ »ç¿ëÇÒ ¼ö ÀÖ´Ù. µû¶ó¼ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ °³¹ßÀÚ´Â »ý¼ºµÈ ÇÁ·Ï½Ã¸¦ ÅëÇØ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º·Î Á¤ÀÇµÈ À¥ ¼ºñ½º ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¼ö ÀÖ°Ô µÇ´Â °ÍÀÌ´Ù. ÀÌ¿Í °°Àº ÀÛ¾÷À» ÁøÇàÇÏ·Á¸é ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¿Í °°Àº ¸î °¡ÁöÀÇ »êÃâ¹°µéÀÌ ÇÊ¿äÇÏ´Ù. À̶§ ÇÊ¿äÇÑ »êÃâ¹°µéÀ» WSDL·ÎºÎÅÍ ¸¸µé¾î ³»±â À§Çؼ´Â From WSDL ¹æ½ÄÀÇ À¥ ¼ºñ½º »ý¼º¿¡¼¿Í ¸¶Âù°¡Áö·Î wsimport¶ó´Â ½ºÅ©¸³Æ® ÅøÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. <¸®½ºÆ® 7>Àº ±× »ç¿ë ¿¹ÀÌ´Ù.
| <¸®½ºÆ® 7>JAX-WS ÅøÀ» ÀÌ¿ëÇÑ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽ºÀÇ(SEI) »ý¼º | | | |
// Ŭ¶óÀÌ¾ðÆ®¿¡¼ ÇÊ¿äÇÑ SEI¿Í ¼ºñ½º Ŭ·¡½º°¡ »ý¼ºÀÌ µÈ´Ù.
wsimport -p fromjava.client.generated -d ./build
http://localhost:8088/HelloService/HelloService?wsdl
| |
 |
¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¿Í ¼ºñ½º Ŭ·¡½º°¡ »ý¼º µÇ¾ú´Ù¸é, ÀÌÁ¦ À̸¦ »ç¿ëÇϴ Ŭ¶óÀÌ¾ðÆ® ÀÚ¹Ù ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù. <¸®½ºÆ® 8>Àº À¥ ¼ºñ½º Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¡¹ÖÀÇ ÇÑ ¿¹¸¦ º¸¿©ÁØ´Ù. ÀÌ ºÎºÐÀº ±âÁ¸ JAX-RPC¿¡¼ Á¦°øÇÏ´ø À¥ ¼ºñ½º Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¡¹Ö ¿¹¿Í Èí»çÇÏ´Ù. ±âº»ÀûÀ¸·Î ¼ºñ½º ÀνºÅϽº¸¦ »ý¼ºÇÑ ´ÙÀ½, ±× ¼ºñ½º ÀνºÅϽº·ÎºÎÅÍ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ÇÁ·Ï½Ã °´Ã¼¸¦ ¾ò¾î¿À´Â ÀÛ¾÷ÀÌ ÁÖ°¡ µÈ´Ù. Ŭ¶óÀÌ¾ðÆ® ·±Å¸ÀÓ ³»ºÎÀûÀ¸·Î´Â ¸¹ÀÌ ´Þ¶óÁ³Áö¸¸ ¾î·µç °ÑÀ¸·Î ºÁ¼´Â ÀÚ¹ÙSE Ŭ¶óÀÌ¾ðÆ®¿¡¼´Â À¯»çÇÏ´Ù°í ÇÒ ¼ö ÀÖ°Ú´Ù.
| <¸®½ºÆ® 8>HelloService¸¦ È£ÃâÇϱâ À§ÇÑ Java SE Ŭ¶óÀÌ¾ðÆ® | | | |
package fromjava.client;
import fromjava.client.generated.*;
public class HelloClient {
public static void main (String[] args) {
try {
// ¼ºñ½º °´Ã¼¸¦ »ý¼ºÇϰí, µ¿Àû ÇÁ·Ï½Ã¸¦ »ý¼ºÇÑ´Ù.
HelloServiceImpl port = new
HelloServiceImplService().getHelloServiceImplPort();
System.out.println("Invoking HelloService");
// HelloService À¥ ¼ºñ½º¸¦ È£ÃâÇÑ´Ù.
String result = port.hello("Hi~ Micro Software");
System.out.println ("Following value has returned: "+result);
} catch (Exception ex) {
}
}
}
| |
 |
<¸®½ºÆ® 8>°ú °°ÀÌ Å¬¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿´´Ù¸é ½ÇÁ¦ À̸¦ ÄÄÆÄÀÏ ÇÏ¿© ½ÇÇà½ÃÄѼ <¸®½ºÆ® 9>¿Í °°Àº °á°ú¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¼º°øÀûÀ¸·Î ¸¶ÃÆ´Ù¸é ´ÙÀ½À¸·Î ³Ñ¾î°¡ º¸ÀÚ.
| <¸®½ºÆ® 9>¼ºñ½º È£Ãâ °á°ú | | | |
Invoking HelloService
Following value has returned : Hi~ Micro Software
| |
 |
ÀÚ¹ÙEE´Â Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÇ ±¸µ¿ ȯ°æÀº ÀÚ¹ÙEE ȯ°æÀÌ´Ù. Å©°Ô´Â ¼ºí¸´ ÇüÅÂÀÇ Å¬¶óÀÌ¾ðÆ®¿Í EJB ÇüÅÂÀÇ Å¬¶óÀÌ¾ðÆ®¸¦ ¿¹·Î µé ¼ö ÀÖ´Ù. J2EE 1.4 ȯ°æ¿¡¼ÀÇ À¥ ¼ºñ½º Ŭ¶óÀÌ¾ðÆ®´Â web.xmlÀ̳ª ejb-jar.xml¿¡
Ç׸ñÀ» Ãß°¡ÇÏ¿© À¥ ¼ºñ½º Ŭ¶óÀÌ¾ðÆ® ÇÁ·Ï½Ã »ý¼º¿¡ ÇÊ¿äÇÑ Á¤º¸¸¦ JNDI¿¡ µî·ÏÇÒ ¼ö ÀÖ¾ú´Ù. JAX-WS 2.0¿¡¼´Â @WebServiceRef ¾î³ëÅ×À̼Ǹ¸ ¼³Á¤ÇÏ¸é ±×¿Í °°Àº ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù. <¸®½ºÆ® 10>À» »ìÆìº¸ÀÚ.
| <¸®½ºÆ® 10>HelloService¸¦ È£ÃâÇϱâ À§ÇÑ ¼ºí¸´ ÇÁ·Î±×·¥ | | | |
package fromjava.client;
import javax.xml.ws.WebServiceRef;
import javax.servlet.http.*;
import fromjava.client.generated.*;
public class HelloJ2EEClient extends HttpServlet{
// @WebServiceRef ¾î³ëÅ×À̼ÇÀ» Ãß°¡Çϸé ÀÌ ¼ºí¸´ÀÌ ¹èÄ¡ µÇ´Â ½ÃÁ¡¿¡ À̼ºí¸´ Ŭ·¡½ºÀÇ
// svc¶ó´Â Çʵ忡 ¼ºñ½º ÀÎÅÍÆäÀ̽ºÀÇ ÀνºÅϽº°¡ ä¿öÁö°Ô µÈ´Ù.
@WebServiceRef(wsdlLocation="http://localhost:8088/HelloService/HelloService?wsdl")
static HelloServiceImplService svc;
public void doGet(HttpServletRequest request,HttpServletResponse response) {
try{
HelloServiceImpl port = svc.getHelloServiceImplPort();
System.out.println("Invoking HelloService");
String result = port.hello("Hi~ Micro Software");
System.out.println ("Following value has returned: "+result);
}catch(Exception ex){
}
}
}
| |
 |
<¸®½ºÆ® 8>°ú <¸®½ºÆ® 10>ÀÇ ¼Ò½º Äڵ带 ºñ±³ÇØ º¸¸é ¾Ë ¼ö ÀÖµíÀÌ µÎ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÇ ³»¿ëÀº °ÅÀÇ À¯»çÇÏ´Ù. ±âÁ¸ÀÇ J2EE 1.4 ȯ°æ¿¡¼ÀÇ Å¬¶óÀÌ¾ðÆ® ÀÛ¼ºÇÒ ¶§¿¡´Â º°µµÀÇ ¹èÄ¡ ¼¼úÀÚ¸¦ ÀÛ¼ºÇØ¾ß ÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖ¾ú´Ù. JAX-WS 2.0¿¡¼´Â @WebServiceRef ¾î³ëÅ×À̼ÇÀ» Ãß°¡ÇÔÀ¸·Î½á ±×·¯ÇÑ ¹ø°Å·Î¿òÀ» Å©°Ô ÁÙÀÏ ¼ö ÀÖ°Ô µÇ¾ú´Ù.
ÀÌ ¼ºí¸´À» ±¸µ¿ÇÏ·Á¸é WAR ÇüÅ·ΠÆÐŰ¡ ÇØ¾ß Çϴµ¥, À̶§ ¼ºí¸´¿¡ °üÇÑ Á¤º¸¸¦ Á¤ÀÇÇÏ´Â web.xmlÀÌ ÇÊ¿äÇÏ´Ù.
| <¸®½ºÆ® 11>¼ºí¸´ À¥ ¼ºñ½º Ŭ¶óÀ̾ðÆ®ÀÇ ¼³Á¤ -web.xml | | | |
<?xml version="1.0" encoding="UTF-8"?>
<web-app ¡¦ >
<description>Servlet Client for HelloService</description>
<display-name>Servlet HelloClient</display-name>
<servlet>
<description>Endpoint for Servlet Hello WebService</description>
<display-name>Servlet HelloClient</display-name>
<servlet-name>HelloClient</servlet-name>
<servletclass>
fromjava.client.HelloJ2EEClient</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloClient</servlet-name>
<url-pattern>/HelloClient</url-pattern>
</servlet-mapping>
</web-app>
| |
 |
 | À¥ ¼ºñ½º ¾î³ëÅ×ÀÌ¼Ç |  |
Áö±Ý±îÁö ±âº»ÀûÀ¸·Î À¥ ¼ºñ½º ¾î³ëÅ×À̼ÇÀ» Ȱ¿ëÇÏ¿© À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ®¸¦ »ý¼ºÇϰųª Ŭ¶óÀÌ¾ðÆ®¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýµé¿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Ù. ÀÌ·¸µí JAX-WS¿¡¼ ¾î³ëÅ×À̼ÇÀº ±âÁ¸ÀÇ JAX-RPC ȯ°æ¿¡¼ ¼öÇàÇØ¾ß Çß´ø ÀÛ¾÷·®À» »ó´çÈ÷ ÁÙ¿©ÁÖ´Â Áß¿äÇÑ ¿ªÇÒÀ» ´ã´çÇϰí ÀÖ´Ù. ÀÚ¹Ù¿Í WSDLÀÇ ¸ÅÇÎ ¹× Àڹ٠ŸÀÔ°ú WSDL¿¡¼ ÂüÁ¶ÇÏ´Â ¸Þ½ÃÁöÀÇ ½ºÅ°¸¶ ŸÀÔÀ¸·ÎÀÇ ¸ÅÇÎÀ» ´ã´çÇÏ°í ½ÇÁ¦ À¥ ¼ºñ½º ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â ·±Å¸ÀÓ ÇÁ·Î¼¼½º Áß¿¡ ÇÊ¿äÇÑ Á¤º¸µéÀ» Á¦°øÇÑ´Ù. JAX-WS 2.0¿¡¼ »ç¿ëÇÏ°Ô µÇ´Â ¾î³ëÅ×À̼ÇÀÇ Á¤ÀÇ´Â À¥ ¼ºñ½º¿¡ ±¹ÇÑµÈ ¾î³ëÅ×À̼ÇÀÇ °æ¿ì Web Services Metadata(JSR-181) ¸í¼¼¿Í JAX-WS 2.0 ¸í¼¼¿¡ ºÐ»êµÇ¾î Á¤ÀǵǾî ÀÖ´Ù. ±× ¿Ü¿¡ ¸Þ½ÃÁöÀÇ Å¸ÀÔ ¸ÅÇÎÀ» À§ÇØ ¹ü¿ëÀûÀ¸·Î »ç¿ëµÇ´Â ¾î³ëÅ×À̼ÇÀº JAXB 2.0 ¸í¼¼¿¡ Á¤ÀǵǾî ÀÖ°í, ¸®¼Ò½º ÀÎÁ§¼Ç°ú »ý¸í Áֱ⿡ °ü·ÃµÈ ¸Þ¼Òµåµé¿¡ °ü·ÃµÈ ¾î³ëÅ×À̼ǵéÀº Ä¿¸Õ ¾î³ëÅ×À̼Ç(JSR-250)¸í¼¼¿¡ Á¤ÀǵǾî ÀÖ´Ù. ¿©±â¼´Â ÀÌ·¯ÇÑ ¾î³ëÅ×À̼ǵé Áß À¥ ¼ºñ½º ÇÁ·Î±×·¡¹Ö¿¡ ÀÖ¾î ÀÚÁÖ ´Ù·ç¾î Áö´Â °ÍµéÀ» À§ÁÖ·Î Á» ´õ »ó¼¼È÷ ¾Ë¾Æº¼ °ÍÀÌ´Ù. Áï À¥ ¼ºñ½º ¸ÞŸµ¥ÀÌÅÍ ¸í¼¼¿¡ Á¤ÀÇµÈ ¾î³ëÅ×À̼ÇÀÌ ¼Ò°³µÉ ÅÙµ¥, Âü°í·Î JAX-WS 2.0°ú JAXB 2.0 ¾î³ëÅ×À̼ÇÀº À¥ ¼ºñ½º °³¹ßÀÚ°¡ Á÷Á¢ ¼³Á¤À» ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó JAX-WS Åø¿¡ ÀÇÇØ¼ »ý¼ºµÈ Äڵ忡 ÀÚµ¿À¸·Î »ðÀÔÀÌ µÈ´Ù.
| À¥ ¼ºñ½º ¸ÞŸµ¥ÀÌÅÍ(JSR-181) ¸í¼¼¿¡ Á¤ÀÇµÈ ¾î³ëÅ×ÀÌ¼Ç |
|
¿ø·¡ À¥ ¼ºñ½º ¸ÞŸµ¥ÀÌÅÍ ¸í¼¼´Â ÀÚ¹ÙEE ÄÁÅ×ÀÌ³Ê È¯°æ¿¡¼ ÀÚ¹Ù À¥ ¼ºñ½º¿¡ ´ëÇÑ Á¤ÀǸ¦ ½±°Ô ÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ Á¦¾ÈµÈ ¾î³ëÅ×À̼ÇÀ» Á¤ÀÇÇÏ´Â ¸í¼¼ÀÌ´Ù. ÀÌ ¸í¼¼´Â JAX-WS ¸í¼¼°¡ Á¤ÀǵDZâ Àü¿¡ ÀÌ¹Ì ¿Ï¼ºÀÌ µÇ¾î ÀÖ¾úÀ¸¸ç, JAX-WS¿¡¼´Â ÀÌ ¸í¼¼¿¡ Á¤ÀÇµÈ ¾î³ëÅ×À̼ÇÀ» Ȱ¿ëÇϰí ÀÖ´Ù. ¿©±â¼ »ìÆì º¼ ¾î³ëÅ×À̼ÇÀº ´ÙÀ½°ú °°´Ù.
- javax.jws.WebService
- javax.jws.WebMethod
- javax.jws.OneWay
- javax.jws.WebParam
- javax.jws.WebResult
- javax.jws.soap.SOAPBinding
¡Ü javax.jws.WebService
@WebService ¾î³ëÅ×À̼ÇÀº ¾î³ëÅ×À̼ÇÀ» Æ÷ÇÔÇϰí ÀÖ´Â ÀÚ¹Ù ºó Ŭ·¡½º°¡ À¥ ¼ºñ½º¸¦ ±¸ÇöÇÑ ¿£µåÆ÷ÀÎÆ® ±¸Çö ºó ȤÀº À¥ ¼ºñ½º¸¦ Á¤ÀÇÇÑ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® ÀÎÅÍÆäÀ̽ºÀÓÀ» ¸í½ÃÇÒ ¶§ »ç¿ëÇÑ´Ù. ÀÌ ¾î³ëÅ×À̼ÇÀÌ °¡Áú ¼ö ÀÖ´Â ¼Ó¼ºÀº <Ç¥ 1>°ú °°´Ù.
 |
| <Ç¥ 1> @WebServiceÀÇ ¼Ó¼º |
¡Ü javax.jws.WebMethod
@WebMethod ¾î³ëÅ×À̼ÇÀº À¥ ¼ºñ½º ¿ÀÆÛ·¹À̼ÇÀ¸·Î °ø°³ÇÏ´Â ¸Þ¼Òµå¸¦ ¼³Á¤ÇÒ ¶§ »ç¿ëÇÑ´Ù. ÀÌ ¾î³ëÅ×À̼ÇÀÌ °¡Áú ¼ö ÀÖ´Â ¼Ó¼ºÀº <Ç¥ 2>¸¦ Âü°íÇÏÀÚ.
 |
| <Ç¥ 2> @WebMethodÀÇ ¼Ó¼º |
¡Ü javax.jws.OneWay
@OneWay ¾î³ëÅ×À̼ÇÀº À¥ ¼ºñ½º·Î °ø°³µÈ ºñÁî´Ï½º ¸Þ¼Òµå°¡ ¹Ýȯ °ªÀÌ Á¸ÀçÇÏ±â ¾Ê°í ´ÜÁö ÀÔ·Â ÆÄ¶ó¹ÌÅ͸¸ Á¸ÀçÇÒ ¶§ »ç¿ëÇÑ´Ù. @WebMethod ¾î³ëÅ×À̼ǰú ÇÔ²² »ç¿ëµÈ´Ù. À¥ ¼ºñ½º ¸Þ¼ÒµåÀÇ ¹Ýȯ ŸÀÔÀÌ void°¡ ¾Æ´Ï°Å³ª Holder Ŭ·¡½º ŸÀÔÀÌ ÀÔ·Â À¥ ¼ºñ½º ¸Þ¼ÒµåÀÇ ÆÄ¶ó¹ÌÅÍÀÇ Å¸ÀÔÀ¸·Î ¼³Á¤µÉ ¶§, À¥ ¼ºñ½º ¸Þ¼Òµå°¡ Çʼö󸮿¹¿Ü(checked exception)À» ´øÁö´Â °æ¿ì¿¡´Â ÀÌ ¾î³ëÅ×À̼ÇÀ» ºÙÀÏ ¼ö ¾ø´Ù. ÀÌ ¾î³ëÅ×À̼ÇÀº º°µµÀÇ ¼Ó¼º Á¤Àǰ¡ ÇÊ¿äÇÏÁö ¾Ê´Ù.
¡Ü javax.jws.WebParam
@WebParam ¾î³ëÅ×À̼ÇÀº À¥ ¼ºñ½º ÀÚ¹Ù ¸Þ¼ÒµåÀÇ ÀÔ·Â ÆÄ¶ó¹ÌÅÍ¿Í WSDL ÆÄÀÏ¿¡¼ ÆÄ¶ó¹ÌÅ͸¦ Ç¥Çö ÇÏ´Â XML ¿¤¸®¸ÕÆ® °£ÀÇ ¸ÅÇÎÀ» ¼³Á¤ÇÏ¸ç ÆÄ¶ó¹ÌÅÍÀÇ µ¿ÀÛ Æ¯¼ºµµ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. <Ç¥ 3>°ú °°Àº ¼Ó¼ºÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.
 |
| <Ç¥ 3> @WebParamÀÇ ¼Ó¼º |
¡Ü javax.jws.WebResult
@WebResult ¾î³ëÅ×À̼ÇÀº À¥ ¼ºñ½º·Î °ø°³µÇ´Â ÀÚ¹Ù ¸Þ¼ÒµåÀÇ ¹Ýȯ °ª°ú WSDLÀÇ ¹Ýȯ °ªÀ» Ç¥ÇöÇÏ´Â XML ¿¤¸®¸ÕÆ® °£ÀÇ ¸ÅÇÎÀ» ¼³Á¤ÇÑ´Ù. <Ç¥ 4>¿Í °°Àº ¼Ó¼ºÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.
 |
| <Ç¥ 4> @WebResultÀÇ ¼Ó¼º |
¡Ü javax.jws.soap.SOAPBinding
@SOAPBinding ¾î³ëÅ×À̼ÇÀº °³¹ßÀÚ°¡ À¥ ¼ºñ½ºÀÇ SOAP ¹ÙÀεùÀ» ¼±ÅÃÇÒ ¼ö ÀÖ°Ô ÇØ ÁØ´Ù. JAX-WS¿¡¼´Â JAX-RPC¿¡¼ Áö¿øµÇ¾ú´ø RPC/ENCODED ¹æ½ÄÀº ´õ ÀÌ»ó Áö¿øÇÏÁö ¾Ê´Â´Ù. Áï °¡´ÉÇÑ Á¶ÇÕÀº RPC/LITERAL, DOCUMENT/LITERAL WRAPPED, DOCUMENT/LITERAL BAREÀ§ ¼¼ °¡Áö ŸÀÔÀÌ´Ù. RPC/LITERAL ŸÀÔÀº À¥ ¼ºñ½º ¸Þ¼Òµå À̸§¿¡¼ À¯ÃßµÈ À̸§À» °¡Áö°í SOAP ¿äû/ÀÀ´ä ¸Þ½ÃÁöÀÇ ÆÄ¶ó¹ÌÅÍ ºÎºÐÀ» Çѹø °¨½Î°Ô µÈ´Ù. ÀÌ·¯ÇÑ ¸Þ½ÃÁö ÇüÅÂÀÇ »ý¼ºÀº SOAPBinding¿¡ ÀÖ¾î¼ÀÇ ÇϳªÀÇ ¾à¼ÓÀÌ´Ù. ±×¿¡ ¹ÝÇØ DOCUMENT/LITERAL ¹æ½ÄÀº WSDL¿¡¼ ¸Þ½ÃÁöÀÇ ÇüŸ¦ ½ºÅ°¸¶ ŸÀÔÀ¸·Î ¿ÏÀüÈ÷ Á¤ÀÇÇÑ´Ù. Áï SOAP ¹Ùµð ³»ºÎÀÇ ¸ðµç ¸Þ½ÃÁö´Â WSDL³»ºÎÀÇ ½ºÅ°¸¶¿¡ Á¤ÀÇµÈ Å¸ÀÔÀÇ ÇüÅ·θ¸ ¸¸µé¾î Áú ¼ö ÀÖ´Ù. <Ç¥ 5>´Â @SOAPBindingÀÇ ¼Ó¼ºÀ» ³ªÅ¸³½´Ù.
 |
| <Ç¥ 5> @SOAPBindingÀÇ ¼Ó¼º |
 | ¿¹Á¦ÀÇ »ç¿ë |  |
ÀÌÁ¦±îÁö ¼³¸íµÈ ¸ðµç »ùÇÃÀº ÀÌ¹Ì ¼³¸íÇÑ ´ë·Î wsgenÀ̳ª wsimport¿Í °°Àº ½ºÅ©¸³Æ® Åø·Î ÇÊ¿äÇÑ »êÃâ¹°À» »ý¼ºÇϰí, Á÷Á¢ WAR³ª JAR ÇüÅ·ΠÆÐŰ¡ ÇÏ¿© µ¿ÀÏÇÏ°Ô ½ÇÇàÇØ º¼ ¼öµµ ÀÖ´Ù. ´õºÒ¾î µ¶ÀÚµéÀÇ ÆíÀǸ¦ À§ÇØ ant Åø·Î ½ÇÇà ÇÒ ¼ö ÀÖµµ·Ï º°µµ·Î ÀÛ¼ºÇÏ¿© ÷ºÎÇÏ¿´´Ù. ÀÌ ¿¹Á¦µéÀ» ½ÇÇà ½ÃŰ·Á¸é ´ÙÀ½°ú °°ÀÌ À¥ ¼ºñ½º ¿£µåÆ÷ÀÎÆ® Á¾·ù¿¡ µû¶ó <¸®½ºÆ® 12> <¸®½ºÆ® 13><¸®½ºÆ® 14>¿Í °°ÀÌ ½ÇÇàÇÏ¸é µÈ´Ù.
| <¸®½ºÆ® 12>From Java ¹æ½ÄÀÇ ¼ºí¸´ ¿£µåÆ÷ÀÎÆ® À¥ ¼ºñ½º ¿¹Á¦ | | | |
// À¥ ¼ºñ½ºÀÇ »ý¼º
ant gen-service-bottomup
// Java EE À¥ ¼ºñ½º Ŭ¶óÀ̾ðÆ®ÀÇ »ý¼º
ant gen-client package-client
// Java SE À¥ ¼ºñ½º Ŭ¶óÀ̾ðÆ®ÀÇ »ý¼º ¹× ½ÇÇà
ant gen-client run-client
| |
 |
| <¸®½ºÆ® 13>From Java ¹æ½ÄÀÇ EJB ¿£µåÆ÷ÀÎÆ® À¥ ¼ºñ½º ¿¹Á¦ | | | |
// À¥ ¼ºñ½ºÀÇ »ý¼º
ant gen-service-ejb
// Java SE À¥ ¼ºñ½º Ŭ¶óÀ̾ðÆ®ÀÇ »ý¼º ¹× ½ÇÇà
ant gen-client-ejb run-client-ejb
| |
 |
| <¸®½ºÆ® 14>From WSDL ¹æ½ÄÀÇ ¼ºí¸´ ¿£µåÆ÷ÀÎÆ® À¥ ¼ºñ½º ¿¹Á¦ | | | |
// À¥ ¼ºñ½ºÀÇ »ý¼º
ant gen-service-topdown
// Java SE À¥ ¼ºñ½º Ŭ¶óÀ̾ðÆ®ÀÇ »ý¼º ¹× ½ÇÇà
ant gen-client run-client
| |
 |
ÀÌÁ¦±îÁö JAX-WS 2.0 ȯ°æ¿¡¼ÀÇ °£´ÜÇÑ À¥ ¼ºñ½º¸¦ »ý¼ºÇϰí È£ÃâÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ »ìÆìº¸¾Ò´Ù. ¿©±â¿¡ Æ÷ÇÔµÈ ¿¹Á¦¿Í ¼³¸íÀº °¡Àå ±âº»ÀûÀÎ ³»¿ëÀ» ´Ù·ç°í ÀÖÀ¸¸ç ÀÌ ¿Ü¿¡µµ JAXWS 2.0¿¡´Â ¸¹Àº Ư¼ºµéÀÌ ÀÖ´Ù. ÇÏÁö¸¸ °¡Àå ÀüÇüÀû¸é¼µµ ÀϹÝÀûÀÎ À¥ ¼ºñ½º ¿¹Á¦¸¦ ´Ù·ç¸ç ¼³¸íÇÏ¿´À¸´Ï, ¾ÕÀ¸·Î JAXWS 2.0À» ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹ÖÀÇ ±âȸ°¡ Àְųª ÀÌÁ¦ ¸· À¥ ¼ºñ½º¸¦ ½ÃÀÛÇÏ·Á´Â µ¶ÀÚ¿¡°Ô µµ¿òÀÌ µÇÁö ¾Ê¾ÒÀ»±î ÇÑ´Ù.
¸î ³â ÀüºÎÅÍ º¯È¿Í ÁøÈ¸¦ °ÅµìÇØ¿Â À¥ ¼ºñ½º´Â ±â¼úÀûÀÎ ¸é¿¡¼ ÀÌ¹Ì °ý¸ñÇÒ ¸¸ÇÑ ¼ºÀåÀ» ÀÌ·ç¾úÁö¸¸ ¿©ÀüÈ÷ ÁøÇàÇüÀÌ´Ù.
¶ÇÇÑ ÇöÀç ±¤Ç³Ã³·³ ¹Ð¾î ´ÚÄ¡°í ÀÖ´Â SOA(Service Oriented Architecture)¿Í ESB(Enterprise Service Bus)ÀÇ ¿¬°ü ±â¼ú·Îµµ Å« °ü½ÉÀ» ²ø°í ÀÖ´Ù. À̴ ǥÁØ¿¡ ±â¹ÝÇÑ À¥ ¼ºñ½º¶ó´Â ±â¼úÀÌ ±× ¸¸Å Ȱ¿ëµµ°¡ ³Ð´Ù´Â ¹ÝÁõÀÏ °ÍÀÌ´Ù. ¾ÕÀ¸·Îµµ ´õ Å« ¹ßÀüÀÌ ±â´ëµÇ°í ÀÖ´Â À¥ ¼ºñ½º ºÐ¾ß¿¡ JAX-WS 2.0ÀÌ ÁÁÀº ÁøÀԷΰ¡ µÇ¾îÁÖ±æ Èñ¸ÁÇÏ¸é¼ À̸¸ ¸¶¹«¸® ÇÒ±î ÇÑ´Ù. @
Âü°í ÀÚ·á:
1. Java EE 5 ¾È³»¼ - http://java.sun.com/javaee/5/docs/tutorial/doc/
2. Java EE À¥ ¼ºñ½º ¼Ò°³ ¸µÅ© -http://java.sun.com/javaee/technologies/webservices/
3. JSR 181(Web Services Metadata for the Java Platform) ¸í¼¼ -http://www.jcp.org/en/jsr/detail?id=181
4. JSR 224(JAX-WS) ¸í¼¼ - http://www.jcp.org/en/jsr/detail?id=224
5. JSR 222(JAXB) ¸í¼¼ - http://www.jcp.org/en/jsr/detail?id=222
6. JSR 250(Common Annotations) ¸í¼¼ - http://www.jcp.org/en/jsr/detail -id=250
7. Tmaxsoft ȨÆäÀÌÁö - http://www.tmax.co.kr
8. Java EE 5 SDK - http://java.sun.com./javaee
9. GlassFish ÇÁ·ÎÁ§Æ® - https://glassfish.dev.java.net/
10. JAX-WS ÇÁ·ÎÁ§Æ® - https://jax-ws.dev.java.net/ |
|
* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ Á¦ÈÞ¸ÅüÀÎ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.