Servlet 3.0中的异步处理
来源:互联网 发布:pdf密码破解软件 编辑:程序博客网 时间:2024/05/17 11:37
在以前的Servlet规范化,如果Servlet作为控制器调用了一个耗时的业务方法,那么必须等到业务方法完全返回之后才能生成响应,这将使用Servlet对业务方法的调用变成一种阻塞式的调用,因此效率比较低。
Servlet3.0规范引入了异步处理来解决这个问题,异步处理允许Servlet重新发起一条新线程去调用 耗时业务方法,这样就可以避免等待。
Servlet3.0的异步处理是通过AsyncContext类来处理的,Servlet可通过ServletRequest的如下两个方法开启异步调用,创建AsyncContext对象:
- AsyncContext startAsync()
- AsyncContext startAsync(ServletRequest,ServletResponse)
在ServletRequest中增加的有关异步相关方法分为:
- startAsync(servletRequest, servletResponse) 传入指定的request和response对象,便于在AsyncContext中重复使用(这样被Filter、Servlet包装过的请求、相应对象才会在异步的环境下继续生效)。
- startAsync()
调用HttpServletRequest.startAsync(),将servlet置于异步模式,返回AsyncContext对象,且流将不在从Servlet.service()返回时提交。 - isAsyncSupported() 和 isAsyncStarted()
辅助性的方法,用于判断当前请求是否支持异步或者异步已经开始。 - getAsyncContext()
需要在异步启动之后才能够访问,否则会报异常。 - AsyncContext.start()
启动请求 —— 将其指派给工作线程。
在AsyncContext中分发的方法有三个,不太容易区分:
- AsyncContext.dispatch()
若当前AsyncContext由ServletRequest.startAsync(ServletRequest, ServletResponse)方法启动,返回的地址可以通过HttpServletRequest.getRequestURI()得到。
否则,分发的地址则是当前URL request对象最后一次分发的地址。
虽有些拗口,两者分发的地址大部分情况下一致;但尽量使用带有参数的异步上下文启动器。
如本例中请求/asyncDispatch2Async?disUrl=self,执行dispatch()方法之后,自身会再次分发到自身,包括传递的参数。 - AsyncContext.dispatch(String path)
等同于ServletRequest.getRequestDispatcher(String),
算是一个快捷方法。
可以转向一个同步或异步的servlet,或者JSP,或其它资源地址等。 - AsyncContext.dispatch(ServletContext context, String path)
请求的地址将在给定的上下文里面(ServletContext),有有可能传入的上下文与当前站带你应用的上下文有所区别。
0 0
- Servlet 3.0中的异步处理
- Servlet 3.0中的异步处理
- Servlet 3.0 (5) Servlet中的异步处理
- Servlet中的异步处理
- Servlet 3.0中的异步处理支持
- Servlet 3.0异步处理
- Servlet 3.0异步处理请求
- Java Servlet Specification 3.0 之异步处理
- Servlet异步处理数据
- Servlet3 -- Servlet异步处理
- Servlet的异步处理
- Servlet异步处理示例
- Servlet异步处理
- Servlet异步处理
- Ajax 异步处理 servlet 交互
- JavaEE Servlet的异步处理
- servlet的异步处理支持
- Servlet 3.0特性详解之异步处理支持
- 彻底解决Dynamic Web Module 3.0 or 2.5 requires Java 1.6 or newer.
- Web服务请求异步化
- 苹果手机,电话号码(类似数字)显示为蓝色
- 排序算法优劣
- 图说Hibernate(一)
- Servlet 3.0中的异步处理
- 腾讯HTTPS性能优化实践
- Royale888 Games Daily Rebate Bonus
- 根据分类名称获取分类ID
- MacOS下gem安装rmagick的蛋疼经历
- 分块-bzoj2821: 作诗(Poetize)
- Android热修复技术实现
- 77. Combinations -Medium
- Android中的Transition(一)