我需要创建一个RESTful服务,它应该以下面的方式支持异步调用 . 当用户调用某种方法时,他获得了http'202'代码和url来查询他可以看到他的请求状态的位置 . 目前我使用JAX-RS及其annoations:
@Path("")
public interface MyService {
@POST
@Path("/myService/{name}")
@Consumes({APPLICATION_XML, APPLICATION_JSON})
void postSomething(@PathParam("name") String name, MyObject data);
}
这样的映射会通过url / myService / 公开MyService的postSomething()方法,它提供POST请求,从url获取'name'参数,从请求体获取'data' .
我希望在做出这个PUT请求后,客户端获得202个http代码和一些回调url进行轮询,以便在执行方法后得到结果 .
所以问题是:1 . 如何使JAX-RS返回202代码? 2.如何将回调网址传递给客户端?
2 回答
让postSomething方法返回一个Response对象:
如果您希望HTTP Body中的回调URI为纯文本,您可以执行以下操作:
要按资源类生成URI,请查看UriBuilder
使用
@Context HttpServletResponse servletResponse
直接控制servlet的响应机制 .