2016-07-01 23 views
0

EJBセッションBeanが動作しない理由を理解できません。実際のエラーメッセージはEJBException:NameNotFoundExceptionですが、それは非常に明るいメッセージではありません。EJBセッションBeanが正しく初期化されない(NameNotFoundException)

私はそれを追跡して、問題の原因となった行を正確に特定しましたが、その理由を把握していません。だから、私はフォームから入力値を追跡するためにセッションBeanを作成したかったのです。

Aはコードのバージョンをスリム化:

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 = ""; 
    } 
} 

Iは、次にインターフェイスdohickyを作成...

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

は、その後、私は試験豆自体を作成...

@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( "新しい値")を記述するとすぐに同じエラーが発生します。

コメントアウトしておけば、Beanは予期したとおりに動作します。私は初期化でき、setActionとgetActionを使っても問題ありません。

私は、サーブレットでコーディングできるのでrrpInputクラスは、正しいことをかなり確信している:

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

私はそれが私の入力フィールドのクラスとは何かを持っている必要があります理解が、私は運把握を持っていません何を出すか。

+1

は、基本的なNullPointerExceptionのように聞こえます。フィールドにアクセスする前に、名前にインスタンスを割り当てます。 "name = new rrpInputField();" –

答えて

0

私は本当に理由を理解していませんが、Table1Beanのinitializeメソッドに「新しい」ものを追加して動作させました。

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

誰かが私がこれをしなければならない理由を説明することができれば、それは明るくなるでしょう。

+0

http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it –

関連する問題