最后的资源优化
我正在编写一个不支持两阶段提交的资源适配器。 我知道有一种优化技术称为:“最后资源优化”。
在 JBoss 上,您的 XAResource 类应该实现 LastResource 以便进行优化。
我的问题是:如何在 WebLogic、WebSpehre、Glassfish 等中完成此操作...
I'm writing a Resource Adaptor which does not support two phase commit.
I know there is an optimization technique called: "Last Resource Optimization".
On JBoss your XAResource class should implement LastResource in order to have the optimization.
My question is: how this can be done in WebLogic, WebSpehre, Glassfish, etc...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Weblogic:据我所知(可能是非常错误的)只有 JDBC 驱动程序可以与 LRO 一起使用,并且这是一个纯粹的管理任务。 当驱动程序不支持 XA 时,可以将其配置为与 LRO 一起使用:“如果要启用来自数据源的非 XA JDBC 连接以使用 JTA 模拟参与全局事务,请选择此选项”< /em>.
本质上,LRO 容忍没有准备阶段的资源,并且只能提交或回滚。 因此,如果 XA 事务中只存在一个这样的资源,我们可以首先尝试准备所有其他资源,然后提交该 LRO 资源,然后,如果成功,则提交其他资源,否则回滚其他资源。
您会看到,没有特别需要声明任何接口。 它是一种可以与任何非 XA 资源一起使用的算法。 我不确定为什么 JBoss 有它,但我不认为其他服务器有类似的东西。
Weblogic: AFAIK (may be very wrong) only JDBC drivers can be used with LRO, and it's a purely administrative task. When a driver doesn't support XA, it can be configured to be used with LRO: "Select this option if you want to enable non-XA JDBC connections from the data source to emulate participation in global transactions using JTA".
Essentially, LRO tolerates a resource that has no prepare phase, and can only be committed or rolled back. Thus, if only one such resource exist in XA-transaction, we may first attempt to prepare all others, then commit that LRO one, then, if succeed, commit others, otherwise rollback others.
You see, there is no special need in declaring any interface. It's an algorithm that can work with any non-XA resource. I'm not sure why JBoss has it, but I don't expect other servers have something similar.