programmera.net -> ejb -> normal för utskrift | info@programmera.net |
Livscykeln för en sessionsböna med tillstånd
1. Livcykel 2. Hur skapas en instans? 3. ejbSetSessionContext() 4. ejbCreate() 5. ejbRemove() 6. ejbActivate() 7. ejbPassivate() 8. afterBegin() 9. beforeCompletion() 10. afterBegin() |
1. Livcykel
På denna sida går vi igenom bönans olika tillstånd och de "callback"-metoder som behållaren aropar på instansen då instansen går från ett tillstånd till ett annat. En sessionsböna med tillstånd (Stateful SessionBean) har en livscykel som beskrivs i bilden nedan:
De olika tillstånden beskrivs nedan:
2. Hur skapas en instans?
Klienten skapar en instans genom att anropa "create()" på "Home"-gränssnittet. När en sessionsböna med tillstånd instansieras sker följande:
3. ejbSetSessionContext()
Anropas av behållaren i samband med att bönan initieras. I denna metod ska du se till att instansen lagrar SessionContext någonstans, vanligtvis i en medlemsvariabel:
Nu kan du komma åt alla metoder som exponeras i SessionContext via medlemmen "context".
public void setSessionContext(SessionContext ctx){
// Save the context
this.context = ctx;
}
4. ejbCreate()
Anropas av behållaren efter att bönan initieras.
5. ejbRemove()
För sessionsbönor med tillstånd är det klienten som ska anropa "remove()" på sin referens av "EJBObject" när han/hon är färdig med instansen. Anropet "remove()" tar tillbaka instansen till tillståndet DOES NOT EXIST. "ejbRemove()" anropas av behållaren precis innan instansen förstörs. I följande fall kan en instans förstöras utan att ejbRemove() kommer att anropas:
6. ejbActivate()
Anropas av behållaren efter att instansen har aktiverats (lästs in från disk).
7. ejbPassivate()
Anropas av behållaren innan instansen passiveras (sparas på disk). Här har programmeraren möjlighet att serialisera alla instansens parametrar och nollställa alla allokerade resurser. Till exempel ska man stänga alla databaskontakter i denna metod.
8. afterBegin()
Anropas av behållaren efter att en transaktion har påbörjats. OBS: Denna metod fungerar bara om din böna är CMT och du implementerar gränssnittet "SessionSynchronization".
9. beforeCompletion()
Anropas av behållaren innan en transaktion avslutas. OBS: Denna metod fungerar bara om din böna är CMT och du implementerar gränssnittet "SessionSynchronization".
10. afterBegin()
Anropas av behållaren efter att en transaktion har avslutats. OBS: Denna metod fungerar bara om din böna är CMT och du implementerar gränssnittet "SessionSynchronization".