确保多个REST调用的事务已完成

确保多个REST调用的事务已完成,rest,jboss,transactions,Rest,Jboss,Transactions,我们公开REST服务,它可以公开POST、PUT、GET和DELETE操作。消费者通常在设计用户界面时,只需单击一下,用户就可以创建、更新和删除用户界面。如果他们向我们发送了三个PUT POST和DELETE调用,那么其中一个调用可能会失败并导致数据不一致。 目前,我们创建了一个包装器服务,允许他们调用一个调用所有三个操作的服务,并且我们保证使用JBOSS事务控件进行事务处理,因此如果一个操作失败,那么所有事务都将回滚 有没有更好的方法来处理这个问题,可以帮助我们避免创建这些包装服务?简短回答:

我们公开REST服务,它可以公开POST、PUT、GET和DELETE操作。消费者通常在设计用户界面时,只需单击一下,用户就可以创建、更新和删除用户界面。如果他们向我们发送了三个PUT POST和DELETE调用,那么其中一个调用可能会失败并导致数据不一致。 目前,我们创建了一个包装器服务,允许他们调用一个调用所有三个操作的服务,并且我们保证使用JBOSS事务控件进行事务处理,因此如果一个操作失败,那么所有事务都将回滚


有没有更好的方法来处理这个问题,可以帮助我们避免创建这些包装服务?

简短回答:没有

您正在寻找对REST服务的“事务”支持。有很多在线材料(虽然没有现成的解决方案),包括这个确切的问题:

我认为需要注意的是,事务的概念与无状态分布式系统的概念有些冲突。有一些人正在致力于将事务导入REST(,),但一般来说,解决方案是以一种不需要分布式事务的方式设计系统

大多数情况下,将DB记录操作直接导出为CRUD操作是罪魁祸首。如果你这样做,试着拿出对客户有实际意义的资源,你会发现你的大部分问题都消失了

作为旁注,在金融机构工作时,需要交易才能将资金从一个账户转移到另一个账户的经典例子过于简单。在现实生活中,这种方式不起作用,很多(包括某些形式的实际资金转移)在这个意义上不是交易性的