2012-07-13 15 views
10

Desidero che un bean gestito venga eseguito internamente all'avvio nella mia applicazione Web JSF al caricamento dell'applicazione. Come posso scrivere questa lezione e configurarla in Glassfish?Come configurare un bean gestito all'avvio?

+0

Hai provato '@ManagedBean (eager = true)'? Se si utilizza CDI (@Named invece di @ManagedBean), è necessario eseguire l'inizializzazione dell'app "Osservare" .. con qualcosa di simile ... 'public void init (@Observes @Inizialized WebApplication WebApplication) {//fare qualcosa} ' (in realtà non ho provato questo in GlassFish, l'ho usato in JBoss AS 7 e potrebbe essere necessario un po 'di configurazione su altri server ... controlla [questo] (http://stackoverflow.com/ questions/7347516/startup-pojo-on-a-weld-seam3-application) out ... – FMQ

risposta

16

In JSF con CDI, observe il initialization del 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) { 
     // ... 
    } 

} 

Quando avente OmniFaces a mano, questo può essere semplificata con @Eager.

@Named 
@Eager 
@ApplicationScoped 
public class App { 

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

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

In JSF 2.2- alle now deprecatedjavax.faces.bean annotazioni, utilizzare un application scopedmanaged bean quali è eagerly inizializzato.

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

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

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