Невозможно внедрить EJB в прослушиватель фазы JSF

Я работаю с сервером Wildfly 10, и у меня возникают проблемы с прослушивателем фазы JSF, не вводящим в него EJB. Вот мой тестовый код, который я не могу заставить работать правильно.

public class TestListener implements PhaseListener {
@EJB
BasicEJB bjb;

private final static Logger LOGGER = Logger.getLogger(TestListener.class.getName());

@Override
public void afterPhase(PhaseEvent arg0) {
    LOGGER.log(Level.INFO, "After Restore View event hook called.");

}

@Override
public void beforePhase(PhaseEvent arg0) {
    LOGGER.log(Level.INFO, "Before Restore View event hook called.");
    bjb.callMe(); // crash happens right here.
}

@Override
public PhaseId getPhaseId() {
    return PhaseId.RESTORE_VIEW;
}
}

Если я закомментирую строку bjb.callMe();, программа будет работать как обычно. С ним я получаю исключение NullPointerException. Я могу внедрить этот EJB и использовать его в компоненте поддержки @RequestScoped.

Я узнал, что до JSF 2.2 вы не могли внедрить в Phase Listener, однако я использую JSF 2.2.12 с этим сервером. Более того, я могу развернуть этот точный код на сервере Glassfish4, и он работает. Что я делаю не так с Wildfly?


person Psirax    schedule 13.05.2016    source источник
comment
Пока вы используете Java EE API и он работает на Glassfish, я не думаю, что кто-то может сказать, что вы делаете что-то не так на Wildfly. Если вы можете воспроизвести проблему на действительно минимальном примере (новый проект с одним EJB и одним PhaseListener), вы можете сообщить об ошибке в проекте WildFly. Просто предложение.   -  person DavidS    schedule 13.05.2016
comment
Чтобы исключить одно и другое, что если использовать @Inject вместо @EJB?   -  person BalusC    schedule 15.05.2016


Ответы (1)


Внедрение @EJB в JSF PhaseListener на Wildfly, по-видимому, на данный момент содержит ошибку. Для справки см. https://developer.jboss.org/thread/269770.

Однако, если я изменю аннотацию на @Inject вместо @EJB, все будет работать нормально. (Спасибо BalusC и участникам форума JBoss за это предложение)

person Psirax    schedule 17.05.2016