.
.
Enterprise Java Technologies Technical Tips
.
 
2005³â 5¿ù 18ÀÏ  

Enterprise Java Technologies Tech Tips¿¡ ¿À½Å ¿©·¯ºÐÀ» ȯ¿µÇÕ´Ï´Ù. Java 2 Platform, Enterprise Edition (J2EE)¿¡ ±â¹ÝÇÑ enterprise Java technologies ¿Í APIsÀÇ »ç¿ë¿¡ °üÇÑ ÃֽŠÁ¤º¸¸¦ ¾ò¾î °¡½Ã±â ¹Ù¶ø´Ï´Ù. ÀÌ ±Û¿¡¼­´Â Java 2 Java 2, Enterprise Edition, v 1.4 ¸¦ »ç¿ëÇÕ´Ï´Ù. ´Ù¿î·Îµå

À̹ø È£¿¡¼­´Â,

-EJB 2.1·Î ¸Þ½ÃÁö ±¸µ¿ ºó ÀÌ¿ëÇϱâ
-JAXR (JAVA API FOR XML REGISTRIES)

À» ´Ù·ç°Ô µË´Ï´Ù.

ÀúÀÚ Robert Eckstein

.

EJB 2.1·Î ¸Þ½ÃÁö ±¸µ¿ ºó ÀÌ¿ëÇϱâ

EJB(Enterprise Java Beans) ±â¼úÀÇ ±¸¼º¿ä¼Ò¿¡´Â ¼¼¼Ç ºó(session bean), ¿£Æ¼Æ¼ ºó(entity bean), ¸Þ½ÃÁö ±¸µ¿ ºó(message-driven bean, MDB) µîÀÇ ¼¼ Á¾·ù°¡ ÀÖ´Ù. »óÅÂÀ¯Áö(stateful)¿Í ºñ»óÅÂÀ¯Áö(stateless)°¡ ¸ðµÎ °¡´ÉÇÑ ¼¼¼Ç ºóÀº ÈçÈ÷ ºñÁî´Ï½º ÇÁ·Î¼¼½º¸¦ ³ªÅ¸³»´Âµ¥, »óÅÂÀ¯Áö ¼¼¼Ç ºóÀº ÀϹÝÀûÀ¸·Î Çѹø¿¡ ÇÑ Å¬¶óÀÌ¾ðÆ®¿¡ ÀÇÇØ ¾×¼¼½ºµÇÁö¸¸, »óÅ À¯Áö¿Í ºñ»óÅ À¯Áö ¼¼¼Ç ºóÀº ¸ðµÎ µ¿±â ¹æ½ÄÀ¸·Î ¾×¼¼½ºµÇ¸ç ºñ¿µ¼ÓÀûÀÌ´Ù. ÀÌ¿Í ´ëÁ¶ÀûÀ¸·Î ¿£Æ¼Æ¼ ºóÀº ¿µ¼ÓÀû ½ºÅ丮Áö¿¡ ÀúÀåµÇ´Â ºñÁî´Ï½º µ¥ÀÌÅ͸¦ ³ªÅ¸³½´Ù. MDB´Â J2EE ¾ÖÇø®ÄÉÀ̼ÇÀÌ JMS(Java Message Service) API¸¦ »ç¿ëÇÏ¿© ºó°ú Ŭ¶óÀÌ¾ðÆ®°£ÀÇ ¸Þ½ÃÁö¸¦ ºñµ¿±âÀûÀ¸·Î ó¸®ÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. MDB´Â ÃֽŠÇüÅÂÀÇ EJB·Î, EJB2.0°ú ÇÔ²² µµÀԵǾú´Âµ¥, MDBÀÌ µµÀԵǸ鼭 J2EE ¾ÖÇø®ÄÉÀ̼ÇÀº JMS(Java Message Service) API¸¦ »ç¿ëÇÏ¿© ºó°ú Ŭ¶óÀÌ¾ðÆ®°£ÀÇ ¸Þ½ÃÁö¸¦ ºñµ¿±âÀûÀ¸·Î ó¸®ÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù.

MDB´Â ¿©·¯ ¸é¿¡¼­ »óÅÂÀ¯Áö ¼¼¼Ç ºó°ú ºñ½ÁÇÏ´Ù. EJB ½ºÆåÀº »óÅÂÀ¯Áö ¼¼¼Ç ºó°ú À¯»çÇÑ MDBÀÇ ÀϺΠƯ¼ºÀ» °­Á¶ÇÏ´Â ¸î °¡Áö ¿¹¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.

  • ¸Þ½ÃÁö ±¸µ¿ ºóÀÇ ÀνºÅϽº´Â ƯÁ¤ Ŭ¶óÀÌ¾ðÆ®¿¡ ´ëÇÑ µ¥ÀÌÅÍ ¶Ç´Â ´ëÈ­ »óŸ¦ À¯ÁöÇÏÁö ¾Ê´Â´Ù.
  • EJB ÄÁÅ×À̳ʴ ¾î¶² ¸Þ½ÃÁö ±¸µ¿ ºó ÀνºÅϽº¿¡µµ ¸Þ½ÃÁö¸¦ ÇÒ´çÇÒ ¼ö ÀÖ¾î ¸Þ½ÃÁö ±¸µ¿ ºóÀÇ ÀνºÅϽº´Â ¸ðµÎ µ¿µîÇÏ´Ù.
  • ÄÁÅ×À̳ʴ À̵é ÀνºÅϽº¸¦ Ç®¸µÇÏ¿© ¸Þ½ÃÁö ½ºÆ®¸²ÀÌ º´·Ä 󸮵ǵµ·Ï ÇÒ ¼ö ÀÖ´Ù.
  • ÇϳªÀÇ ¸Þ½ÃÁö ±¸µ¿ ºóÀÌ º¹¼ö Ŭ¶óÀ̾ðÆ®ÀÇ ¸Þ½ÃÁö¸¦ ó¸®ÇÒ ¼ö ÀÖ´Ù.

