2011-11-21 1 views
3

은 내가 JSF 응용 프로그램을 쓰고 있어요, 나는 예를 들어, 다른로 명명 된 빈을 주입해야합니다@SessionScoped CDI 빈을 다른 세션에 삽입 할 때 이들이 동일한 세션에 속합니까?

@Named 
@SessionScoped 
public class BeanA implements Serializable{ 
    @Inject private BeanB b; 
    public void doSth(){ 
     b.doSth(); 
    } 
} 

@Named 
@SessionScoped 
public class BeanB implements Serializable{} 

둘 다 SessionScoped을, 그리고 내가 잡아 것 BeanA와 주입 BeanB의 인스턴스를 희망 동일한 세션 상태.

BeanB 인스턴스를 임의로 선택하거나 생성하거나 동일한 세션 ID를 가진 BeanB 인스턴스를 선택합니까?

+0

왜 무작위로 선택하겠습니까? 그러면 전 세계 곳곳에 깨지기 쉽고 쓰레드 안전하지 않은 애플리케이션으로 이어질 것입니다. – BalusC

+0

정말 신기 해요 ... 문맥에 단지 @Inject 만 있기 때문에 컨텍스트가 일반 오브젝트로 취급 될 것이라고 생각했습니다. CDI 구현 판결에서 두 객체가 어떻게 종속적입니까? –

답변

1

작동 부분은 BeanB가 세션 범위이므로 BeanB를 세션 범위에 삽입 할 때마다 (즉, @ New에 대한 cept) 현재 세션을 기반으로 관리됩니다.