`
yangzb
  • 浏览: 3500301 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Glassfish与服务器推送技术

    博客分类:
  • Java
阅读更多

“服务器推送技术”( Server Pushing )是最近 Web 技术中最热门的一个流行术语,它的别名叫“ Comet ”(彗星)。它是继“ Ajax ”之后又一个倍受追捧的 Web 技术。“服务器推送技术”最近的流行跟“ Ajax ”有着密切的关系。

 

 

随着 Web 技术的流行,越来越多的应用从原有的 C/S 的模式下转变为 B/S 的模式,享受着 Web 技 术所带来的各种优势(例如,跨平台,免客户端维护,跨越防火墙,扩展性好等等)。但是基于浏览器的应用,也有它不足的地方。最主要的地方在于界面的友好性 和交互性。由于游览器中的页面每次需要全部刷新才能从服务器端获得最新的数据或向服务器传送数据。这样产生的延迟所带来的视觉感观非常糟糕。因此很多的桌 面应用为了获得更友好的界面放弃了 Web 技术,或者采用浏览器的插件技术( ActiveX, Applet, Flash 等等)。但是浏览器插件技术本身又有许多问题,例如跨平台问题,和插件版本兼容性问题。

 

 随着 Ajax 技术的兴起,让广大开发人员又一次看到了使用浏览器来替代桌面应用的机会,并且这次机会非常大。 Ajax 将整个页面的刷新变成页面局部的刷新,并且数据的传送是以异步方式进行,这使得网络延迟带来的视觉差异将会消失。 Ajax 还利用 DHTML 和丰富的 Javascript 语言可以模拟桌面系统的各种事件产生和响应过程,以及平滑滚动和拖拽的效果。还不止这些,更有一些 IT 巨头( Google,Sun,Oracle 等)提供了非常丰富的 Ajax 开发工具,使得开发和调试 Ajax 应用变得简单高效,并且开发的 Ajax 应用还可以跨越各种浏览器和操作系统。在这种情况下基于 Ajax Web 应用迅速涌起,吞噬着原有桌面系统的份额。聊天工具,邮件阅读器,博客编辑器,甚至是 Office 办公软件和文字处理软件在浏览器中都有着美丽的外观和几乎可以与桌面系统媲美的交互界面。 Google 更是提出“有了浏览器和 Google ,就不需要微软”的口号和策略。在 Ajax 的世界中,除了传统的 CAD 设计软件和大型游戏软件等等因为对系统硬件的苛刻需求,还离不开桌面系统以外,似乎其他所有的应用都可以变成 Web 应用了。

 

 但 是,在浏览器中的Ajax应用中存在一个致命的缺陷无法满足传统桌面系统的需求。那就是“服务器发起的消息传递”(Server-Initiated Message Delivery)。在很多的应用当中,服务器软件需要向客户端主动发送消息或信息。因为服务器掌握着系统的主要资源,能够最先获得系统的状态变化和事件 的发生。当这些变化发生的时候,服务器需要主动的向客户端实时的发送消息。例如股票的变化。在传统的桌面系统这种需求没有任何问题,因为客户端和服务器之 间通常存在着持久的连接,这个连接可以双向传递各种数据。而基于HTTP协议的Web应用却不行。上节中也提到过,在Web世界中,服务器永远是被动的发 送数据,前提是客户端必须先发送请求。浏览器其实并不知道服务器的信息什么时候会有改变,为了模拟实时的交流,或者不想错过某些信息,只能通过 “Polling”的技术不断刷新页面来获得最新的数据。这种方式不但浪费服务器的资源(前文提过),最重要的是每次建立(或关闭)新的HTTP连接需要 一定的延迟,这种延迟使得频繁信息传递的应用无法忍受。于是就产生的“服务器推送技术”。

 

 

“服务器推送技术”在很久以前就出现过。例如Netscape曾经退出适用于Push技术的专用浏览器和经过修改的HTML语言。但是这仅仅在特定的浏览器中才能使用,其他流行的浏览器(IE等)就不兼容这种技术。

 

  现在的“服务器推送技术”是在保持原有的HTTP协议不变,在服务器端改变处理方式,使得服务器能够使用浏览器已经打开的HTTP连接,主动向浏览器发送 消息。这里关键的技术是要保持原有的HTTP连接不断。一旦拥有持久的连接,服务器就可以根据自己数据更新,随时的向客户端发送最新的信息。

 

 在 Glassfish中,Grizzly通过NIO的技术实现了异步请求服务(ARP),并在ARP之上扩展了服务器推送技术的实现,将其也命名为 “Comet”。因为使用了NIO,Grizzly才可以在保持HTTP连接的同时,并不会绑定固定的线程,使得Glassfish具有很好的扩展性,可 以很好的同时支持大量的Comet请求。

分享到:
评论

相关推荐

    在Glassfish v2ur1 中测试grizzly comet chat demo

    Comet技术则是一种服务器推送技术,它允许服务器向客户端实时推送数据,而无需客户端反复发起请求,常用于实现聊天、股票报价等实时交互应用。 首先,Grizzly框架是Oracle JDK的一部分,它提供了网络I/O处理、协议...

    cometd实例demo

    CometD是一个基于Bayeux协议的开源JavaScript库,它实现了服务器推送技术,允许服务器主动向客户端发送数据,而不仅仅是响应客户端的请求。这个“cometd实例demo”提供了使用CometD的一个实际示例,可以帮助开发者...

    DWR push机制.pdf(免积分下)

    因此,在实现服务器向客户端推送数据的需求时,开发者不得不采取一些变通方案,包括轮询(Polling)、Comet 和 Piggyback 等技术。 - **轮询(Polling)**:客户端定期向服务器发送请求以获取最新的数据变化。虽然...

    cometd-bayeux-6.1.10.jar.zip

    Bayeux是一种通用的、跨平台的、JSON格式的消息协议,设计用于实现服务器推送技术,使得服务器能够主动向客户端发送数据,而不仅仅是响应客户端的请求。这种模式在实时应用,如聊天室、实时股票报价、在线游戏等场景...

    grizzly-http-webserver-1.9.59.zip

    Atmosphere旨在解决AJAX长轮询、Comet等技术的问题,提供了一种统一的方式来处理服务器推送技术。Grizzly作为其底层服务器,利用自身的异步特性,很好地支持了Atmosphere的实时通信需求。Atmosphere可以在多种Web...

    ChatWebSocket:使用websocket技术的聊天应用程序

    ChatWebSocket 使用Java和javascript编写的使用websocket技术的聊天应用程序服务器Websocket端点在glassfish服务器中运行。 服务器从客户端接收JSON(字符串)数据。 数据由类ChatDecoder转换为类ChatData。 之后,...

    flex lcds.war

    1. **数据推送**:通过HTTP长轮询或WebSocket,服务器可以主动向客户端推送数据,实现实时更新。 2. **数据管理**:包括数据缓存、数据同步和事务处理,确保数据的一致性和完整性。 3. **身份验证和授权**:集成企业...

    Grizzly_Architecture

    - 实现了Comet技术,这是一种实现实时数据推送的技术方案,通常用于实现即时通讯、在线游戏等功能。 4. **性能优化:** - Grizzly在设计之初就考虑到了性能问题,因此它不仅提供了强大的功能,还特别注重性能优化...

    flex j2ee整合

    LiveCycle Data Services是更全面的商业解决方案,除了AMF外,还包括更多的企业级特性,如数据推送、远程对象服务和事件广播。 **4. AMF与Remoting** AMF是一种二进制数据格式,用于在Flex客户端和Java EE服务器...

    cometd-3.0.0.beta2-distribution.tar.gz

    它提供了服务器推送技术,使得服务器可以主动向客户端发送数据,而不仅仅是响应客户端的请求。CometD的核心理念是通过长连接来实现双向通信,极大地提高了Web应用的交互性和实时性。 在"cometd-3.0.0.beta2-...

    JAVA_WEB_PPT.rar_java ppt_java web_java web ppt_java.ppt

    这部分内容可能涉及响应式设计、移动优化、离线存储(如Service Worker)、推送通知等技术,确保Web应用在不同设备上都能良好运行。 **九、持续集成与部署** 在开发过程中,持续集成(Continuous Integration, CI...

    websocket 给指定用户发送聊天消息

    在传统的HTTP协议中,每次请求都需要客户端发起,而WebSocket则在连接建立后,可以由服务器主动推送数据到客户端。 在Java中实现WebSocket服务,我们可以使用Java API for WebSocket (JSR 356)。这个API提供了一套...

    linux版本eclipse

    Eclipse还支持Git版本控制,通过Eclipse的EGit插件,你可以轻松地进行版本管理操作,如克隆、提交、推送和拉取。 总之,Linux版本的Eclipse是一个功能强大的开发工具,无论你是Java开发者,还是从事其他语言的开发...

    JAVA-聊天室程序

    - **实时通信**:使用WebSocket或其他推送技术实现实时消息传递,确保用户可以即时看到新消息。 - **消息存储**:将聊天记录保存在数据库中,方便回溯历史聊天内容。 - **多线程处理**:为了处理多个用户的并发请求...

    j2ee+flex+blazeds 配置实践

    7. 数据推送:利用BlazeDS的LiveCycle Data Services,可以实现实时数据推送,如使用PollingDuplex或LongPolling通道。 8. 测试和调试:部署应用到服务器,通过Flex客户端测试远程调用和数据交互。 五、源码解析 在...

    仿QQ聊天安卓APP

    6. **消息推送**:如果需要实时的消息推送,可能需要研究GCM(Google Cloud Messaging)或FCM(Firebase Cloud Messaging)。 7. **服务端开发**:掌握Java Web开发技术,如Servlet、JSP、Spring MVC,以及使用...

    简单的J2EE聊天室

    6. **多线程处理**:为了实现实时的消息广播,服务器端可能需要使用多线程技术,确保每个新消息都能迅速地推送给所有在线用户。 7. **WebSocket**:为了提供实时通信,J2EE聊天室可能会使用WebSocket协议,它允许...

Global site tag (gtag.js) - Google Analytics