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

MessageDrivenContext

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

1. MessageDrivenContext

En meddelandedriven böna kommunicerar med behållaren genom klassen MessageDrivenContext. En referens till en instans av MessageDrivenContext tilldelas bönan genom att behållaren anropar setMessageDrivenContext() då bönan initieras. MessageDrivenContext ärver av EJBContext men tillför inte några egna metoder, se bilden:



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

Metoderna i MessageDrivenContext kan inte anropas var som helst i en meddelandedriven böna. Eftersom en meddelandedriven böna inte har någon klient och inte heller har något Home eller EJBObject-gränssnitt finns det inte så många metoder i MessageDrivenContext som är relevanta att använda. Endast följande anrop är tillåtna i callbackmetoderna mot metoderna i MessageDrivenContext och övriga externa resurser:

MessageDrivenContext och externa resurser Constructor setMessageDrivenContext() ejbCreate() eller ejbRemove() onMessage() 
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  Nej  Nej  Nej
getEJBLocalHome()  Nej  Nej  Nej  Nej
getCallerPrincipal()  Nej  Nej  Nej  Nej
isCallerInRole()  Nej  Nej  Nej  Nej
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:

  • En meddelandedriven böna kan aldrig få någon information om användaren eftersom det inte är någon användare som anropar bönan.
  • En CMT meddelandedriven böna kan inte anropa "set/getRollbackOnly()" i metoderna "ejbCreate()" och "ejbRemove()" eftersom ingen transaktion har startat ännu.