报告基于Jersey的RESTful服务的进度

时间:2014-12-22 21:25:55

标签: java rest notifications jersey

我使用Jersey(Java)开发了一个RESTful服务,它为用户提供了繁重的工作,包括单个完整操作的多个文件传输部分。我想使用此服务向客户端(用户)提供某种进度通知,指示正在进行的操作或操作的百分比。通知的准确性不是问题。鉴于这是一个RESTful服务,任何想法如何实现这一目标?任何现有的样本都可能有所帮助。

更新/澄清: 当主要操作仍在进行时,此通知类似于进度/状态通知,因为在某些情况下整个操作可能需要超过5分钟,我想确保我更新客户端以了解服务端正在进行的操作和为什么要花这么长时间才能满足要求。

实施例。请求...状态...状态....状态....最终响应。

我假设这不会发生在同一个请求/响应管道上,这可能涉及在客户端和服务之间创建另一个通信管道。

2 个答案:

答案 0 :(得分:1)

当我问similar question我被建议回复HTTP 202 Accepted并提供新创建资源的地址时 - 操作状态:

HTTP 202 Accepted
Location: /jobs/statuses/<status_id>

答案 1 :(得分:0)

您可以返回包含所有信息的json字符串。生成监控信息的方式取决于您。

以下是使用json的控制器示例:

@RequestMapping(value = "/getblabla", method = RequestMethod.POST)
public @ResponseBody String getblabla(@RequestParam("json") String json,
    HttpServletRequest request) {

    // Do something

    return resJson;
}

然后你可以使用像Gson这样有两种主要方法的库。

以下是将json映射到对象的方法:

 MyDto obj = gson.fromJson(json, MyDto.class);

以下是将对象映射到Json的方法:

String json = gson.toJson(obj);