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.