随笔-62  评论-29  文章-0  trackbacks-0
Jetty6.0提供了AJAX的服务器端的推的技术,而且采用的是JAVA非阻塞的I/O,可以保证"Thousands of users can be served with hundreds of connections”,在学习DWR2的时候,也有类似服务器的推技术,对于这种技术是基于HTTP1.1的长连接进行的,但是网上关于这个方面的资料不是很多,仅仅从理论的角度进行讲解,请教banq能否 通过一个简单的技术模拟下这种服务器的长连接(并不是轮询的方式),将服务器的数据推到客户端,并且不占用当前的请求线程,他们的实现机制是如何的?目前仅仅有感性认识,主要问题是服务器如何得知需要更新的客户。请bang详细阐述一下,谢谢

jetty服务器这种长连接Continuations 其实不是真正的长连接,应该叫'connection freezing', or 'request parking' 连接暂停或请求暂停。

对于PUSH推机制:对于Jetty6其实还是依靠AJAX的客户端主动请求的,改善的是:不需要AJAX客户端不断发出多次请求给服务器,以确定服务器端是否有响应。服务器端hold住ajax客户端第一次请求,如果没有业务结果,就不发出响应response,也就是说不关闭这次http连接,但是因为一个连接一个线程,你保持住一个请求就象保持一个线程一直运行,这是很浪费资源的。

传统socket模式都是一个connection一个线程,NIO可以通过事件机制再触发新线程,使得线程和请求可以分离,这样, Jetty就是利用NIO这个机制,保持住请求request对象,释放原来支持该请求的线程,让线程返回线程池,这样,如果业务处理有结果,Jetty就向客户端发出响应,否则一直保持直至timeout失效。

这个机制如果证明可行,会加入servlet 3.0新规范,到时所有Jee服务器都有这个功能。

所以,这个机制不是严格意义上的推机制,但是也可以对付大量频繁刷新请求,所以是一个改进。

至于推机制中服务器如何推,可以参考eda架构,这个是和我们平时做的JEE的SOA机制不太一样,至于如何推,可以使用线程提醒 观察者JDK 或JMS等等。

http://www.theserverside.com/news/thread.tss?thread_id=36594

http://docs.codehaus.org/display/JETTY/Continuations

Jetty

Jetty简介

Jetty是一个开放源码的HTTP服务器和Java serverlet容器。。

基本特色

相关链接

冰山上的播客

http://xinsync.xju.edu.cn/index.php/archives/category/prglang/java/jetty



posted on 2009-06-03 11:21 阅读(757) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: