【问题标题】:Java spring: Return a response to a request if takes longer then a specified timeJava spring:如果花费的时间超过指定时间,则返回对请求的响应
【发布时间】:2014-11-03 11:07:27
【问题描述】:

如果请求时间过长,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 是否有一些解决方案。

谢谢。

【问题讨论】:

    标签: java spring spring-mvc request timeout


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多