使用 Web 服务时类似事务的逻辑

Transaction like logic while using web services

Web 服务调用可以完成多项更新。这些声明应该是交易性的;当且仅当一切都可以完成时,它们才必须完成。

我无法更改网络服务。我能做的就是尝试更改所有这些,如果其中一个失败,我会改回以前的。这个普通的 sloution 非常难看。

有没有更优雅的方法来解决这个问题?

注意:我正在使用 JavaEE、SOAP、Spring MVC。

您可以编写一个使用 Apache HTTP 实用程序的事务性 class 来一个一个地调用这些 Web 服务。 (这个 class 应该有一个 @Transactional 注释)

我们有一个 @TransactionAttribute 用于不同的目标(方法和 class)。 如果您使用适当的 TransactionAttributeType(Constants) 将此注释应用于 class,那么该事务策略将应用于其中的所有方法class 也就是说,您可以在此 class 中保留对更新语句的所有调用,并将此 class 注入您拥有 Web 服务的位置,因此即使一个更新调用失败,它也会回滚