继续我之前的问题,我试图在应用程序的会话首次启动时初始化一个会话范围的 JSF bean,因此无论用户首先访问我的 Web 应用程序上的哪个页面,用户都可以使用该 bean。我的自定义监听器:
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
if (FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
.get("mySessionBean") == null) {
FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
.put("mySessionBean", new MySessionBean());
}
}
}
但是,这给了我一个堆栈溢出错误。似乎该类中的put()
方法SessionMap
试图创建一个新的HttpSession
,从而导致我的侦听器发生无限循环。如何在我的应用程序会话首次启动时初始化 JSF 会话范围的 bean,而不会遇到此问题?
我正在使用 JSF 2 和 Spring 3,在 WebSphere 7 上运行。
谢谢!