2. Ŭ¶óÀ̾ðÆ®ÀÇ °üÁ¡¿¡¼­ º» session Bean

    session Bean Àº remote access, security, concurrency, transactions µîÀÇ
    ÄÁÅ×À̳ʰ¡ Á¦°øÇÏ´Â ¸ðµç ±â´Éµé°ú ºóÀÇ ºñÁî´Ï½º ·ÎÁ÷À» ½ÇÇàÇÑ´Ù.

    2.1 Overview

        session enterprise Bean Àº ¼­¹ö»ó¿¡¼­ ½ÇÇàÇÏ´Â ºñÁî´Ï½º ·ÎÁ÷À» ´Ù·ç´Â
        ºñÁö¼Ó¼º °´Ã¼À̸ç, multiple clients »çÀÌ¿¡¼­ °øÀ¯µÇÁö ¾Ê´Â °´Ã¼ÀÌ´Ù.
        Ŭ¶óÀÌ¾ðÆ®´Â session Bean's remote interface ¸¦ ÅëÇØ ¼¼¼Çºó¿¡ Á¢±ÙÇϸç
        ¸®¸ðÆ® ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â °´Ã¼¸¦ EJB Object ¶ó°í ÇÑ´Ù.

        EJB Object ´Â »ý¸íÁֱ⠵¿¾È ÄÁÅ×ÀÌ³Ê ³»¿¡¼­ Á¸ÀçÇϸç Ŭ¶óÀÌ¾ðÆ®¿¡ Åõ¸íÇÏ´Ù.
        ÀϹÝÀûÀ¸·Î ¼¼¼ÇºóÀº ÄÁÅ×À̳ʰ¡ ½ÇÇàÁßÁö ¶Ç´Â Àç½ÃÀÛÇÏ¸é »ý¸íÀ» ÀаԵȴÙ.

        Multiple EJB classes µéÀÌ µ¿ÀÏÇÑ ÄÁÅÍÀ̳ʼӿ¡ Æ÷ÇԵɼö ÀÖÀ¸¸ç Ŭ¶óÀÌ¾ðÆ®´Â
        JNDI ¸¦ ÅëÇØ ÀνºÅçµÈ EJB classes µéÀÇ Home interface ¸¦ ãÀ»¼ö ÀÖ´Ù.

    2.2 EJB container

        ÄÁÅ×À̳ʳ»ÀÇ enterprise Bean object µéÀº µ¥ÀÌŸº£À̽º, ÆÄÀϽýºÅÛ µî¿¡
        ÀúÀåµÇ¾î Áö¼Ó¼ºÀ» °¡Áø´Ù.

        2.2.1 enterprise Bean's home interface ã´Â¹æ¹ý

            // Ŭ¶óÀÌ¾ðÆ®´Â JNDI ¸¦ ÅëÇØ Ȩ ÀÎÅÍÆäÀ̽º¸¦ ã´Â´Ù.

            Context initialContext = new InitialContext();
            CartHome cartHome = javax.rmi.PortableRemoteObject.narrow(
                      initialContext.lookup("applications/mall/freds-carts"), CartHome.class);

        2.2.2 ÄÁÅ×À̳ʰ¡ Á¦°øÇϴ°ÍÀº ¹«¾ùÀΰ¡?
 
 
 
 

