この章では、HTTPパブリッシュ・サブスクライブ・サーバー・アダプタを使用してOracle Event Processingイベント処理ネットワークをHTTP pub-subサーバーと接続する方法について説明します。
この章の内容は次のとおりです。
HTTPパブリッシュ・サブスクライブ・サーバー(pub-subサーバー)は、ブラウザ・ベースのクライアントなどのWebクライアントが、すべてHTTP上での非同期メッセージを使用して、チャネルにサブスクライブし、利用可能なメッセージを受信し、これらのチャネルにメッセージをパブリッシュするためのメカニズムです。チャネルはJMSトピックと同じです。
Oracle Event Processingの各インスタンスには、アプリケーションにHTTPパブリッシュ/サブスクライブ機能を実装するためにプログラマが使用できるpub-subサーバーが含まれています。pub-subサーバーは、JettyやJDBCデータ・ソースなどの他のサーバー・サービスと共にconfig.xmlファイルで構成されます。pub-subサーバーはBayeuxプロトコルに基づきます(http://svn.cometd.org/trunk/bayeux/bayeux.htmlを参照)。Bayeuxプロトコルには、クライアントとサーバーがHTTPを介して非同期メッセージで通信するための規約が定義されています。
Oracle Event Processingでは、プログラマは次の組込みHTTPパブリッシュ・サブスクライブ・アダプタを使用してHTTPパブリッシュ/サブスクライブ機能にアクセスします(pub-subアダプタ)。
チャネルへのパブリッシュ: 12.1.1項「パブリッシュ用組込みPub-Subアダプタの概要」を参照してください。
チャネルへのローカル・パブリッシュ: 12.1.1.1項「ローカル・パブリッシュ」を参照してください。
チャネルへのリモート・パブリッシュ: 12.1.1.2項「リモート・パブリッシュ」を参照してください。
チャネルへのサブスクライブ: 12.1.2項「サブスクライブ用組込みPub-Subアダプタの概要」を参照してください。
Oracle Event Processingでは、組込みのpub-subアダプタの機能が不十分な場合にチャネルへのパブリッシュおよびサブスクライブのための独自のカスタムpub-subアダプタを作成するプログラマ向けのpub-sub APIも提供されます。たとえば、サブスクライブしたチャネルからの着信メッセージをフィルタ処理する場合や、ローカル・チャネルを動的に作成または破棄する場合などがあります。組込みのpub-subアダプタではこれらの機能が提供されないため、このような場合にプログラマは独自のカスタムpub-subアダプタを実装する必要があります。詳細は、第15章「カスタム・アダプタを使用した外部コンポーネントの統合」を参照してください。
デフォルトでは、Oracle Event Processingは、Oracle Event Processingイベント・タイプの自動変換を行います。かわりに、カスタム・コンバータも作成できます。12.3項「HTTP Pub-Subメッセージとイベント・タイプの間でのカスタム・コンバータの作成」を参照してください。
Oracle Event Processingでは、JSONメッセージおよびOracle Event Processingイベント・タイプ間を自動的に変換することもできます。12.1.3項「JSONメッセージとイベント・タイプの間の変換」を参照してください。
|
注意: バイト配列は、pub-subサーバーとともに使用されるイベント・タイプのプロパティ・タイプとしてサポートされません。 |
組込みpub-subアダプタは他のどのアダプタとも同様に動作します。つまり、イベント処理ネットワークのステージであり、EPNアセンブリ・ファイルで定義され、標準のコンポーネント構成ファイルで構成されます。通常の構成オプションには、チャネルの指定、ローカルまたはリモートのpub-subサーバーの指定、およびユーザー認証などが含まれます。
pub-subサーバーはBayeuxプロトコルを理解するすべてのクライアントと通信することができます。プログラマは、次のフレームワークのいずれかを使用してWebクライアントを開発します。
BayeuxプロトコルをサポートするDojo JavaScriptライブラリ(http://dojotoolkit.org/を参照)。Oracle Event Processingではこのライブラリは提供されません。
Bayeuxプロトコルを使用してpub-subサーバーと通信するFlexクライアントの開発を可能にするWebLogic Workshop Flexプラグイン。
HTTP pub-subサーバー・チャネルの確保の詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のHTTPパブリッシュ・サブスクライブ・サーバー・チャネル・セキュリティの構成に関する項を参照してください。
組込みのpub-subアダプタを使用してチャネルにイベントをパブリッシュできます。組込みのpub-subアダプタでは、次のパブリッシュ・モードがサポートされています。
詳細は、12.1項「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要」を参照してください。
図12-1に、ローカル・パブリッシュ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。任意のアダプタおよびプロセッサは必須ではなく、これらは単にpub-subアダプタの他にアプリケーションで使用可能なコンポーネントの例として示されています。
図12-1では、次の点に注意してください。
あるソースからのイベントが、Oracle Event Processingで実行中のアプリケーションのアダプタに到着します。このアダプタは必須ではなく、単に例として示されています。
アダプタからのイベントが任意のプロセッサに到着します。ここでも、このプロセッサは必須ではありません。
プロセッサからローカル・パブリッシュ用の組込みpub-subアダプタにイベントが送信されます。アダプタは、アプリケーションがデプロイされるOracle Event Processingインスタンスに構成されたローカルHTTP pub-subサーバーにイベントを送信します。pub-subアダプタでは構成されているチャネルにメッセージが送信されます。
Oracle Event Processingに構成されているローカルHTTP pub-subサーバーによって、ローカル・チャネルのすべてのサブスクライバにイベントがメッセージとして送信されます。
図12-2に、リモート・パブリッシュ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。
図12-2では、次の点に注意してください。
あるソースからのイベントが、Oracle Event Processingで実行中のアプリケーションのアダプタに到着します。任意のアダプタは必須ではなく、単に例として示されています。
アダプタからのイベントが任意のプロセッサに到着します。ここでも、このプロセッサは必須ではありません。
プロセッサからリモート・パブリッシュ用の組込みpub-subアダプタにイベントが送信されます。アダプタによって、アダプタが構成されているリモートHTTP pub-subサーバーにイベントがメッセージとして送信されます。このHTTP pub-subサーバーは別のOracle Event Processingインスタンス、WebLogic Serverインスタンス、または任意の他のサード・パーティ実装です。pub-subアダプタでは構成されているチャネルにメッセージが送信されます。
リモートHTTP pub-subサーバーによって、チャネルのすべてのサブスクライバにメッセージが送信されます。
図12-3に、サブスクライブ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。任意のプロセッサおよびビジネスPOJOは必須ではなく、これらは単にpub-subアダプタの他にアプリケーションで使用可能なコンポーネントの例として示されています。
図12-3では、次の点に注意してください。
メッセージがリモートHTTP pub-subサーバーにパブリッシュされます。これは、Oracle Event Processingの別のインスタンス、WebLogic Server、またはサード・パーティ実装です。メッセージは通常、図に示されるようなWebベースのクライアント、HTTP pub-subサーバー自身、または別のサーバー・アプリケーションによってパブリッシュされます。
Oracle Event Processingアプリケーションで実行中の組込みpub-subアダプタはHTTP pub-subサーバーをサブスクライブし、指定されたチャネルからのメッセージを受信します。アダプタでは、アダプタに構成されているイベント・タイプにメッセージが変換されます。
pub-subアダプタからプロセッサにイベントが送信されます。このプロセッサは必須ではなく、単に一般的なOracle Event Processingアプリケーションの例として示されています。
プロセッサはビジネスPOJOにイベントを送信します。ここでも、このビジネスPOJOは必須ではありません。
詳細は、12.1項「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要」を参照してください。
Oracle Event Processingでは受信JSON (JavaScript Object Notation)メッセージからイベント・タイプへの変換、およびアウトバウンドの場合はその逆の変換を自動的に実行できます。ただし、JSONメッセージ(サブスクライブでのHTTP pub-subアダプタ経由のインバウンド、またはパブリッシュでのHTTP pub-subアダプタ経由のアウトバウンド)からイベント・タイプへの変換方法、または逆方向の変換方法をカスタマイズする場合は、独自のコンバータBeanを作成する必要があります。詳細は、12.3項「HTTP Pub-Subメッセージとイベント・タイプの間のカスタム・コンバータの作成」を参照してください。
独自のコンバータ・クラスを指定せずに、メッセージとイベント・タイプの間の変換処理がOracle Event Processingによって実行されるようにする場合は、次のことが当てはまります。
Oracle Event Processingが変換に使用するイベント・タイプを指定する必要があります。詳細は、12.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」を参照してください。
サブスクライブ用のHTTPアダプタで使用されるデフォルトのコンバータでは、各着信メッセージについて指定されたタイプの新しいイベントが作成されます。指定されたイベント・タイプの各プロパティについて、メッセージを構成するJSONオブジェクトの対応するプロパティ名が参照され、見つかった場合は対応する値が設定されます。
パブリッシュ用のHTTPアダプタで使用されるデフォルトのコンバータでは、各イベントについてJSONメッセージが作成されます。指定されたイベント・タイプの各プロパティについて、出力JSONメッセージの対応する要素が作成されます。
詳細は、http://www.json.org/を参照してください。
この項では、パブリッシュ用とサブスクライブ用の両方のOracle Event Processing HTTP Pub-Subアダプタを構成する方法について説明します。
HTTP Pub-Subアダプタを作成および構成する最も簡単な方法は、Oracle Event Processing IDE for Eclipseアダプタ・ウィザードを使用することです。
詳細は、7.4.1.2項「アダプタ・ノードの作成方法」を参照してください。
このアダプタ・ウィザードを使用して基本HTTP Pub-Subアダプタ構成を作成および指定したら、12.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」を確認して構成を完了します。
この項では、HTTP Pub-Subアダプタを手動で作成および構成する方法について説明します。ご使用のアプリケーションに応じて必要とされる詳細な手順を説明します。
12.2.1項「Oracle Event Processing IDE for Eclipseを使用したHTTP Pub-Subアダプタの構成方法」で説明しているとおり、HTTP Pub-Subアダプタを作成および構成する最も簡単な方法はOracle Event Processing IDE for Eclipseアダプタ・ウィザードを使用することです。このアダプタ・ウィザードを使用して基本HTTP Pub-Subアダプタ構成を作成および指定したら、この手順を確認して構成を完了します。
組込みpub-subアダプタの構成は、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントを構成する場合と同様に、それぞれの構成ファイルで行います。これらの構成ファイルの一般情報は、1.4.2項「コンポーネント構成ファイルの概要」を参照してください。
次の手順では、アプリケーションの組込み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 Event Processingでは、このアダプタ構成が適用される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 Event ProcessingアプリケーションでパブリッシュまたはサブスクライブされるremoteHTTP pub-subサーバーのURLをそれぞれ指定します。リモートpub-subサーバーには、Oracle Event Processingの別のインスタンス、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 Event ProcessingアプリケーションをホストするOracle Event Processingインスタンスに関連付けられたローカルHTTP pub-subサーバーのパスを指定します。
デフォルトでは、各Oracle Event Processingサーバーはパス/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 Event Processingはメッセージ内の受信キー/値のペアを使用し、メッセージ・データを指定されたイベント型にマップします。
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 Event Processingアプリケーションがパブリッシュする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 Event Processingで変換が行われるよう指定できるため、この手順は省略できます。
ローカル・パブリッシュ用のOracle Event Processingインスタンスに関連付けられているローカルHTTP pub-subサーバーを使用する場合、VisualizerのOracle Event Processing管理ツールを使用して、アプリケーションで必要なチャネル・パターンとともに新しいチャネルを追加します。
詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のHTTPパブリッシュ・サブスクライブ・チャネルのセキュリティの構成方法に関する項を参照してください。
アプリケーションに追加される各組込みpub-subアダプタの宣言を追加して、EPNアセンブリ・ファイルを更新します。
12.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",
...
マニフェスト・ファイルの追加情報は、23.2.2.1項「MANIFEST.MFファイルの作成」を参照してください。
メッセージ(サブスクライブでのHTTP pub-subアダプタ経由の着信、またはパブリッシュでのHTTP pub-subアダプタ経由の発信)からイベント・タイプへの変換方法、または逆方向の変換方法をカスタマイズする場合は、独自のコンバータBeanを作成する必要があります。
インバウンドHTTP pub-subメッセージ用のカスタム・コンバータBeanでは、com.bea.wlevs.adapters.httppubsub.api.InboundMessageConverterインタフェースを実装する必要があります。このインタフェースには単一のメソッドが含まれています:
public List convert(JSONObject message) throws Exception;
messageパラメータは受信HTTP pub-subメッセージに対応します。戻り値は、イベント処理ネットワークの次のステージに渡されるイベントのListです。着信メッセージはJSON形式であることが想定されます。
アウトバウンドHTTP pub-subメッセージ用のカスタム・コンバータBeanでは、com.bea.wlevs.adapters.httppubsub.api.OutboundMessageConverterインタフェースを実装する必要があります。このインタフェースには単一のメソッドが含まれています:
public List<JSONObject> convert(Object event) throws Exception;
パラメータはEPNのソース・ノードから送られ、アウトバウンドHTTP pub-subアダプタで受信されたイベントに対応します。戻り値は、JSONメッセージのListです。
これらのAPIの詳細は、Oracle Fusion Middleware Oracle 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 Event Processingアプリケーションの要件によって、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 Event Processingアプリケーションの要件に応じて定義されます。
また、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アダプタの構成に基づいて(「12.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 Event Processingサーバーに関連付けられているサーバーです。ローカル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アダプタです。
アダプタの構成に基づいて(12.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」の例を参照)、remoteSubscriberは、http://myhost.com:9102/pubsubでホストされるリモートHTTP pub-subサーバー用に構成されたチャネル/channel3をサブスクライブします。Oracle Event Processingではこのチャネルから受信された各メッセージが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属性と一致している必要があります。
この項では次について説明します:
詳細は、次を参照してください:
表12-1には、パブリッシュ用のHTTP Pub-Subアダプタに適用できる、http-pub-sub-adapter要素の子要素がリストされます。
表12-1 パブリッシュ用コンポーネント構成のhttp-pub-sub-adapterの子要素
| 子要素 | 説明 |
|---|---|
|
|
必須。パブリッシュ用の各ローカル HTTP pub-subアダプタについて、現在のOracle Event ProcessingアプリケーションをホストするOracle Event Processingインスタンスに関連付けられたローカルHTTP pub-subサーバーのOracle Event Processingサーバー デフォルト: 新たにローカルHTTPパブリッシュ・サブスクライブ・サーバーを作成、またはデフォルトの構成を変更した場合は、該当する 注意: リモートHTTP Pub-Subアダプタにはこのオプションを指定しないでください。 |
|
|
必須。パブリッシュ用の各リモートHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のリモートHTTP Pub-SubサーバーのURLを指定します。リモートHTTPパブリッシュ・サブスクライブ・サーバーには、Oracle Event Processingの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTPパブリッシュ・サブスクライブ・サーバーを指定できます。例: http://myhost.com:9102/pubsub 注意: ローカルHTTP Pub-Subアダプタにはこのオプションを指定しないでください。 |
|
|
必須。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、HTTP Pub-Subアダプタがパブリッシュする先のチャネルを指定します。 |
|
|
オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、パブリッシュされるイベントのタイプを制限するために、 このクラスをEPNアセンブリ・ファイルに |
|
|
オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、ユーザー名を指定します。 |
|
|
オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、パスワードを指定します。
|
|
|
オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先の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>
表12-2には、サブスクライブ用のHTTP Pub-Subアダプタに適用できる、http-pub-sub-adapter要素の子要素がリストされます。
表12-2 サブスクライブ用コンポーネント構成のhttp-pub-sub-adapterの子要素
| 子要素 | 説明 |
|---|---|
|
|
必須。サブスクライブ用の各リモートHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のリモートHTTP Pub-SubサーバーのURLを指定します。リモートHTTP pub-subサーバーには、Oracle Event Processingの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP pub-subサーバーを指定できます。 注意: ローカルHTTP Pub-Subアダプタにはこのオプションを指定しないでください。 |
|
|
必須。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、HTTP Pub-Subアダプタがサブスクライブする先のチャネルを指定します。 |
|
|
必須。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、着信メッセージがマップされる このクラスをEPNアセンブリ・ファイルに |
|
|
オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、ユーザー名を指定します。 |
|
|
オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、パスワードを指定します。
|
|
|
オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先の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>