1

JSFアプリでDIとインターセプターを使用するときに問題が発生します。

JSFイベントを監視し、初期データルックアップを実行するバッキングBeanがあります。JSFページでは、Beanは次のようにイベントリスナーとして登録されます。

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

Beanはかなり前向きで、基本的に次のようになります。

@Named
@RequestScoped
public class MyBean {

    @EJB
    private SomeDao dao;

    public void loadData() { ... }

    public void performSomeStuff() { ... }

}

daoは適切に注入され、ここまではすべて問題ありません。ここで、インターセプター内で実行される遅延読み込みを実行したいと思います(インターセプターが呼び出しコンテキストで続行するときに同じ動作が表示されるため、特定のコードは重要ではありません)。したがって、performSomeStuff()を呼び出す前に、すべてのデータがロードされていることを確認したいと思います。

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

この時点で、EJBは注入されなくなります(NPEが表示されます...)-これに関するアイデアはありますか?

設定:

  • GlassFish 3.0.1
  • WELD-000900 1.0.1(SP3)
  • クロサギ2.0.2(FCS b10)

前もって感謝します!

よろしく、アレックス

4

1 に答える 1

0

先に進みたい場合は、EJB スタイルではなく、インターセプター バインディングに関連付けられた 299 ベースのインターセプターを使用してみてください。その領域にバグがある場合は、インターセプターを少し遅らせて実行すると、問題が緩和される可能性があります。

于 2011-01-04T20:04:12.987 に答える