내 previous question에 계속해서 응용 프로그램의 세션이 처음 시작될 때 세션 범위의 JSF 빈을 초기화하려고하므로 어떤 페이지에 관계없이 사용자가 빈을 사용할 수 있습니다. 그들은 내 웹 응용 프로그램에서 먼저 액세스합니다. 내 맞춤 청취자 :HttpSessionListener에서 JSF SessionScoped 빈을 초기화 할 때 StackOverflow 오류가 발생했습니다.
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());
}
}
}
그러나 이로 인해 스택 오버플로 오류가 발생합니다. SessionMap
클래스의 put()
메서드가 새 HttpSession
을 만들려고 시도하여 내 청취자와 함께 무한 루프가 발생하는 것으로 보입니다. 이 이슈를 실행하지 않고 애플리케이션 세션이 처음 시작될 때 어떻게 JSF 세션 범위 Bean을 초기화 할 수 있습니까?
내가 감사는 WebSphere 7에
실행, 봄 3 JSF 2를 사용하고 있습니다!