如何从容器管理的事务提交中捕获异常?

我有一个带有
@WebService
接口的
@Stateless
EJB,使用容器管理事务,这意味着如果没有抛出系统异常,则在调用方法后,容器会自动提交事务。 如果我尝试为具有唯一约束的列
EntityManager.persist(...)
具有相同值的两个对象,则容器将在我的代码之外的提交中向客户端抛出一个
PersistenceException
。我如何捕获此异常,以便我可以重新抛出自己的应用程序异常? 我是否必须在我的方法中手动提交事务以捕获提交中的异常? (并且这是正确的方法吗?)如果是这样,那么拥有容器管理交易的重点是什么?     
已邀请:
遗憾的是,不可能从容器管理的事务失败中捕获异常。如您所述,您最好的选择是使用bean管理的事务。或者,您可以使用实现相同接口的代理bean来包装EM EJB。当您的代码不需要响应特定的提交失败时,容器管理的事务是适当的。     

要回复问题请先登录注册