2010-12-07 5 views
1

У меня возникла проблема при использовании DI и перехватчиков в приложении JSF.Инъекция EJB не срабатывает при наличии перехватчика

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

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

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

@Named 
@RequestScoped 
public class MyBean { 

    @EJB 
    private SomeDao dao; 

    public void loadData() { ... } 

    public void performSomeStuff() { ... } 

} 

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

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

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

Настройки:

  • GlassFish 3.0.1
  • WELD-000900 1.0.1 (SP3)
  • Mojarra 2.0.2 (FCS b10)

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

С уважением, Alex

+0

и вы пытались впрыскивать другой компонент (не-ejb)? Это работает? – Bozho 2010-12-07 21:51:21

ответ

0

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