0

EJB セッション Bean が機能しない理由がわかりません。実際のエラー メッセージは EJBException: NameNotFoundException ですが、これは明確なメッセージではありません。

問題の原因となっている行を正確に突き止めましたが、その理由はわかりません。そこで、フォームからの入力値を追跡するセッション Bean を作成したいと考えました。

コードのスリム化されたバージョンは次のとおりです。

public class rrpInputField {
   public boolean isRequired;
   public int maxLength;
   public String inputValue;
   public String displayValue;
   public String formatMask;
   public rrpInputField() {
     isRequired = false;
     maxLength  = 64;
     inputValue = "";
     displayValue = "";
     formatMask   = "";
  }
}

次に、インターフェイス dohicky を作成しました...

@Local
public interface Test1  {
   public void   setAction(String action);
   public String getAction();
   public void   setName(String name);
   public String getName();
}

次に、テスト Bean 自体を作成しました...

@Stateful
public class Test1Bean implements Test1 {
   private String         action;
   private rrpInputField  name;

   @PostConstruct
   public void initialize() {
        action = "initalValue";
        //name.currentValue = "TestValue";

    @Override
    public void setAction(String action){ this.action = action; }

    @Override
    public void getAction() { return this.action; }

    @Override
    public void setName(String name) { this.name.currentValue = name; }

    @Override
    public String getName() { return this.name.currentValue; }

}

私のテストサーブレットでは

 @EJB
 private  Test1   t1;

Bean 定義の Bean 初期化メソッドの 1 行のコメントを外すと、エラーが発生します。だから、それと関係があることを知っています。//name.currentValue = "TestValue";

コメントアウトしたままにしておくと、サーブレットで t1.getName("New Value") をコーディングするとすぐに、同じエラーが発生します。

コメントアウトしたままにしておくと、Bean は期待どおりに動作します。初期化して、setAction と getAction を問題なく使用できます。

サーブレットでコーディングできるので、rrpInput クラスが正しいと確信しています。

   rrpInputField f1 = new rrpInputField();
   f1.currentValue  = "TestValue";

私の入力フィールドクラスと関係があるに違いないと思いますが、何が原因かわかりませんでした。

4

1 に答える 1

0

理由はよくわかりませんが、Table1Bean の初期化メソッドに「新しい」ものを追加することで機能するようになりました。

@PostConstruct    
public void initialize() {
   action = "initialValue";
   name = new rrpInputField();
   name.currentVAlue = "TestValue;
}

なぜ私がこれをしなければならなかったのかを誰かが説明できれば、それは明らかになるでしょう.

于 2016-07-02T18:50:42.350 に答える