1. SessionContext
En sessionsböna kommunicerar med behållaren genom klassen SessionContext. En referens till en instans av SessionContext tilldelas bönan genom att behållaren anropar setSessionContext() då bönan initieras. SessionContext ärver av EJBContext och tillför två egna metoder, se bilden:
2. Tillåtna anrop på SessionContext och övriga externa resurser
Metoderna i SessionContext kan inte anropas var som helst i en sessionsböna med tillstånd. Nedan visas vilka anrop som är tillåtna för en sessionsböna mot SessionContext och övriga externa resurser:
SessionContext och externa resurser | | Constructor | | setSessionContext() | | ejbCreate() ejbRemove() | | ejbActivate() ejbPassivate() | | affärsmetod | |
Tillgång till JNDI | | Nej | | Ja | | Ja | | Ja | | Ja |
Tillgång till andra bönor | | Nej | | Nej | | Ja | | Ja | | Ja |
Tillgång till resurshanterare | | Nej | | Nej | | Ja | | Ja | | Ja |
getEJBHome() | | Nej | | Ja | | Ja | | Ja | | Ja |
getEJBLocalHome() | | Nej | | Ja | | Ja | | Ja | | Ja |
getCallerPrincipal() | | Nej | | Nej | | Ja | | Ja | | Ja |
isCallerInRole() | | Nej | | Nej | | Ja | | Ja | | Ja |
getUserTransaction() [BMT] | | Nej | | Nej | | Ja | | Ja | | Ja |
getRollbackOnly() [CMT] | | Nej | | Nej | | Nej | | Nej | | Ja |
setRollbackOnly() [CMT] | | Nej | | Nej | | Nej | | Nej | | Ja |
För sessionsbönor med tillstånd som nyttjar CMT finns möjligheten att implementera gränssnittet "SessionSynchronization". Om bönan impelementerar gränssnittet "SessionSynchronization" så tillkommer tre extra callbackmetoder. Du har följande rättigheter i dessa metoder:
SessionContext och externa resurser | | afterBegin() beforeCompletion() | | afterCompletion() | |
Tillgång till JNDI | | Ja | | Ja |
Tillgång till andra bönor | | Ja | | Nej |
Tillgång till resurshanterare | | Ja | | Nej |
getEJBHome() | | Ja | | Ja |
getEJBLocalHome() | | Ja | | Ja |
getCallerPrincipal() | | Ja | | Ja |
isCallerInRole() | | Ja | | Ja |
getUserTransaction() [BMT] | | Ja | | Ja |
getRollbackOnly() [CMT] | | Ja | | Nej |
setRollbackOnly() [CMT] | | Ja | | Nej |
Om du gör ett anrop som inte är tillåtet kommer undantaget java.lang.IllegalStateException att kastas.