Web 消息传递服务实现了发布和预订功能,将浏览器与 WebSphere® Application Server
服务集成总线联系起来,从而能够推送服务器端事件。客户机/服务器通信是通过使用 Bayeux 协议实现的。Bayeux 协议是一种基于 HTTP 的消息传递路由协议。有关更多信息,请参阅 Bayeux 和 cometd Web 站点。在客户机中,由 Dojo Toolkit 提供了对 Bayeux 协议的支持。目前,Dojo Toolkit
是唯一支持 Bayeux 协议的 JavaScriptTM 库。任何实现了
Bayeux 协议支持的 JavaScriptTM 库或 HTTP 客户机都能够与
Web 消息传递服务进行通信。Web 消息服务实现方案将传入 Bayeux 请求与服务集成总线联系起来,
允许 Web Service、JMS 客户机或与服务集成总线相连的任何项将事件发布至基于 Web 的客户机。通过将运行时
Java 归档 (JAR) 文件放入 WebSphere Application Server,将实用程序文件库 JAR 文件放入应用程序 Web 模块中、设置简单配置文件和配置 Servlet 映射,就可以在新的应用程序或现有应用程序中使用 Web 消息传递服务。
图 1:总体体系结构:
在典型应用程序中,浏览器将按照指定的时间间隔或轮询来定期请求获得服务器中的更新。Bayeux 协议通信类型与传统的轮询模型不同,并且通过长期 HTTP 连接进行通信,服务器通常使此 HTTP 连接在特定时间段内保持打开,以等待事件被推送至浏览器。采用这种通信方式时,Web 容器不能伸缩,在等待的每个客户机都将使用一个线程来等待事件。其他处理这种请求的服务器可以采用不同的方法来实现伸缩。因为 Web 消息传递服务用来处理现有版本的 WebSphere Application Server,并且使用此通信方法时当前 Web 容器不能很好地进行伸缩,所以在 Web 消息传递服务中引入了新机制来实现可伸缩性。
这种新机制利用通道框架体系结构并创建新的通道框架通道来扩展 HTTP 通道,以将传入 Bayeux 请求与服务集成总线联系起来。
当前,浏览器通过 Dojo Toolkit cometd 模块来支持 Web 消息传递服务。 对于 cometd 客户机,很容易完成初始化、预订、取消预订和发布操作。通过 cometd 客户机,服务器驱动的事件被集成到 Dojo 事件和主题系统中。在 Ajax Developer's Guide 和 QuoteStreamer 样本应用程序中提供了 Dojo cometd 用法示例。
Web 消息传递服务将浏览器客户机连接至内置消息传递引擎和服务集成总线,以便预订/发布事件和接收消息。通过直接对服务集成总线主题空间执行 API 调用来实现与服务集成总线的底层联系。由于 Web 客户机端连接至服务集成总线,因此,可以使用多种方法将消息发布至 Web 客户机端。以下是其中的一些选项:发布至主题的标准 Enterprise JavaBeans (EJB)、发布至主题的 JMS 客户机、Web Service 或者发布至其他 Web 客户机端的 Web 客户机端本身。