我在请求中使用@Suspended AsyncResponse response
并启动线程来处理请求。当流程结束时,我尝试恢复响应,但RestEasy将请求标记为已完成,因为请求线程已完成且响应中未设置超时。如果我设置超时,它工作正常,但我需要在我想要实现的每个异步请求中设置超时。反正是否将超时水平设置为我所有挂起的AsyncRequests?
答案 0 :(得分:1)
不幸的是,JAX-RS 2.0 specification,RESTEasy documentation和Jersey documentation没有提及有关为AsyncResponse
设置默认超时的任何内容。
Jersey documentation提及以下内容:
默认情况下,挂起的
AsyncResponse
实例上没有定义超时。可以使用setTimeoutHandler(TimeoutHandler)
和setTimeout(long, TimeUnit)
方法定义自定义超时和超时事件处理程序。setTimeoutHandler(TimeoutHandler)
方法定义了在达到超时时将调用的处理程序。处理程序使用响应代码new
(来自Response.Status.SERVICE_UNAVAILABLE
)恢复响应。还可以定义超时间隔,而无需指定自定义超时处理程序(仅使用setTimeout(long, TimeUnit)
方法)。
因此,解决方案与您已使用的解决方案不同:
Object.create