2009-07-16 5 views
0

JSF 백킹 빈 범위에 대한 오해가 있습니다. JSF를 처음 접했고 간단한 프로젝트를 작성했고 모든 콩은 주로 세션 범위를 가지고 있습니다. 그러나 내 사이트가 많은 사용자를 보유하게되면 내 세션이 매우 커져서 내 서버가 죽을 것입니다. 어떤 사람들은 해결책이 요청 범위 Bean을 사용한다고 말했습니다. 그러나 예를 들어 내 페이지의 유효성을 검사해야하고 유효성 검사에 실패하면 오류 메시지가 표시되고 모든 사용자 입력 내용을 저장할 때이 상황에서 무엇을 할 수 있습니까? AJAX 요청을 사용하는 구성 요소를 사용하려고하고 있는데 내 요청 빈이 재구성되지 않기를 바랬지 만 작동하지 않습니다 (<rich:datascroller>).Backing Bean 범위는 어떻게 작동합니까?

JSF 이해에 큰 구멍이 있다고 생각합니다. 누군가이 상황에서해야 할 일을 설명하거나 콩 범위에 대한 좋은 기사를 나에게 연결해 주면 고맙게 생각합니다.

+0

JSF2가 목표로하는 속임수는 다음과 같습니다. http://stackoverflow.com/questions/7031885/how-to-choose-the-right-bean-scope – BalusC

답변

3

범위는 Bean의 수명을 정의합니다.

요청 범위 콩은 하나의 HTTP 요청을 처리하는 동안 작동하므로 사용자의 입력을 분석하고 응답 페이지를 공식화하는 동안이 요청을 사용할 수 있습니다. 따라서 간단한 유효성 검사와 응답을 위해 요청 범위의 콩이 필요할 것으로 기대합니다. 브라우저로 리디렉션을 보내고 새 요청을 제출하는 경우 예외 일 수 있습니다.

세션 범위 Bean은 사용자의 세션 동안 지속됩니다. 여러 요청에 걸쳐 세션은 얼마 동안 지속될 수 있지만 결국 사용자는 로그 아웃하거나 출입문이되어 세션이 시간 초과됩니다. 따라서 얼마나 많은 사용자가 전체적으로 얼마나 많은 사용자를 보유했는지는 중요하지 않습니다. 각 사용자 (일부 사람, 아마도 최근에 보았던 사람)와 같은 세션 데이터를 보관하는 것이 일반적이므로 일부 데이터를 보관해야하는 근본적인 이유가 없습니다. 단지 깔끔하게 보관할 필요가 있습니다. 예전 페이지의 데이터를 아주 오래 보관하지 않아야합니다. 아마도 "현재 데이터"bean 또는 그와 같은 것일 것입니다.

+0

하지만 AJAX 요청에 따라 새로운 빈을 생성하지 않을 것이라고 생각합니다. 건설하지만 그렇습니다. 이 "간단한 검증 및 응답"을 어떻게 수행 할 수 있습니까? – aindl

+0

하나의 AJAX 요청을 처리하는 것에 대해 이야기하고 있습니까? 페이지가 이미 렌더링되기 전에 렌더링됩니다. 맞습니까? Ajax 요청/응답에는 단일 요청 범위 Bean을 사용할 것으로 예상되며 원본 페이지 그리기에 사용 된 Bean과 관계가 없습니다. 이제 더 많은 일을하는 "유용한"프레임 워크를 사용하고 계신 것입니까? – djna

+2

페이지를 받으면 요청을 렌더링하고 요청을 다시 보냅니다. 그런 다음 요청 범위 Bean이 던져집니다. 그런 다음 새로운 AJAX 요청을 수행하여 필요한 새 빈을 모두 빌드하고 응답을 보냅니다. 그래서 예, AJAX 요청은 새로운 Request scoped beans를 생성 할 것입니다. 그들은, afterall, AJAX * 요청입니다. * – Drew

관련 문제