2011-11-21 6 views
3

Я пишу приложения JSF, и мне нужно, чтобы придать имени боб в другую, например:При введении бина CDI @SessionScoped в другой, принадлежит ли он к одному сеансу?

@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 случайным образом или выбирает один с тем же идентификатором сеанса? Спасибо!

+0

Почему, по вашему мнению, он может выбрать случайный? Это приведет только к сломанным и бесполезным приложениям по всему миру. – BalusC

+0

Я действительно новичок в этом ... Я думал, что контекст будет рассматривать его как обычный объект, потому что в поле добавлен только @Inject. Как зависит реализация CDI от двух объектов? –

ответ

1

Оперативная часть состоит в том, что BeanB является областью сеанса, поэтому всякий раз, когда вы вводите один (независимо от того, как и где («cept for @New»), он будет управляться на основе текущего сеанса.