この節では、次の項目について説明します。
HTTPパブリッシュ・サブスクライブ・サーバー(pub-subサーバー)は、ブラウザ・ベースのクライアントなどのWebクライアントが、すべてHTTP上での非同期メッセージを使用して、チャネルにサブスクライブし、利用可能なメッセージを受信し、これらのチャネルにメッセージをパブリッシュするためのメカニズムです。チャネルはJMSトピックと同じです。
Oracle CEPの各インスタンスには、アプリケーションにHTTPパブリッシュ/サブスクライブ機能を実装するためにプログラマが使用できるpub-subサーバーが含まれています。pub-subサーバーは、JettyやJDBCデータ・ソースなどの他のサーバー・サービスと共にconfig.xml
ファイルで構成されます。pub-subサーバーはcometdプロジェクト(http://cometd.com/
を参照)で提案されているBayeuxプロトコルに基づいています(http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.html
を参照)。Bayeuxプロトコルには、クライアントとサーバーがHTTPを介して非同期メッセージで通信するための規約が定義されています。
Oracle CEPでは、プログラマは次の組込みHTTPパブリッシュ・サブスクライブ・アダプタを使用してHTTPパブリッシュ/サブスクライブ機能にアクセスします(pub-subアダプタ)。
チャネルへのパブリッシュ: 8.1.1項「パブリッシュ用組込みPub-Subアダプタの概要」を参照してください。
チャネルへのローカル・パブリッシュ: 8.1.1.1項「ローカル・パブリッシュ」を参照してください。
チャネルへのリモート・パブリッシュ: 8.1.1.2項「リモート・パブリッシュ」を参照してください。
チャネルへのサブスクライブ: 8.1.2項「サブスクライブ用組込みPub-Subアダプタの概要」を参照してください。
CEPでは、組込みのpub-subアダプタの機能が不十分な場合にチャネルへのパブリッシュおよびサブスクライブのための独自のカスタムpub-subアダプタを作成するプログラマ向けのpub-sub APIも提供されます。たとえば、サブスクライブしたチャネルからの着信メッセージをフィルタ処理する場合や、ローカル・チャネルを動的に作成または破棄する場合などがあります。組込みのpub-subアダプタではこれらの機能が提供されないため、このような場合にプログラマは独自のカスタムpub-subアダプタを実装する必要があります。詳細は、第14章「カスタム・アダプタの構成」を参照してください。
デフォルトでは、Oracle CEPではOracle CEPイベントの範囲で自動的に変換が実行されます。かわりに、カスタム・コンバータも作成できます。8.3項「HTTP Pub-Subメッセージとイベント・タイプの間でのカスタム・コンバータの作成」を参照してください。
Oracle CEPでは、JSONメッセージとOracle CEPイベント・タイプ間の自動変換も可能です。8.1.3項「JSONメッセージとイベント・タイプの間の変換」を参照してください。
組込みpub-subアダプタは他のどのアダプタとも同様に動作します。つまり、イベント処理ネットワークのステージであり、EPNアセンブリ・ファイルで定義され、標準のコンポーネント構成ファイルで構成されます。通常の構成オプションには、チャネルの指定、ローカルまたはリモートのpub-subサーバーの指定、およびユーザー認証などがあります。
pub-subサーバーはBayeuxプロトコルを理解するすべてのクライアントと通信することができます。プログラマは、次のフレームワークのいずれかを使用してWebクライアントを開発します。
BayeuxプロトコルをサポートするDojo JavaScriptライブラリ(http://dojotoolkit.org/
を参照)。Oracle CEPではこのライブラリは提供されません。
Bayeuxプロトコルを使用してpub-subサーバーと通信するFlexクライアントの開発を可能にするWebLogic Workshop Flexプラグイン。
HTTP pub-subサーバー・チャネルの確保の詳細は、『Oracle Complex Event Processing管理者ガイド』のHTTPパブリッシュ・サブスクライブ・サーバー・チャネル・セキュリティに関する項を参照してください。
組込みのpub-subアダプタを使用してチャネルにイベントをパブリッシュできます。組込みのpub-subアダプタでは、次のパブリッシュ・モードがサポートされています。
詳細は、8.1項「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要」を参照してください。
図8-1に、ローカル・パブリッシュ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。任意のアダプタおよびプロセッサは必須ではなく、これらは単にpub-subアダプタの他にアプリケーションで使用可能なコンポーネントの例として示されています。
図8-1では、次の点に注意してください。
あるソースからのイベントが、Oracle CEPで実行中のアプリケーションのアダプタに到着します。このアダプタは必須ではなく、単に例として示されています。
アダプタからのイベントが任意のプロセッサに到着します。ここでも、このプロセッサは必須ではありません。
プロセッサからローカル・パブリッシュ用の組込みpub-subアダプタにイベントが送信されます。アダプタによって、アプリケーションがデプロイされているOracle CEPインスタンスに構成されているローカルのHTTP pub-subサーバーにイベントが送信されます。pub-subアダプタでは構成されているチャネルにメッセージが送信されます。
Oracle CEPに構成されているローカルHTTP pub-subサーバーによって、ローカル・チャネルのすべてのサブスクライバにイベントがメッセージとして送信されます。
図8-2に、リモート・パブリッシュ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。
図8-2では、次の点に注意してください。
あるソースからのイベントが、Oracle CEPで実行中のアプリケーションのアダプタに到着します。任意のアダプタは必須ではなく、単に例として示されています。
アダプタからのイベントが任意のプロセッサに到着します。ここでも、このプロセッサは必須ではありません。
プロセッサからリモート・パブリッシュ用の組込みpub-subアダプタにイベントが送信されます。アダプタによって、アダプタが構成されているリモートHTTP pub-subサーバーにイベントがメッセージとして送信されます。このHTTP pub-subサーバーは別のOracle CEPインスタンス、WebLogic Serverインスタンス、または任意の他のサード・パーティ実装です。pub-subアダプタでは構成されているチャネルにメッセージが送信されます。
リモートHTTP pub-subサーバーによって、チャネルのすべてのサブスクライバにメッセージが送信されます。
図8-3に、サブスクライブ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。任意のプロセッサおよびビジネスPOJOは必須ではなく、これらは単にpub-subアダプタの他にアプリケーションで使用可能なコンポーネントの例として示されています。
図8-3では、次の点に注意してください。
メッセージがリモートHTTP pub-subサーバーにパブリッシュされます。これは、Oracle CEPの別のインスタンス、WebLogic Server、またはサード・パーティ実装です。メッセージは通常、図に示されるようなWebベースのクライアント、HTTP pub-subサーバー自身、または別のサーバー・アプリケーションによってパブリッシュされます。
Oracle CEPアプリケーションで実行中の組込みpub-subアダプタはHTTP pub-subサーバーをサブスクライブし、指定されたチャネルからのメッセージを受信します。アダプタでは、アダプタに構成されているイベント・タイプにメッセージが変換されます。
pub-subアダプタからプロセッサにイベントが送信されます。このプロセッサは必須ではなく、単に一般的なOracle CEPアプリケーションの例として示されています。
プロセッサはビジネスPOJOにイベントを送信します。ここでも、このビジネスPOJOは必須ではありません。
詳細は、8.1項「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要」を参照してください。
Oracle CEPでは受信JSON (JavaScript Object Notation)メッセージからイベント・タイプへの変換、およびアウトバウンドの場合はその逆の変換を自動的に実行できます。ただし、JSONメッセージ(サブスクライブでのHTTP pub-subアダプタ経由のインバウンド、またはパブリッシュでのHTTP pub-subアダプタ経由のアウトバウンド)からイベント・タイプへの変換方法、または逆方向の変換方法をカスタマイズする場合は、独自のコンバータBeanを作成する必要があります。詳細は、8.3項「HTTP Pub-Subメッセージとイベント・タイプの間のカスタム・コンバータの作成」を参照してください。
独自のコンバータ・クラスを指定せずに、メッセージとイベント・タイプの間の変換処理がOracle CEPによって実行されるようにする場合は、次のことが当てはまります。
Oracle CEPの変換で使用されるイベント・タイプを指定する必要があります。詳細は、8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」を参照してください。
サブスクライブ用のHTTPアダプタで使用されるデフォルトのコンバータでは、各着信メッセージについて指定されたタイプの新しいイベントが作成されます。指定されたイベント・タイプの各プロパティについて、メッセージを構成するJSONオブジェクトの対応するプロパティ名が参照され、見つかった場合は対応する値が設定されます。
パブリッシュ用のHTTPアダプタで使用されるデフォルトのコンバータでは、各イベントについてJSONメッセージが作成されます。指定されたイベント・タイプの各プロパティについて、出力JSONメッセージの対応する要素が作成されます。
詳細は、http://www.json.org/
を参照してください。
この項では、パブリッシュ用とサブスクライブ用の両方のOracle CEP HTTP Pub-Subアダプタを構成する方法について説明します。
注意: この項では、Oracle CEPアプリケーションがEPNアセンブリ・ファイルとコンポーネント構成ファイルを使用してすでに作成済であり、組込みのpub-subアダプタを使用するようにアプリケーションを更新する必要があると想定しています。まだOracle CEPアプリケーションを作成していない場合は、Oracle CEPアプリケーションの作成の概要について、第1章「Oracle CEPアプリケーションの作成の概要」を参照してください。 |
HTTP Pub-Subアダプタを作成および構成する最も簡単な方法は、Oracle CEP IDE for Eclipseアダプタ・ウィザードを使用することです。
詳細は、6.4.1.2項「アダプタ・ノードの作成方法」を参照してください。
このアダプタ・ウィザードを使用して基本HTTP Pub-Subアダプタ構成を作成および指定したら、8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」を確認して構成を完了します。
この項では、HTTP Pub-Subアダプタを手動で作成および構成する方法について説明します。ご使用のアプリケーションに応じて必要とされる詳細な手順を説明します。
8.2.1項「Oracle CEP IDE for Eclipseを使用したHTTP Pub-Subアダプタの構成方法」で説明しているとおり、HTTP Pub-Subアダプタを作成および構成する最も簡単な方法はOracle CEP IDE for Eclipseアダプタ・ウィザードを使用することです。このアダプタ・ウィザードを使用して基本HTTP Pub-Subアダプタ構成を作成および指定したら、この手順を確認して構成を完了します。
組込みpub-subアダプタの構成は、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントを構成する場合と同様に、それぞれの構成ファイルで行います。これらの構成ファイルの概要は、1.1.5項「コンポーネント構成ファイル」を参照してください。
次の手順では、アプリケーションの組込みpub-subアダプタを構成するための主な手順を示します。簡略化のため、この手順ではアプリケーションのすべてのコンポーネントが1つの構成XMLファイルに構成され、アプリケーションのこのファイルがすでに作成されていると想定します。
組込みpub-subアダプタの構成が記述された完全なXSDスキーマは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。
HTTP Pub-Subアダプタを手動で構成するには:
任意のXMLエディタを使用して構成XMLファイルを開きます。
構成する必要のある各組込みpub-subアダプタについて、config
ルート要素のhttp-pub-sub-adapter
子要素を追加します。<name>
子要素を使用して一意に識別します。このname値は、後で、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルにあるwlevs:adapter
タグのid
属性として使用します。このように指定することで、Oracle CEPでは、このアダプタ構成が適用されるEPNアセンブリ・ファイル内の特定のアダプタを認識できます。
たとえば、構成ファイルにはすでにプロセッサが含まれており(簡略化のため内容は省略します)、3つの組込みpub-subアダプタの各インスタンスを構成する必要があると想定します。更新されたファイルは、次のようになります。アダプタの構成の詳細は、後述します。
<?xml version="1.0" encoding="UTF-8"?> <n1:config xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/application wlevs_application_config.xsd" xmlns:n1="http://www.bea.com/ns/wlevs/config/application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <processor> ... </processor> <http-pub-sub-adapter> <name>remotePublisher</name> ... </http-pub-sub-adapter> <http-pub-sub-adapter> <name>remoteSubscriber</name> ... </http-pub-sub-adapter> <http-pub-sub-adapter> <name>localPublisher</name> ... </http-pub-sub-adapter> </n1:config>
(パブリッシュおよびサブスクライブ用の)各リモートpub-subアダプタについて、http-pub-sub-adapter
のserver-url
子要素を追加して、Oracle CEPアプリケーションでパブリッシュまたはサブスクライブされるremoteHTTP pub-subサーバーのURLをそれぞれ指定します。リモートpub-subサーバーには、Oracle CEPの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP pub-subサーバーを指定できます。例:
<http-pub-sub-adapter>
<name>remotePublisher</name>
<server-url>http://myhost.com:9102/pubsub</server-url>
...
</http-pub-sub-adapter>
この例ではremotePublisher
アダプタがイベントをパブリッシュする対象のリモートHTTPパブリッシュ/サブスクライブ・サーバーのURLはhttp://myhost.com:9102/pubsub
となります。
パブリッシュ用の各ローカル pub-subアダプタについて、server-context-path
要素を追加して、現在のOracle CEPアプリケーションをホストするOracle CEPインスタンスに関連付けられたローカルHTTP pub-subサーバーのパスを指定します。
デフォルトでは、各Oracle CEPサーバーはパス/pubsub
のHTTP pub-subサーバーで構成されていますが、新しいローカルHTTP pub-subサーバーを作成した場合や、デフォルトの構成を変更した場合は、サーバーのconfig.xml
ファイルのhttp-pubsub
要素のpath
子要素の値を指定します。例:
<http-pub-sub-adapter>
<name>localPublisher</name>
<server-context-path>/pubsub</server-context-path>
...
</http-pub-sub-adapter>
ローカルまたはリモート、パブリッシュまたはサブスクライブにかかわらず、すべてのpub-subアダプタについてchannel
子要素を追加して、pub-subアダプタがパブリッシュまたはサブスクライブするチャネルを指定します。例:
<http-pub-sub-adapter>
<name>localPublisher</name>
<server-context-path>/pubsub</server-context-path>
<channel>/channel2</channel>
</http-pub-sub-adapter>
この例ではlocalPublisher
パブリッシュ/サブスクライブ・アダプタはパターン/channel2
を用いてローカル・チャネルにパブリッシュします。
サブスクライブ用のすべてのpub-subアダプタについて、受信メッセージがマップされるJavaBeanを指定するevent-type
要素を追加します。この要素はすべてのサブスクライブ用アダプタで指定する必要があります。実行時、Oracle CEPでは受信メッセージのキーと値のペアを使用して、メッセージ・データが指定のイベント・タイプにマップされます。
event-type
要素で指定されたイベントにのみパブリッシュするイベントの種類を限定する場合はオプションでパブリッシュ用のパブリッシュ/サブスクライブ・アダプタにevent-type
要素を使用できます。それ以外の場合はパブリッシュ/サブスクライブ・アダプタに送信されるすべてのイベントがパブリッシュされます。例:
<http-pub-sub-adapter>
<name>remoteSubscriber</name>
<server-url>http://myhost.com:9102/pubsub</server-url>
<channel>/channel3</channel>
<event-type>com.mycompany.httppubsub.PubsubEvent</event-type>
</http-pub-sub-adapter>
このイベント・タイプが、wlevs:event-type-repository
要素の子要素として指定することによってEPNアセンブリ・ファイルに登録されていることを必ず確認してください。
最後に、Oracle CEPアプリケーションがパブリッシュするHTTP pub-subサーバーでユーザー認証が要求される場合は、user
およびpassword
(または encrypted-password
)要素を追加してユーザー名とパスワードまたは暗号化されたパスワードを指定します。例:
<http-pub-sub-adapter> <name>remotePublisher</name> <server-url>http://myhost.com:9102/pubsub</server-url> <channel>/channel1</channel> <event-type>com.mycompany.httppubsub.PubsubEvent</event-type> <user>wlevs</user> <password>wlevs</password> </http-pub-sub-adapter>
着信または発信メッセージがイベント・タイプに変換される方法をカスタマイズする必要がある場合は、必要に応じてコンバータJavaクラスを作成します。メッセージと特定のイベント・タイプの間のマップ・プロパティ名に基づいてOracle CEPで変換が行われるよう指定できるため、この手順は省略できます。
Oracle CEPインスタンスに関連付けられたローカルのHTTP pub-subサーバーをローカル・パブリッシュ用に使用する場合は、Oracle CEP管理ツールのVisualizerを使用して、アプリケーションで必要なチャネル・パターンで新しいチャネルを作成します。
詳細は、『Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のHTTPパブリッシュ・サブスクライブ・チャネルのセキュリティ構成に関する項を参照してください。
アプリケーションに追加される各組込みpub-subアダプタの宣言を追加して、EPNアセンブリ・ファイルを更新します。
8.4項「HTTP Pub-SubアダプタのEPNアセンブリ・ファイルの構成」を参照してください。
Import-Package
ヘッダーにパッケージcom.bea.core.encryption
を追加して、アプリケーションのMANIFEST.MF
ファイルを更新します。例:
Import-Package:
com.bea.core.encryption
com.bea.wlevs.adapter.defaultprovider;version="11.1.1.4_0",
...
マニフェスト・ファイルの追加情報は、24.2.2.1項「MANIFEST.MFファイルの作成」を参照してください。
メッセージ(サブスクライブでのHTTP pub-subアダプタ経由の着信、またはパブリッシュでのHTTP pub-subアダプタ経由の発信)からイベント・タイプへの変換方法、または逆方向の変換方法をカスタマイズする場合は、独自のコンバータBeanを作成する必要があります。
インバウンドHTTP pub-subメッセージ用のカスタム・コンバータBeanでは、com.bea.wlevs.adapters.httppubsub.api.InboundMessageConverter
インタフェースを実装する必要があります。このインタフェースには1つのメソッドが含まれています。
public List convert(JSONObject message) throws Exception;
message
パラメータは受信HTTP pub-subメッセージに対応します。戻り値は、イベント処理ネットワークの次のステージに渡されるイベントのList
です。受信メッセージはJSON形式であることが想定されます。
アウトバウンドHTTP pub-subメッセージ用のカスタム・コンバータBeanでは、com.bea.wlevs.adapters.httppubsub.api.OutboundMessageConverter
インタフェースを実装する必要があります。このインタフェースには1つのメソッドが含まれています。
public List<JSONObject> convert(Object event) throws Exception;
パラメータはEPNのソース・ノードから送られ、アウトバウンドHTTP pub-subアダプタで受信されたイベントに対応します。戻り値は、JSONメッセージのList
です。
これらのAPIの詳細は、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。
次の例は、InboundMessageConverter
およびOutboundMessageConvert
の両方を実装するカスタム・コンバータBeanのJavaソースを示します。このBeanはインボウンドおよびアウトバウンドの両方のHTTP pub-subアダプタで使用できます。
package com.sample.httppubsub; import com.bea.wlevs.adapters.httppubsub.api.InboundMessageConverter; import com.bea.wlevs.adapters.httppubsub.api.OutboundMessageConverter; import com.bea.httppubsub.json.JSONObject; import java.util.List; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class TestConverter implements InboundMessageConverter, OutboundMessageConverter { public List convert(JSONObject message) throws Exception { List eventCollection = new ArrayList(); PubsubTestEvent event = new PubsubTestEvent(); event.setMessage("From TestConverter: " + message); eventCollection.add(event); return eventCollection; } public List<JSONObject> convert(Object event) throws Exception { List<JSONObject> list = new ArrayList<JSONObject>(1); Map map = new HashMap(); map.put("message", ((PubsubTestEvent) event).getMessage()); list.add(new JSONObject(map)); return list; } }
JavaオブジェクトをJSON形式に変換するためにGSON Javaライブラリを使用できます。
詳細は、次を参照してください:
イベント処理ネットワークの各HTTP Pub-Subアダプタについて、アプリケーションのEPNアセンブリ・ファイルに対応するwlevs:adapter
要素を追加する必要があります。provider
属性を使用して、HTTP Pub-Subアダプタがパブリッシュ用かサブスクライブ用かを指定します。
EPNの他の段階と同様に、リスナーをwlevs:adapter
要素に追加して、HTTP Pub-Subアダプタをイベント処理ネットワークに統合します。ご使用のOracle CEPアプリケーションの要件によって、EPNでHTTP Pub-Subアダプタが適合する場所が決まります。
この項では次について説明します:
詳細は、次を参照してください:
パブリッシュ(ローカルまたはリモートのいずれか)用の組込みpub-subアダプタを使用する場合は、次に示すように provider
属性をhttppub
に設定します。
<wlevs:adapter id="remotePublisher" provider="httppub"/>
id
属性の値(この場合はremotePublisher
)は、構成ファイルでこの組込みpub-subアダプタに指定された名前と一致している必要があります。EPNアセンブリ・ファイル内のパブリッシュ用組込みアダプタの宣言ではアダプタがローカルまたはリモートのどちらであるかが指定されません。この指定はアダプタ構成ファイルで行います。
EPNの他のステージと同様に、wlevs:adapter
要素にリスナーを追加してpub-subアダプタをイベント処理ネットワークに統合します。通常、サブスクライブ用のpub-subアダプタは(メッセージを受信するため) EPNの最初のステージであり、パブリッシュ用のpub-subアダプタは(メッセージを送信するため)より後方のステージです。ただし、pub-subアダプタが配置されるネットワーク内の場所は、独自のOracle CEPアプリケーションの要件に応じて定義されます。
また、pub-subアダプタで使用されるイベント・タイプがwlevs:event-type-repository
要素を使用してイベント・タイプ・リポジトリに登録されていることを必ず確認してください。
次のEPNファイルの例は、ローカルおよびリモートのパブリッシュ用の2つの組込みpub-subアダプタが含まれたイベント処理ネットワークを示します。例の後に説明があります。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:wlevs="http://www.bea.com/ns/wlevs/spring" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://www.bea.com/ns/wlevs/spring http://www.bea.com/ns/wlevs/spring/spring-wlevs.xsd"> <wlevs:event-type-repository> <wlevs:event-type type-name="com.mycompany.httppubsub.PubsubEvent"> <wlevs:class>com.mycompany.httppubsub.PubsubEvent</wlevs:class> </wlevs:event-type> </wlevs:event-type-repository> <wlevs:adapter id="receiveFromFeed" class="com.mycompany.httppubsub.ReceiveFromFeed"> </wlevs:adapter> <wlevs:processor id="pubsubProcessor" /> <wlevs:adapter id="remotePublisher" provider="httppub"/> <wlevs:adapter id="localPublisher" provider="httppub"/> <wlevs:channel id="feed2processor"> <wlevs:source ref="receiveFromFeed"/> <wlevs:listener ref="pubsubProcessor"/> </wlevs:channel> <wlevs:channel id="pubsubStream"> <wlevs:listener ref="remotePublisher"/> <wlevs:listener ref="localPublisher"/> <wlevs:source ref="pubsubProcessor"/> </wlevs:channel> </beans>
上記の例で注目すべき点は以下のとおりです。
receiveFromFeed
アダプタはあるデータ・フィードからのデータを受信するカスタム・アダプタです。このアダプタの詳細はこのトピックには関係ありません。receiveFromFeed
アダプタは、feed2processor
ストリームを介してpubsubProcessor
にイベントを送信します。
pubsubProcessor
はreceiveFromFeed
アダプタからのイベントを処理し、pubsubStream
チャネルに送信します。イベントはここからremotePublisher
とlocalPublisher
の2つの組込みpub-subアダプタに送信されます。
これらの2つのpub-subアダプタの構成に基づいて(「8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」の例を参照)、remotePublisher
ではcom.mycompany.httppubsub.PubsubEvent
タイプのイベントのみが、http://myhost.com:9102/pubsub.
でホストされるリモートHTTP pub-subサーバーのチャネル/channel1
にパブリッシュされます。
localPublisher
pub-subアダプタは受信したすべてのイベントをローカルHTTP pub-subサーバーにパブリッシュします。つまり、これはアプリケーションが実行中のOracle CEPサーバーに関連付けられているサーバーです。ローカルpub-subサーバーのパスは/pubsub
であり、アダプタがパブリッシュするチャネルは/channel2
です。
次のEPNファイルの例は、サブスクライブ用の組込みpub-subアダプタが含まれたイベント処理ネットワークを示します。例の後に説明があります。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:wlevs="http://www.bea.com/ns/wlevs/spring" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://www.bea.com/ns/wlevs/spring http://www.bea.com/ns/wlevs/spring/spring-wlevs.xsd"> <wlevs:event-type-repository> <wlevs:event-type type-name="com.mycompany.httppubsub.PubsubEvent"> <wlevs:class>com.mycompany.httppubsub.PubsubEvent</wlevs:class> </wlevs:event-type> </wlevs:event-type-repository> <wlevs:adapter id="remoteSubscriber" provider="httpsub"> <wlevs:listener ref="myEventBean"/> </wlevs:adapter> <bean id="myEventBean" class="com.mycompany.httppubsub.MyEventBean"> </bean> <wlevs:channel id="pubsubStream" advertise="true"> <wlevs:listener> <bean id="mySink" class="com.mycompany.httppubsub.MySink"/> </wlevs:listener> <wlevs:source ref="myEventBean"/> </wlevs:channel> </beans>
上記の例で注目すべき点は以下のとおりです。
remoteSubscriber
アダプタはサブスクライブ用の組込みpub-subアダプタです。
アダプタの構成に基づいて(8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」の例を参照)、remoteSubscriber
は、http://myhost.com:9102/pubsub
でホストされるリモートHTTP pub-subサーバー用に構成されたチャネル/channel3
をサブスクライブします。Oracle CEPではこのチャネルから受信された各メッセージがcom.mycompany.httppubsub.PubsubEvent
のインスタンスに変換され、myEventBean
というSpring Beanに送信されます。
myEventBean
はcom.mycompany.httppubsub.MyEventBean
クラスの記述に従ってイベントを処理し、pubsubStream
チャネルを通じてmySink
イベント・ソースをイベントに渡します。これらのコンポーネントの詳細はHTTP pub-subアダプタのトピックと関係がないため、この項では取り上げません。
サブスクライブ用の組込みpub-subアダプタを使用する場合は、次に示すように、provider属性をhttpsub
に設定します。
<wlevs:adapter id="remoteSubscriber" provider="httpsub"/>
id
属性の値(この場合はremoteSubscriber
)は、構成ファイルでこの組込みpub-subアダプタに指定された名前と一致している必要があります。
id
属性の値(この場合はremoteSubscriber
)は、構成ファイルのこのHTTP Pub-Subアダプタに指定した名前と一致している必要があります。構成ファイルでは、このアダプタがサブスクライブする対象のHTTP Pub-Subサーバーを構成します。
次のサンプルのEPNファイルは、サブスクライブ用の1つの組込みpub-subアダプタを持つイベント処理ネットワークを示しています。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:wlevs="http://www.bea.com/ns/wlevs/spring" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://www.bea.com/ns/wlevs/spring http://www.bea.com/ns/wlevs/spring/spring-wlevs.xsd"> <wlevs:event-type-repository> <wlevs:event-type type-name="com.mycompany.httppubsub.PubsubEvent"> <wlevs:class>com.mycompany.httppubsub.PubsubEvent</wlevs:class> </wlevs:event-type> </wlevs:event-type-repository> <wlevs:adapter id="remoteSubscriber" provider="httpsub"> <wlevs:listener ref="myEventBean"/> </wlevs:adapter> <bean id="myEventBean" class="com.mycompany.httppubsub.MyEventBean"> </bean> <wlevs:channel id="pubsubStream" advertise="true"> <wlevs:listener> <bean id="mySink" class="com.mycompany.httppubsub.MySink"/> </wlevs:listener> <wlevs:source ref="myEventBean"/> </wlevs:channel> </beans>
HTTP Pub-Subアダプタの構成は、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントを構成する場合と同様に、それぞれの構成ファイルで行います。
HTTP Pub-Subアダプタを構成する場合のルート要素はhttp-pub-sub-adapter
です。特定のアダプタのname
子要素は、このアダプタが宣言されているEPNアセンブリ・ファイル内の対応するwlevs:adapter
要素のid
属性と一致している必要があります。
この項では次について説明します:
詳細は、次を参照してください:
表8-1には、パブリッシュ用のHTTP Pub-Subアダプタに適用できる、http-pub-sub-adapter
要素の子要素がリストされます。
表8-1 パブリッシュ用コンポーネント構成のhttp-pub-sub-adapterの子要素
子要素 | 説明 |
---|---|
|
必須。パブリッシュ用の各ローカルHTTP Pub-Subアダプタについて、現在のOracle CEPアプリケーションをホストするOracle CEPインスタンスに関連付けられたローカルHTTP Pub-SubサーバーのOracle CEPサーバーの デフォルト: 新たにローカルHTTPパブリッシュ・サブスクライブ・サーバーを作成、またはデフォルトの構成を変更した場合は、該当する 注意: リモートHTTP Pub-Subアダプタにはこのオプションを指定しないでください。 |
|
必須。パブリッシュ用の各リモートHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のリモートHTTP Pub-SubサーバーのURLを指定します。リモートHTTP Pub-Subサーバーには、Oracle CEPの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP Pub-Subサーバーを指定できます。例: http://myhost.com:9102/pubsub 注意: ローカルHTTP Pub-Subアダプタにはこのオプションを指定しないでください。 |
|
必須。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、HTTP Pub-Subアダプタがパブリッシュする先のチャネルを指定します。 |
|
オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、パブリッシュされるイベントのタイプを制限するために、 このクラスをEPNアセンブリ・ファイルに |
|
オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、ユーザー名を指定します。 |
|
オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、パスワードを指定します。
|
|
オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証とパスワードの暗号化が必要な場合は、 暗号化されたパスワードを指定します。
|
次の構成ファイルは、パブリッシュ用のHTTP Pub-Subアダプタを構成する場合の完全な例を示しています。リモートとローカルの両方のパブリッシャが含まれています。
<?xml version="1.0" encoding="UTF-8"?> <n1:config xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/application wlevs_application_config.xsd" xmlns:n1="http://www.bea.com/ns/wlevs/config/application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <http-pub-sub-adapter> <name>remotePublisher</name> <server-url>http://myhost.com:9102/pubsub</server-url> <channel>/channel1</channel> <event-type>com.mycompany.httppubsub.PubsubEvent</event-type> <user>wlevs</user> <password>wlevs</password> </http-pub-sub-adapter> <http-pub-sub-adapter> <name>localPublisher</name> <server-context-path>/pubsub</server-context-path> <channel>/channel2</channel> </http-pub-sub-adapter> <http-pub-sub-adapter> <name>remoteSubscriber</name> <server-url>http://myhost.com:9102/pubsub</server-url> <channel>/channel3</channel> <event-type>com.mycompany.httppubsub.PubsubEvent</event-type> </http-pub-sub-adapter> </n1:config>
表8-2には、サブスクライブ用のHTTP Pub-Subアダプタに適用できる、http-pub-sub-adapter
要素の子要素がリストされます。
表8-2 サブスクライブ用コンポーネント構成のhttp-pub-sub-adapterの子要素
子要素 | 説明 |
---|---|
|
必須。サブスクライブ用の各リモートHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のリモートHTTP Pub-SubサーバーのURLを指定します。リモートHTTP Pub-Subサーバーには、Oracle CEPの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP Pub-Subサーバーを指定できます。 注意: ローカルHTTP Pub-Subアダプタにはこのオプションを指定しないでください。 |
|
必須。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、HTTP Pub-Subアダプタがサブスクライブする先のチャネルを指定します。 |
|
必須。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、着信メッセージがマップされる このクラスをEPNアセンブリ・ファイルに |
|
オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、ユーザー名を指定します。 |
|
オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、パスワードを指定します。
|
|
オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証とパスワードの暗号化が必要な場合は、暗号化されたパスワードを指定します。
|
次の構成ファイルは、サブスクライブ用のHTTP Pub-Subアダプタを構成する場合の完全な例を示しています。
<?xml version="1.0" encoding="UTF-8"?> <n1:config xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/application wlevs_application_config.xsd" xmlns:n1="http://www.bea.com/ns/wlevs/config/application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <http-pub-sub-adapter> <name>remotePublisher</name> <server-url>http://myhost.com:9102/pubsub</server-url> <channel>/channel1</channel> <event-type>com.mycompany.httppubsub.PubsubEvent</event-type> <user>wlevs</user> <password>wlevs</password> </http-pub-sub-adapter> <http-pub-sub-adapter> <name>localPublisher</name> <server-context-path>/pubsub</server-context-path> <channel>/channel2</channel> </http-pub-sub-adapter> <http-pub-sub-adapter> <name>remoteSubscriber</name> <server-url>http://myhost.com:9102/pubsub</server-url> <channel>/channel3</channel> <event-type>com.mycompany.httppubsub.PubsubEvent</event-type> </http-pub-sub-adapter> </n1:config>