我有一个泽西服务可以生成响应。 我想做的是轮询资源(在我的例子中是单例类实例)以获取成功值,并在获得成功值后立即执行一些操作
@Path("/generate")
class Generation{
@POST
@Produces("javax.ws.rs.core.MediaType.TEXT_PLAIN")
public String generateAndPoll(){
//Generate response
/*Polling to start
*/
return someValue;
}
}
实现这一目标的好方法是什么?计时器有什么用吗?
从 Jersey 2.3.1 开始,添加了一项新功能来支持服务器发送的事件。对于您的用例,您可能希望阅读更多 Jersey 文档
如果您不介意使用外部库,我已经使用 atmosphere 几年了,这是一个很好的服务器推送/彗星实现。它几乎支持任何服务器,是的,它将取决于服务器。它们原生支持长轮询和 websocket。几乎整个服务都可以通过几个注释进行配置。以下是如何在球衣 2 服务上使用它的示例。
https://github.com/Atmosphere/atmosphere-samples/blob/master/samples/jersey2-chat/src/main/java/org/atmosphere/samples/chat/jersey/Jersey2Resource.java