楼上说得对,tx data sources是支持多个数据资源的,例如:简单的转账,两个账户a,b分别存在两个数据库DB1和DB2中,这种情况下,如果只用data sources时,就不能应用JTA,如果在a账户-100,b账户+100中间出现错误,就会发生a-100但b没有+100的事情发生。如果是tx datasource,可以应用JTA,把这两步操作加入到transaction.begin() 和transaction.commit中,就可以使这两步操作具有原子性,要么都成功,要么都失败,如果失败,调用transaction.rollBack()撤销操作,返回连接。

解决方案 »

  1.   

    tx data source支持在不同类型的资源适配器之间控制事务
    当然也支持两阶段提交,但不是必需的
    如果你多个不同类型的数据源而且需要在它们之间控制事务的话
    就必须用tx data source,
    data source就是简单的数据源
      

  2.   

    Data Source:普通的连接数据库的接口,不支持事务回滚,但开销小。
    Tx Data Source:支持工业标准的分布式事务的标准数据源,支持事务的回滚,开销大。
      

  3.   


    从应用上来说,如果你用到EJB,那么都要用TXData Source,如果只是JSP和servlet,那么用Data Source就可以了。
      

  4.   

    一个问题,什么样的ejb可以不必使用tx datasource呢?