EJB-инъекция не выполняется при наличии перехватчика - PullRequest
1 голос
/ 08 декабря 2010

Я столкнулся с проблемой при использовании DI и перехватчиков в приложении JSF.

У меня есть компонент поддержки, который наблюдает за событиями JSF и выполняет некоторый начальный поиск данных.На странице JSF бин регистрируется как слушатель событий следующим образом:

<f:event type="preRenderView" listener="#{myBean.loadData}"/>

Бин довольно прост и выглядит в основном так:

@Named
@RequestScoped
public class MyBean {

    @EJB
    private SomeDao dao;

    public void loadData() { ... }

    public void performSomeStuff() { ... }

}

Дао правильно введен, и всехорошо, пока здесь.Теперь я хотел бы выполнить некоторую ленивую загрузку, которая выполняется внутри перехватчика (конкретный код не имеет значения, так как такое же поведение проявляется, когда перехватчик просто переходит в контекст вызова).Итак, перед вызовом executeSomeStuff () я хотел бы убедиться, что все данные загружены:

    @Interceptors(MyInterceptor.class)
    public void performSomeStuff() { ... }

На этом этапе EJB больше не вводится (NPE обнаруживается ...) - любойидеи на этот счет?

Настройки:

  • GlassFish 3.0.1
  • WELD-000900 1.0.1 (SP3)
  • Мохарра 2.0.2(FCS b10)

Заранее спасибо!

С уважением, Алекс

1 Ответ

0 голосов
/ 04 января 2011

Если вы хотите добиться прогресса, вы можете попробовать использовать перехватчики на основе 299, связанные с привязкой перехватчиков, в отличие от стиля EJB.Если в этом районе есть ошибка, запуск перехватчика немного позже может помочь.

...