µÎ °¡Áö ºó »çÀÌÀÇ °¡Àå ¶Ñ·ÇÇÑ Â÷ÀÌ´Â MDB´Â µ¿±â ¸Þ¼Òµå È£Ãâ(°¡·É À̺¥Æ®) ´ë½Å ºñµ¿±â JMS ¸Þ½ÃÁö¸¦ ¼ö½ÅÇÑ´Ù´Â Á¡ÀÌ´Ù. ¼¼¼Ç ºó°ú ¿£Æ¼Æ¼ ºóÀº JMS ¸Þ½ÃÁö¸¦ Àü¼ÛÇϰí À̸¦ µ¿±âÀûÀ¸·Î ¼ö½ÅÇÒ ¼ö ÀÖÁö¸¸ ºñµ¿±âÀûÀ¸·Î ¼ö½ÅÇÒ ¼ö´Â ¾ø´Ù. ÀÌµé ºñµ¿±â ¸Þ½ÃÁö´Â ¾ÖÇø®ÄÉÀÌ¼Ç Å¬¶óÀ̾ðÆ®, ¶Ç ´Ù¸¥ ¿£ÅÍÇÁ¶óÀÌÁî ºó, À¥ ±¸¼º¿ä¼Ò µî ¾î¶² J2EE·Îµç Àü¼ÛÀÌ °¡´ÉÇÏ´Ù. EJB 2.0ÀÌ µµÀԵǸ鼭 MDB¸¦ ±¸ÇöÇϱⰡ °£´ÜÇØÁ³´Ù. MDB´Â JMS ¸Þ½ÃÁö¿¡¸¸ ¹ÝÀÀÇϱ⠶§¹®¿¡ ´Ù¸¥ Á¾·ùÀÇ ¿£ÅÍÇÁ¶óÀÌÁî ºó¿¡¼­ ±â´ëµÇ´Â °Í°ú °°Àº Ŭ¶óÀÌ¾ðÆ® ÀÎÅÍÆäÀ̽º(client interface)³ª Ȩ ÀÎÅÍÆäÀ̽º(home interface)°¡ ÇÊ¿äÄ¡ ¾Ê´Ù. MDB´Â JMS ÀÎÅÍÆäÀ̽º javax.jms.MessageListener¿Í javax.ejb.MessageDrivenBean ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ÇϳªÀÇ Å¬·¡½º¸¸À» ¿ä±¸ÇÑ´Ù. ´ÙÀ½Àº MDBÀÇ °£´ÜÇÑ ¿¹Á¦ÀÌ´Ù.

   import javax.ejb.*;
   import javax.jms.*;

   public class MyMessageBean implements MessageDrivenBean,
       MessageListener
   {

       public void ejbCreate() throws CreateException {...}
       public void ejbRemove() { ... }
       public void setMessageDrivenContext(
           MessageDrivenContext ctx) { ... }

       public void onMessage(Message msg) { ... }

   }

Ŭ¶óÀÌ¾ðÆ® ±¸¼º¿ä¼Ò´Â MDB¸¦ ã¾Æ¼­ ±×°÷¿¡¼­ Á÷Á¢ ¸Þ¼Òµå¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù. ´ë½Å Ŭ¶óÀÌ¾ðÆ®´Â MDB Ŭ·¡½º°¡ MessageListenerÀÎ ¸Þ½ÃÁö ¼ö½ÅÁö¿¡ ¸Þ½ÃÁö¸¦ Àü¼ÛÇÔÀ¸·Î½á JMS¸¦ ÅëÇØ MDB¿¡ ¾×¼¼½ºÇÕ´Ï´Ù. ´ÙÀ½Àº J2EE 1.4 TutorialÀÇ MDB ¿¹Á¦¸¦ ±âÃÊ·Î ÇÑ ¿¹Á¦ÀÌ´Ù. MDB¿¡ ¸Þ½ÃÁö¸¦ Àü¼ÛÇϱâ À§ÇØ Å¬¶óÀÌ¾ðÆ®´Â ¸ÕÀú Ä¿³Ø¼Ç ÆÑÅ丮 (connection factory)¿Í Å¥(queue)¸¦ ¸¸µç´Ù.

   connectionFactory = 
     (ConnectionFactory) jndiContext.lookup(
     "java:comp/env/jms/MyConnectionFactory");
   destination = 
     (Queue) jndiContext.lookup("java:comp/env/jms/QueueName");

´ÙÀ½À¸·Î, Ŭ¶óÀÌ¾ðÆ®´Â Å¥ Ä¿³Ø¼Ç, ¼¼¼Ç, ¼Û½ÅÀÚ¸¦ »ý¼ºÇÑ´Ù.

   connection = connectionFactory.createConnection();
   session = connection.createSession(false,
     Session.AUTO_ACKNOWLEDGE);
   messageProducer = session.createProducer(destination); 
   message = session.createTextMessage();

¸¶Áö¸·À¸·Î, Ŭ¶óÀÌ¾ðÆ®°¡ Å¥¿¡ ¸Þ½ÃÁö¸¦ º¸³½´Ù.

   for (int i = 0; i < NUM_MSGS; i++) {
     message.setText("This is message " + (i + 1));
     System.out.println("Sending message: " +
       message.gettext());
     messageProducer.send(message);
   } 

Å¥°¡ ¸Þ½ÃÁö¸¦ ¼ö½ÅÇÒ °æ¿ì EJB ÄÁÅ×À̳ʴ MDBÀÇ onMessage() ¸Þ¼Òµå¸¦ È£ÃâÇϴµ¥, ÀÌ ¸Þ¼Òµå´Â ¸Þ½ÃÁöÀÇ ÇÁ·Î¼¼½ÌÀ» ó¸®ÇÏ´Â ºñÁî´Ï½º ·ÎÁ÷À» Æ÷ÇÔÇϰí ÀÖ´Ù. ¸Þ½ÃÁö¸¦ ÆÄ½ÌÇϰí ÇÊ¿äÇÑ ºñÁî´Ï½º ·ÎÁ÷À» ¼öÇàÇÏ´Â °ÍÀº MDBÀÇ Ã¥ÀÓÀÌ´Ù. MyMessageBeanÀÇ °æ¿ì, onMessage() ¸Þ¼Òµå´Â µé¾î¿À´Â ¸Þ½ÃÁö¸¦ TextMessage·Î ij½ºÆ®Çϰí ÅØ½ºÆ®¸¦ ·Î±× ÆÄÀÏ¿¡ º¸³¾ ¼ö ÀÖ¾ú´Ù.

   public void onMessage(Message inMessage) {

     TextMessage msg = null;
     
     try {
      if (inMessage instanceof TextMessage) {
         msg = (TextMessage) inMessage;
         logger.info("MESSAGE BEAN: Message received: " +
           msg.getText());
        } else {
         logger.warning("Message of wrong type: " +
           inMessage.getClass().getName());
        }
     } catch (JMSException e) {
       e.printStackTrace();
     } catch (Throwable te) {
       te.printStackTrace();
     }
   } 

EJB 2.1¿¡¼­ »õ·Î¿öÁø ³»¿ë

EJB 2.1À» µµÀÔÇÏ¸é ´õ ÀÌ»ó JMS »ç¿ë¿¡ ±¸¾Ö¸¦ ¹ÞÁö ¾Ê¾Æµµ µÇ´Âµ¥, MDB¸¦ À¥ ¼­ºñ½º¿¡ ¿¬°áÇϰíÀÚ ÇÏ´Â ÇÁ·Î±×·¡¸Ó¿¡°Ô´Â ÀÌ·± º¯È­°¡ ¸Å¿ì Áß¿äÇÏ´Ù. ÀÌÁ¦´Â ÀûÀýÇÑ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÔÀ¸·Î½á MDB°¡ ´Ù¸¥ Á¾·ùÀÇ ¸Þ½ÃÁö¸¦ ûÃëÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. ÀÌ ÀÎÅÍÆäÀ̽º´Â Åë»óÀûÀ¸·Î J2EE Ä¿³ØÅÍ ¾ÆÅ°ÅØÃ³¸¦ µû¸£´Â ¡®Ä¿³ØÅÍ(connector)¡¯¸¦ »ç¿ëÇÏ¿© Ãß°¡µÈ´Ù. J2EE Ä¿³ØÅÍ ¾ÆÅ°ÅØÃ³ 1.5´Â Ưº°È÷ MDB¿¡ ¸ÂÃß¾îÁø ¸Þ½Ã¡ °è¾àÀ» Á¤ÀÇÇÑ´Ù. (2004³â 12¿ù 15ÀÏÀÚ Å×Å©ÆÁ J2EE Ä¿³ØÅÍ ¾ÆÅ°ÅØÃ³ 1.5 ÂüÁ¶).

