2012-07-13 8 views
10

Chcę, aby zarządzany komponent bean działał wewnętrznie podczas uruchamiania w mojej aplikacji WWW JSF po załadowaniu aplikacji. Jak mogę napisać tę klasę i skonfigurować w Glassfish?Jak skonfigurować uruchamiany komponent bean?

+0

Czy próbowałeś '@ManagedBean (eager = true)'? Jeśli używasz CDI (@Named zamiast @ManagedBean), to musisz zainicjować aplikację "obserwuj" ... z czymś podobnym ... 'public void init (@Observes @Initialized WebApplication webApplication) {//do something} ' (w rzeczywistości nie próbowałem tego w Glassfish, użyłem go w jBoss AS 7 i może być potrzebna konfiguracja na innych serwerach ... sprawdź [this] (http://stackoverflow.com/ pytania/7347516/startup-pojo-on-a-weld-seam3-application) out ... – FMQ

Odpowiedz

16

W JSF z CDI, observe z initialization z application scope.

@Named 
@ApplicationScoped 
public class App { 

    public void startup(@Observes @Initialized(ApplicationScoped.class) Object context) { 
     // ... 
    } 

    public void shutdown(@Observes @Destroyed(ApplicationScoped.class) Object context) { 
     // ... 
    } 

} 

Kiedy mając OmniFaces w rękach, to można uprościć z @Eager.

@Named 
@Eager 
@ApplicationScoped 
public class App { 

    @PostConstruct 
    public void startup() { 
     // ... 
    } 

    @PreDestroy 
    public void shutdown() { 
     // ... 
    } 
} 

W JSF 2.2- z now deprecatedjavax.faces.bean opisów, można skorzystać z application scopedmanaged bean który eagerly zainicjowana.

@ManagedBean(eager=true) 
@ApplicationScoped 
public class App { 

    @PostConstruct 
    public void startup() { 
     // ... 
    } 

    @PreDestroy 
    public void shutdown() { 
     // ... 
    } 
}