我在做一个j2ee项目时,需要对数据库数据进行同步,初拟是三个数据库,数据库类型不同,如何才能在对三个数据库同时做操作时进行事物处理

解决方案 »

  1.   

    用全局事务,并且用到连接要支持XA,这个涉及到数据库的“两阶段提交”,建议查找关键字:Two-phase commit, global transaction。
      

  2.   

    如果用ejb的话,默认的情况就是在事务中进行(称之为:容器管理的事务)。如果在ejb内自己控制事务的范围,有两种手段获取全局事务,一个是用注入的方式:
    @Resource UserTransaction utx;
    utx.begin();
    ...
    utx.commit();  //Or  utx.rollback();还有一种是jndi,查找方式:
    Context ctx = new InitialContext();
    UserTransaction utx = ctx.lookup("java:comp/UserTransaction");
    utx.begin();
    //TODO 
    ....
    utx.commit();  //Or  utx.rollback();其中jndi方式,可以用在没有ejb的环境中,比如客户端(ACC),jsp,servlet,等等。但是全局事务是要依靠服务器实现的支持,所以要有服务器环境(比如weblogic,websphere,glassfish等)