Web 消息传递服务

将消息发布至 Web 消息传递服务

当应用程序被配置为使用 Web 消息传递服务时,可以使用多种方法将信息发布至浏览器客户机。本主题中讨论了浏览器客户机发布以及通过 Web 应用程序来发布两种方法。

浏览器客户机发布

第一种方法是客户机通过浏览器发布消息。发布消息是 Bayeux 协议的一部分。从浏览器进行发布实现了另一种风格的 Web 应用程序。这种 Web 应用程序的一些示例包括:在 Web 页面中嵌入聊天功能和会议现场,可协作编辑 Web 页面的应用程序,网络游戏应用程序。必须在 Web 消息传递配置文件中将 clientCanPublish 选项设置为

true
,客户机才能进行发布。用于实现在浏览器中进行发布的代码与下面这个 Dojo toolkit cometd 客户机示例相似:

dojox.cometd.publish("/testtopic", { test: "data"}); 

通过 Web 应用程序进行发布

第二种方法是,通过 JavaTM Platform, Enterprise Edition (Java EE) 应用程序发布到 Web 消息传递客户机。Web 消息传递服务将客户机与服务集成总线联系起来,以便进行消息发布和传递。必须通过服务集成总线来传递要发送给 Web 客户机端的消息。应该使用标准 J2EE 服务集成总线发布方法。可以在企业 Bean 或 Servlet 中使用这些标准方法。请参阅服务集成总线发布一节以获取更多信息。

为了帮助发布至 Web 消息传递客户机,在 Web 消息传递应用程序的实用程序库中提供了一个发布 API。与使用标准 JMS 发布方法相比,使用发布 API 将简化发布至 Web 消息传递客户机这一过程。这些简化措施包括能够进行 Bayeux 通道至服务集成主题的映射以及容易确定受支持的 JMS 消息类型。使用发布 API 时请遵循下列步骤:

  1. 创建主题连接工厂以连接至服务集成总线。请记下主题连接工厂的 Java 命名和目录接口 (JNDI) 名称。
  2. 创建对 PublisherServlet 的引用,并为连接工厂传入 JNDI 名称。请参阅以下示例:
     <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>  
  3. 获取发布程序的实例,创建一条 Web 消息并进行发布。请参阅以下示例:
     
     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。


使用条款 | 反馈