最后资源优化

时间:2020-03-06 14:42:40  来源:igfitidea点击:

我正在写一个不支持两阶段提交的资源适配器。
我知道有一种称为"最后资源优化"的优化技术。

在JBoss上,XAResource类应实现LastResource以便进行优化。

我的问题是:如何在WebLogic,WebSpehre,Glassfish等中完成此操作...

解决方案

Weblogic:AFAIK(可能是非常错误的),只有JDBC驱动程序可以与LRO一起使用,这纯粹是管理任务。当驱动程序不支持XA时,可以将其配置为与LRO一起使用:"如果要启用来自数据源的非XA JDBC连接以模拟使用JTA参与全局事务,请选择此选项"。

本质上,LRO允许没有准备阶段的资源,并且只能提交或者回滚该资源。因此,如果XA事务中仅存在一个这样的资源,我们可以首先尝试准备所有其他资源,然后再提交一个LRO,如果成功,则提交其他资源,否则回滚其他资源。

我们会看到,声明任何接口都没有特殊需要。这是一种可以与任何非XA资源一起使用的算法。我不确定为什么JBoss拥有它,但是我不希望其他服务器具有类似的东西。