ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Event Processing管理者ガイド
11gリリース1 (11.1.1.7)
B61653-06
  目次へ移動
目次

前
 
次
 

14 Oracle Event ProcessingのHTTPパブリッシュ/サブスクライブの構成

この章は、Oracle Event Processingで使用するHTTPパブリッシュ/サブスクライブ(Bayeuxプロトコルに基づく)の構成方法を、HTTPパブリッシュ/サブスクライブ・サーバーの作成および構成方法と構成例も含めて説明します。

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

14.1 HTTPパブリッシュ/サブスクライブの概要

HTTPパブリッシュ/サブスクライブ・サーバー(HTTP pub-subサーバー)は、Webクライアントがチャネルにサブスクライブし、HTTPを介して非同期メッセージでチャネルにメッセージをパブリッシュするメカニズムです。

標準のWebアプリケーションの単純なリクエスト/レスポンスでは、クライアントがすべての通信を開始する必要がありますが、この場合、サーバーは明示的なリクエストを受け取った場合に、更新されたデータをクライアントへプッシュすることしかできません。このメカニズムは、クライアントがリクエストした場合にのみサーバーからのデータが必要となる従来のアプリケーションには適していますが、クライアントが明示的にリクエストしていない場合でもサーバーがデータを送信する必要のある動的かつリアル・タイムなアプリケーションには不適切です。クライアントは従来のHTTPプル手法を使用して最新データを定期的にチェックおよび取得することができますが、この手法にはスケーラビリティがなく、チェックの重複によりネットワーク・トラフィックの増加につながります。HTTPパブリッシュ/サブスクライブ・サーバーは、クライアントによるチャネル(JMSでのトピックに相当)のサブスクライブとメッセージ(利用可能な場合)の受信を可能にすることにより、この問題を解決しています。

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

HTTP pub-subサーバーはBayeuxプロトコルを理解するすべてのクライアントと通信できます。HTTP pub-subサーバーの役割には、クライアントの識別、信頼のネゴシエーション、Bayeuxメッセージの交換、そして最も重要なこととして、サブスクライブしたクライアントへのイベント・メッセージのパブリッシュがあります。

図14-1は、Oracle Event Processingに含まれているHTTP pub-subサーバーの基本的なアーキテクチャを示します。

図14-1 Oracle Event ProcessingのHTTPパブリッシュ/サブスクライブ・サーバー

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

14.1.1 HTTPパブリッシュ/サブスクライブ・サーバーの仕組み

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

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

Oracle Event Processingアプリケーション開発者はオプションで、組込みHTTP pub-subアダプタを使用してアプリケーション内でチャネルにパブリッシュおよびサブスクライブできます。しかし、クライアントから受信したメッセージの監視、収集、解釈などの追加手順をHTTP pub-subサーバーで実行する必要がある場合、開発者はサーバー側のHTTP pub-subサーバーAPIを使用して、こうした機能をプログラミングする必要があります。

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

14.1.2 Oracle Event ProcessingにおけるHTTPパブリッシュ/サブスクライブ・サーバーのサポート

すべてのOracle Event Processingサーバーには、デフォルトのHTTP pub-subサーバーが含まれています。このサーバーは、Oracle Event Processing Visualizerおよび記録と再生のサンプルによって内部的に使用されます。独自のWeb 2.0アプリケーションでデフォルトのHTTP pub-subサーバーを使用することも、新しいサーバーを作成することもできます。

