SpringMVC可调用执行即使在请求超时后仍继续?
我有这样一个异步handler方法SpringMVC可调用执行即使在请求超时后仍继续?,spring,spring-mvc,asynchronous,Spring,Spring Mvc,Asynchronous,我有这样一个异步handler方法 @RequestMapping("/custom-timeout-handling") public @ResponseBody WebAsyncTask<String> callableWithCustomTimeoutHandling() { Callable<String> callable = new Callable<String>() { public String call() th
@RequestMapping("/custom-timeout-handling")
public @ResponseBody WebAsyncTask<String> callableWithCustomTimeoutHandling() {
Callable<String> callable = new Callable<String>() {
public String call() throws Exception {
while(i==0){
System.out.println("inside while loop->");
}
return "Callable result";
}
};
return new WebAsyncTask<String>(10000, callable);
}
与
我的问题是,即使在超时(完成执行handletimeout方法)之后,响应也是从handletimeout方法发送的
while循环仍在处理,直到i的值更改为除零以外的其他值
请求是否仍由服务器保留?那么请求超时有什么用
提前感谢…当servlet容器线程检测到异步可调用对象已超时时,它将调用handleTimeout()(在自己的上下文中)。这就是您看到handleTimeout()被执行的原因。它由servlet容器线程执行,而不是由运行可调用函数的线程执行 如果要自定义超时处理,需要做两件事:
public class TimeoutCallableProcessingInterceptor extends CallableProcessingInterceptorAdapter {
@Override
public <T> Object handleTimeout(NativeWebRequest request, Callable<T> task) throws Exception {
throw new IllegalStateException("[" + task.getClass().getName() + "] timed out");
}
Thread.sleep(2000)
while(i==0){
System.out.println("inside while loop->");
}