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);