问题描述
问题:更新两个不同厂商的数据库(如informix和oracle),必须同时更新成功,或者其中一个失败时都要回滚。怎么解决?
解决方案
最傻的办法就是这样了... ......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(); }还有个办法就是使用JTA事务..不过在下不才...目前还不会.楼主可以多参考些这方面的资料..
解决方案二:
其实也不用那么复杂,起两个session分别处理两个数据源,如果有一个session抛出异常了,那么就把两个session都会滚。
解决方案三:
多数据源,肯定只能是JTA了. Javaeye中讲JTA的帖子和Blog蛮多的.