<session container provides to its clients>


 
 
 
 
 
 
 
 

    2.3 Home interface

        ÄÁÅ×À̳ʴ °¢°¢ÀÇ enterprise Bean À» À§ÇÑ È¨ÀÎÅÍÆäÀ̽º¸¦ ½ÇÇàÇϰí
        Ŭ¶óÀÌ¾ðÆ®°¡ JNDI ¸¦ ÅëÇØ ȨÀÎÅÍÆäÀ̽º¸¦ È£ÃâÇÒ¼ö ÀÖµµ·Ï ¸¸µç´Ù.

        ȨÀÎÅÍÆäÀ̽º¸¦ ¾òÀº Ŭ¶óÀÌ¾ðÆ®°¡ ÇÒ¼ö ÀÖ´ÂÀϵé...

            -  Create a new EJB object.

            -  Remove an EJB object.

            - Get the javax.ejb.EJBMetaData interface for the enterprise Bean.

        2.3.1 EJB object »ý¼º

            public interface CartHome extends javax.ejb.EJBHome {

                // ÇϳªÀÇ create ¸Þ¼Òµå¸¦ Á¤ÀÇÇÑ´Ù.
                // ÀϹÝÀûÀ¸·Î create() ¸Þ¼ÒµåÀÇ Àü´ÞÀÎÀÚ´Â »ý¼ºµÈ EJB object ÀÇ
                // »óŸ¦ ÃʱâÈ­ ÇϱâÀ§ÇØ »ç¿ëµÈ´Ù.

                Cart create(String customerName, String account) throws RemoteException,
                                                                 BadAccountException, CreateException;

            }

            cartHome.create("John", "7506");

            »ý¼ºµÈ °´Ã¼´Â javax.ejb.EJBObject.remove() È£ÃâÀ» ÅëÇØ Á¦°ÅµÉ¼ö ÀÖ´Ù.

    2.4 EJB object

        Ŭ¶óÀÌ¾ðÆ®´Â enterprise Bean's class ¿¡ Á÷Á¢ Á¢±ÙÇÏÁö ¾Ê°í
        enterprise Bean's remote interface ¸¦ ÅëÇØ Á¢±ÙÇÑ´Ù.
        enterprise Bean's remote interface ¸¦ ½ÇÇàÇϴ Ŭ·¡½º´Â ÄÁÅ×À̳ʰ¡ Á¦°øÇÑ´Ù.

        EJB object °¡ Áö¿øÇϴ°͵é.

            -  °´Ã¼ÀÇ ºñÁî´Ï½º ·ÎÁ÷ ¸Þ¼Òµå¸¦ Á¦°øÇϸç Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍÀÇ ºñÁî´Ï½º¸Þ¼Òµå
                È£ÃâÀ» enterprise Bean instance ·Î À§ÀÓÇÑ´Ù.

            - Ŭ¶óÀÌ¾ðÆ®°¡ javax.ejb.EJBObject interface ¸¦ ÅëÇØ ÇÒ¼ö ÀÖ´Â °Íµé

                1)  Get the EJB object's container.

                2)  Get the EJB object's handle.

                3)  Test if the EJB object is identical with another EJB object.

                4)  Remove the EJB object.

                (javax.ejb.EJBObject interface ³»ÀÇ ¸Þ¼Òµå ½ÇÇàÀº ÄÁÅ×À̳ʰ¡ Á¦°øÇÑ´Ù.)

    2.5 Session object identity

        ¼¼¼ÇºóÀº ±×µéÀ» »ý¼ºÇÑ Å¬¶óÀÌ¾ðÆ®·ÎºÎÅÍ private resources µéÀ» ´Ù·ç´Â °æ¿ì°¡
        ¸¹±â ¶§¹®¿¡ Ŭ¶óÀ̾ðÆ®ÀÇ ½Ã°¢¿¡¼­´Â À͸íÀÌ´Ù.
        Áï ¿£Æ¼Æ¼ºóÀº primary key ·Î¼­ ½Äº°ÀÚ¸¦ °ø°³ÇÏÁö¸¸ ¼¼¼ÇºóÀº ¼û±ä´Ù.
        µû¶ó¼­ ¼¼¼ÇºóÀÇ È¨ ÀÎÅÍÆäÀ̽º´Â ¾î¶°ÇÑ find..() ¸Þ¼Òµåµµ Á¦°øÇÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù.

        ¶ÇÇÑ session EJB object handle À» Áö¼Ó¼º ÀúÀåÀå¼Ò¿¡ ÀúÀåÇÔÀ¸·Î½á Ŭ¶óÀ̾ðÆ®ÀÇ
        »ý¸íÁֱ⸦ ³Ñ¾î¼­ º¸°üµÉ¼ö ÀÖ´Ù.

    2.6 Client's view of session Bean's life cycle
 
 
 
 
 


 
 
 
 
 
 
 
 

        °´Ã¼ÂüÁ¶¸¦ ¾òÀº Ŭ¶óÀÌ¾ðÆ®´Â ´ÙÀ½°ú °°Àº ÀÏÀ» ÇÒ¼ö ÀÖ´Ù.

            - ¼¼¼ÇºóÀÇ ¸®¸ðÆ®ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ °´Ã¼»óÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù.

            - °´Ã¼ÀÇ È¨ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¾òÀ»¼ö ÀÖ´Ù.

            - °´Ã¼¸¦ À§ÇÑ handle À» ¾òÀ»¼ö ÀÖ´Ù.

            - Ŭ¶óÀ̾ðÆ®ÀÇ ¹øÀ§ ¾È¿¡¼­ °´Ã¼¸¦ ÆÄ¶ó¹ÌÅͳª ¸®ÅϰªÀ¸·Î º¸³¾¼ö ÀÖ´Ù.

            - °´Ã¼¸¦ Á¦°ÅÇÒ¼ö ÀÖ´Ù.
               (¶ÇÇÑ ÄÁÅ×À̳ʴ °´Ã¼ÀÇ »ý¸íÀÌ ´ÙÇßÀ»¶§ ÀÚµ¿À¸·Î Á¦°ÅÇÒ¼ö ÀÖ´Ù.)

        Á¸ÀçÇÏÁö ¾Ê´Â °³Ã¼¿¡ ´ëÇÑ ÂüÁ¶´Â »ç¿ëÇÒ¼ö ¾ø´Ù.
        ¸¸¾à È£ÃâÇÑ´Ù¸é ÄÁÅ×À̳ʴ java.rmi.NoSuchObjectException À» ¹ß»ýÇÒ °ÍÀÌ´Ù.

    2.7 Creating and using a session Bean
 
 
 
 

<An example of the session Bean runtime objects>


 
 
 
 
 
 
 

        Ŭ¶óÀÌ¾ðÆ®´Â Cart's home interface ÀÇ create() ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© Cart ¼¼¼Ç°´Ã¼¸¦
        »ý¼ºÇÑ´Ù.

        CartHome cartHome = javax.rmi.PortableRemoteObject.narrow(
                                                            initialContext.lookup(...), CartHome.class);
        Cart cart = cartHome.create(...);
        cart.addItem(66);
        cart.addItem(22);