- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java Web实时系统开发中的应用HTTP协议是互联网上大量信息交换的基础,其特点是,它是基于请求—响应模式的无状态的单向协议,即必须由客户端发起一个请求建立连接,服务器接收请求,把数据返回给客户端,然后释放连接。下一次,再由客户端发起另一次请求,重复上述过程。服务器始终处于“被动”地位。 HTTP协议这一特点,既成就了它的成功,也导致了它的局限性。服务器处理请求的经典模式是一个线程处理一个连接,结束之后,关闭该连接,释放线程以服务于其他请求。只要响应速度足够快,那么我们可以以相对较少的服务器为数量庞大的用户提供服务。这非常适合于传统的Web应用,比如:搜索引擎、内容管理系统和电子商务网站等。然而,这种方式并不能满足有实时性要求的应用的需求,很多应用都需要服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求。例如,新闻标题、证券报价和拍卖行情等。 在Web的早期,人们通过在HTML头部加入META元信息来实现HTML自动刷新。该标记指示浏览器每隔一定的时间间隔刷新一次页面。这不仅带来糟糕的用户体验,而且是一种低效的做事方式。因为如果没有新的数据,该页面就没必要刷新;如果页面只存在小范围内的变化,该页面就没有必要全部刷新。 AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)的出现改变了上述情况。Ajax的工作原理相当于在客户和服务器之间加了—个中间层,使客户请求与服务器响应异步化。并不是所有的请求都提交给服务器,像—些数据验证和数据处理等都交给AJAX引擎自己来做,只有确定需要从服务器读取新数据时再由AJAX引擎代为向服务器提交请求。使用Ajax的最大优点就是能在不刷新整个页面的前提下维护数据,使得Web应用程序更为迅捷地响应用户交互,并避免了在网络上发送那些没有改变的信息。然而,AJAX仍然受限于Web请求/响应模式的弱点,使得服务器不能推送实时动态的Web数据。 1 Comet技术实现方式[1] Comet技术被称为反AJAX(Reverse AJAX)技术,它通过实现服务器推(server push)来解决AJAX需要定时频繁发送请求的问题。通过Comet,客户端所需要的响应信息不再需要主动地去索取,而是在服务器端以事件(Event)的形式推至客户端。 Comet技术的实现方式有两种:长轮询方式(long-polling)和流方式(streaming)。 长轮询:HTTP的连接保持,服务器端会阻塞请求,直到服务器端有一个事件触发或者到达超时。客户端在收到响应后再次发出请求,重新建立连接。通过这种方式,服务器可以在数据可用的任何时候将数据“推”到客户端。因为这种方案基于AJAX,请求异步发出,无须安装插件,IE、Mozilla FireFox都支持。 流方式:在流方式中,服务器推数据返回客户端,但不关闭连接,连接始终保持,直到超时,超时后通知客户端重新建立连接,并关闭原来的连接。 在长轮询方式下,客户端是在XMLHttpRequest的readystate为4(即数据传输结束)时调用回调函数,进行信息处理。当readystate为4时,数据传输结束,连接已经关闭。Mozilla Firefox提供了对流方式的支持,即readystate为3时(数据仍在传输中),客户端可以读取数据,从而无须关闭连接,就能读取处理服务器端返回的信息。IE在readystate为3时,不能读取服务器返回的数据,目前IE不支持流方式。 不管是长轮询还是流,请求都需要在服务器上存在一段较长时间,因此Comet被称为“基于HTTP长连接的服务器推技术”。这打破了每个请求一个线程的模型。这个模型显然对Comet不适用。Java对此提出了非阻塞IO(non-blocking IO)解决方案,Java通过它的NIO库提供非阻塞IO处理Comet。 传统的阻塞式IO,每个连接必须要开一个线程来处理,您始终从一个线程中读取流直到整个流完成,然后关闭连接。因此阻塞式IO对大量并发的短生命周期连接不会造成问题。而非阻塞IO处理连接是异步的。当某个连接发送请求到服务器,服务器把这个连接请求当作一个请求“事件”,并把这个“事件”分配给相应的函数处理。我们把这个处理函数放到线程中去执行,执行完就把线程归还。这样一个线程就可以异步地处理多个事件。 为了获得事件通知,我们需要一个机制,它只在需要读时才读,需要写时才写,但又保持连接打开以迅速响应发生的事件。为了方便这个过程,就要用到NIO,它已是1.4版本以后的Java语言的一部分。 2 使用Java开发Comet风格的Web应用 支持Comet的Java We
您可能关注的文档
- 1 GIS技术在洪水风险管理系统开发中的应用 .doc
- 1 当前我国地勘行业管理面临的形势、现状与对策建议 .doc
- 1 浅谈煤炭技工学校实习教学的管理模式 .doc
- 1 环境风险事故应急措施 .doc
- 10 中国双向式自然资源发展战略研究 .doc
- 1000例产妇产后访视结果分析.doc
- 13 城市GPS应用及发展趋势探讨 .doc
- 13 土地建库流程 .doc
- 12 土地利用总体规划修编工作方案 .doc
- 13 民营企业环境保护法律问题探究 .doc
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
文档评论(0)