ºñµ¿±â Ä¿³ØÅ͸¦ ±â¹ÝÀ¸·Î ÇÑ MDB´Â Ç¥ÁØ javax.ejb.MessageDrivenBean ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϸç, ¾Æ¿ï·¯ Enterprise Information System ƯÀ¯ÀÇ Ä¿³ØÅÍ ÀÚü¿¡ ÀÇÇØ Á¤ÀǵǴ ƯÁ¤ÇÑ ¸Þ½Ã¡ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ´Ù.

À¥ ¼­ºñ½º Ä¿³ØÅÍ¿Í °ü°èµÈ °£´ÜÇÑ ¿¹¸¦ »ìÆìº¸ÀÚ. Ä¿³ØÅÍ ¼ÒÇÁÆ®¿þ¾î´Â RAR(Resource Archive) ÆÄÀÏ¿¡ »óÁÖÇϰí, ÀÌ RAR´Â ¶ÇÇÑ °³¹ßÀÚ°¡ À¥ ¼­ºñ½º MDB¸¦ »ý¼ºÇϱâ À§ÇØ »ç¿ëÇÏ´Â ¸Þ½Ã¡ ÀÎÅÍÆäÀ̽º¿Í ¸Þ½Ã¡ API¸¦ Á¤ÀÇÇÑ´Ù. ´ÙÀ½Àº EJB 2.1 MDB°¡ ¹Ýµå½Ã ±¸ÇöÇØ¾ß ÇÏ´Â °¡Á¤ÀûÀÎ ÀÎÅÍÆäÀ̽ºÀÌ´Ù.

   package com.someone.web;

   public interface WebServiceListener {
       public void receiveWebServiceMessage(
           XMLDocument message);
   }

ÀÌ °æ¿ì MDB´Â javax.ejb.MessageDrivenBean ÀÎÅÍÆäÀ̽º¿Í WebServiceListener ÀÎÅÍÆäÀ̽º¸¦ ¸ðµÎ ±¸ÇöÇÏ°Ô µÈ´Ù. ´ÙÀ½ ÄÚµå´Â WebServiceListener ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ¿© XML ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â MDB¸¦ º¸¿©ÁØ´Ù.

   package com.someone.web;

   public class WebServiceBean implements 
         javax.ejb.MessageDrivenBean,
         com.someone.web.WebServiceListener
   {
         MessageDrivenContext ejbContext;

         public void setMessageDrivenContext(
             MessgeDrivenContext context){
                ejbContext = context;
         }

         public void ejbCreate()
         {
             //  Code omitted
        }

         public void receiveWebServiceMessage(
             XMLDocument message)
         {
              
              //  Do something with message

         }
         public void ejbRemove(){
         
              // code omitted
         }
   }

»ç¿ëµÇ´Â ¸Þ½Ã¡ ÀÎÅÍÆäÀ̽º°¡ ¸®ÅÏ Å¸ÀÔÀ» Á¤ÀÇÇÏ´Â ¸Þ¼Òµå¸¦ ¼±¾ðÇÒ ¼ö ÀÖ´Ù´Â µ¥ À¯ÀÇÇÏ±æ ¹Ù¶õ´Ù. À̹ø¿¡µµ Ä¿³ØÅͰ¡ ¹Ýµå½Ã °³ÀÔÇÏ¿© ȸ½Å ¸Þ½ÃÁö¸¦ ´Ù½Ã ¼Û½ÅÀÚ¿¡°Ô Áß°èÇØ¾ß ÇÑ´Ù.

¹èÄ¡ ¼­¼úÀÚ º¯°æ

EJB 2.1¿¡¼­´Â MDB¸¦ À§ÇÑ ¹èÄ¡ ¼­¼úÀÚ(deployment descriptor)°¡ »ó´ç¼ö º¯°æµÇ¾ú´Ù. À̵éÀº ´õ ÀÌ»ó JMS¿¡¸¸ ÀüÀûÀ¸·Î ÀÇÁ¸ÇÏÁö ¾Ê±â ¶§¹®¿¡ EJB 2.1¿¡¼­´Â <message-selector>¿Í <acknowledge-mode>¿¤¸®¸ÕÆ®°¡ ±³Ã¼µÇ¾ú½À´Ï´Ù. ÀÌ¿Í ´õºÒ¾î, MDBÀÇ ´Ù¾çÇÑ ¼Ó¼ºÀ» ¿­°ÅÇϱâ À§ÇØ message-agnostic ¿¤¸®¸ÕÆ®ÀÎ <activation-config>°¡ µµÀԵǾú´Ù. <activation-config>ÀÇ ¼Ó¼ºµéÀº ¸Þ½ÃÁö ±¸µ¿ ºóÀÌ ¹èÄ¡µÉ ¶§ Ä¿³ØÅÍ¿¡ Àü´ÞµÈ´Ù.

´ÙÀ½Àº ¸î °¡Áö <activation-config> ¼Ó¼º ¼³Á¤ÀÇ ¿¹ÀÌ´Ù.

   <activation-config>
      <activation-property>
          <activation-config-property-name>messageSelector
          </activation-config-property-name>
          <activation-config-property-value>Priority = 'Urgent'
          </activation-config-property-value>
      <activation-property>
   </activation-config>  

EJB 2.1Àº JMS ±â¹Ý MDB¿¡ ´ëÇØ ´ÙÀ½ 4°³ÀÇ °íÁ¤ ¼Ó¼ºÀ» Á¤ÀÇÇϸç, À̵éÀº ÀÌÀüÀÇ EJB 2.1 ¼Ó¼ºÀ» ´ëüÇÑ´Ù.

  • acknowledgeMode
  • messageSelector
  • destinationType
  • subscriptionDurablity

EJB 2.1Àº ¶ÇÇÑ ´ÙÀ½°ú °°ÀÌ µÎ °³ÀÇ »õ·Î¿î ¿¤¸®¸ÕÆ®, <messaging-type>°ú <message-destination-type>À» Ãß°¡ÇÑ´Ù.

   <messaging-type>javax.jms.MessageListener
   </messaging-type>
   <message-destination-type>
    javax.jms.Queue
   </message-destination-type>

