Web メッセージング・ サービス

Web メッセージング・サービスへのメッセージの公開

アプリケーションが Web メッセージング・サービスを使用するように構成される場合、情報をブラウザー・クライアントに公開するには複数の方法があります。 このトピックでは、ブラウザー・クライアント公開と Web アプリケーションによる公開について説明します。

ブラウザー・クライアントの公開

最初の方法は、ブラウザーを介したクライアント公開です。公開は Bayeux プロトコルの一部です。ブラウザーから公開すると、別のスタイルの Web アプリケーションが使用可能になります。チャットや在席情報の Web ページへの埋め込み、共同で Web 編集するためのアプリケーション、ゲーム・アプリケーションなどがその例です。 クライアント公開を許可するには、Web メッセージング構成ファイルの clientCanPublish オプションを

true
に設定する必要があります。ブラウザー内で公開するコードは、以下の Dojo Toolkit の cometd クライアントの例に似ています。

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

Web アプリケーションによる公開

2 番目の方法は、JavaTM Platform, Enterprise Edition (Java EE) アプリケーションを使用して Web メッセージング・クライアントに公開する方法です。Web メッセージング・サービスはメッセージの公開と配信のために、 クライアントをサービス統合バスにブリッジします。Web クライアントに送信する必要があるメッセージは、サービス統合バスを使用してルーティングしなければなりません。標準的な J2EE サービス統合バス公開メソッドを使用する必要があります。 これらの標準的なメソッドはエンタープライズ Bean やサーブレットで使用できます。 詳しくは、サービス統合バスの公開のセクションを参照してください。

Web メッセージング・クライアントへの公開を容易にするために、Web メッセージング・アプリケーションのユーティリティー・ライブラリーに公開 API が提供されています。 標準的な JMS 公開メソッドの場合とは対照的に、Web メッセージング・クライアントへのパブリッシュは、公開 API を使用すると簡単になります。こうした簡素化には、Bayeux のチャネルからサービスへの統合トピック・マッピングおよび、対応 JMS メッセージ・タイプの簡単な識別などが含まれます。公開 API を使用する場合には以下のステップを実行してください。

  1. トピック接続ファクトリーを作成してサービス統合バスに接続します。トピック接続ファクトリーの Java Naming and Directory Interface (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 アプリケーションを参照してください。Web メッセージング公開 API について詳しくは、公開 API 資料を参照してください。


ご利用条件 | フィードバック