问题:更新两个不同厂商的数据库(如informix和oracle),必须同时更新成功,或者其中一个失败时都要回滚。
怎么解决?
最傻的办法就是这样了...
[code="java"]
......
try{
//改变自动提交方式.
connOracle.setAutoCommit(false);
connInformix.setAutoCommit(false);
stmt = connOracle.createStatement();
stmt = connInformix.createStatement();
stmt.executeUpdate("UPDATE ... SET ...");
stmt.executeUpdate("UPDATE ... SET ...");
connOracle.commit();
connInformix.commit();
connOracle.close();
connInformix.close();
}catch(Exceptin ex){
//出错则一起回滚
connOracle.rollback();
connInfomix.rollback();
connOracle.close();
connInformix.close();
ex.printStackTrace();
}
[/code]
还有个办法就是使用JTA事务..不过在下不才...目前还不会.楼主可以多参考些这方面的资料..
多数据源,肯定只能是JTA了. Javaeye中讲JTA的帖子和Blog蛮多的.
其实也不用那么复杂,起两个session分别处理两个数据源,如果有一个session抛出异常了,那么就把两个session都会滚。