如何判断Web服务客户端何时未成功接收有效负载

时间:2009-08-26 20:43:11

标签: java web-services axis

我需要知道我的网络服务的客户端是否已成功收到消息。如果客户端没有收到消息(网络在呼叫过程中因客户端而关闭),我想回滚我的更改,因此他们进行的下一次调用将为他们提供他们第一次尝试获取的相同数据

每次调用Web服务都会为他们提供一个连续的“页面”数据,我不希望他们错过“页面”。如果我无法判断传输何时失败,我将无法回滚,因此客户端可能需要致电支持人员告诉他们缺少“页面”。

我试图在冗长的调用过程中终止客户端进程,而服务器仍在进行一些数据处理,但服务器一直保持正常运行并成功完成。

这是一个使用Axis2和JBoss与SOAP的Java Web服务。我正在深入研究文档中的一些设置,所以希望可以配置。

2 个答案:

答案 0 :(得分:2)

我认为客户端没有内置的方式给Ack它已收到有效负载。因此,您可能需要将其构建到业务流程中。

我已经看到这样做了几种不同的方式。

  • 为客户端提供一个元素,指明它正在接收y的有效负载x,如果客户端由于网络问题而没有获取特定的有效负载,它可以再次请求该特定的有效负载。
  • 如果它是一个全有或全无的场景,那么让客户端在事务开始时从Web服务请求某种令牌,然后在它获取所有“页面”之后,客户端可以创建另一个调用将让Web服务知道事务已完成。

希望有所帮助。

答案 1 :(得分:0)

您应该从网络服务中取回response status code。在您回到“200 - Ok”之前,不要认为对Web服务的调用是成功的。