Servlet 3.0笔记之异步请求Comet推送iFrame示范
Servlet3规范提出异步请求,绝对是一巨大历史进步。之前各自应用服务器厂商纷纷推出自己的异步请求实现(或者称comet,或者服务器推送支持,或者长连接),诸如Tomcat6中的NIO连接协议支持,Jetty的continuations编程架构,SUN、IBM、BEA等自不用说,商业版的服务器对Comet的支持,自然走在开源应用服务器前面,各自为王,没有一个统一的编程模型,怎一个乱字了得。相关的comet框架也不少,诸如pushlet、DWR、cometd;最近很热HTML5也不甘寂寞,推出WebSocket,只是离现实较远。总体来说,在JAVA世界,很乱!缺乏规范,没有统一的编程模型,会严重依赖特定服务器,或特定容器。好在Servlet3具有了异步请求规范,各个应用服务器厂商只需要自行实现即可,这样编写符合规范的异步Servlet代码,不用担心移植了。现在编写支持comet风格servlet,很简单:
- 在注解处标记上 asyncSupported = true; final AsyncContext ac = request.startAsync();

当前页面HTML代码可以说明客户端的一些情况:其连接模型,偷懒,借用IBM上一张图片说明: 1 楼 lycgxy 2011-09-10 那个监听器会出现死循环,占cpu