在Spring

时间:2015-12-17 15:40:29

标签: spring-mvc

我有一个由Java配置支持的Spring MVC应用程序,我想为涉及Callable<>的所有异步调用设置默认超时。接口。例如,考虑这样的控制器方法:

@RequestMapping
public Callable<String> doSmth() {
    return () -> {
        return "myview";
    }
}

我希望有一个控制器(每个应用程序)控制器在请求超时之前有多少时间来完成它的工作。

我想有一个 Java 配置的示例,而不是 xml

2 个答案:

答案 0 :(得分:5)

您可以通过扩展WebMvcConfigurerAdapter并覆盖configureAsyncSupport

来实现
 @Configuration
//other annotations if needed
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
        configurer.setDefaultTimeout(100000); //in milliseconds
        super.configureAsyncSupport(configurer);
    }

或直接在RequestMappingHandlerAdapter

答案 1 :(得分:0)

您还可以通过在Tomcat的conf / server.xml配置文件中设置“asyncTimeout”属性来覆盖默认超时10秒:

<Connector connectionTimeout="20000" asyncTimeout="30000" maxThreads="1000"
    port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
    redirectPort="8443" />

参考:https://tomcat.apache.org/tomcat-7.0-doc/config/http.html