2010-08-04 6 views
3

JSF ManagedBean에서 @SessionScoped 주석의 모든 의미를 이해하고 싶습니다.@ SessionScoped의 정의와 실제적인 의미

나는 그것이 HTTP 세션 관련이있다 생각하지만, 시작, 그것은 종료 될 때 때 아직도, 그것은 나에게 매우 분명하지 않다 그것이 될 수 있다면 을 중단.

  • 브라우저를 열지 않은 상태에서 2 시간 동안 아무런 반응이없는 경우. 세션이 아직 열려 있습니까?
  • 브라우저 탭에서 공유되는 세션입니까?
  • Firefox, IE 또는 Safari에서 세션이 동일하게 동작합니까?
  • ...
+0

JSF는 Servlet API를 기반으로 실행됩니다. JSF 세션은 실제로 HttpSession에 의해 지원됩니다. 서블릿 API도 배울 때가되었다고 생각합니다. [this answer] (http://stackoverflow.com/questions/3106452/java-servlet-instantiation-and-session-variables/3106909#3106909)도 도움이 될 수 있습니다. – BalusC

답변

3
  1. 아니, 아무 작업도하지 않으면 세션이 시간 초과
  2. 예, 세션이 브라우저 탭에서 공유되는
  3. 예, 세션이 서버 측이됩니다 일반적으로 브라우저는 식별 할 수있는 쿠키 만 전송합니다.

사용자가 첫 번째 페이지를 요청하면 세션이 시작됩니다. 세션의

@PostConstruct 방법은 (있는 경우)를 호출 콩 범위에 처음 액세스 할 때 그 빈을 참조하는 페이지 (그래도 난이 전적으로 확실하지 않다) 당신이 session.invalidate()를 호출 할 때

세션이 종료 또는 시간 초과 (web.xml에서 구성 가능한 경우 시간 초과 기간). 그런 다음 @PreDestroy 메서드 (있는 경우)가 호출됩니다.

+0

사실, 여기에 javadoc이 있습니다 : http://docs.jboss.org/cdi/api/1.0/javax/enterprise/context/SessionScoped.html – Herme

+0

@SessionScoped 빈 인스턴스가 생성 된시기에 대한 정보를 찾고있었습니다. 사실, 당신 말이 맞습니다. 세션이 시작될 때 자동으로 생성되지 않지만 페이지에서 처음 참조하거나 페이지에서 사용하는 하위 범위 Bean에 삽입 할 때 자동으로 생성됩니다. 내 테스트가 잘못되었다고 생각했지만 당신은 어떤 종류의 확인이라고 가정합니다. –