У меня есть компонент Seam, который обрабатывает логин, с именем «идентифицирующей»:JBoss Seam: компоненты, вводимые в POJOs, но не Сеансные
@Name("authenticator")
public class AuthenticatorAction implements Authenticator
{
@PersistenceContext
private EntityManager em;
@In(required=false)
@Out(required=false, scope = SESSION)
private User user;
public boolean authenticate(){ ... }
}
Это работает просто отлично, Seam впрыскивает экземпляр EntityManager. Однако, как только я добавляю аннотацию @Stateless
, ни одна из инъекций не происходит! В этом случае экземпляр EntityManager имеет значение null при входе в метод authenticate()
. Еще одно интересное замечание заключается в том, что с отдельным сеансовым компонентом состояния, который у меня есть, экземпляр Logger в этом классе вводится только в том случае, если я делаю его статическим. Если у меня он нестатический, он не вводится. То, что отлично подходит для регистратора, но для сессионных фанов без состояния, я, очевидно, не могу иметь статических переменных-членов для этих компонентов.
Я смущен, потому что этот аутентификатор точно такой же, как в примере бронирования Seam: сеансовый компонент без состояния с добавленной частной переменной-членом.
Любые идеи?
Привет Артур, Да, интерфейс аутентификации отмечен @LOCAL: импорта javax.ejb.Local; @Local публичный интерфейс Аутентификатор { boolean authenticate(); } – purecharger
Так оно и было, еще раз спасибо Артур – purecharger