デフォルトのHTTP pub-subサーバーには次のプロパティがあります。

  • HTTP pub-subサーバーURL: (http://host:port/pubsub) hostはOracle Event Processingを実行しているコンピュータ、portはOracle Event Processingがリスニングするポート番号です。

  • トランスポート: long-pollingトランスポートを使用します。

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

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

    • /evsmonitor

    • /evsalert/

    • /evsdomainchange

デフォルトのHTTP pub-subサーバーの構成、または新しいサーバーの作成の詳細は、次の項を参照してください。

また、Oracle Event Processingには、アプリケーションで簡単にHTTP pub-subサーバーの機能を活用できる2つの組込みアダプタが含まれています。これらのアダプタをアプリケーションに追加すると、ローカルまたはリモートのHTTP pub-subサーバーを使用して、サーバーへのメッセージのパブリッシュと、メッセージを受信するためのサーバーへのサブスクライブの両方が可能になります。

詳細は、『Oracle Fusion Middleware Oracle Event Processing開発者ガイド for Eclipse』のHTTPパブリッシュ/サブスクライブ・アダプタの使用と作成に関する項を参照してください。

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

次の手順では、新しいHTTP pub-subサーバーを作成する方法について説明します。構成されたHTTP pub-subサーバーのconfig.xmlの例全体は、14.4項「HTTPパブリッシュ/サブスクライブ・サーバーの構成の例」を参照してください。

新しいHTTPパブリッシュ/サブスクライブ・サーバーを作成するには:

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

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

  2. 任意のXMLエディタを使用して、Oracle Event Processingサーバーのconfig.xmlファイルを開きます。

    このファイルはDOMAIN_DIR/servername/configディレクトリにあります。DOMAIN_DIRはドメイン・ディレクトリを指し、servernameはサーバーの名前(/oracle_cep/user_projects/myDomain/defaultserver/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>
    

    name要素をHTTP pub-subサーバーの内部名に設定します。

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

    次の手順では、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サーバーの構成で更新します。

    使用可能な要素の完全なリストは、『Oracle Fusion Middleware Oracle Event Processing開発者ガイド for Eclipse』のサーバー構成XSDスキーマ: wlevs_server_config.xsdに関する項を参照してください。

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

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

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

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

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

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

      • callback-polling: このトランスポートは、クロス・ドメイン構成を使用するHTTPパブリッシュ/サブスクライブ・アプリケーションに使用します。この構成では、ブラウザが1つのWebサーバー(JavaScriptコードを含む)からページをダウンロードし、HTTPパブリッシュ/サブスクライブ・クライアントとして別のサーバーに接続します。これは、Bayeuxプロトコルに必要です。Bayeuxプロトコルの詳細は、http://svn.xantus.org/shortbus/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-manager<name>子要素の値に対応します。

      <server-config>
      ... 
          <work-manager>myWorkManager</work-manager>
      </server-config> 
      

      詳細は、『Oracle Fusion Middleware Oracle Event Processing開発者ガイド for Eclipse』のwork-managerに関する項を参照してください。

    • 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 Event Processingサーバーを起動します。

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

  9. Oracle Event Processing Visualizerを使用して、チャネルを構成または追加します。次を参照してください。

    • 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のHTTPパブリッシュ/サブスクライブ・サーバー・チャネルの構成に関する項

  10. Oracle Event Processing Visualizerを使用して、チャネルのセキュリティを構成します。次を参照してください。

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

次の手順では、既存のHTTP pub-subサーバーを構成する方法について説明します。構成されたHTTP pub-subサーバーのconfig.xmlの例全体は、14.4項「HTTPパブリッシュ/サブスクライブ・サーバーの構成の例」を参照してください。

既存のHTTPパブリッシュ/サブスクライブ・サーバーを構成するには:

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

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

  2. 任意のXMLエディタを使用して、Oracle Event Processingサーバーのconfig.xmlファイルを開きます。

    このファイルはDOMAIN_DIR/servername/configディレクトリにあります。DOMAIN_DIRはドメイン・ディレクトリを指し、servernameはサーバーの名前(/oracle_cep/user_projects/myDomain/defaultserver/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サーバーの構成で更新します。

    使用可能な要素の完全なリストは、『Oracle Fusion Middleware Oracle Event Processing開発者ガイド for Eclipse』のサーバー構成XSDスキーマ: wlevs_server_config.xsdに関する項を参照してください。

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

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

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

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

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

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

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

      詳細は、『Oracle Fusion Middleware Oracle Event Processing開発者ガイド for Eclipse』のwork-managerに関する項を参照してください。

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

      <server-config>
      ... 
          <client-timeout-secs>600</client-timeout-secs>
      </server-config> 
      
  5. config.xmlファイルを保存します。

  6. Oracle Event Processingサーバーを起動します。

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

  7. Oracle Event Processing Visualizerを使用して、チャネルを構成または追加します。次を参照してください。

    • 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のHTTPパブリッシュ/サブスクライブ・サーバー・チャネルの構成に関する項

  8. Oracle Event Processing Visualizerを使用して、チャネルのセキュリティを構成します。次を参照してください。

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

config.xmlファイルの次のスニペットは、すべてのOracle Event Processingサーバーに含まれるデフォルトのHTTP pub-subサーバーの構成を示しています。

<?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>pubsub</name>
        <path>/pubsub</path>
        <pub-sub-bean>
            <server-config>
                <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>
...
</ns2:config>