管理およびコンフィグレーション ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

HTTP パブリッシュ/サブスクライブ サーバのコンフィグレーション

この節では、以下の項目について説明します。

 


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

HTTP パブリッシュ/サブスクライブ サーバ (このマニュアルでは、簡単に pub-sub サーバと呼ぶ場合もあります) は、Web クライアントが HTTP で非同期メッセージを使用してチャネルのサブスクライブおよびメッセージのパブリッシュを行うためのメカニズムです。

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

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

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

次の図は、Oracle CEP に含まれている pub-sub サーバの基本的なアーキテクチャについて説明しています。

図 11-1 Oracle CEP の HTTP パブリッシュ/サブスクライブ サーバ

Oracle CEP の HTTP パブリッシュ/サブスクライブ サーバ

 


HTTP Pub-Sub サーバのしくみ

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

Oracle CEP では、pub-sub サーバ インスタンスは、サーバ インスタンスの config.xml ファイルでコンフィグレーションされます。システム管理者は config.xml を使用して、pub-sub サーバの名前をコンフィグレーションし、転送方法およびその他のパラメータを指定します。次に、Visualizer を使用して新しいチャネルを追加し、チャネルのセキュリティをコンフィグレーションします。

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

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

 


Oracle CEP での HTTP Pub-Sub サーバ サポート

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

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

デフォルトの pub-sub サーバをコンフィグレーションする方法または新しいサーバを作成する方法の詳細については、「既存の HTTP パブリッシュ/サブスクライブ サーバのコンフィグレーション」を参照してください。

また、Oracle CEP には、アプリケーションで簡単に HTTP pub-sub サーバの機能を活用できる 2 つの組み込みアダプタが含まれています。これらのアダプタをアプリケーションに追加すると、ローカルまたはリモートの HTTP pub-sub サーバを使用して、サーバへのメッセージのパブリッシュと、メッセージを受信するためのサーバへのサブスクライブの両方を行うことができます。詳細については、「HTTP パブリッシュ/サブスクライブ アダプタの使用と作成」を参照してください。

 


既存の HTTP パブリッシュ/サブスクライブ サーバのコンフィグレーション

以下の手順では、既存の HTTP pub-sub サーバをコンフィグレーションする方法について説明します。config.xml でコンフィグレーションされた HTTP pub-sub サーバのサンプル全体を見るには、「新しい HTTP パブリッシュ/サブスクライブ サーバの作成」を参照してください。

  1. Oracle CEP サーバが実行中である場合は、停止します。「サーバの停止と起動」を参照してください。
  2. 任意の XML エディタを使用して Oracle CEP サーバの config.xml ファイルを開きます。
  3. このファイルは DOMAIN_DIR/servername/config ディレクトリにあります。DOMAIN_DIR はドメイン ディレクトリを指し、servername はサーバの名前 (/oracle_cep/user_projects/myDomain/defaultserver/config など) を指します。

  4. コンフィグレーションを行う HTTP pub-sub サーバに対応する <http-pubsub> 要素を検索します。たとえば、デフォルトの pub-sub サーバでは次のとおりです。
  5. <http-pubsub>
    <name>pubsub</name>
    <path>/pubsub</path>
    <pub-sub-bean>
    <server-config>
    ...
    </http-pubsub>
  6. 必要に応じて <pub-sub-bean> 要素 (<http-pubsub> の子要素) の <server-config> 子要素を更新し、pub-sub サーバのコンフィグレーションを指定します。使用可能な要素の詳細なリストについては、XSD スキーマを参照してください。一般的なコンフィグレーション オプションを以下に示します。
    • <supported-transport> 要素を追加して転送方法を指定します。現在サポートされている転送方法は、long-polling および callback-polling です。この要素の形式は次のとおりです。
    • <server-config>
      <supported-transport>
      <types>
      <element>long-polling</element>
      </types>
      </supported-transport>
      ...
      </server-config>
    • <publish-without-connect-allowed> 要素を追加して、クライアントが pub-sub サーバに明示的に接続せずにチャネルへのメッセージをパブリッシュできるかどうかを指定します。有効な値は true および false です。
    • <server-config>
      ...
      <publish-without-connect-allowed>true</publish-without-connect-allowed>
      </server-config>
    • <work-manager> 要素を追加して、クライアントにメッセージを配信するワーク マネージャの名前を指定します。この要素の値は、割り当てる <work-manager><name> 子要素の値に対応しています。詳細については、「work-manager コンフィグレーション オブジェクト」を参照してください。
    • <server-config>
      ...
      <work-manager>myWorkManager</work-manager>
      </server-config>
    • <client-timeout-secs> 要素を追加して、クライアントから接続/再接続メッセージへの返信がない場合に pub-sub サーバが接続を切断するまでの秒数を指定します。
    • <server-config>
      ...
      <client-timeout-secs>600</client-timeout-secs>
      </server-config>
  7. config.xml ファイルを保存し、Oracle CEP を再起動します。
  8. Visualizer を使用して、チャネルをコンフィグレーションまたは追加し、チャネルのセキュリティをコンフィグレーションします。以下を参照してください。

 


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

