4

私のJavaEEプロジェクトには、いくつかの「JavaEE」モジュールとWebモジュールがあります。Java EEモジュールの1つは、他のモジュールによって使用されるクラスをCDIに提供します。

@ApplicationScoped
public class XFactory {

  @Produces @Actual
  public X create() {
     return new X();
  }
}

それらはに注入されます

   @SessionScoped
   public class Target implements Serializable {
       X x;

      @Inject
      public void setX(@Actual X x){
        this.x = x;
      }
   }

ただし、これはJavaEEモジュールの1つとWebモジュールでのみ機能します。残りのすべてのJavaEEモジュールでは、インジェクションは一貫して失敗します。理由はわかりません。取得するのは WELD-1408、依存関係が満たされていないことだけです。

すべてのモジュールはbeans.xml適切な場所にあり、インジェクションに切り替えない限り、すべて機能します。ターゲットBeanのほとんどは、JSFで注入されたBeanとしてすでに使用されています。動作するJavaEEモジュールの特別な点は、BeanがJSFではなくWebモジュールのサーブレットに注入されることです。

プロジェクトは、GlassFish3.1のJavaEE 6、EJB3.1で実行されます。依存関係はMaven3によって管理されます。Xそれ自体はSerializable、不動態化スコープを満たすためです。

以前にこれに出くわしたことがありますか?私は何を間違えたのでしょうか?

更新:上記の依存関係管理の注釈を追加しました。

更新:の位置を修正し@ActualましたTarget

更新:1日の実験の後、詳細を含む説明を更新しました。

4

2 に答える 2

1

これは、Glassfish 3.1、それに含まれるライブラリの 1 つ、または JDK 6 に問題があるようです。

システムを Glassfish 3.1.1 および JDK 7 に更新したところ、問題は発生しなくなりました。

于 2011-07-29T10:03:21.457 に答える