2011-02-12 10 views
0

JSF2 및 Managed Beans에 대해 읽습니다. 패시베이션과 관련된 질문이 있습니다.세션 범위 Managed Bean 패시베이션

sessionscoped managed bean vs stateful ejb :

최근 @Stateful EJB의, @SessionScoped 여기 @ManagedBean의 다른 사용 사례에 대한 요청했습니다.

이제 stateful EJB는 비활성 상태 일 때 메모리 사용을 줄이기 위해 일시적으로 영구 저장소로 부동화 할 수있는 비활성화 및 활성화에 적합합니다.이 기능을 managedbeans에서 사용할 수있는 것으로 보지 못했습니다. 그래서 @RequestScoped Managed Beans에 가서 쇼핑 카트 용 EJB를 선호하는 대신에 @Stateful EJB를 사용하는 것이 좋습니다. @Sessionscoped Managed Beans를 사용하면 최소한의 사용자 정보 만 저장할 수 있습니다.

이 정보가 맞습니까? 이것에 대한 몇 가지 지침이 있습니까?

답변

2

요청 범위 관리 빈은 여기에서 작동하지 않습니다. 특정 스테이트 풀 세션 빈 인스턴스에 액세스하려면 스텁이 필요합니다.

요청 범위가 지정된 관리 Bean을 사용하는 경우이 스텁을 저장할 위치가 없기 때문에 요청할 때마다 새 인스턴스를 가져옵니다. 이것은 처음부터 Stateful Session Bean을 사용하는 이유를 완전히 상쇄합니다.

뷰 범위의 JSF 관리 빈 (단일 페이지에서 작업이 수행되는 경우) 또는 대화 범위가 지정된 CDI 빈 (여러 페이지에서 작업이 수행되는 경우)을 사용할 수 있습니다. 특히 후자의 경우에는 대화의 범위를 stateful 세션 빈의 수명에 연결할 수 있습니다.

모든 작업을 수행하려면 최소한 Java EE에 대한 중간 수준의 이해가 필요합니다. 상태 저장 세션 빈 (stateful session beans)의 패시베이션에 조심하지 않으면 (예 : @Remove 주석 메소드를 절대 호출하지 마십시오) 서버의 HDD 공간을 점차적으로 먹어 버릴 것입니다.

+0

그래서 세션 빈 대신 대화 범위의 콩을 사용하라고 제안하고 있습니까? 나는 그것을 생각했다. 하지만 이제는 상태가있는 EJB를 훨씬 더 잘 이해할 수 있지만 매번 쓸모가없는 것처럼 보입니다. 확장 된 영속 컨텍스트를 제외하고 나는 웹 애플리케이션에서 그것들에 대한 사용을 생각할 수 없다. – arg20

+0

확장 된 지속성 컨텍스트는 엔티티에 대해 (낙관적 인) JPA 잠금을 유지해야하는 경우에 중요합니다. 장 Y 구니에 장 Y 일 때 항목이 동시에 다른 고객에게 판매되지 않도록 보장합니다. –

+1

스테이트 풀 세션 빈 대신 대화 범위 스코프를 사용하라는 제안을하지는 않았지만 오히려이를 결합하는 것이 좋습니다. 고맙습니다 arjan –

관련 문제