EJB远程异常处理

时间:2012-02-07 16:57:53

标签: exception ejb rmi oc4j

我在SLSB部署了一个远程OC4J

此会话Bean使用TopLink,在某些情况下会抛出oracle.toplink.essentials.exceptions.QueryException异常。

我这样处理这个异常:

public void slsbMethod()
{
   try
   {
      // oracle.toplink.essentials.exceptions.QueryException throws here 
   }catch(Exception ex)
   {
      // do nothing
   }
}

我从客户那里称这个SLSB:

try
{
    fooBarService.slsbMethod()
}catch(Exception ex)
{
    System.out.println("Exception calling the EJB server");
}

但是我在EJB上处理这个异常,我仍然收到了Exception calling the EJB server打印的消息!

这是怎么回事?

1 个答案:

答案 0 :(得分:0)

如果异常来自容器管理的事务代码,那么我建议使用bean管理的事务。有了它,您可以在对UserTransaction.commit的调用中将异常处理放在bean中。或者,您可以编写一个拦截器来开始事务,调用InvocationContext.proceed(),然后提交事务并根据需要处理异常。这基本上就是容器为你做的事情,但你可以随意处理提交异常,并且可以在其他bean /方法上重用逻辑。