在Java中:当更新Active Directory或数据库失败时如何回滚?

在Java中:当更新Active Directory或数据库失败时如何回滚?,java,active-directory,commit,rollback,transactionscope,Java,Active Directory,Commit,Rollback,Transactionscope,在Java中,我有两种方法要做: 更新AD中的某些属性数据 更新表中字段中的某些数据 如果项目1或项目2失败,则必须回滚系统 我想这样做,如果两个项目都更新完成,然后提交流程 如果其中一个失败,则必须回滚事务 我在.NET TransactionScope中找到了,但在Java中我不知道 是否有人在此解决方案中为我提供帮助/建议?如果您使用Enterprise java bean(ejb)。 容器管理您的事务并将它们作为一个工作单元,如果其中一个失败,所有其他事务都将回滚。 如果不使用ejb

在Java中,我有两种方法要做:

  • 更新AD中的某些属性数据
  • 更新表中字段中的某些数据

    • 如果项目1或项目2失败,则必须回滚系统
    • 我想这样做,如果两个项目都更新完成,然后提交流程
    • 如果其中一个失败,则必须回滚事务
  • 我在.NET TransactionScope中找到了,但在Java中我不知道


    是否有人在此解决方案中为我提供帮助/建议?

    如果您使用Enterprise java bean(ejb)。 容器管理您的事务并将它们作为一个工作单元,如果其中一个失败,所有其他事务都将回滚。 如果不使用ejb, 您必须使用像hibernate这样的持久提供程序。 并用try-catch块包装方法调用, 在catch块调用回滚方法中

      try{Session ss = sessionFactory.openSession();
        Transaction tx = ss.getTransaction();method 1();method 2();tx.commit();}  catch(Exception e){tx.rollback();}finally{ss.close();}
    

    我知道Hibernate只支持RDBMS,但我的一些方法是访问Active Directory(而不是RDBMS),所以我应该怎么做?要回滚数据库更新,可以使用Hibernate或其他持久性提供程序。在catch块中,执行可以取消方法1的操作。