gpt4 book ai didi

spring-mvc - 在 Tomcat 8.5/Spring MVC 上设置异步处理超时

转载 作者:行者123 更新时间:2023-11-28 22:16:17 26 4
gpt4 key购买 nike

我使用以下 Controller 在 Tomcat 8.5 上部署了一个 Spring MVC webapp:

import java.util.concurrent.Callable;

import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class AppController {

@RequestMapping(value="getOkSync", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody String getOkSync() {

try {
Thread.sleep(60000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return "ok";
}

@RequestMapping(value="getOkAsync", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Callable<String> getOkAsync() {

return new Callable<String>() {
@Override
public String call() {
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return "ok";
}
};
}

}

第一个方法在 60 秒后返回正确结果,而第二个方法在大约 30 秒后返回 HTTP 响应代码 500 和相应的 Spring 类日志

Could not complete async processing due to timeout or network error.

(如果将延迟设置为 20 秒,则两种方法都会在 20 秒后按预期返回“ok”)。
超时是由 Spring MVC 控制的还是由 Tomcat 控制的?控制超时的属性是什么?

最佳答案

好吧,下面的工作(即这两种方法在 60 秒后返回“ok”),尽管 Spring 和 Tomcat 之间存在交互,我目前还不完全理解(无论如何,如果我不不要通过 Spring 设置属性,超时将是 Tomcat 的超时,虽然我不知道如何设置后者)

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="my.base.package")
public class AppConfig extends WebMvcConfigurerAdapter implements WebApplicationInitializer {

@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
// TODO Auto-generated method stub
configurer.setDefaultTimeout(120000);
super.configureAsyncSupport(configurer);
}

...

关于spring-mvc - 在 Tomcat 8.5/Spring MVC 上设置异步处理超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49135199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com