当应用程序被配置为使用 Web 消息传递服务时,可以使用多种方法将信息发布至浏览器客户机。本主题中讨论了浏览器客户机发布以及通过 Web 应用程序来发布两种方法。
第一种方法是客户机通过浏览器发布消息。发布消息是 Bayeux 协议的一部分。从浏览器进行发布实现了另一种风格的 Web 应用程序。这种 Web 应用程序的一些示例包括:在 Web 页面中嵌入聊天功能和会议现场,可协作编辑 Web 页面的应用程序,网络游戏应用程序。必须在 Web 消息传递配置文件中将 clientCanPublish 选项设置为
true,客户机才能进行发布。用于实现在浏览器中进行发布的代码与下面这个 Dojo toolkit cometd 客户机示例相似:
dojox.cometd.publish("/testtopic", { test: "data"}); |
第二种方法是,通过 JavaTM Platform, Enterprise Edition (Java EE) 应用程序发布到 Web 消息传递客户机。Web 消息传递服务将客户机与服务集成总线联系起来,以便进行消息发布和传递。必须通过服务集成总线来传递要发送给 Web 客户机端的消息。应该使用标准 J2EE 服务集成总线发布方法。可以在企业 Bean 或 Servlet 中使用这些标准方法。请参阅服务集成总线发布一节以获取更多信息。
为了帮助发布至 Web 消息传递客户机,在 Web 消息传递应用程序的实用程序库中提供了一个发布 API。与使用标准 JMS 发布方法相比,使用发布 API 将简化发布至 Web 消息传递客户机这一过程。这些简化措施包括能够进行 Bayeux 通道至服务集成主题的映射以及容易确定受支持的 JMS 消息类型。使用发布 API 时请遵循下列步骤:
<servlet> <display-name>Publisher</display-name> <servlet-name>Publisher</servlet-name> <servlet-class> com.ibm.websphere.webmsg.publisher.jndijms.JmsPublisherServlet </servlet-class> <init-param> <param-name>CONNECTION_FACTORY_JNDI_NAME</param-name> <param-value>java:comp/env/jms/QuotePublish</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> |
Publisher publisher = (Publisher)servletContext.getAttribute(JmsPublisherServlet.PUBLISHER_SERVLET_CONTEXT_KEY); if (publisher == null) { throw new ServletException("Publisher servlet not initialized, or not initialized before app"); } try { publisher.publish(new BayeuxJmsTextMsg(s.getTopic(), data)); } catch (PublisherException e){ logger.log(Level.WARNING, "Error publishing simulated data. Msg: " + e.toString()); } |
有关“发布 API”的示例用法,请参阅 QuoteStreamer 应用程序。请阅读发布 API 文档以了解 Web 消息传递发布 API。