2011-04-26 83 views
1

我們在Tomcat6.0中有JSF2.0,需要在Web服務器啓動時初始化ApplicationScope Bean。
我嘗試使用PostConstructApplicationEvent processEvent方法來初始化Bean,但來自faces-config.xml的託管bean返回null。JSF2.0 PostConstructApplicationEvent託管bean爲空

是否有任何其他更好的方式來啓動後實例化bean?

回答

1

刪除相關Bean的任何faces-config.xml聲明(他們會以其他方式覆蓋JSF 2.0批註),然後用@ManagedBean(eager=true)註釋豆如下:

@ManagedBean(eager=true) 
@ApplicationScoped 
public class Bean { 
    // ... 
} 

這樣bean將永遠被實例化上JSF webapp啓動,無需查看任何頁面。然後,您可以在bean的構造函數和/或@PostConstruct中執行初始化作業。

+0

我只有在@ManagedBean(eager = true),但是當我在PostConstructAPplicationEvent中訪問它時,它是空的。當PostConstruct被調用時它沒有被初始化? – user684434 2011-04-26 20:41:25

+0

當我進入PostConstruct內部時,它看起來像appMap沒有使用applicationsscope的Bean – user684434 2011-04-26 21:21:45