4

私は2つのマネージドBeanを持っています:

SessionBean:

@Named(value = "sessionBean")
@SessionScoped
public class SessionBean implements Serializable {

  private final Param param

  SessionBean(Param param) {
      this.param = param;
  }

}

およびTypesBean:

@Named(value = "typesBean")
@RequestScoped
public class TypesBean {

  @Inject
  private SessionBean session;

}

プロジェクトはビルドされますが、デプロイされません。

デプロイ中にエラーが発生しました:アプリのロード中に例外が発生しました:WELD-001410インジェクションポイント[フィールド] @Injectprivatecom.example.TypesBean.sessionにプロキシ不可能な依存関係があります。詳細については、server.logを参照してください。

どうしたの?

4

1 に答える 1

9

問題は、SessionBeanクラスにアクセス可能な引数なしのコンストラクターがないことです。

OPが指摘した1つの解決策は次のとおりです。

「問題はfinalSessionBeanのメソッドにありました。メソッドを削除final して公開するだけです。問題を解決してください。時間を無駄にして申し訳ありません。」

または代わりに...

@Named(value = "sessionBean")
@SessionScoped
public class SessionBean implements Serializable {

  . . . //variables, setters, getters and other methods
  private final Param param

  public SessionBean(Param param) {
      this.param = param;
  }
  // no-args constructor used by CDI for proxying only 
  // but is subsequently replaced with an instance 
  // created using the above constructor. 
  protected SessionBean() {
     this(null);
  }
于 2015-12-19T21:24:36.303 に答える