Jakarta ee 如何查找JavaEE容器管理事务的回滚

Jakarta ee 如何查找JavaEE容器管理事务的回滚,jakarta-ee,transactions,Jakarta Ee,Transactions,我在代码中使用JavaEE容器管理的事务。我正在为我的一个方法使用注释@TransactionAttributeTransactionAttributeType.REQUIRES\u NEW。此方法应该更新数据库对象中的值。但这种方法有时会失败,事务会被容器回滚 有没有办法快速找到容器是否回滚了事务?我知道我们可以在数据库中再次查询,以真正检查并了解值是否已更改,但我不想再次查询。我想知道我是否能理解该事务是否已回滚,我可以用失败消息通知客户 非常感谢您对本主题的任何建议。只要事务不是'@App

我在代码中使用JavaEE容器管理的事务。我正在为我的一个方法使用注释@TransactionAttributeTransactionAttributeType.REQUIRES\u NEW。此方法应该更新数据库对象中的值。但这种方法有时会失败,事务会被容器回滚

有没有办法快速找到容器是否回滚了事务?我知道我们可以在数据库中再次查询,以真正检查并了解值是否已更改,但我不想再次查询。我想知道我是否能理解该事务是否已回滚,我可以用失败消息通知客户


非常感谢您对本主题的任何建议。

只要事务不是'@ApplicationExceptionrollback=false',那么总是回滚事务的一件事就是异常。在客户端,您可以捕获此异常,并且将根据规范保证事务已回滚

@Remote //or @Local
public interface MyBeanInterface {

 void doSomeTransaction();
}

public class MyController {

  @EJB
  private MyBeanInterface bean;

  public void doSomething() {
   try {
      bean.doSomeTransaction();
   }catch(EJBException ex){
     //the exception is always wrapped in an EJBException, unless it is an @ApplicationException
     //do something with the exception
   }
  }
}