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サーバーを見つけることができます。host
とport
はそれぞれ、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 Oracle Stream AnalyticsのHTTPパブリッシュ/サブスクライブ・サーバー」の説明
13.4 新しいHTTPパブリッシュ/サブスクライブ・サーバーの作成
この手順では、新しいHTTP pub-subサーバーを作成する方法について説明します。
構成されたHTTP pub-subサーバーのconfig.xml
の例全体は、「デフォルトのHTTP Pub-Subサーバー」を参照してください。
新しいHTTPパブリッシュ/サブスクライブ・サーバーの作成
-
Oracle Stream Analyticsサーバーが実行中である場合は、停止します。
「サーバーの起動と停止」を参照してください。
-
XMLエディタで、Oracle Stream Analyticsサーバーの
config.xml
ファイルを開きます。デフォルトでは、このファイルは
Oracle/Middleware/my_oep/user_projects/domains/<domainname>/<servername>/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
要素について説明します。
-
-
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>
-
必要に応じて、
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>
-
-
少なくとも1つのチャネル・パターンで
channels
子要素を更新します。チャネル・パターンは、常にスラッシュ(
/
)で開始します。クライアントは、メッセージのパブリッシュ、またはメッセージの受信のためにこれらのチャネルにサブスクライブします。次に示すようにチャネル・パターンを追加します。<channels> <element> <channel-pattern>/mychannel</channel-pattern> </element> </channels>
-
config.xml
ファイルを保存します。 -
Oracle Stream Analyticsサーバーを起動します。
「サーバーの起動と停止」を参照してください。
-
Oracle Stream Analytics Visualizerを使用して、チャネルを構成または追加します。
-
Oracle Stream Analytics Visualizerを使用して、チャネルのセキュリティを構成します。HTTPパブリッシュ/サブスクライブ・サーバー・チャネルのセキュリティの構成を参照してください。
13.5 既存のHTTPパブリッシュ/サブスクライブ・サーバーの構成
この手順では、既存のHTTP pub-subサーバーを構成する方法について説明します。
構成されたHTTP pub-subサーバーのconfig.xml
の例全体は、「デフォルトのHTTP Pub-Subサーバー」を参照してください。
既存のHTTPパブリッシュ/サブスクライブ・サーバーの構成