13 HTTPパブリッシュ/サブスクライブ・サーバー

HTTPパブリッシュ/サブスクライブ(HTTP pub-sub)サーバーは、Webクライアントがチャネルにサブスクライブし、HTTPを介して非同期メッセージでチャネルにメッセージをパブリッシュできるようにします。HTTP pub-subサーバーを構成して、チャネルへのサブスクライブ、特定タイプのトランスポートの使用、タイムアウトの設定、特定のワーク・マネージャに対するクライアントへのメッセージ配信の指示などを行うことができます。

この章の内容は次のとおりです。

13.1 デフォルトのHTTP Pub-Subサーバー

すべてのOracle Stream Analyticsサーバーには、デフォルトのHTTP pub-subサーバーがあります。Oracle Stream Analytics Visualizer、記録および再生のアプリケーション例では、デフォルトのHTTP pub-subサーバーを内部で使用しています。インストールでデフォルトのHTTP pub-subサーバーを使用するか、またはソフトウェア開発者がカスタムHTTP pub-subサーバーを作成することができます。

Oracle Stream Analyticsでは、HTTP pub-subサーバー・インスタンスは、サーバー・インスタンスのconfig.xmlファイルで構成されます。システム管理者はconfig.xmlを使用して、HTTP pub-subサーバーの名前を構成し、トランスポートおよびその他のパラメータを指定します。管理者は次に、Oracle Stream Analytics Visualizerを使用して新しいチャネルを追加し、チャネルのセキュリティを構成します。

config.xmlファイルの<http-pubsub>要素には、HTTP pub-subサーバー構成が含まれます。デフォルトでは、HTTP pub-subサーバーの構成は次のとおりです。

<http-pubsub>
  <name>pubsub</name>
  <path>/pubsub</path>
  <pub-sub-bean>
    <server-config>
      <name>/pubsub</name>
      <supported-transport>
        <types>
          <element>long-polling</element>
        </types>
      </supported-transport>
      <publish-without-connect-allowed>true</publish-without-connect-allowed>
    </server-config>
      <channels>
        <element>
          <channel-pattern>/evsmonitor</channel-pattern>
        </element>
         <element>
           <channel-pattern>/evsalert</channel-pattern>
         </element>
         <element>
           <channel-pattern>/evsdomainchange</channel-pattern>
         </element>
       </channels>
     </pub-sub-bean>
   </http-pubsub>
  • <path>/pubsub</path>: HTTP pub-subサーバーへのURLです。ブラウザで、http://host:port/pubsubと入力すると、HTTP pub-subサーバーを見つけることができます。hostportはそれぞれ、Oracle Stream Analyticsが実行されているコンピュータと、そのコンピュータがリスニングしているポートの番号を表します。たとえば、http://myhost.com:9102/pubsub

  • <supported-transport>: トランスポート・モード。デフォルトはlong-pollingトランスポートです。

  • <publish-without-connect-allowed>true</publish-without-connect-allowed>: HTTP pub-subサーバーに明示的に接続せずに、クライアントでチャネルへのメッセージをパブリッシュできます。

  • Oracle Stream Analytics Visualizerによって内部的に使用される次の3つのチャネルが含まれます。これらのチャネルは削除しないでください。

    • /evsmonitor

    • /evsalert

    • /evsdomainchange

13.2 HTTPパブリッシュ/サブスクライブ・アダプタ

Oracle Stream Analyticsには、アプリケーションにHTTP pub-subサーバーの機能を提供する2つの組込みアダプタが用意されています。ソフトウェア開発者はこれらのアダプタをアプリケーションに追加して、メッセージをパブリッシュしたり、メッセージ受信のためにサーバーにサブスクライブします。

アプリケーションで、ソフトウェア開発者は、HTTP pub-subアダプタを次のように使用します。

  • HTTPパブリッシャ・アダプタを使用して、JavaScript Object Notation (JSON)イベント・データをEPNからWebベースのユーザー・インタフェースに送信します。

  • HTTPサブスクライバ・アダプタを使用して、EPNに入るJavaScript Object Notation (JSON)イベント・データを受け入れます。JSONイベント・データは、ユーザー・アクションによってイベントを生成するHTTPサーバーから送信されます。

