Java spring:如果花费的时间超过指定的时间,则返回对请求的响应

时间:2014-11-03 11:07:28

标签: java spring spring-mvc request timeout

如果请求花费的时间太长,Spring是否有提前返回控制器方法的解决方案?

这个想法在http标头中传递超时值,如果超过该值则返回响应。

下面的示例控制器方法我想将其应用于。

@RequestMapping(value = "/test", method = RequestMethod.GET)
  public String test(@RequestHeader Long timeOut) {
    //process request here and return an error response if it goes longer than timeOut
    return "<Result of process request>";

  }

我可能通过搞乱线程来做到这一点,但是宁愿看看spring是否有一些解决方案。

感谢。

1 个答案:

答案 0 :(得分:2)

将方法的返回类型更改为Callable<String>。这将使控制器方法异步执行。现在,要设置处理请求的超时,您可以更新spring mvc配置:

<mvc:annotation-driven>
    <mvc:async-support default-timeout="3000"/>
</mvc:annotation-driven>

或者,您可以在RequestMappingHandlerAdapter上设置超时值。