2014-01-20 4 views
3

때 다음 걸릴 장소 중 하나OmniFaces ViewScoped 빈이 메모리에 미치는 영향? 내가 이해, ViewScoped 콩만을 파괴 얻을에서

1) JSF는 <h:commandLink...>

2 같은) 열린 콩의 수와 다른 페이지에 POST 요청을 보냅니다

는 # 1를합니까 : 최대 임계 값 설정 (15의 기본값)

3) 사용자의 세션이 여기에

만료를 초과하는 것은 내 혼란이다 사용자가 GET 요청을 사용하여 페이지에서 다른 페이지로 이동하면 결국 JSF POST가 다른 페이지의 동일한 브라우저 탭에서 발생하더라도 해당 빈은 계속 열려있을 것입니다. 또는 사용자가 어느 페이지에 있더라도 JSF POST가 전송되면 해당 브라우저 탭의 모든 활성 @ViewScoped 인스턴스가 삭제됩니까?

# 2는 사용자가 각 @ViewScoped 클래스에 대해 15 개의 빈 인스턴스를 사용할 수 있음을 의미합니까? 또는 클래스에 상관없이 15 개의 빈 인스턴스가 있습니다. 즉, 클래스 1 인스턴스 5 개, 클래스 2 인스턴스 5 개, 클래스 3 인스턴스 5 개를 가질 수 있으며, 새 빈은 가장 오래된 활성 빈을 파괴 할 수 있습니까?

# 3의 경우 STATE_SAVING_METHOD가 "client"로 설정된 경우 ViewScoped Bean이 파괴된다는 의미가 있습니까? 기억 나는 바로는 STATE_SAVING_METHOD가 client로 설정된 경우 세션 만료를 수동으로 제어하는 ​​방법이 필요합니다.

마지막으로 활성 ViewScoped Bean을 관리하여 사용자가 "logout"을 클릭 할 때 해당 Bean이 파괴 될 수있는 방법이 있습니까?

+2

길게 이야기 할 것이지만 간단히 말해서 JSF 자신의 @ViewScoped가 작동하는 것과 다르지 않습니다. – BalusC

+0

'@ ViewScoped' 빈 관리에 대한 마지막 질문으로 세션 제거가 삭제된다는 보장이 있다면 그러한 작업을하는 이유를 알 수 없습니다. –

+0

STATE_SAVING_METHOD가 client로 설정된 경우 세션 만료시 bean이 손상되지 않도록 마지막 질문이있는 것 같습니다. 내 주요 관심사는 내가 파괴되지 않는 ViewScoped 빈 (예 : 테이블 데이터)에 너무 많은 정보를 저장하고 있다는 것입니다. 이 범위를 올바르게 사용하고 있는지 확인하고 싶습니다. ViewScoped는 제출 버튼으로 파손되는 양식이 포함 된 페이지 용으로 설계된 것 같지만, 메모리 문제가 발생하지 않는 한 계산 된 데이터를 캐시 할 수 있기 때문에 편리합니다. –

답변

1

각 @ViewScoped 빈에 @PreDestroy 메서드를 추가하고 소멸 될 때 로깅하여 이에 대한 해답을 알아 냈습니다. 이것에 대해 궁금한 다른 사람들의 경우 :

# 1의 경우 GET 요청 페이지에서 벗어나서 나중에 게시 요청을 보내는 경우 Bean이 파괴되지 않습니다. "최대 액티브 뷰 범위"설정에 도달 할 때까지 해당 빈이 메모리에 남아 있으며 빈의 턴이 파괴되거나 세션이 무효화됩니다.

# 2의 경우 클래스는 중요하지 않습니다. 임계 값이 15 일 때 Class1 인스턴스 5 개, Class2 인스턴스 5 개, Class3 인스턴스 5 개를 가질 수 있으며 새 ViewScoped bean 인스턴스는 가장 오래된 빈을 파기합니다.

# 3의 경우 Bean처럼 보입니다 STATE_SAVING_METHOD가 client로 설정되어 있어도 세션이 무효화되면 파괴됩니다.

+0

흥미로운 질문과 분석에 감사드립니다. 발언하면 호출되는'@ PreDestroy' 메서드의 의미에서 "파괴 된"과 뷰 빈을 스스로 가비지 수집 할 수있는 능력을 구분하는 것은 아닙니다. 나는 여기에 관련된 질문을 물었다. http://stackoverflow.com/questions/40569971/jsf-mojarra-vs-omnifaces-viewscoped-predestroy-called-but-bean-cant-be-gar 그리고 GitHub를 통해 시험을 보았다. '@ ViewScoped' 빈 유형에 대한'@ PreDestroy'와 힙 참조 (garbage collectability)를 쉽게 비교할 수있는 웹 애플리케이션 : https://github.com/webelcomau/JSFviewScopedNav –