2015-01-30 1 views
0

빈 수명주기에 대해 잘 모르겠다. 다음@Stateful 및 @SessionScoped

@Named 
@SessionScoped 
public class UserBean implements Serializable { 
    @Inject 
    UserServicesLocal userServices; 
    [...] 
} 

은 EJB 부분에 @Staseful 세션 빈 : 나는 나의 전쟁에서 @SessionScoped 콩이

@Stateful 
@LocalBean 
@SessionScoped 
@ExcludeDefaultInterceptors 
public class UserServices implements UserServicesLocal, Serializable { 
    [...] 
} 
가 잘 재생

하지만를 체크되지 않은 예외는 EJB 부분에 생성 될 때 SFSB는 "죽는다". 나는 그것이 예상 된 행동이라고 이해하지만이 상황을 어떻게 관리 할 수 ​​있는지 이해하지 못합니다. 예 : 사용자가 xls 파일을 업로드하고 파일을 업로드 한 다음 파일 처리가 이상한 이유로 실패 할 수있는 페이지로 이동합니다. "WeirdReasonException"이 발견되지 않고 SFSB가 사라지고 모든 후속 호출이 "javax.ejb.NoSuchObjectLocalException : EJB가 존재하지 않음"을 생성합니다. 나는 잡히지 않는 예외를 남겨서는 안된다는 것을 알고 있지만, 이상한 일이 발생하면 사용자는 그의 작업을 계속할 수 있어야한다고 생각합니다. SFSB의 레크리에이션을 강제로 수행하는 방법이 있습니까?

는 "SFSB는"당신이 UserServices 빈 뜻에 의해 당신에게

+0

[Handling 'The EJB does not exist'또는 'BACKUPSTORE FOR Key에서로드 할 수 없습니다.'] 가능한 복제본 (http://stackoverflow.com/questions/12163045/handling-the-ejb-does-not-exist- 또는 백업 저장소에서 키에 대해로드 할 수 없음) – kolossus

답변

0

내가 가정을 감사드립니다. 그 말이 맞다면 bean을 죽게 내버려 두지 않을 것이다. try/catch 블록에서 복구 할 수있는 검사되지 않은 예외를 던질 수있는 부분을 감싸고 RuntimeException을 잡는다. 예외를 기록하고 UI가 "입력 처리 실패"로 해석 할 수있는 것을 반환하십시오.

"예외"를 실제로 처리 할 수 ​​있다면 잡는 것이 결코 문제가되지 않습니다. 대부분의 코드는 UI 핸들러 수준에서 예외를 잡아 내며, 코드의 예상치 못한 문제가 발생하면 앱이 죽지 않습니다.

관련 문제