У меня есть управляемый компонент, который находится в области сеанса
@ManagedBean(name = "loginAction")
@SessionScoped
public class LoginAction implements OnReceiveListner, Serializable {}
В вызове сервлета я получаю это, используя
LoginAction loginAction = (LoginAction) request.getSession().getAttribute("loginAction");
Теперь мне было интересно, могу ли я вызвать это, используя CDI для каждого сеанса. Нравится
@Inject LoginAction loginAction(current session)
Как я могу это сделать
LoginAction
украшена@ManagedBean
(я предположил, что она из пакетаjavax.faces.bean
. Значит, не изjavax.annotation
). Таким образом, это управляемый компонент JSF. Почему бы просто не использовать CDI для управления вашими bean-компонентами? Если это компонент CDI, его можно внедрить в любой другой компонент (бины) с любой областью действия — более широкой или узкой. Что вы на самом деле пытаетесь сделать? - person Tiny   schedule 26.12.2014LoginAction
, она находится в области сеанса, поэтому каждый пользователь должен видеть значение объекта сеансаLoginAction
. - person LynAs   schedule 26.12.2014@Inject
. Управляемые компоненты JSF управляются инфраструктурой JSF. Таким образом, они недоступны в сервлете. JSF хранит сеансовые компоненты вjava.util.Map
, используя имя компонента в качестве ключа. Таким образом, он доступен как атрибут сеанса. Вы, видимо, делаете это правильно. Просто сам bean-компонент не может быть внедрен в целевой сервлет, если он не управляется CDI. - person Tiny   schedule 26.12.2014