![]() ![]() ![]() ![]() |
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 サーバの基本的なアーキテクチャについて説明しています。
サーブレットと 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 サーバが含まれています。このサーバは、Visualizer および記録と再生のサンプルによって内部的に使用されます。独自の Web 2.0 アプリケーション用にデフォルトの pub-sub サーバを使用することも、新しいサーバを作成することもできます。
デフォルトの pub-sub サーバには以下のプロパティがあります。
デフォルトの pub-sub サーバをコンフィグレーションする方法または新しいサーバを作成する方法の詳細については、「既存の HTTP パブリッシュ/サブスクライブ サーバのコンフィグレーション」を参照してください。
また、Oracle CEP には、アプリケーションで簡単に HTTP pub-sub サーバの機能を活用できる 2 つの組み込みアダプタが含まれています。これらのアダプタをアプリケーションに追加すると、ローカルまたはリモートの HTTP pub-sub サーバを使用して、サーバへのメッセージのパブリッシュと、メッセージを受信するためのサーバへのサブスクライブの両方を行うことができます。詳細については、「HTTP パブリッシュ/サブスクライブ アダプタの使用と作成」を参照してください。
以下の手順では、既存の HTTP pub-sub サーバをコンフィグレーションする方法について説明します。config.xml
でコンフィグレーションされた HTTP pub-sub サーバのサンプル全体を見るには、「新しい HTTP パブリッシュ/サブスクライブ サーバの作成」を参照してください。
config.xml
ファイルを開きます。
このファイルは DOMAIN_DIR
/
servername
/config
ディレクトリにあります。DOMAIN_DIR
はドメイン ディレクトリを指し、servername
はサーバの名前 (/oracle_cep/user_projects/myDomain/defaultserver/config
など) を指します。
<http-pubsub>
要素を検索します。たとえば、デフォルトの pub-sub サーバでは次のとおりです。<http-pubsub>
<name>pubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
...
</http-pubsub>
<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>
config.xml
ファイルを保存し、Oracle CEP を再起動します。
以下の手順では、新しい HTTP pub-sub サーバを作成する方法について説明します。config.xml
でコンフィグレーションされた HTTP pub-sub サーバのサンプル全体を見るには、「新しい HTTP パブリッシュ/サブスクライブ サーバの作成」を参照してください。
config.xml
ファイルを開きます。
このファイルは DOMAIN_DIR
/
servername
/config
ディレクトリにあります。DOMAIN_DIR
はドメイン ディレクトリを指し、servername
はサーバの名前 (/oracle_cep/user_projects/myDomain/defaultserver/config
など) を指します。
config.xml
のルート <config>
要素の <http-pubsub>
子要素を追加し、<name>
、<path>
、および <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>
要素について説明します。
<http-pubsub>
<name>myPubSubServer</name>
<path>/myPath</path><pub-sub-bean>
</http-pubsub>
<server-config>
...
</server-config>
<channels>
...
</channels>
</pub-sub-bean>
<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>
<channels>
子要素を更新します。チャネル パターンはフォワード スラッシュで始まる必要があります。クライアントはメッセージのパブリッシュまたは受信のためにこれらのチャネルにサブスクライブします。次のようにチャネル パターンを追加します。<channels>
<element>
<channel-pattern>/mychannel</channel-pattern>
</element>
</channels>
config.xml
ファイルを保存し、Oracle CEP を再起動します。
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>
![]() ![]() ![]() |