ZAWWW-2st1.2-w04.tresc-1.0-Slajd11
Cykl życia stanowego sesyjnego EJB
W cyklu życia stanowego sesyjnego komponentu EJB występują trzy stany: nie istnieje, gotowy i pasywny. Kontener tworzy instancję komponentu gdy klient żąda referencji do komponentu. Po utworzeniu instancji, a przed jej udostępnieniem klientowi, kontener wstrzykuje zależności, a następnie wywołuje metody oznaczone adnotacją @PostConstruct. W stanie gotowości klient może wywoływać metody biznesowe na rzecz komponentu. Gdy instancja jest w stanie gotowości, kontener może podjąć decyzję o pasywacji instancji. Pasywacja polega na wymieceniu instancji z pamięci i zachowaniu jej stanu w pamięci trwałej (np. na dysku). Gdy klient wywoła metodę na rzecz pasywnej instancji, zostanie ona aktywowana przez kontener, a jej stan odtworzony. Przed pasywacją kontener wywołuje metody oznaczone adnotacją @PrePassivate, a po aktywacji – metody oznaczone adnotacją @PostActivate. Gdy klient skończy pracę z komponentem, może jawnie zlecić kontenerowi usunięcie instancji komponentu poprzez wywołanie metody oznaczonej adnotacją @Remove. (Jest to jedyna metoda związana z cyklem życia jawnie wywoływana w kodzie. Pozostałe są w odpowiednich momentach wywoływane przez kontener.) Kontener usunie instancję komponentu również w sytuacji gdy wygaśnie sesja (zarówno dla pasywnej jak i aktywnej instancji). Przed udostępnieniem instancji dla mechanizmu garbage collection w związku z jej usuwaniem, kontener wywołuje metody oznaczone adnotacją @PreDestroy.