异步servlet

servlet从3.0开始支持异步

使用异步servlet好处在于:

一个请求,服务器启动一个servlet线程处理,直到处理完毕,服务器回收此servlet线程,要知道,servlet线程是有限的,也就是说,这个请求会一直占用着该servlet线程。遇到高并发的时候,那么服务器的处理就会遇到瓶颈;如果异步servlet进行处理的话,一个请求过来,服务器启动一个servlet线程处理,在servlet线程启动一个工作线程,然后servlet线程马上返回,继续处理其它请求。而工作线程处理完毕后,会返回给请求。

优点在于:当处理高并发,大数据量操作时候,异步处理,可以让服务器快速的接收请求,相对于同步而言,降低servlet线程阻塞的可能。


使用xml配置

1. 需要添加3.0配置如下:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

2. 对servlet添加异步支持:
<servlet>
        <description>**</description>
        <display-name>**</display-name>
        <servlet-name>**</servlet-name>
        <servlet-class>**/servlet-class>
        <async-supported>true</async-supported>
</servlet>

代码例子:

 @Override
    protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws IOException {
    	String asyn = req.getParameter("asyn");
        if(StringUtils.isBlank(asyn)){
            System.out.println("开始同步处理------");
            log.error("开始同步处理------");
            doSynWork(req,resp);
        }else{
            System.out.println("开始异步处理======");
            log.error("开始异步处理======");
            context = req.startAsync();
            executorService.execute(new Runnable(){
                @Override
                public void run() {
                    try {
                        doSynWork(req,resp);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }finally {
                        context.complete();
                    }
                }
            });
        }
    }


 
   
经过以上步骤,就可以实现servlet,当然也支持注解形式,这了就不再举例。

参考:http://www.infoq.com/cn/news/2013/11/use-asynchronous-servlet-improve



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值