クライアントから受信したメッセージの監視、収集、解釈などの追加手順をHTTP pub-subサーバーで実行する必要がある場合、ソフトウェア開発者はサーバー側のHTTP pub-subサーバーAPIを使用して、こうした機能をプログラミングする必要があります。次のパッケージを参照してください。

  • com.bea.wlevs.adapters.httppubsub.api

  • com.bea.wlevs.adapters.httppubsub.support

13.3 サーバー・アーキテクチャ

HTTPパブリッシュ/サブスクライブ・サーバーは、クライアントによるチャネル(JMSでのトピックに相当)のサブスクライブとメッセージ(利用可能な場合)の受信を可能にします。それに対して、従来のWebアプリケーションではすべての通信がクライアントによって開始される必要があります。

サーバーは、明示的なリクエストを受信した場合、更新されたデータをクライアントにプッシュすることのみ可能です。ただし、動的リアルタイム・アプリケーションでは、クライアントが明示的にリクエストしたかどうかにかかわらず、サーバーによるデータの送信が必要です。

HTTP pub-subサーバーはcometdプロジェクトで提案されているBayeuxプロトコルに基づいています。Bayeuxプロトコルには、クライアントとサーバーがHTTPを介して非同期メッセージで通信するための規約が定義されています。これによって、クライアントは、イベントのソースまたは指定されている宛先であるチャネルに登録およびサブスクライブできます。次に、登録されたクライアントまたはHTTP pub-subサーバー自体がこれらのチャネルへメッセージをパブリッシュし、サブスクライブしているすべてのクライアントがそのメッセージを受信します。

HTTP pub-subサーバーはBayeuxプロトコルを理解するすべてのクライアントと通信できます。HTTP pub-subサーバーの役割には、クライアントの識別、信頼のネゴシエーション、Bayeuxメッセージの交換、そして、サブスクライブしたクライアントへのイベント・メッセージのプッシュがあります。Web 2.0 Ajaxクライアント(Dojoなど)またはリッチ・インターネット・アプリケーション(Adobe Flexなど)がHTTP pub-subサーバーと通信できるには、Bayeuxプロトコルをサポートするライブラリがクライアント側で必要となります。Dojo JavaScriptライブラリでは4つの異なるトランスポート手段が提供されており、そのうちの2つはHTTP pub-subサーバーでサポートされているlong-pollingおよびcallback-pollingです。

サーブレットとHTTP pub-subサーバーの間には、1対1の関係があります。各サーブレットには、1つの一意のHTTP pub-subサーバーへのアクセスがあります。各HTTP pub-subサーバーは独自のチャネル・リストを持ちます。サーブレットはコンテキスト・オブジェクトを使用して、関連付けられているHTTP pub-subサーバーへのハンドルを取得します。

図13-1は、Oracle Stream Analytics HTTP pub-subサーバーの基本的なアーキテクチャを示します。

図13-1 Oracle Stream AnalyticsのHTTPパブリッシュ/サブスクライブ・サーバー

図13-1の説明が続きます
「図13-1 Oracle Stream AnalyticsのHTTPパブリッシュ/サブスクライブ・サーバー」の説明

13.4 新しいHTTPパブリッシュ/サブスクライブ・サーバーの作成

この手順では、新しいHTTP pub-subサーバーを作成する方法について説明します。

構成されたHTTP pub-subサーバーのconfig.xmlの例全体は、「デフォルトのHTTP Pub-Subサーバー」を参照してください。

