Spring Boot 异步请求(Servlet 3.0)

  • 时间:
  • 浏览:0

首先说一下十几条 要点:

1、@WebFilter 和 @WebServlet 注解中的 asyncSupported = true 属性

异步处置的servlet若位于过滤器,则过滤器的注解@WebFilter应设置asyncSupported=true,

否则会报错 A filter or servlet of the current chain does not support asynchronous operations.

本文还是以代码例子的法律法律依据 说明怎样才能在 Spring Boot 中应用异步请求。

为此 Servlet 3.0 新增了请求的异步处置,Spring 也在此基础上做了封装处置。

法律法律依据 一:原生Servlet法律法律依据

下面通过五种 法律法律依据 来测试异步任务:

最后写一另有一两个 comet.jsp页面测试:

在大伙儿的请求中做了耗时处置,当并发请求的请况下,为了处置web server的连接池被长期占用而引起性能问题图片,调用后生成一另有一两个 非web的服务线程来处置,增加web服务器的吞吐量。

4、asyncContext.setTimeout(20 * 50000L);

大伙儿必须让异步请求无限的停留下去,通过 setTimeout 来设定最大超时时间。

先在 SpringBootSampleApplication 上再加 @EnableAsync 注解。

法律法律依据 二:Controller 法律法律依据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/51034866

在Spring 3.2 及后来版本中增加了对请求的异步处置,旨在提高请求的处置效率降低服务性能消耗。

2、@EnableAsync 注解

Spring Boot 默认再加了有些拦截 /* 的过滤器,原应 /* 会拦截所有请求,按理说大伙儿也要设置 asyncSupported=true 属性。原应哪此过滤器前会 Spring Boot 初始化的,很多很多它提供了 @EnableAsync 注解来统一配置,该注解只针对 “非 @WebFilter 和 @WebServlet 注解的有效”,很多很多大伙儿买车人定义的 Filter 还是要能 买车人配置 asyncSupported=true 的。

3、AsyncContext 对象

获取一另有一两个 异步请求的上下文对象。

再检查所有自定义的Filter,如位于如下五种 请况要能 配置 asyncSupported=true

1) 自定义Filter 拦截了 /*

2) 某Filter 拦截了 /shanhy/* ,大伙儿要能 执行的异步请求的 Servlet 为 /shanhy/testcomet