使用Axis2的WS-AtomicTransaction

时间:2011-07-27 06:32:10

标签: java soap axis2

我一直在使用Axis2来创建我的网络服务。我的一些服务是交易的一部分 - 即全部或全部都不必执行。

为了解决我的问题,我一直在阅读关于网络上的WS-AT规范。但我无法弄清楚如何使用Axis2配置和使用此功能。任何人都可以分享如何开始?任何支持代码都会很好。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以更好地使用特定应用程序服务器供应商提供的JAX / WS实现。您可以看到this等教程。

需要注意的一点是,分布式事务可能看起来非常有吸引力,但它们确实会增加相当大的操作复杂性,尤其是在故障情况下。

  1. 事务管理器的事务日志对于管理系统之间的一致性至关重要。丢失这些日志,您可能会失去对交易结果的了解。
  2. 您在可能具有不同可用性特征的系统之间引入耦合。在恰当(或相当错误)的时间发生系统故障将导致数据库锁定保存在一个系统中,直到所有系统都恢复服务为止。具体而言,在两阶段协议中,在资源(例如,数据库)在阶段1中“投票”之后,在事务管理器通过收集来自所有参与者的投票来决定事务的总体命运之前,它不能解析事务。如果一个参与者暂时无法恢复,那么该交易持有的所有锁定都会保留一段时间。唯一的解决方法是手动干预(操作复杂性)和潜在的不一致。
  3. 总之,我不愿意建议在不同运营领域(例如,不同公司或不同地区)的系统之间使用分布式事务。