我有一个由Java config支持的Spring MVC应用程序,我想为所有涉及Callable的异步调用设置一个默认超时
@RequestMapping
public Callable<String> doSmth() {
return () -> {
return "myview";
}
}
我想有一个控制器(每个应用程序)有多少时间控制器有时间做它的东西之前请求超时。
我想要一个Java配置的示例,而不是xml
您还可以通过在Tomcat的conf/server中设置“asyncTimeout”属性来覆盖默认的10秒超时。xml配置文件:
<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
您可以通过扩展<code>WebMVCConfigureAdapter来实现这一点:
@Configuration
//other annotations if needed
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
configurer.setDefaultTimeout(100000); //in milliseconds
super.configureAsyncSupport(configurer);
}
或者直接在< code > requestmappingchandleradapter 上。
Spring MVC也提供了构造指定控制器方法链接的机制。以下面代码为例子,假设我们有这样一个控制器: @Controller @RequestMapping("/hotels/{hotel}") public class BookingController { @RequestMapping("/bookings/{booking}") public String getBoo
我正在将一个基于Spring Framework 4的应用程序升级到Spring Framework 5,它们之间的一个区别是,已被删除(自Spring Framework 4.3以来已被弃用)。 其行为的一个例子: 有没有办法在spring framework 5上模仿这种行为?使用和将300多个控制器升级到相同的行为是一项非常艰巨的任务,目前我们对的行为还可以。
我的应用程序是简单的3-层Spring Boot rest Web服务,具有通常的同步endpoint。但是由于从我的服务发送请求的下游系统获得响应的时间相当长(有点像60秒),我需要向我的服务添加对异步REST调用的支持,以保存上游系统免于等待响应。换句话说,如果对下游系统的响应需要超过60秒(超时),那么上游系统会断开与我的服务的连接并继续运行... 但是当响应到来时,我的服务使用来自上游系统
一个问题是,我必须使整个ActionMethod异步,我不确定这会有什么影响。当前同步的基本模式如下: 有什么想法吗?
问题内容: 我的[基本] Spring Boot应用程序接受来自浏览器的请求,通过发送,并应立即收到响应-例如“ 您的请求已排队 ”。为此,我编写了一个控制器: 本类实现一个接口,是很简单的。它只有一种方法可以执行耗时的任务。我不需要此服务呼叫返回的任何内容,因为无论工作失败还是成功,都会在工作结束时发送一封电子邮件。因此它实际上看起来像: 我以为这样可以,但是浏览器的Ajax请求在返回响应之前等