Я хочу внедрить текущего пользователя, используя @Inject @Current User
во всех слоях (т. е. веб-слое, слое EJB). Для этого у меня есть следующий метод CDI Producer:
@Named
@SessionScoped
public class UserController {
@Resource SessionContext sessionContext;
@EJB UserDao userDao;
@Produces @Current
public User getCurrentUser() {
String username = sessionContext.getCallerPrincipal().getName();
User user = userDao.findByUsername(username);
}
}
@Qualifier
@Target({TYPE, METHOD, PARAMETER, FIELD})
@Retention(RUNTIME)
public @interface Current{}
Теперь я хочу внедрить текущего пользователя в сессионный компонент EJB без сохранения состояния следующим образом:
@Stateless
public class SomeBackendService {
@Inject @Current
private User user;
}
Мой вопрос: всегда ли текущий пользовательский объект повторно вводится после изменения сеанса, потому что зависимости сеансового компонента без сохранения состояния обычно вводятся один раз во время создания, и компонент может быть объединен и использоваться в разных сеансах?