programmera.net -> ejb -> normal     för utskrift      info@programmera.net

EntityContext

1. EntityContext
2. Tillåtna anrop på EntityContext och övriga externa resurser

1. EntityContext

En entitetsböna kommunicerar med behållaren genom klassen EntityContext. En referens till en instans av EntityContext tilldelas bönan genom att behållaren anropar setEntityContext() då bönan initieras. EntityContext ärver av EJBContext och tillför tre metoder, se bilden:



2. Tillåtna anrop på EntityContext och övriga externa resurser

Metoderna i EntityContext kan inte anropas från vilken metod som helst i en entitetsböna. Tabellen nedan beskriver vilka callbackmetoder som får göra vad med EntityContext och övriga externa resurser:

EntityContext och externa resurser Constructor setEntityContext() unsetEntityContext() ejbActivate() ejbPassivate() ejbHomeX() ejbFindX() ejbSelectX() 
Tillgång till JNDI  Nej  Ja  Ja  Ja
Tillgång till andra bönor  Nej  Nej  Nej  Ja
Tillgång till resurshanterare   Nej  Nej  Nej  Ja
getEJBHome()  Nej  Ja  Ja  Ja
getEJBLocalHome()  Nej  Ja  Ja  Ja
getCallerPrincipal()  Nej  Nej  Nej  Ja
isCallerInRole()  Nej  Nej  Nej  Ja
getUserTransaction() [BMT]  Nej  Nej  Nej  Nej
getRollbackOnly() [CMT]  Nej  Nej  Nej  Ja
setRollbackOnly() [CMT]  Nej  Nej  Nej  Ja
getEJBObject()  Nej  Nej  Nej  Nej
getEJBLocalObject()  Nej  Nej  Nej  Nej
getPrimaryKey()  Nej  Nej  Ja  Nej

Tabellen fortsätter nedan för de övriga metoderna:

EntityContext och externa resurser ejbCreateX() ejbPostCreateX() ejbRemove() ejbLoad() ejbStore() affärsmetod 
Tillgång till JNDI  Ja  Ja  Ja  Ja
Tillgång till andra bönor  Ja  Ja  Ja  Ja
Tillgång till resurshanterare   Ja  Ja  Ja  Ja
getEJBHome()  Ja  Ja  Ja  Ja
getEJBLocalHome()  Ja  Ja  Ja  Ja
getCallerPrincipal()  Ja  Ja  Ja  Ja
isCallerInRole()  Ja  Ja  Ja  Ja
getUserTransaction() [BMT]  Nej  Nej  Nej  Nej
getRollbackOnly() [CMT]  Ja  Ja  Ja  Ja
setRollbackOnly() [CMT]  Ja  Ja  Ja  Ja
getEJBObject()  Nej  Ja  Ja  Ja
getEJBLocalObject()  Nej  Ja  Ja  Ja
getPrimaryKey()  Nej  Ja  Ja  Ja

Om du gör ett anrop som inte är tillåtet kommer undantaget java.lang.IllegalStateException att kastas. Märk följande:

  • En entitetsböna kan aldrig komma åt UserTransaction, eftersom en entitetsböna aldirg kan vara BMT.