2011-04-26 88 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