新しいHTTPパブリッシュ/サブスクライブ・サーバーの作成

  1. Oracle Stream Analyticsサーバーが実行中である場合は、停止します。

    「サーバーの起動と停止」を参照してください。

  2. XMLエディタで、Oracle Stream Analyticsサーバーのconfig.xmlファイルを開きます。

    デフォルトでは、このファイルはOracle/Middleware/my_oep/user_projects/domains/<domainname>/<servername>/configにあります。

  3. 太字で示されているように、config.xmlのルートconfig要素のhttp-pubsub子要素を追加し、namepath、およびpub-sub-bean子要素を指定します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ns2:config xmlns:ns2="http://www.bea.com/ns/wlevs/config/server">
       <domain>
         <name>myDomain</name>
       </domain>
       ....
       <http-pubsub>
         <name>myPubSubServer</name>
         <path>/myPath</path>
         <pub-sub-bean>
            ...
         </pub-sub-bean>
       </http-pubsub>
       ...
    </ns2:config>
    1. name要素をHTTP pub-subサーバーの内部名に設定します。

    2. path要素はHTTP pub-subサーバーへの接続に使用されるURLに表示する文字列に設定します。

    3. 次の手順では、pub-sub-bean要素について説明します。

  4. pub-sub-bean要素のserver-configおよびchannels子要素を追加します。

       </http-pubsub>
         <name>myPubSubServer</name>
         <path>/myPath</path>
         <pub-sub-bean>
           <server-config>
              ...
           </server-config>
           <channels>
              ...
           </channels>
         </pub-sub-bean>
       </http-pubsub>
  5. 必要に応じて、pub-sub-bean要素のserver-config子要素をHTTP pub-subサーバーの構成で更新します。

    次に、最も一般的な構成オプションを示します。

    • supported-transport要素を追加して、トランスポートを指定します。

      この要素の形式は次のとおりです。

      <server-config>
           <supported-transport>
             <types>
                <element>long-polling</element>
             </types>
           </supported-transport>
      ...
      </server-config>
      

      Oracle Stream Analyticsでは、次のトランスポートをサポートします。

      • long-polling: このトランスポートを使用すると、クライアントはOracle Stream Analyticsサーバーからの情報をリクエストし、Oracle Stream Analyticsサーバーが使用可能な情報を持たない場合、情報を持つまで応答しません。Oracle Stream Analyticsサーバーが応答すると、クライアントは、通常、別のリクエストをただちに送信します。

      • callback-polling: このトランスポートは、クロス・ドメイン構成を使用するHTTPパブリッシュ/サブスクライブ・アプリケーションに使用します。この構成では、ブラウザが1つのWebサーバー(JavaScriptコードを含む)からページをダウンロードし、HTTPパブリッシュ/サブスクライブ・クライアントとして別のサーバーに接続します。これは、Bayeuxプロトコルに必要です。

    • publish-without-connect-allowed要素を追加して、クライアントがHTTP pub-subサーバーに明示的に接続せずに、メッセージをパブリッシュできるかどうかを指定します。有効な値はtrueまたはfalseです。

      <server-config>
      ...
         <publish-without-connect-allowed>true</publish-without-connect-allowed>
      </server-config> 
      
    • work-manager要素を追加し、クライアントにメッセージを送信するワーク・マネージャ名を指定します。この要素の値は、割り当てるwork-manager<name>子要素の値に対応します。

      <server-config>
      ...
         <work-manager>myWorkManager</work-manager>
      </server-config>
      
    • client-timeout-secs要素を追加して、クライアントから接続/再接続のメッセージが返されていない場合にHTTP pub-subサーバーが接続を切断するまでの秒数を指定します。

      <server-config>
      ...
         <client-timeout-secs>600</client-timeout-secs>
      </server-config>
      
  6. 少なくとも1つのチャネル・パターンでchannels子要素を更新します。

    チャネル・パターンは、常にスラッシュ(/)で開始します。クライアントは、メッセージのパブリッシュ、またはメッセージの受信のためにこれらのチャネルにサブスクライブします。次に示すようにチャネル・パターンを追加します。

    <channels>
         <element>
            <channel-pattern>/mychannel</channel-pattern>
         </element>
    </channels>
    
  7. config.xmlファイルを保存します。

  8. Oracle Stream Analyticsサーバーを起動します。

    「サーバーの起動と停止」を参照してください。

  9. Oracle Stream Analytics Visualizerを使用して、チャネルを構成または追加します。

  10. Oracle Stream Analytics Visualizerを使用して、チャネルのセキュリティを構成します。HTTPパブリッシュ/サブスクライブ・サーバー・チャネルのセキュリティの構成を参照してください。