<messaging-type> ¿¤¸®¸ÕÆ®´Â fully-qualified ÀÎÅÍÆäÀ̽º¸íÀ» ÁöÁ¤ÇÔÀ¸·Î½á ¾î¶² ¸Þ½ÃÁö ŸÀÔÀ» »ç¿ëÇÏ°Ô µÉÁö¸¦ ³ªÅ¸³½´Ù. ÀÎÅÍÆäÀ̽º¸íÀÌ ÁÖ¾îÁöÁö ¾ÊÀ» °æ¿ì ÄÁÅ×À̳ʴ ±âº»°ªÀ¸·Î javax.jms.MessageListener·Î Á¤ÇØÁø´Ù. <message-destination-type> ¿¤¸®¸ÕÆ®´Â ºóÀÌ ¸Þ½ÃÁö¸¦ ¹Þ°Ô µÉ ¼ö½ÅÁöÀÇ Å¸ÀÔÀ» ³ªÅ¸³»´Â fully-qualified Ŭ·¡½º¸¦ ÁöÁ¤ÇÑ´Ù. JMSÀÇ °æ¿ì, Çã¿ëµÈ °ªÀº javax.jms.Queue ¿Í javax.jms.TopicÀÌ´Ù.

¸Þ½ÃÁö ¸µÅ©

¾î¶² ŸÀÔÀÇ EJBµµ ¸Þ½ÃÁö¸¦ Àü¼ÛÇÒ ¼ö ÀÖ´Â MDB ¼ö½ÅÁö¸¦ ¸í½ÃÇϱâ À§ÇØ ¹èÄ¡ ¼­¼úÀÚ¿¡ ¸Þ½ÃÁö ¸µÅ© ±â´ÉÀÌ Ãß°¡µÇ¾ú´Ù. ejb-refs¸¦ »ç¿ëÇϰí ÀÖ´Ù¸é Àü¼ÛÇÏ´Â ºó¿¡ ´ëÇÑ ¹èÄ¡ ¼­¼úÀÚÀÇ º¯°æ¿¡ Àͼ÷ÇÒ °ÍÀÌ´Ù.

   <session>
       <ejb-name>SendingEJB</ejb-name>

       <resource-ref>
           <res-ref-name>jms/MyFactory</res-ref-name>
           <res-type>javax.jms.MyConnectionFactory</res-type>
           <res-auth>Container</res-auth>
       </resource-ref>
       <message-destination-ref>
           <message-destination-ref-name>
               jms/MyDestination
           </message-destination-ref-name>
           <message-destination-type>
               javax.jms.Topic
           </message-destination-type>
           <message-destination-usage>
               Produces
           </message-destination-usage>
           <message-destination-link>
               MyDestinationLink
           </message-destination-link>
       </message-destination-ref>

   </session> 

¼ö½ÅÇÏ´Â MDBÀÇ °æ¿ì, ¹èÄ¡ ¼­¼úÀÚ Á¤º¸¿¡ ´ÙÀ½ÀÌ Æ÷ÇԵǾî¾ß ÇÑ´Ù.

   <message-driven>
       <ejb-name>ReceivingEJB</ejb-name>

       <messaging-type>
           javax.jms.MessageListener
       </messaging-type>
       <transaction-type>Bean</transaction-type>
       <message-destination-type>
           javax.jms.Topic
       </message-destination-type>
       <message-destination-link>
           MyDestinationLink
       </message-destination-link>

   </message-driven>

¼Û¼ö½Å ºóÀ» ¸µÅ©Çϱâ À§ÇØ, ¾î¼Àºí¸® ¼­¼úÀÚ¿¡ ´ÙÀ½ÀÌ Ç¥½ÃµÇ¾î¾ß ÇÑ´Ù.

   <assembly-descriptor>

       <message-destination>
           <message-destination-name>
               MyDestinationLink
           </message-destination-name>
        </message-destination>

  </assembly-descriptor>  

¸Þ½ÃÁö ±¸µ¿ ºó¿¡ °üÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀ» º¸·Á¸é J2EE 1.4 TutorialÀ» ÂüÁ¶Çϱ⠹ٶõ´Ù.

.
.

JAXR (JAVA API FOR XML REGISTRIES)

JAXR(Java API for XML Registries)Àº ÀÎÅͳÝÀ» ÅëÇØ Ç¥ÁØ ºñÁî´Ï½º ·¹Áö½ºÆ®¸®¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Â Æí¸®ÇÑ ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ºñÁî´Ï½º ·¹Áö½ºÆ®¸®¿¡´Â ±â¾÷ÀÌ ÀáÀç ±â¾÷ ÆÄÆ®³Ê°¡ Á¦°øÇÏ´Â ¼­ºñ½º¸¦ °Ë»öÇÏ°í »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â Á¤º¸°¡ ´ã°Ü ÀÖ´Ù. ÀϹÝÀûÀ¸·Î, ±â¾÷Àº ·¹Áö½ºÆ®¸®·Î µî·ÏÀ» Çϰųª »óÈ£ÀÛ¿ëÇÒ ¸¸ÇÑ ´Ù¸¥ ±â¾÷À» °Ë»öÇϱâ À§ÇØ ·¹Áö½ºÆ®¸®¸¦ ÀÌ¿ëÇÑ´Ù. Java Web Services Developer Pack 1.5¿¡¼­ Á¦°øÇϰí J2EE 1.4 Æ©Å丮¾ó¿¡µµ ±â¼úµÇ¾î ÀÖ´Â °£´ÜÇÑ JAXR ¿¹Á¦¿¡ ±âÃÊÇÑ ÀÌ Å×Å©ÆÁÀº Àڹ٠Ŭ¶óÀÌ¾ðÆ® ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¾î¶»°Ô JAXR API¸¦ ÀÌ¿ëÇÏ¿© ÀÎÅÍ³Ý »óÀÇ ºñÁî´Ï½º ·¹Áö½ºÆ®¸®¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ´ÂÁö¸¦ º¸¿©ÁØ´Ù.

ºñÁî´Ï½º ·¹Áö½ºÆ®¸®´Â ¿Ïº®ÇÑ Àü¿ë XML ·¹Áö½ºÆ®¸®·Î, µ¿Àû ¹× ¼Ò°áÇÕ B2B »óÈ£ÀÛ¿ëÀ» °¡´ÉÄÉ ÇÏ´Â Á߸³ÀûÀÎ Á¦3ÀÚ ÀÎÇÁ¶óÀÌ´Ù. ÀÌ »óÈ£ÀÛ¿ëµéÀº ÀϹÝÀûÀ¸·Î ´ÙÀ½ µÎ °¡Áö Ç¥ÁØ Áß Çϳª¸¦ µû¸¥´Ù.

  • OASIS(Organization for the Advancement of Structured Information Standards)¿Í U.N./CEFACT(United Nations Centre for the Facilitation of Procedures and Practices in Administration, Commerce and Transport)°¡ ÈÄ¿øÇÏ´Â ebXML ·¹Áö½ºÆ®¸® ¹× ¸®Æ÷ÁöÅ丮 Ç¥ÁØ
  • º¥´õ ÄÁ¼Ò½Ã¾ö¿¡¼­ °³¹ßÁßÀÎ UDDI(Universal Description, Discovery, and Integration) ÇÁ·ÎÁ§Æ®

