读书人

Servlet3.0实战:异步Servlet与Comet作

发布时间: 2012-07-05 07:59:18 作者: rapoo

Servlet3.0实战:异步Servlet与Comet风格的应用程序


接着,建立一个支持异步的 Servlet,目的是每个访问这个 Servlet 的客户端,都在 ASYNC_CONTEXT_QUEUE 中注册一个异步上下文对象,这样当有 Logger 信息发生时,就会输出到这些客户端。同时,将建立一个针对这个异步上下文对象的监听器,当产生超时、错误等事件时,将此上下文从队列中移除。


清单 4:Web 日志注册 Servlet

服务端处理到此为止差不多就结束了,我们再看看客户端的实现。其实客户端我们直接访问这个 Servlet 就可以看到浏览器不断的有日志输出,并且这个页面的滚动条会一直持续,显示 http 连接并没有关闭。为了显示,我们还是对客户端进行了包装,通过一个隐藏的 frame 去读取 WebLogServlet 发出的信息,既 Comet 流方式实现。


清单 5:客户端页面


清单 6:客户端引用的 application.js
?

结束语

Comet 的出现为 Web 交互带来了全新的体验,而 Servlet 3.0 和异步 IO 则为 Comet 实现过程中服务端 Web 线程占用的问题提供了规范的解决方案。随着各种支持 Servlet 3.0 容器的出现,Comet 的应用将越来越频繁,目前开发 Comet 应用还是具有一定的挑战性,但随着需求推动技术的发展,相信 Comet 的应用会变得和 AJAX 一样普及。


周志明,软件工程硕士,就职于远光软件股份有限公司,担任平台架构师,参与过中国国家电网 SG186 工程等大型 ERP 项目的平台架构工作。目前主要技术方向为企业级平台、工作流、SOA、OSGi 等。

?

源码下载:http://www.java3z.com/cwbwebhome/dir1/dir8/AsyncServlet.zip

读书人网 >互联网

热点推荐