jta - 通过 JTA 中的单个事务提交多个 XAResource
问题描述
我有一个场景,我创建多个 XAConnections 到同一个数据库,从而创建多个 XAResources。但是由于所有 XAResources 都是为单个数据库创建的,所以我使用相同的事务分支(单个 xid)。
xaDS = getDataSource();
xaCon1 = xaDS.getXAConnection("jdbc_user", "jdbc_password");
xaRes1 = xaCon1.getXAResource();
con1 = xaCon1.getConnection();
stmt1 = con1.createStatement();
xid1 = new MyXid(100, new byte[]{0x01}, new byte[]{0x02});
xaRes1.start(xid1, XAResource.TMNOFLAGS);
stmt1.executeUpdate("insert into test_table1 values (100)");
xaRes1.end(xid, XAResource.TMSUCCESS);
xaCon2 = xaDS.getXAConnection("jdbc_user", "jdbc_password");
xaRes2 = xaCon2.getXAResource();
con2 = xaCon2.getConnection();
stmt2 = con2.createStatement();
if (xaRes2.isSameRM(xaRes1)) {
xaRes2.start(xid1, XAResource.TMJOIN);
stmt2.executeUpdate("insert into test_table2 values (100)");
xaRes2.end(xid1, XAResource.TMSUCCESS);
}
ret = xaRes1.prepare(xid1);
if (ret == XAResource.XA_OK) {
xaRes1.commit(xid1, false);
}
我应该在 xaRes2 上提交以保存所做的更改test_table2
还是要小心处理xaRes1.commit(xid1, false);
?
任何帮助表示赞赏!
解决方案
推荐阅读
- php - 无法在 aws lambda 中使用 curl
- cereal - CEREAL 无法序列化 - 无法从输入流异常中读取
- snakemake - Snakemake:你能扩展两个因变量吗?
- intellij-idea - 如何在 Intellij 中按字母顺序对导入进行排序?
- c# - DataGridViewComboBoxColumn [Windows 窗体] 中的 CheckBox 列表
- sql - Oracle PL/SQL重复用户,增加重复次数
- excel - 用户可以选择在 Angular 中下载 excel 文件
- c# - C# Linq 等价于 SQL 嵌套 group by
- scheme - 有没有办法在 Typed Racket 中声明一个表示所有可调用过程(任何可调用的过程)的类型?
- r - R 和 DT - 您可以将行副标题和组添加到数据表吗?