你好,想请教个问题: 刚才拜读了下 resty 的源码,看到关于多数据源事物控制实现的核心是如下的(TransactionAspect 类中): for (int i = 0; i < names.length; i++) {
dataSourceMeta = Metadata.getDataSourceMeta(names[i]);
dataSourceMeta.initTransaction(readonlys.length == 1 ? readonlys[0] : readonlys[i], levels.length == 1 ? levels[0] : levels[i]);
dataSourceMetas.add(dataSourceMeta);
}
//执行操作
result = ih.invoke(proxy, method, args);
for (DataSourceMeta dsm : dataSourceMetas) {
dsm.commitTransaction();
}
} catch (Throwable t) {
for (DataSourceMeta dsm : dataSourceMetas) {
dsm.rollbackTransaction();
}
String message = t.getMessage();
Throwable cause = t.getCause();
if (message == null) {
if (cause != null) {
message = cause.getMessage();
}
}感觉无法做到事务的统一控制,例如第一个数据源正常提交后,第二个数据源提交事务时出现异常时,是不能够回滚第一个数据源的事务的。后经测试也证明确实无法回滚。
添加回答
举报
0/150
提交
取消