弹簧引导异步休息调用超时处理



我再次需要帮助,当我使用 spring-xml 获得该项目时,它可以工作,但我不知道如何注册 CallableProcessingInterceptor,以便它在超时后抛出异常。

我正在使用 Spring-Boot 1.10,一个客户端应用程序调用 RestApplication。当 RestApplication 的响应时间过长时,客户端会在后台抛出超时,但在浏览器中没有任何反应。

我已经有一个名为TimeoutCallableProcessingInterceptor的类,它以前在使用XML-Config时的工作方式。

public class TimeoutCallableProcessingInterceptor extends CallableProcessingInterceptorAdapter {
@Override
public <T> Object handleTimeout(final NativeWebRequest request, final Callable<T> task) throws Exception {
    throw new IllegalStateException("[" + task.getClass().getName() + "] timed out");
}

}

====

WebMvcConfig

// Themeleaf and ApacheTiles Configs
...

@Bean
public TimeoutCallableProcessingInterceptor timeoutInterceptor() {
    return new TimeoutCallableProcessingInterceptor();
}

我如何以及在哪里可以使用 JAVACONFIG 注册该拦截器。

如果您需要更多信息,请告诉我。

谢谢。

啊,我得到了解决方案:

首先使用WebMvcConfigurationSupport扩展您的配置类然后覆盖该方法configureAsyncSupport

@Value("${server.session-timeout}") private Long sessionTimeOut;
@Override
public void configureAsyncSupport(final AsyncSupportConfigurer configurer) {
    configurer.setDefaultTimeout(sessionTimeOut * 1000L);
    configurer.registerCallableInterceptors(timeoutInterceptor());
}
@Bean
public TimeoutCallableProcessingInterceptor timeoutInterceptor() {
    return new TimeoutCallableProcessingInterceptor();
}

相关内容

  • 没有找到相关文章

最新更新