13.5 既存のHTTPパブリッシュ/サブスクライブ・サーバーの構成

この手順では、既存のHTTP pub-subサーバーを構成する方法について説明します。

構成されたHTTP pub-subサーバーのconfig.xmlの例全体は、「デフォルトのHTTP Pub-Subサーバー」を参照してください。

既存のHTTPパブリッシュ/サブスクライブ・サーバーの構成

  1. Oracle Stream Analyticsサーバーが実行中である場合は、停止します。

    「サーバーの起動と停止」を参照してください。

  2. XMLエディタで、Oracle Stream Analyticsサーバーのconfig.xmlファイルを開きます。

    デフォルトでは、このファイルはOracle/Middleware/my_oep/user_projects/domains/<domainname>/<servername>/configにあります。

  3. 構成するHTTP pub-subサーバーに対応するhttp-pubsub要素を検索します。

    たとえば、デフォルトのHTTP pub-subサーバーを構成するために、次のエントリを探します。

    <http-pubsub>
        <name>pubsub</name>
        <path>/pubsub</path>
        <pub-sub-bean>
            <server-config>
            ...
    </http-pubsub>
    
  4. 必要に応じて、pub-sub-bean要素(http-pubsubの子要素)のserver-config子要素をHTTP pub-subサーバーの構成で更新します。

    次に、最も一般的な構成オプションを示します。

    • supported-transport要素を追加して、トランスポートを指定します。

      この要素の形式は次のとおりです。

      <server-config>
          <supported-transport>
              <types>
                  <element>long-polling</element>
              </types>
          </supported-transport>
      ... 
      </server-config>
      

      Oracle Stream Analyticsでは、次のトランスポートをサポートします。

      • long-polling: このトランスポートを使用すると、クライアントはOracle Stream Analyticsサーバーからの情報をリクエストし、Oracle Stream Analyticsサーバーが使用可能な情報を持たない場合、情報を持つまで応答しません。Oracle Stream Analyticsサーバーが応答すると、クライアントは、通常、別のリクエストをただちに送信します。

      • callback-polling: このトランスポートは、クロス・ドメイン構成を使用するHTTPパブリッシュ/サブスクライブ・アプリケーションに使用し、この構成では、ブラウザが1つのWebサーバー(JavaScriptコードを含む)からページをダウンロードし、HTTPパブリッシュ/サブスクライブ・クライアントとして別のサーバーに接続します。Bayeuxプロトコルにはこれが必要です。Bayeuxプロトコルの詳細は、http://svn.cometd.org/trunk/bayeux/bayeux.htmlを参照してください。

    • publish-without-connect-allowed要素を追加して、クライアントがHTTP pub-subサーバーに明示的に接続せずに、メッセージをパブリッシュできるかどうかを指定します。有効な値はtrueまたはfalseです。

      <server-config>
      ... 
          <publish-without-connect-allowed>true</publish-without-connect-allowed>
      </server-config> 
    • work-manager要素を追加し、クライアントにメッセージを送信するワーク・マネージャ名を指定します。この要素の値は、割り当てるwork-managername子要素の値に対応します。

      <server-config>
      ... 
          <work-manager>myWorkManager</work-manager>
      </server-config> 
      
    • client-timeout-secs要素を追加して、クライアントから接続/再接続のメッセージが返されていない場合にHTTP pub-subサーバーが接続を切断するまでの秒数を指定します。

      <server-config>
      ... 
          <client-timeout-secs>600</client-timeout-secs>
      </server-config> 
  5. config.xmlファイルを保存します。
  6. Oracle Stream Analyticsサーバーを起動します。

    「サーバーの起動と停止」を参照してください。

  7. Oracle Stream Analytics Visualizerを使用して、チャネルを構成または追加します。
  8. Oracle Stream Analytics Visualizerを使用して、チャネルのセキュリティを構成します。次を参照してください。