HTTPパブリッシュ/サブスクライブ(HTTP pub-sub)サーバーは、Webクライアントがチャネルにサブスクライブし、HTTPを介して非同期メッセージでチャネルにメッセージをパブリッシュできるようにします。HTTP pub-subサーバーを構成して、チャネルへのサブスクライブ、特定タイプのトランスポートの使用、タイムアウトの設定、特定のワーク・マネージャに対するクライアントへのメッセージ配信の指示などを行うことができます。
この章の内容は次のとおりです。
すべてのOracle Event Processingサーバーには、デフォルトのHTTP pub-subサーバーがあります。Oracle Event Processing Visualizer、記録および再生のアプリケーション例では、デフォルトの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を使用して新しいチャネルを追加し、チャネルのセキュリティを構成します。
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
はOracle Event Processingを実行しているコンピュータ、port
はOracle Event Processingがリスニングするポート番号をそれぞれ指します)。たとえば、http://myhost.com:9102/pubsub
。
<supported-transport>: トランスポート・モード。デフォルトはlong-polling
トランスポートです。
<publish-without-connect-allowed>true</publish-without-connect-allowed>: HTTP pub-subサーバーに明示的に接続せずに、クライアントでチャネルへのメッセージをパブリッシュできます。
Oracle Event Processing Visualizerによって内部的に使用される次の3つのチャネルが含まれます。これらのチャネルは削除しないでください。
/evsmonitor
/evsalert
/evsdomainchange
Oracle Event Processingには、アプリケーションに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
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 Event Processing HTTP pub-subサーバーの基本的なアーキテクチャを示します。
図13-1 Oracle Event ProcessingのHTTPパブリッシュ/サブスクライブ・サーバー
この手順では、新しいHTTP pub-subサーバーを作成する方法について説明します。
構成されたHTTP pub-subサーバーのconfig.xml
の例全体は、「デフォルトのHTTP Pub-Subサーバー」を参照してください。
新しいHTTPパブリッシュ/サブスクライブ・サーバーの作成
Oracle Event Processingサーバーが実行中である場合は、停止します。
「サーバーの起動と停止」を参照してください。
XMLエディタで、Oracle Event Processingサーバーの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 Event Processingでは、次のトランスポートをサポートします。
long-polling
: このトランスポートを使用して、クライアントはOracle Event Processingサーバーからの情報をリクエストします。使用可能な情報がない場合は、Oracle Event Processingサーバーは応答しません。Oracle Event Processingサーバーが応答すると、クライアントは通常、別のリクエストをただちに送信します。
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 Event Processingサーバーを起動します。
「サーバーの起動と停止」を参照してください。
Oracle Event Processing Visualizerを使用して、チャネルを構成または追加します。
Oracle Event Processing Visualizerを使用して、チャネルのセキュリティを構成します。関連項目: HTTPパブリッシュ/サブスクライブ・サーバー・チャネルのセキュリティの構成。
この手順では、既存のHTTP pub-subサーバーを構成する方法について説明します。
構成されたHTTP pub-subサーバーのconfig.xml
の例全体は、「デフォルトのHTTP Pub-Subサーバー」を参照してください。
既存のHTTPパブリッシュ/サブスクライブ・サーバーの構成