2012-10-26 2 views
2

내 질문이 하나 (아마 다른 사람)과 관련이 종료 될 때 뷰 범위의 콩을 파괴 :세션이

@PreDestroy never called on @ViewScoped

가 언급 한 바와 같이 두 뷰 범위의 콩에 파괴 할 사소한 해결책이 없다, 탐색 및 세션이 만료되는 경우에도 마찬가지입니다.

JSF 뷰 범위 Bean은 세션이 만료되자 마자 어떤 모습으로 보입니까 (@PreDestroy 메서드 호출).

GlassFish 3.1.2에서 Java EE 6 및 Mojarra 2.1.x를 사용하고 있습니다.

+0

콩을 파괴 한 구체적인 이유는 무엇입니까? – perissf

+0

정리 작업은 사용자가 점심 식사 (세션 만료)를 시작하기 전에 업로드 된 첨부 파일을 삭제하는 것과 같습니다. – Kawu

답변

4

일부 콜렉션/어레이에서 자원을 보유 할 빈을 작성하여 @ViewScoped 빈에 삽입 한 다음 세션 범위가 지정된 bean의 @PreDestroy에 의존하십시오.

사실이 방법을 사용하면 리소스를 원하는 시간보다 조금 오래 살 수 있지만 가장 쉽고 신뢰할 수있는 솔루션입니다. 뷰 범위 Bean에 @PreDestroy을 유지하려면 엔드 유저가이 뷰 범위의 Bean에 대한 HTTP POST 요청으로 탐색을 항상 수행해야합니다. 당신은 안정적으로 보증 할 수 없습니다 (최종 사용자의 PC가 충돌 할 수 있음).