У меня есть контроллер с продюсером.
@Named
@SessionScoped
public class UserController{
private User user;
//other methods
@Produces
@User
public User produceUser() {
return user;
}
}
Если я ввожу пользователя в сервлет, я получаю всегда одного и того же пользователя (я сравнивал идентификаторы объектов) - также в разных сеансах. Если я вставляю пользователя в CDI Bean, он работает, и я получаю пользователя текущего сеанса.
UserController
- это область сеансов, но производитель - нет. Т.е. у продюсера есть @Dependent
scope, поэтому User
компонент вводится один раз, когда сервлет инициализируется.
Попробуйте добавить @SessionScoped
к вашему методу производителя.