·¹Áö½ºÆ®¸® Á¦°øÀÚ´Â À̵é Ç¥ÁØ Áß ÇÑ °¡Áö¸¦ ÁؼöÇÏ´Â ºñÁî´Ï½º ·¹Áö½ºÆ®¸®ÀÇ ±¸ÇöÀ» Á¦°øÇÏ´Â ¿£Æ¼Æ¼ÀÌ´Ù.

JAXR ¾ÆÅ°ÅØÃ³

JAXRÀº B2B »óÈ£ÀÛ¿ëÀÇ ¾î´À ÂÊ¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, JAXR API´Â ´ÙÀ½ µÎ °³ÀÇ ¿£Æ¼Æ¼·Î ÀÌ·ç¾îÁø´Ù.

  • JAXR Ŭ¶óÀ̾ðÆ®. ÀÌ´Â JAXR Á¦°øÀÚ¸¦ ÅëÇØ ºñÁî´Ï½º ·¹Áö½ºÆ®¸®¿¡ ¾×¼¼½ºÇϱâ À§ÇØ JAXR API¸¦ »ç¿ëÇϴ Ŭ¶óÀÌ¾ðÆ® ¾ÖÇø®ÄÉÀ̼ÇÀÌ´Ù.
  • JAXR Á¦°øÀÚ. ÀÌ´Â °øÅëÀÇ ½ºÆåÀ» ±â¹ÝÀ¸·Î ÇÏ´Â Çϳª ÀÌ»óÀÇ ·¹Áö½ºÆ®¸® Á¦°øÀÚ¿¡ ´ëÇÑ ¾×¼¼½º¸¦ Á¦°øÇÏ´Â JAXR APIÀÇ ¼­¹ö Ãø ±¸ÇöÀÌ´Ù.

JAXR Ŭ¶óÀÌ¾ðÆ®´Â JAXR API ³»ÀÇ Æ¯¼ö ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© JAXR Á¦°øÀÚ¿¡ ¾×¼¼½ºÇϰí, JAXR Á¦°øÀÚ´Â ·¹Áö½ºÆ®¸®¿Í Åë½ÅÇÏ°Ô µÈ´Ù.

JAXR provider communicates with a registry

Java Web Services Developer Pack 1.5¿¡¼­ Á¦°øÇÏ´Â ÃÖ½ÅÀÇ JAXR ·¹ÆÛ·±½º ±¸Çö(JAXR 1.0.7)¿¡´Â ebXML°¡ ¾Æ´Ñ UDDI ·¹Áö½ºÆ®¸®¸¸À» À§ÇÑ JAXR Á¦°øÀÚ°¡ Æ÷ÇԵǾî ÀÖ´Ù´Â Á¡¿¡ À¯ÀÇÇϱ⠹ٶõ´Ù. UDDI¿¡ °üÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº OASIS UDDI¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù.

JAXR »ç¾ç¿¡ µû¸£¸é Á¦°øÀÚ´Â ¹Ýµå½Ã µÎ °³ÀÇ ÆÐŰÁö·Î Ű ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϵµ·Ï µÇ¾î ÀÖ´Ù.

  • javax.xml.registry: ÀÌ´Â API ÀÎÅÍÆäÀ̽º¿Í ·¹Áö½ºÆ®¸® ¾×¼¼½º ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇϴ Ŭ·¡½º·Î ÀÌ·ç¾îÁø´Ù.
  • javax.xml.registry.infomodel: ÀÌ´Â JAXR¸¦ À§ÇÑ Á¤º¸ ¸ðµ¨À» Á¤ÀÇÇÏ´Â ÀÎÅÍÆäÀ̽º·Î ÀÌ·çÁö¸ç, ÀÌ ÀÎÅÍÆäÀ̽º´Â ·¹Áö½ºÆ®¸® ³»¿¡ »óÁÖÇÏ´Â ¿ÀºêÁ§Æ®ÀÇ Å¸ÀÔ°ú ±×°ÍµéÀÌ ¼­·Î°£¿¡ °ü°èÇÏ´Â ¹æ½ÄÀ» Á¤ÀÇÇÑ´Ù. ÀÌ ÆÐŰÁöÀÇ ±âº» ÀÎÅÍÆäÀ̽º´Â RegistryObject ÀÎÅÍÆäÀ̽ºÀÌ´Ù. ¼­ºêÀÎÅÍÆäÀ̽º¿¡´Â Organization, Service, ServiceBinding µîÀÌ ÀÖ´Ù.

javax.xml.registry ÆÐŰÁö°¡ ƯÈ÷ Áß¿äÇÑ ÀÌÀ¯´Â ´ÙÀ½°ú °°Àº ¿©·¯ °¡Áö À¯¿ëÇÑ Å¬¶óÀÌ¾ðÆ® ÀÎÅÍÆäÀ̽º¸¦ Æ÷ÇÔÇϰí Àֱ⠶§¹®ÀÌ´Ù.

  • Connection: ÀÌ ÀÎÅÍÆäÀ̽º´Â ·¹Áö½ºÆ®¸® Á¦°øÀÚ¿Í ¿¬°áµÈ Ŭ¶óÀÌ¾ðÆ® ¼¼¼ÇÀ» ³ªÅ¸³½´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ ·¹Áö½ºÆ®¸®¸¦ »ç¿ëÇÏ·Á¸é ¹Ýµå½Ã JAXR Á¦°øÀÚ¿Í Ä¿³Ø¼ÇÀ» »ý¼ºÇØ¾ß ÇÑ´Ù.
  • RegistryService: Ŭ¶óÀÌ¾ðÆ®´Â ¿¬°á·ÎºÎÅÍ RegistryService ¿ÀºêÁ§Æ®¸¦ ȹµæÇÑ´Ù. RegistryService ¿ÀºêÁ§Æ®´Â Ŭ¶óÀÌ¾ðÆ®°¡ ·¹Áö½ºÆ®¸®¿¡ ¾×¼¼½ºÇϱâ À§ÇØ »ç¿ëÇÏ´Â ÀÎÅÍÆäÀ̽º BusinessQueryManager, BusinessLifeCycleManager µîÀ» ȹµæÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.
  • BusinessQueryManager: ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ¿ÀºêÁ§Æ®´Â Ŭ¶óÀÌ¾ðÆ®°¡ javax.xml.registry.infomodel ÀÎÅÍÆäÀ̽º¿Í ÀÏÄ¡ÇÏ´Â Á¤º¸¸¦ ·¹Áö½ºÆ®¸®¿¡¼­ °Ë»öÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.
  • BusinessLifeCycleManager: ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ¿ÀºêÁ§Æ®´Â Ŭ¶óÀÌ¾ðÆ®°¡ ·¹Áö½ºÆ®¸® ³»ÀÇ Á¤º¸¸¦ ¼öÁ¤Çϰųª »èÁ¦ÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.

