异步过滤器-19
来源:互联网 发布:天猫淘宝 编辑:程序博客网 时间:2024/06/07 06:16
当过滤器的处理需要较长时间时会长时间占用一个web容器线程。
然而异步处理可以节省web容器线程
异步过滤器的配置:
设置@WebFilter的属性asyncSupport属性的值为true
或者在filter标签里使用async-supported标签进行设置
示例
@WebFilter(urlPatterns = "*", asyncSupported = true)public class Filter1 implements Filter { @Override public void destroy() { // TODO Auto-generated method stub } private ExecutorService service=Executors.newCachedThreadPool();//提高线程的创建性能 @Override public void doFilter(ServletRequest req, ServletResponse arg1, FilterChain chain) throws IOException, ServletException { final AsyncContext context=req.startAsync();//得到异步上下文 service.submit(new AsyncRequest(context));//这样以线程池的方式来处理,在doFilter中就很简洁了// context.start(new Runnable(){//// @Override// public void run() {// try {// Thread.sleep(3000);// } catch (InterruptedException e) {// e.printStackTrace();// }// System.out.println("AsyncFilter Done!");// context.complete();// }// // }); System.out.println("Filter Done!"); chain.doFilter(req, arg1); } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } class AsyncRequest implements Runnable{//线程类 private AsyncContext context; public AsyncRequest(AsyncContext context){//构造方法 this.context=context; } @Override public void run() {//具体的业务 try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("AsyncFilter Done!"); context.complete(); } }}
如果在实际中处理异步的请求,不管是Servlet还是Filter都不是最好的选择,使用监听器来完成这样的工作是最好的
与异步Servlet的关系:当过滤器是异步处理时,请求的Servlet如果也是异步处理,则获取AsyncContext实例需要使用HttpServletRequest的getAsyncContext方法
阅读全文
0 0
- 异步过滤器-19
- java过滤器---一异步处理
- java过滤器对ext异步请求跳转
- 异步插件协议的MIME过滤器
- 过滤器及异步线程使用试验
- 19-过滤器
- java过滤器对ext异步请求跳转(转)
- java过滤器对ext异步请求跳转(转)
- 深入学习SSH框架《三:Servlet中配置过滤器Filter和异步过滤器》
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- 过滤器
- apache mod_pagespeed模块 批量加载文件
- java泛型基础
- TCP/IP协议详解(TCP/IP protocol)
- OpenCV中Mat的传值、传引用、clone()、copyto()
- 苏宁面试记录
- 异步过滤器-19
- 今日总结
- Mybatis错误:Result Maps collection already contains value for ***
- Maven载入包速度慢
- 最小生成树-Kruskal算法
- Hibernate初学小笔记1《2017-09-06》
- sqlalchemy学习笔记
- Poj1064:二分搜索+可行性判定问题
- 矩形覆盖