如何避免并发Web服务调用?

时间:2013-10-16 09:53:04

标签: java spring web-services concurrency

我有一个在Weblogic 10上运行的Spring Web流程应用程序。在当前的应用程序中,在加载页面A时,我们正在进行ajax调用,后端在Web服务中调用WEBSVCA。在提交同一页面时,我们又进行了另一个Web服务调用WEBSVCB。该应用程序要求在WEBSVCB调用开始之前始终进行WEBSVCA调用并完成。但有时,当用户非常快速地提交页面时,WEBSVCA响应尚未恢复,并且由于并发呼叫,对WEBSVCB的调用失败。

为了解决上述问题,我计划为webservice调用状态实现BlockingQueue。在这种情况下,WEBSVCA的响应可以用作生产者,在调用WEBSVCB之前,我们可以将队列检查为消费者。

这是最好的方法,还是可以采用比这更简单的方法?

如果您需要任何其他详细信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

如果用户在WEBSVCA完成之前无法进入下一页,那么它不应该是ajax调用 - 所以你可以将其作为页面加载的一部分来进行。

或者,默认情况下禁用提交按钮,然后仅在ajax回调成功时启用它。