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

SessionContext för en sessionsböna med tillstånd

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

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.