java中的用户事务问题

java中的用户事务问题,java,transactions,commit,rollback,Java,Transactions,Commit,Rollback,我有一个使用2数据库(DB2)的现有项目,并且保存在2个数据库中的记录是相关的。因此需要维护事务。例如,每当要添加新内容时,必须对数据库1中的x个表和数据库2中的y个表执行条目。 现在,在先前存在的代码(由其他人开发)中,我看到了如下内容 UserTransaction utx = getTranscationU(); //getTranscation() is a user defined method as show below public UserTransaction get

我有一个使用2数据库(DB2)的现有项目,并且保存在2个数据库中的记录是相关的。因此需要维护事务。例如,每当要添加新内容时,必须对数据库1中的x个表和数据库2中的y个表执行条目。 现在,在先前存在的代码(由其他人开发)中,我看到了如下内容

UserTransaction utx = getTranscationU();  
//getTranscation() is a user defined method as show   below

public UserTransaction getTransactionU()  {
        InitialContext ic = new InitialContext();
        return (UserTransaction) ic.lookup("java:comp/XYZ");
    }
因此,在代码中,遵循以下顺序:

  • 启动utx
  • 为db1和db2创建单独的实体管理器ems
  • 使用此ems在两个表中创建条目
  • 如果抛出任何异常,则回滚utx
  • 现在我的问题是

  • 此代码是否确保条目同时输入到db中,还是不输入
  • 有人能解释一下getTransactionU()中的代码是做什么的吗
  • XYZ在哪里定义
  • 初始化UserTransaction时,如果两个实体管理器都使用链接到事务管理器的数据源,则其所有操作都将包含在事务中。如果要访问不同的数据库,则事务必须是XATransaction(分布式)
  • getTransactionU()方法通过JNDI访问Java EE容器的命名目录,必须在JNDI中配置事务管理器
  • 它是在服务器上设置的事务管理器的路径

  • 谢谢:用户传输初始化为utx=getTranscationU()。请告诉我应该在哪里查找XYZ的文件,我的意思是第3点和第2点,这取决于代码运行的JEE容器。容器配置文件—它不是JEE标准(JBoss使用一组文件,使用Websphere时,您最好通过其管理控制台来查找它,等等)