【发布时间】:2011-04-26 17:45:32
【问题描述】:
我们在Tomcat6.0中有JSF2.0,需要在Web服务器启动时初始化一个ApplicationScope Bean。
我尝试使用 PostConstructApplicationEvent processEvent 方法初始化 Bean ,但 faces-config.xml 中的托管 bean 返回 null。
有没有其他更好的方法可以在启动后实例化 bean?
【问题讨论】:
我们在Tomcat6.0中有JSF2.0,需要在Web服务器启动时初始化一个ApplicationScope Bean。
我尝试使用 PostConstructApplicationEvent processEvent 方法初始化 Bean ,但 faces-config.xml 中的托管 bean 返回 null。
有没有其他更好的方法可以在启动后实例化 bean?
【问题讨论】:
删除 any 与 bean 相关的 faces-config.xml 声明(否则它们将覆盖 JSF 2.0 注释),然后使用 @ManagedBean(eager=true) 注释 bean,如下所示:
@ManagedBean(eager=true)
@ApplicationScoped
public class Bean {
// ...
}
这样,bean 将始终在 JSF webapp 启动时被实例化,而无需查看任何页面。然后,您可以在 bean 的构造函数和/或 @PostConstruct 中执行初始化工作。
【讨论】: