servlet异步请求

本文介绍了Servlet 3.0引入的异步请求特性,以解决处理耗时任务时的性能瓶颈问题。主要内容包括异步请求的工作流程、一个模拟工作周报任务的示例,以及如何通过AsyncContext进行异步处理和监听。示例代码通过web.xml配置开启异步支持,并使用AsyncListener进行结果监听。异步任务通过实现Runnable接口模拟了不同部门的耗时任务处理。
摘要由CSDN通过智能技术生成

1、什么是servlet异步请求

Servlet 3.0 之前,一个普通 Servlet 的主要工作流程大致如下:

(1)、Servlet 接收到请求之后,可能需要对请求携带的数据进行一些预处理;

(2)、调用业务接口的某些方法,以完成业务处理;

(3)、根据处理的结果提交响应,Servlet 线程结束。

其中第二步处理业务逻辑时候很可以碰到比较耗时的任务,此时servlet主线程会阻塞等待完成业务处理,对于并发比较大的请求可能会产生性能瓶颈,则servlet3.0之后再此处做了调整,引入了异步的概念。

(1)、Servlet 接收到请求之后,可能需要对请求携带的数据进行一些预处理;

    (2)、调用业务接口的某些方法过程中request.startAsync()请求,获取一个AsyncContext

    (3)、紧接着servlet线程退出(回收到线程池),但是响应response对象仍旧保持打开状态,新增线程会使用AsyncContext处理并响应结果。

     (4)、AsyncContext处理完成触发某些监听通知结果

2、Servlet异步请求示例

       2.1、示例准备

         本示例采用web.xml配置的形式,模拟场景为:笔者所在的it公司每周的工作内容,首先研发总监分配给产品、研发、测试相关的任务,布置完任务就出差(模拟请求响应),余下的各个小组进行自己任务操作(模拟的耗时操作),最终出周报完成任务(异步任务处理完成的通知)

   git地址:https://github.com/liushangzaibeijing/spsm.git  分支:dev_async

       2.2、实现自

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值