Java 安全地检查EJB是否存在,如果不存在,则防止回滚';T
我有一些清理代码,可能会尝试引用不存在的(有状态的)EJB。例如:Java 安全地检查EJB是否存在,如果不存在,则防止回滚';T,java,jboss,ejb,Java,Jboss,Ejb,我有一些清理代码,可能会尝试引用不存在的(有状态的)EJB。例如: try{ //In my case ejb is actually a delegate. Not sure this makes a difference ejb.doSomeMethod(); }catch(NoSuchEJBException nsejb){ //Deal with this but continue } 但是,NoSuchEJBException正在导致事务回滚。 有没有办法防止
try{
//In my case ejb is actually a delegate. Not sure this makes a difference
ejb.doSomeMethod();
}catch(NoSuchEJBException nsejb){
//Deal with this but continue
}
但是,NoSuchEJBException正在导致事务回滚。有没有办法防止回滚或检查
ejb
是否不再存在?好的,您可以在一个新事务中运行该代码,然后回滚,但不会影响外部事务 什么会导致EJB不存在?您是否在运行时取消部署它们?它是一个会话ejb(在本例中是一个购物车)。他们可能死于抛出运行时或被容器丢弃和销毁。我假设您正在使用@ejb
注释访问ejb。如果是这样,在出现异常等情况时,容器通常不应该删除它们。即使是这样,每当您尝试访问这些EJB/代理时,容器也应该创建一个新实例。当web用户需要时,以编程方式创建Cart,然后存储这些Cart。如果cart被放弃(并最终被容器销毁)或出现意外异常,则存储的句柄将在对其调用任何方法时抛出NoSuchEJBException。嗯,您正在谈论有状态会话bean,不是吗?看起来这是唯一的选项。