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 tillståndslös sessionsböna. Nedan visas vilka anrop som är tillåtna för en tillståndslös sessionsböna mot SessionContext och övriga externa resurser:
SessionContext och externa resurser | | Constructor | | setSessionContext() | | ejbCreate() eller ejbRemove() | | affärsmetod | |
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 | | Ja | | Ja |
getRollbackOnly() [CMT] | | Nej | | Nej | | Nej | | Ja |
setRollbackOnly() [CMT] | | Nej | | Nej | | Nej | | Ja |
Om du gör ett anrop som inte är tillåtet kommer undantaget java.lang.IllegalStateException att kastas. Märk följande:
- Eftersom en tillståndslös sessionsböna inte skapas eller tas bort av en klient, kan man inte komma åt transaktionsmiljön eller säkerhetsmetoder i "ejbCreate()" eller "ejbRemove()".