DWR中的push机制-Reverse_Ajax.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DWR中的push机制-Reverse_Ajax

作者:Henry DWR从2.0开始增加了push功能,也就是在异步传输的情况下可以从Web-Server端发送数据到 Browser. 我们知道,Web的访问机制天生是设计用来pull数据的,也就是只允许Browser端主动发起请求,server 是被动的响应.不允许Server向Browser发出一个connection请求,也就是说没有为server向Browser push数据提供设计实现. 虽然没有直接的实现方法,却可以使用一些变通的方式完成类似的功能: 1. Polling Polling其实就是轮询,是通过Browser在一个相对短的间隔时间内,反复向Server发出请求,然 后更新页面,这种方式没有什么新鲜的,只是需要浏览器端做一些工作就可以,哪怕没有太多服务器端的配 置也没问题.轮询的方式对于服务器来说会依据不同的访问间隔而产生不同程度的额外负载,因为每次访 问都有重新建立连接的过程. 2. Comet Comet方式通俗的说就是一种长连接机制(long lived http).同样是由Browser端主动发起请 求,但是Server端以一种似乎非常慢的响应方式给出回答,这样在这个期间内,服务器端可以使用同一个 connection把要更新的数据主动发送给Browser.Comet又有很多中实现方式,但是总的来说对Server 端的负载都会有增加.虽然对于单位操作来说,每次只需要建议一次connection,但是由于connection是 保持较长时间的,对于server端的资源的占用要有所增加. 3. Piggyback Piggyback方式是一种半主动的方式,也就是说还是由Browser主动发出请求,但是每次请求的 响应中除了当次的响应之外,还会把上次请求以来已经发生的变化同时发给Browser.也就是说,当次请 求的更新会搭载到下一次请求的响应中一并发回.这样,在Browser的感觉就好象上一次请求又有了更 新.但是这种感觉取决于Browser向Server发出请求的频度.如果,第二次请求迟迟没有发出,那么上一次 的更新就不会取到. 在DWR2.0中可以使用Active(主动) 和 Passive(被动)两种工作模式,在这里我们主要讨论 Active(主动)模式.Active(主动)模式又分为以下3种: ? Full Streaming Mode ? Early Closing Mode ? Polling Mode Full Streaming Mode 这是Active模式下的一种默认配置,具有很快的响应速度,而且建立好的链接只有每60秒检查一次浏 览器是否是活跃的.这种工作模式的配置非常简单,在Web.xml中配置DWR的时候,加上下面的内容: servlet servlet-namedwr-invoker/servlet-name servlet-classorg.directwebremoting.servlet.DwrServlet/servlet-class init-param param-nameactiveReverseAjaxEnabled/param-name param-valuetrue/param-value /init-param /servlet 然后在Browser页面端加上下面一句就可以了: dwr.engine.setActiveReverseAjax(true); 需要说明的是,长链接会增加Server的资源占用,有些Server比如Jetty允许在客户端关闭线程 (connection),在新版本中会把这种能力延伸到GlassFish 和Tomcat.总之,DWR的主导思想是尽 量保护Server,减小负载. Early Closing Mode 在Browser和Server之间有Proxy或者mod_jk的情况下,需要能够良好的工作,需要这种模式:这种 模式和Full Streaming Mode相似,以Full模式开启connection,但是,如果没有输出的情况下, 它会在一个配置好的时间内关闭Connection,通常这个时间是60秒. 从2.04版开始,DWR默认使用Early Closing Mode,如果要要想使用Full Streaming Mode,需 要进行如下的配置: init-param param-namemaxWaitAfterWrite/param-name param

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档