JAXR Ä¿³Ø¼Ç ¸¸µé±â

JAXR Ŭ¶óÀÌ¾ðÆ®´Â Ã³À½¿¡ Ãß»ó Ŭ·¡½º ConnectionFactoryÀÇ ÀνºÅϽº¸¦ »ý¼ºÇÑ´Ù.

   import javax.xml.registry.*;
   ...
   ConnectionFactory connFactory = 
    ConnectionFactory.newInstance();

´ÙÀ½À¸·Î, Ŭ¶óÀÌ¾ðÆ®´Â ·¹Áö½ºÆ®¸®ÀÇ URLÀ» ÁöÁ¤ÇÏ´Â ÀÏ·ÃÀÇ ¼Ó¼ºÀ» »ý¼ºÇÑ´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÄÚµå´Â IBM Å×½ºÆ® ·¹Áö½ºÆ®¸®¿¡ ´ëÇÑ ÁúÀÇ ¼­ºñ½º¿Í ÃâÆÇ ¼­ºñ½ºÀÇ URLÀ» Á¦°øÇÑ´Ù.

   Properties props = new Properties();
   props.setProperty("javax.xml.registry.queryManagerURL",
       "http://uddi.ibm.com/testregistry/inquiryapi");
   props.setProperty("javax.xml.registry.lifeCycleManagerURL",
       "https://uddi.ibm.com/testregistry/publishapi"); 

Çʿ信 µû¶ó(°¡·É ¹æÈ­º® µÚ¿¡ ÀÖ´Â °æ¿ì) Ŭ¶óÀÌ¾ðÆ®°¡ ½ÇÇàµÇ´Â ³×Æ®¿öÅ©¿¡ ´ëÇÑ ÇÁ·Ï½Ã È£½ºÆ® ¹× Æ÷Æ® Á¤º¸¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ÁúÀÇÀÇ °æ¿ì, Ŭ¶óÀÌ¾ðÆ®´Â HTTP ÇÁ·Ï½Ã È£½ºÆ® ¹× Æ÷Æ®¸¸À» ÁöÁ¤ÇØ¾ß ÇÒ ¼öµµ ÀÖÀ¸¸ç, ¾÷µ¥ÀÌÆ®ÀÇ °æ¿ì¿¡´Â ÀϹÝÀûÀ¸·Î HTTPS ÇÁ·Ï½Ã È£½ºÆ® ¹× Æ÷Æ® ¶ÇÇÑ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.

   props.setProperty("com.sun.xml.registry.http.proxyHost", 
     "myhost.mydomain");
   props.setProperty("com.sun.xml.registry.http.proxyPort", 
     "8080");
   props.setProperty("com.sun.xml.registry.https.proxyHost", 
     "myhost.mydomain");
   props.setProperty("com.sun.xml.registry.https.proxyPort", 
     "8080");

±×·± ´ÙÀ½ Ŭ¶óÀÌ¾ðÆ®´Â Ä¿³Ø¼Ç ÆÑÅ丮(connection factory)¿¡ ´ëÇÑ ¼Ó¼ºÀ» ¼³Á¤Çϰí Ä¿³Ø¼ÇÀ» »ý¼ºÇÑ´Ù.

   connFactory.setProperties(props);
   Connection connection = connFactory.createConnection(); 

Ä¿³Ø¼ÇÀ» »ý¼ºÇÑ ÈÄ Å¬¶óÀÌ¾ðÆ®´Â Ä¿³Ø¼ÇÀ» ÀÌ¿ëÇÏ¿© RegistryService ¿ÀºêÁ§Æ®¸¦ ȹµæÇÑ´Ù. ±×·± ´ÙÀ½ RegistryService¸¦ ÀÌ¿ëÇÏ¿© ÀûÀýÇÑ ÁúÀÇ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ¿ÀºêÁ§Æ®¸¦ ȹµæÇÑ´Ù.

   RegistryService rs = connection.getRegistryService();
   BusinessQueryManager bqm = rs.getBusinessQueryManager();
   BusinessLifeCycleManager blcm = 
       rs.getBusinessLifeCycleManager();

Ŭ¶óÀÌ¾ðÆ®°¡ ·¹Áö½ºÆ®¸®¿¡ µ¥ÀÌÅ͸¦ ÀÐ°í ¾µ Çʿ䰡 ÀÖ´Â °æ¿ì¿¡´Â RegistryService ¿ÀºêÁ§Æ®·ÎºÎÅÍ BusinessQueryManager ¿ÀºêÁ§Æ®¿Í BusinessLifeCycleManager ¿ÀºêÁ§Æ®¸¦ ¸ðµÎ ȹµæÇؾßÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ °£´ÜÇÑ ÁúÀǸ¸À» ¼öÇàÇÏ´Â °æ¿ì¿¡´Â ÀϹÝÀûÀ¸·Î BusinessQueryManager ¿ÀºêÁ§Æ®¸¸ ÇÊ¿äÇÏ´Ù.

·¹Áö½ºÆ®¸® Äõ¸®

BusinessQueryManager ÀÎÅÍÆäÀ̽º´Â Ŭ¶óÀÌ¾ðÆ®°¡ µ¥ÀÌÅ͸¦ °Ë»öÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ¿©·¯ °¡Áö ¸Þ¼Òµå¸¦ Áö¿øÇϴµ¥, ÀÌ ¸Þ¼ÒµåµéÀº ´ëºÎºÐ ¸Þ¼Òµå ÀÎÀÚ¿¡ ÁöÁ¤µÈ ÀÏ·ÃÀÇ ±âÁØÀ» ÃæÁ·ÇÏ´Â BulkResponse(¿ÀºêÁ§Æ®ÀÇ ÁýÇÕ)¸¦ ¸®ÅÏÇÑ´Ù. ´ÙÀ½Àº ¸Þ¼Òµåµé Áß¿¡¼­ °¡Àå À¯¿ëÇÑ °ÍµéÀÌ´Ù.

  • findOrganizations: ÀÌ ¸Þ¼Òµå´Â ÁöÁ¤µÈ ±âÁØ(ÈçÈ÷ ºÐ·ù ½ºÅ°¸¶(classification scheme) ³»ÀÇ À̸§ ÆÐÅÏ ¶Ç´Â ºÐ·ù)À» ÃæÁ·ÇÏ´Â Á¶Á÷ü(organization)ÀÇ ¸ñ·ÏÀ» ¸®ÅÏÇÑ´Ù.
       public BulkResponse findOrganizations(
                                     Collection findQualifiers,
                                     Collection namePatterns,
                                     Collection classifications,
                                     Collection specifications, 
                                     Collection externalIdentifiers,
                                     Collection externalLinks)
                              throws JAXRException
    
  • findServices: ÀÌ ¸Þ¼Òµå´Â ÁöÁ¤µÈ Á¶Á÷ü°¡ Á¦°øÇÏ´Â ÀÏ·ÃÀÇ ¼­ºñ½º¸¦ ¸®ÅÏÇÑ´Ù.
       public BulkResponse findServices(Key orgKey,
                                        Collection findQualifiers,
                                        Collection namePatterns,
                                        Collection classifications,
                                        Collection specifications)
                                 throws JAXRException
    
  • findServiceBindings: ÀÌ ¸Þ¼Òµå´Â ÁöÁ¤µÈ ¼­ºñ½º¿¡ ÀÇÇØ Áö¿øµÇ´Â ¼­ºñ½º ¹ÙÀεù(¼­ºñ½º¿¡ ¾×¼¼½ºÇÏ´Â ¹æ¹ý¿¡ °üÇÑ Á¤º¸)À» ¸®ÅÏÇÑ´Ù.
       public BulkResponse findServiceBindings(Key serviceKey,
                                          Collection findQualifiers,
                                          Collection classifications,
                                          Collection specifications)
                                   throws JAXRException
    

À̸§À¸·Î Á¶Á÷ü¸¦ °Ë»öÇϱâ À§Çؼ­´Â ã±â ¼ö½Ä¾î¿Í À̸§ ÆÐÅÏÀÇ Á¶ÇÕÀ» ÀÌ¿ëÇÑ´Ù. findOrganizations() ¸Þ¼Òµå´Â findQualifier ¿ÀºêÁ§Æ® ÁýÇÕÀ» 1Â÷ ÀÎÀÚ·Î, namePattern ¿ÀºêÁ§Æ®ÀÇ ÁýÇÕÀ» 2Â÷ ÀÎÀÚ·Î ¼±ÅÃÇÑ´Ù. Ŭ¶óÀÌ¾ðÆ®´Â ÆÛ¼¾Æ® ºÎÈ£(%)¸¦ ÀÌ¿ëÇÏ¿© Á¶Á÷ü À̸§ ³»ÀÇ ¾î´À °÷¿¡¼­³ª ÁúÀÇ ¹®ÀÚ¿­ÀÌ ¹ß°ßµÉ ¼ö ÀÖÀ½À» ¸í½ÃÇÑ´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ÀÇ ÄÚµå ´ÜÆíÀº À̸§¿¡ qString¿¡ Æ÷ÇÔµÈ ¹®ÀÚ°¡ µé¾î ÀÖ´Â Á¶Á÷ü¿¡ ´ëÇÏ¿© ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏ´Â °Ë»öÀ» ¼öÇàÇÑ´Ù.

   ArrayList qualifiers = new ArrayList();
   qualifiers.add(FindQualifier.CASE_SENSITIVE_MATCH);
   qualifiers.add(FindQualifier.SORT_BY_NAME_DESC);

   ArrayList names = new ArrayList();
   names.add("%" + qString + "%");

   BulkResponse response =
     bqm.findOrganizations(
             qualifiers, names, null, null, null, null);

   Collection orgs = response.getCollection(); 

ºÐ·ù¸¦ ÀÌ¿ëÇØ Á¶Á÷ü¸¦ ãÀ» ¼öµµ ÀÖ´Ù. À̸¦ À§Çؼ­´Â ƯÁ¤ÇÑ ºÐ·ù ½ºÅ°¸¶ ³»¿¡¼­ ºÐ·ù¸¦ ¼³Á¤ÇÑ ´ÙÀ½ ÀÌ ºÐ·ù¸¦ findOrganizations() ¸Þ¼Òµå¿¡ ´ëÇÑ ÀÎÀÚ·Î ÁöÁ¤ÇØ¾ß ÇÑ´Ù. ´ÙÀ½ÀÇ ÄÚµå ´ÜÆíÀº North American Industry Classification System (NAICS) ºÐ·ù¹ý ³»ÀÇ Æ¯Á¤ ºÐ·ù¿¡ ÀÏÄ¡ÇÏ´Â ¸ðµç Á¶Á÷ü¸¦ ã´Â´Ù.

   ClassificationScheme cScheme =
     bqm.findClassificationSchemeByName(null,
       "ntis-gov:naics");
   Classification classification =
     blcm.createClassification(cScheme,
       "Snack and Nonalcoholic Beverage Bars", "722213");
   Collection classifications = new ArrayList();
   classifications.add(classification);
   
   BulkResponse response = bqm.findOrganizations(null,
     null, classifications, null, null, null);
   Collection orgs = response.getCollection(); 

Ŭ¶óÀÌ¾ðÆ®°¡ Á¶Á÷ü¸¦ ã¾Æ³½ ÈÄ¿¡´Â ÇØ´ç Á¶Á÷üÀÇ ¼­ºñ½º¸¦ ãÀ» ¼ö ÀÖ´Ù. ºñÁî´Ï½º ¼­ºñ½º¸¦ È£ÃâÇÏ´Â ¹æ¹ýÀº ¸î °¡Áö°¡ ÀÖÀ» ¼ö Àִµ¥, °¢ È£ÃâÀº UDDI¿¡¼­ ¹ÙÀεù ÅÛÇø´¿¡ ÀÇÇØ ±â¼úµÈ´Ù. ServiceBinding ÀνºÅϽº´Â UDDI ¹ÙÀεù ÅÛÇø´¿¡ ¸ÅÇÎÇÏ´Â RegistryObjects·Î, ¼­ºñ½º È£Ãâ ¹æ¹ý¿¡ °üÇÑ ±â¼ú Á¤º¸¸¦ ³ªÅ¸³½´Ù.

   Iterator orgIter = orgs.iterator();

   while (orgIter.hasNext()) {

     Organization org = (Organization) orgIter.next();

     Collection services = org.getServices();

     Iterator svcIter = services.iterator();
     while (svcIter.hasNext()) {

       Service svc = (Service) svcIter.next();
       Collection serviceBindings = 
         svc.getServiceBindings();

       Iterator sbIter = serviceBindings.iterator();
        while (sbIter.hasNext()) {
         ServiceBinding sb = 
           (ServiceBinding) sbIter.next();
       }

     }
   } 

ÀÌ ½ÃÁ¡¿¡¼­ ¿ø½Ã ÄÚµå´Â ¹Ýµå½Ã ¹®Á¦ÀÇ ·¹Áö½ºÆ®¸® ŸÀÔ¿¡ ´ëÇÑ Ç¥ÁØÀ» µû¶ó¾ß ÇÑ´Ù. µû¶ó¼­ UDDI ¿¹Á¦¸¦ °è¼ÓÇÏ·Á¸é °³¹ßÀÚ°¡ ServiceBinding¿¡ ´ëÇÑ tModel Á¤º¸¿¡ ¾×¼¼½ºÇϰí À̸¦ ÀÌ¿ëÇÏ¿© ¼­ºñ½º È£Ãâ ¹æ¹ý¿¡ °üÇÑ Á¤È®ÇÑ Á¤º¸¸¦ ȹµæÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.

