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

Chr*_*röm 5 java ejb transactions exception container-managed

我有一个@Stateless带有@WebService接口的EJB ,使用容器管理的事务,这意味着如果没有引发系统异常,在调用方法后,容器会自动提交事务.

如果我EntityManager.persist(...)为具有唯一约束的列尝试两个具有相同值的对象,则容器将PersistenceException在我的代码之外的提交中向客户端抛出一个.我如何捕获此异常,以便我可以重新抛出自己的应用程序异常?

我是否必须在我的方法中手动提交事务以捕获提交中的异常?(这是EntityManager.flush()正确的方法吗?)如果是这样,那么拥有容器管理交易的重点是什么?