我对bean的生命周期有个问题,我不明白。在我的战争中我有一个@SessionScoped bean:
@Named
@SessionScoped
public class UserBean implements Serializable {
@Inject
UserServicesLocal userServices;
[...]
}然后是ejb部分中的@ session bean:
@Stateful
@LocalBean
@SessionScoped
@ExcludeDefaultInterceptors
public class UserServices implements UserServicesLocal, Serializable {
[...]
}它们发挥得很好,但是当ejb部分生成未经检查的异常时,SFSB就会“死”。我知道这是预期的行为,但我不知道如何处理这种情况。例如:用户进入一个页面,他可以上传一个xls文件,上传一个文件,然后该文件的处理由于一些奇怪的原因而失败。"WeirdReasonException“未被捕获,SFSB消失,随后的每个调用都生成一个"javax.ejb.NoSuchObjectLocalException: EJB不存在”。我知道我应该避免留下一个例外的秘密,但如果有什么奇怪的通过,我认为用户应该能够继续他的工作。有没有办法“强迫”SFSB的再创造?
谢谢
发布于 2015-01-30 22:19:11
我猜"SFSB“你指的是UserServices豆。如果这是正确的,那么我就不会让bean死掉--我会将抛出未检查异常的部分包装起来,您可以在try/catch块中恢复,然后捕获RuntimeException (顺便说一句,不是例外)。记录异常并返回UI可以解释为“处理输入失败”的内容。
如果你真的能处理的话,捕获“异常”从来都不是问题。我的大部分代码在UI处理程序级别捕捉到异常,所以如果代码的核心出现意外情况,应用程序就不会死。
https://stackoverflow.com/questions/28244850
复制相似问题