以下の手順では、新しい HTTP pub-sub サーバを作成する方法について説明します。config.xml でコンフィグレーションされた HTTP pub-sub サーバのサンプル全体を見るには、「新しい HTTP パブリッシュ/サブスクライブ サーバの作成」を参照してください。

  1. Oracle CEP サーバが実行中である場合は、停止します。「サーバの停止と起動」を参照してください。
  2. 任意の XML エディタを使用して Oracle CEP サーバの config.xml ファイルを開きます。
  3. このファイルは DOMAIN_DIR/servername/config ディレクトリにあります。DOMAIN_DIR はドメイン ディレクトリを指し、servername はサーバの名前 (/oracle_cep/user_projects/myDomain/defaultserver/config など) を指します。

  4. 太字で示すように、config.xml のルート <config> 要素の <http-pubsub> 子要素を追加し、<name><path>、および <pub-sub-bean> 子要素を指定します。
  5. <?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> 要素について説明します。

  6. 次のように、<pub-sub-bean> 要素の <server-config> および <channels> 子要素を追加します。
  7.     <http-pubsub>
    <name>myPubSubServer</name>
    <path>/myPath</path>
    <pub-sub-bean>
    <server-config>
    ...
    </server-config>
    <channels>
    ...
    </channels>
    </pub-sub-bean>
    </http-pubsub>
  8. 必要に応じて <pub-sub-bean> 要素の <server-config> 子要素を更新し、pub-sub サーバのコンフィグレーションを指定します。使用可能な要素の詳細なリストについては、XSD スキーマを参照してください。一般的なコンフィグレーション オプションを以下に示します。
    • <supported-transport> 要素を追加して転送方法を指定します。現在サポートされている転送方法は、long-polling および callback-polling です。この要素の形式は次のとおりです。
    • <server-config>
      <supported-transport>
      <types>
      <element>long-polling</element>
      </types>
      </supported-transport>
      ...
      </server-config>
    • <publish-without-connect-allowed> 要素を追加して、クライアントが pub-sub サーバに明示的に接続せずにチャネルへのメッセージをパブリッシュできるかどうかを指定します。有効な値は true および false です。
    • <server-config>
      ...
      <publish-without-connect-allowed>true</publish-without-connect-allowed>
      </server-config>
    • <work-manager> 要素を追加して、クライアントにメッセージを配信するワーク マネージャの名前を指定します。この要素の値は、割り当てる <work-manager><name> 子要素の値に対応しています。詳細については、「work-manager コンフィグレーション オブジェクト」を参照してください。
    • <server-config>
      ...
      <work-manager>myWorkManager</work-manager>
      </server-config>
    • <client-timeout-secs> 要素を追加して、クライアントから接続/再接続メッセージへの返信がない場合に pub-sub サーバが接続を切断するまでの秒数を指定します。
    • <server-config>
      ...
      <client-timeout-secs>600</client-timeout-secs>
      </server-config>
  9. 少なくとも 1 つのチャネル パターンを指定して <channels> 子要素を更新します。チャネル パターンはフォワード スラッシュで始まる必要があります。クライアントはメッセージのパブリッシュまたは受信のためにこれらのチャネルにサブスクライブします。次のようにチャネル パターンを追加します。
  10. <channels>
    <element>
    <channel-pattern>/mychannel</channel-pattern>
    </element>
    </channels>
  11. config.xml ファイルを保存し、Oracle CEP を再起動します。
  12. Visualizer を使用してさらにチャネルを追加し、チャネルのセキュリティをコンフィグレーションします。以下を参照してください。

 


HTTP パブリッシュ/サブスクライブ サーバのコンフィグレーションの例

config.xml ファイルから抜粋した以下のコード例は、すべての Oracle CEP サーバに含まれるデフォルトの 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>

  ページの先頭       前  次