私の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日の実験の後、詳細を含む説明を更新しました。