Á» ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½À» ÂüÁ¶Çϱ⠹ٶõ´Ù.

  • JAXR: JAXR page
  • UDDI: UDDI.org ¹× registry finder page ÂüÁ¶. ·¹Áö½ºÆ®¸® ÆÄÀδõ ÆäÀÌÁö¿¡ "Inquiry API"¿Í ¡®"Publish API" ·Î ±âÀçµÈ ¼­¹öµéÀº ¼º°øÀûÀÎ JAXR Ä¿³Ø¼ÇÀ» ¼öÇàÇϱâ À§ÇØ ¿ø½Ã ÄÚµå ³»ÀÇ ¼Ó¼º ÆÄÀÏ¿¡ ÀÔ·ÂÇÒ URLµéÀÌ´Ù. UDDI ¼­¹ö¸¦ È£½ºÆÃÇϴ ȸ»ç¿¡ µî·ÏÇÏ¿© »ç¿ëÀÚ À̸§°ú ºñ¹Ð¹øÈ£¸¦ ¹Þ¾Æ¾ß ÇÒ ¼öµµ ÀÖ´Ù. ÀÌ »çÀÌÆ®´Â tModel°ú °°Àº ·Î-·¹º§ UDDI À¥ ¼­ºñ½º ±¸¼º¼Ò¿¡ °üÇÑ Á¤º¸¸¦ ¾ò´Â µ¥µµ À¯¿ëÇÏ´Ù.
  • EbXML: the EbXML Page.

Sample Code

ÀÌ Å×Å© ÆÁÀ» À§ÇÑ ¿¹Á¦ ÄÚµå´Â JAXR¸¦ ÀÌ¿ëÇÏ¿© À̸§ÀÌ "%USA%"ÀÇ ÆÐÅϰú ÀÏÄ¡ÇÏ´Â Á¶Á÷ü¿¡ ´ëÇÑ ·¹Áö½ºÆ®¸®¸¦ Á¶È¸ÇÕ´Ï´Ù.
¿¹Á¦ Äڵ带 ±¸µ¿ÇÏ·Á¸é,

  1. ÀÌ Å×Å© ÆÁÀ» À§ÇÑ »ùÇà ¾ÆÄ«À̺긦 ´Ù¿î·ÎµåÇÕ´Ï´Ù.
  2. JWSDP 1.5¸¦ ´Ù¿î·ÎµåÇÏ¿© ¼³Ä¡ÇÕ´Ï´Ù.
  3. ¿¹Á¦ ¾ÆÄ«À̺긦 ´Ù¿î·ÎµåÇÑ µð·ºÅ丮·Î À̵¿ÇÕ´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ¿¹Á¦ ¾ÆÄ«À̺갡 ´ã±ä JAR ÆÄÀÏÀÇ ¾ÐÃàÀ» DZ´Ï´Ù.
         jar xvf ttmar2005jaxr.jar 
    
  4. °¢ÀÚÀÇ CLASSPATH ȯ°æ º¯¼ö¿¡ ´ÙÀ½ JWSDP 1.5 ¶óÀ̺귯¸®¸¦ Ãß°¡ÇÕ´Ï´Ù. À§Ä¡´Â ±âº» µð·ºÅ͸®¸¦ ±âÁØÀ¸·Î ºÎ¿©µË´Ï´Ù(jwsdp-1.5)
          jaxr/lib/jaxr-api.jar
          jaxr/lib/jaxr-impl.jar
    
          jaxp/lib/jaxp-api.jar      
          jaxp/lib/endorsed/xercesImpl.jar
          jaxp/lib/endorsed/xalan.jar
          jaxp/lib/endorsed/dom.jar
          jaxp/lib/endorsed/sax.jar
    
          jwsdp-shared/lib/mail.jar
          jwsdp-shared/lib/activation.jar
          jwsdp-shared/lib/jaas.jar
          jwsdp-shared/lib/commons-logging.jar
    
          saaj/lib/saaj-api.jar
          saaj/lib/saaj-impl.jar
    
          jaxb/lib/jaxb-api.jar
          jaxb/lib/jaxb-impl.jar
          jaxb/lib/jaxb-libs.jar
          jaxb/lib/jaxb-xjc.jar
    
  5. BusinessQueryTest.java ÆÄÀÏÀ» ÄÄÆÄÀÏÇÕ´Ï´Ù.
  6. ¹æÈ­º®ÀÌ ÀÛµ¿ÁßÀÎ °æ¿ì¿¡´Â ¹Ýµå½Ã ¿ø½Ã ÄÚµå ³»¿¡ ÇØ´ç ÇÁ·Ï½Ã Á¤º¸¸¦ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é JAXR API°¡ ¿ÜºÎ ¼­¹ö¿¡ ¿¬°áÇÒ ¼ö ¾ø°Ô µË´Ï´Ù.
  7. BusinessQueryTest¸¦ ±¸µ¿ÇÕ´Ï´Ù.
          java BusinessQueryTest
    
    ´ÙÀ½°ú °°ÀÌ ½ÃÀ۵Ǵ °á°ú°¡ Ç¥½ÃµÇ¾î¾ß ÇÕ´Ï´Ù.
        Successfully queried the registry for organization matching
        the name pattern: "%USA%"
        Results found: 3
    
        Organization Name: USA-Works
        Organization Key: 8cd1668c-64fa-4aa5-a053-bd0be4bd53f5
        Organization Description: Liberty and Freedom
             Service Name: Federal Government Service
             Service Key: 056b2905-3999-4912-89de-fe79cbfedea0
             Service Description: Services of the Federal Government
    
.
.
.

Reader Feedback

  ¸Å¿ì ÁÁ´Ù    ÁÁ´Ù    ±×Àú ±×·¸´Ù 

 

ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀÌ ±Ã±ÝÇϼ¼¿ä? Java Online SupportÀ» Âü°íÇϼ¼¿ä.

.
.

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

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

Copyright 2003-2005 Sun Korea, Inc. All rights reserved.


Sun Microsystems, Inc.
.

 


I Love Solaris 10 ÄÁÅ×½ºÆ®°¡ °³Ãֵ˴ϴÙ.
1) Why I Love Solaris
2) Solaris ÃÖ°í¼ö¸¦ ã¾Æ¶ó
À§ÀÇ µÎ°¡Áö Ä·ÆäÀο¡ Âü°¡ÇϽðí ǪÁüÇÑ »óǰÀ» ¹Þ¾Æ°¡¼¼¿ä.
->ÄÁÅ×½ºÆ® ¹Ù·Î°¡±â

¾Æ¿ï·¯, SKDN¿¡¼­´Â ¸Å¿ù 1ȸ Solaris °³¹ßÀÚ ´º½º·¹Å͸¦ ¹ß¼ÛÇÒ ¿¹Á¤ÀÔ´Ï´Ù. Ãֽе¿Çâ°ú ±â¼úÀ» ÀüÇØµå¸³´Ï´Ù.
Áö±Ý ¹Ù·Î ½ÅûÇϼ¼¿ä.
->ÀÚ¼¼È÷ º¸±â


.