在所有异步请求中设置默认超时

时间:2015-12-02 16:17:28

标签: asynchronous jax-rs resteasy

我在请求中使用@Suspended AsyncResponse response并启动线程来处理请求。当流程结束时,我尝试恢复响应,但RestEasy将请求标记为已完成,因为请求线程已完成且响应中未设置超时。如果我设置超时,它工作正常,但我需要在我想要实现的每个异步请求中设置超时。反正是否将超时水平设置为我所有挂起的AsyncRequests?

1 个答案:

答案 0 :(得分:1)

不幸的是,JAX-RS 2.0 specificationRESTEasy documentationJersey documentation没有提及有关为AsyncResponse设置默认超时的任何内容。

Jersey documentation提及以下内容:

  

默认情况下,挂起的AsyncResponse实例上没有定义超时。可以使用setTimeoutHandler(TimeoutHandler)setTimeout(long, TimeUnit)方法定义自定义超时和超时事件处理程序。 setTimeoutHandler(TimeoutHandler)方法定义了在达到超时时将调用的处理程序。处理程序使用响应代码new(来自Response.Status.SERVICE_UNAVAILABLE)恢复响应。还可以定义超时间隔,而无需指定自定义超时处理程序(仅使用setTimeout(long, TimeUnit)方法)。

因此,解决方案与您已使用的解决方案不同:

Object.create