我有一个涉及全局事务的EJB。 有一部分代码,如果失败,我想显式回滚,尽管我不希望整个事务失败。分布式事务中的合法回滚:可能吗?
由于回滚在CMT禁止我创建了一个BMT,并试图下面的代码:
connection.setAutoCommit(false);
Savepoint sp= connection.setSavepoint();
try{
//my code editing DB that could possibly fail
}catch(SomeException ex){
connection.rollback(sp);
}
这样,我只是撤消我的本地数据库修改,但我也不会传播这种故障转移到外面。反正这程序失败为:
“保存点在分布式事务中禁止”有没有办法解决这个问题的另一种方法?
如果新事务有效,新事务也会提交。请注意,新交易与第一笔交易无关,并且如果某件事使第一笔交易回滚(出于另一原因),则新笔交易仍将承诺。 – kaczyns