REST with JAX-RS - 异步调用

REST with JAX-RS - Asynchronous call

我从 "cmd" 中看到了下面的 post,这是几年前 post 编辑的。 "Wojtek Owczarczyk" 得到了这个答案。我对所有答案都很满意,除了最后一行。

我的困惑是,如果我们 return 立即处于 ACCEPTED 状态。然后,我们将丢失请求的踪迹。

所以我计划实施以下步骤。如有错误请指正

1) 一旦请求到达服务 api - 我将创建一个作业 ID 并保留我的请求详细信息,然后将已接受的状态代码和作业 ID 一起发送回客户端。 2) 然后,我将为该请求创建新线程以继续请求的操作。 3) 成功完成操作后,我会将请求的所有状态发回给客户端。 4) 最后,在 callbackCompletion 寄存器中,我将从我的持久性列表中删除作业 ID。

为了实现上述逻辑,我需要客户端将他的侦听器信息与请求(基本上是 URI)一起发送。这是为了在处理请求后将请求状态更新回客户端。

REST with JAX-RS - Handling long running operations

我认为这不是 REST 的工作方式。我会改用以下方法:

  • 客户端请求长时间操作
  • 异步创建作业 ID 和 运行 作业
  • Return 已接受状态以及用于请求作业状态的 URI。例如:http://.../resources/jobs/1234

客户现在负责 e.g.轮询 URI 以获取作业执行的当前状态。