2016-07-01 6 views
0

EJB 세션 빈이 작동하지 않는 이유를 파악하는 데 문제가 있습니다. 실제의 에러 메세지는, EJBException : NameNotFoundException입니다 만, 이것은 매우 밝은 메세지는 아닙니다.EJB 세션 빈이 올바르게 초기화되지 않음 (NameNotFoundException)

정확히 어떤 줄이 문제를 일으키는 지 추적했지만 이유를 파악하지 못했습니다. 그래서 폼에서 입력 값을 추적하기 위해 세션 빈을 만들고 싶었습니다.

코드의 몸매는 여전 하구나 버전입니다 :

나는 다음 인터페이스 dohicky을 만들어
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 = ""; 
    } 
} 

이 ...

@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 초기화 메소드의 한 행을 주석 처리하지 않으면 실패합니다. 그래서 나는 그것이 그것과 관련이 있다는 것을 압니다. //name.currentValue = "TestValue";

서블릿에서 t1.getName ("새 값")을 코딩하자마자 주석으로 남겨두면 동일한 오류가 발생합니다.

내가 주석 처리 한 채로두면 예상대로 Bean이 작동합니다. 초기화 할 수 있으며 setAction 및 getAction을 사용하면됩니다.

은 내가 서블릿에서 코딩 할 수 있기 때문에 rrpInput 클래스는, 정확 상당히 확신 :

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

내가 내 입력 필드 클래스를 함께 할 수있는 뭔가가 있어야 그림,하지만 난내는 운이 없었을 뭐라구.

+1

은 기본 NullPointerException처럼 들립니다. 필드에 액세스하기 전에 이름을 지정할 인스턴스를 지정하십시오. "name = new rrpInputField();" –

답변

0

정말 이해가 안되지만, Table1Bean의 초기화 메소드를 "새로운"것으로 추가하여 작동하도록했습니다.

@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 –