この節では、次の項目について説明します。
Oracle CEPイベント・リポジトリ機能を使用すると、イベント処理ネットワーク(EPN)コンポーネントを離れたイベントをデータベース表などのストアに永続化し、後からそれらを再生したり、イベントBeanなどのコンポーネントからイベントに対する問合せを明示的に実行したりすることができます。
この機能の一般的な使用例には、現在実行中のアプリケーションの問題をデバッグする機能があります。問題発生時にEPNのノードでイベントを記録していた場合は、後から同じイベント・リストを再生し、デバッグ目的のために問題のシナリオを再現できます。
次の図は、イベント・レコードと再生の例のEPNを示し、イベントがどの時点で記録され、どこで再生されるかを示しています。simpleEventSource
アダプタはイベントを記録が構成されています。図に示すように、イベントがアダプタを離れた時点で記録が行われます。eventStream
チャネルではイベントの再生が構成されています。図に示すように、イベントがチャネルに到着した時点で再生が行われます。
この項では次について説明します:
イベントを記録する場合、Oracle CEPサーバーは永続イベント・ストアにそのイベントを格納します。Oracle CEPサーバーが提供またはユーザー自身で定義する独自の永続イベント・ストアを使用できます。
デフォルトでは、Oracle CEPは、Oracle CEPサーバーにバンドルされているBerkeley DBインスタンスを使用して記録されたイベントを格納します。
Berkeley DBは、産業レベルの信頼性や可用性のある、高速でスケーラブルなトランザクション・データベース・エンジンです。詳細は、次を参照してください。
http://www.oracle.com/technology/products/berkeley-db/je/index.html
http://www.oracle.com/technology/documentation/berkeley-db/je/index.html
デフォルトでは、Oracle CEPサーバーは次の場所にBerkeley DBインスタンスを作成します。
ORACLE_CEP_HOME
/user_projects/domains/
domainname
/
servername
/bdb
ORACLE_CEP_HOME
は、Oracle CEP (/oracle_home
など)をインストールしたディレクトリ、domainname
はドメイン名、そしてservername
は、(/oracle_cep/user_projects/domains/mydomain/myserver
など)サーバー名です。
12.2.1項「Oracle CEPサーバーのイベント・ストアの構成」の説明に従って、bdb-config
要素db-env-path
子要素を構成することによりこのデフォルトを変更できます。
オプションで、カスタム永続イベント・ストア・プロバイダを作成して記録したイベントを格納できます。たとえば、OracleデータベースまたはDerbyのリレーショナル・データベース管理システム(RDBMS)を永続イベント・ストアとして指定できます。
詳細は、12.3項「カスタム・イベント・ストア・プロバイダの作成」を参照してください。
記録したイベントを格納するための実際のデータベース・スキーマは作成しません。レコードおよび再生機能を使用するアプリケーションをデプロイし、記録が始めると、Oracle CEPサーバーが自動的に実際のデータベース・スキーマを作成します。
詳細は、12.2.5項「Berkeleyデータベース・スキーマの説明」を参照してください。
プロセッサ、アダプタ、ストリーム、イベントBeanなど、イベント処理ネットワーク(EPN)でイベントを生成する任意のコンポーネントの記録を構成できます。プロセッサおよびストリームでは常にイベントが生成されます。アダプタおよびイベントBeanではEventSource
インタフェースを実装する必要があります。また、EPNの異なるコンポーネントからのイベントを異なる永続ストアに格納したり、すべてのイベントを同じストアに格納したりするよう構成できます。コンポーネントによって出力されるイベントのみが記録されることに注意してください。
コンポーネントのイベントの記録を有効にするには、構成ファイルを更新し、record-parameters
要素を追加します。record-parameters
の子要素を使用して、イベントの記録先となるイベント・ストア、記録が行われる最初の期間、格納するイベント・タイプのリストなどを指定します。
アプリケーションのデプロイが完了し、イベントがネットワーク内で循環を開始すると、特定の開始時間を構成した場合は記録が自動的に開始され、または管理ツールを使用して記録が動的に開始されます。記録が構成された各コンポーネントについて、Oracle CEPではコンポーネントを離れたイベントが、記録時のタイム・スタンプと共に適切なストアに格納されます。
プロセッサ、アダプタ、ストリーム、イベントBeanなど、イベント処理ネットワーク(EPN)の任意のコンポーネントの再生を構成できます。一般に、再生コンポーネントはネットワーク内でイベントを記録するノードよりも後のノードです。
コンポーネントのイベントの再生を有効にするには、構成ファイルを更新し、playback-parameters
要素を追加します。playback-parameters
の子要素を使用して、イベントを再生するイベント・ストア、再生するイベント・タイプのリスト(デフォルトではすべて再生)、再生する記録されたイベントの期間などを指定します。デフォルトでは、Oracle CEPでは正確な速度でイベントが再生されますが、イベントが記録元のコンポーネントを離れたときの元の速度よりも速いまたは遅い速度で再生されるように構成できます。
アプリケーションのデプロイが完了し、イベントがネットワーク内で循環を開始すると、管理ツール(Oracle CEP Visualizerまたはwlevs.Admin
)を使用して再生を開始する必要があります。Oracle CEPでは適切な永続ストアからイベントが読み込まれ、EPNの適切な場所に挿入されます。
コンポーネントが再生イベントを取得した場合は、元のイベントとまったく同じように見えることに注意してください。また、ネットワークの後ろのコンポーネントでイベントの記録が構成されている場合、Oracle CEPでは再生イベントが「実際の」イベントと共に記録されます。
詳細は、次を参照してください:
『Oracle CEP Visualizerユーザーズ・ガイド』のEPNを通じて流れるイベントの記録と再生に関する項
『Oracle CEP管理者ガイド』のイベントの記録および再生を制御するためのコマンドに関する項
イベント・ストアAPIを使用して、記録時間の範囲とイベント記録元のコンポーネントを指定することで、ストア内の過去のイベントに対する問合せを実行できます。実際に使用する問合せはイベント・リポジトリ・プロバイダによって異なります。たとえば、Oracle CEPに付属のデフォルト永続イベント・ストア・プロバイダではOracle CQLまたはEPLを使用します。これらのAPIを使用してイベント・ストアの古いイベントを削除できます。
この項のサンプル・コードは、ORACLE_CEP_HOME
\ocep_11.1\samples\source\applications\recplay
ディレクトリにあるイベント・レコードと再生の例からの抜粋です。ORACLE_CEP_HOME
は、d:\oracle_cep
などのOracle CEPのメイン・インストール・ディレクトリです。
例の実行とビルドの詳細は、『Oracle CEPスタート・ガイド』のイベントの記録および再生の例に関する項を参照してください。
次の手順で説明しているとおり、イベント・リポジトリを使用する方法に応じて異なるタスクを実行する必要があります。追加の詳細を示す節を参照してください。
注意: この項では、コンポーネント構成ファイルを使用してOracle CEPアプリケーションをすでに作成済であり、コンポーネントがイベントを記録および再生するようにアプリケーションを更新することを想定しています。まだ作成していない場合は、詳細は第1章「Oracle CEPアプリケーションの作成の概要」を参照してください。 |
アプリケーションのイベントの記録と再生を構成するには:
オプションでは、Oracle CEPサーバー・インスタンスのためBerkeleyデータベース・イベント・ストアを構成します。
デフォルトBerkeleyデータベース構成はそのままで使用できます。Berkeleyデータベース・インスタンスの位置をカスタマイズしたり、またはパフォーマンスをチューニングする場合のみ、構成を変更する必要があります。
12.2.1項「Oracle CEPサーバーのイベント・ストアの構成」を参照してください。
コンポーネント構成ファイルを更新して、イベントを記録するためにEPNのコンポーネントを構成します。
コンポーネントは、プロセッサ、アダプタ、チャネルまたはイベントBeanにできます。コンポーネントを離れるイベントのみ記録します。
12.2.2項「イベントを記録するコンポーネントの構成」を参照してください。
コンポーネント構成ファイルを更新して、イベントを再生するためにEPNのコンポーネントを構成します。
コンポーネントは、プロセッサ、アダプタ、チャネルまたはイベントBeanにできます。イベント・シンクもあるコンポーネントのみイベントを再生でき、イベントはコンポーネントの入力側に再生されます。
12.2.3項「イベントを再生するコンポーネントの構成」を参照してください。
変更を反映するためアプリケーションを再デプロイします。
イベントの記録の明示的な開始および終了時間を指定していない場合は、Oracle CEP Visualizerまたはwlevs.Admin
を使用して記録を開始する必要があります。常にこれらの管理ツールを使用して、イベントの再生を開始または終了する必要があります。
12.2.4項「イベントの記録と再生の開始および終了」を参照してください。
デフォルトBerkeleyデータベース構成はそのままで使用できます。Berkeleyデータベース・インスタンスの位置をカスタマイズしたり、またはパフォーマンスをチューニングする場合のみ、構成を変更する必要があります。
詳細は、12.3項「カスタム・イベント・ストア・プロバイダの作成」を参照してください。
Oracle CEPサーバーのイベント・ストアを構成するには:
実行中であれば、Oracle CEPサーバー・インスタンスを停止します。
任意のXMLエディタを使用して、サーバーのconfig.xml
ファイルを編集のために開きます。
config.xml
ファイルはサーバーのDOMAIN_DIR
/
servername
/config
ディレクトリにあります。DOMAIN_DIR
は/oracle_cep/user_projects/domains/myDomain
などのドメイン・ディレクトリを指し、servername
はdefaultserver
などのサーバー名を指します。
config.xml
ファイルにbdb-config
要素を編集します。
例12-1は、完全に構成されたbdb-config
要素を示します。
例12-1 bdb-config要素
<bdb-config> <db-env-path>bdb</db-env-path> <cache-size>1000</cache-size> </bdb-config>
表12-1は指定できるbdb-config
の子要素の一覧を示します。
表12-1 bdb-configの子要素
子要素 | 説明 |
---|---|
|
Oracle CEPサーバーは、サブディレクトリ内でサーバーの デフォルト: |
|
Berkeleyデータベースのキャッシュ・エントリに使用可能なメモリー量をバイト単位で指定します。キャッシュ・サイズを調整し、Berkeleyデータベースのパフォーマンスをチューニングできます。 詳細は、次を参照してください: デフォルト: |
Oracle CEPサーバー・インスタンスを再起動します。
アプリケーションの任意のプロセッサ、アダプタ、チャネル、またはイベントBeanでイベントの記録を構成できます。すべての他のコンポーネントの構成と同様、構成ファイルを更新してコンポーネントでのイベントの記録を指定します。これらの構成ファイルの概要は、1.1.5項「コンポーネント構成ファイル」を参照してください。
この項では、イベントを記録するコンポーネントを構成するための主な手順について説明します。簡略化のため、この手順ではイベントを記録するアダプタを構成し、コンポーネント構成ファイルがすでに作成されていることを想定しています。
イベント・レコードの構成ファイル要素が記述された完全なXSDスキーマは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。
任意のXMLエディタを使用してコンポーネント構成XMLファイルを開き、イベントの記録を構成するコンポーネントにrecord-parameters
子要素を追加します。たとえば、アダプタsimpleEventSource
を構成する場合は、次のようになります。
<?xml version="1.0" encoding="UTF-8"?> <n1:config xmlns:n1="http://www.bea.com/ns/wlevs/config/application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <adapter> <name>simpleEventSource</name> <record-parameters> ... </record-parameters> ... </adapter> ... </n1:config>
record-parameters
に子要素を追加して、イベント・ストア・プロバイダの名前、格納されるイベント、記録の開始および終了時間などを指定します。例:
<adapter> <name>simpleEventSource</name> <record-parameters> <dataset-name>recplay_sample</dataset-name> <event-type-list> <event-type>SimpleEvent</event-type> </event-type-list> <batch-size>1</batch-size> <batch-time-out>10</batch-time-out> </record-parameters> </adapter>
表12-2は指定できるrecord-parameters
の子要素の一覧を示します。dataset-name
のみ必須です。
表12-2 record-parametersの子要素
子要素 | 説明 |
---|---|
|
グループにまとめる必要のあるデータのグループを指定します。 BDBプロバイダの場合は、データセット名はBerkeleyデータベースにあるデータベース環境として使用されます。 Oracle RDBMSベースのプロバイダの場合は、記録されたイベントを格納する表が作成されるデータベース領域またはスキーマを指定します。 Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。 |
|
イベント・ストアに記録されるイベント・タイプを指定します。この要素を指定しない場合、Oracle CEPではコンポーネントを離れるすべてのイベント・タイプが記録されます。
<event-type-list> <event-type>EventOne</event-type> <event-type>EventTwo</event-type> </event-type-list> Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。 |
|
開始および終了時間を使用して、記録が行われる期間を指定します。 期間は、開始時間を指定するために 開始時間および終了時間を次のXMLスキーマの yyyy-mm-ddThh:mm:ss たとえば、記録は開始を2010年1月20日午前5時、終了を2010年1月20日午後6時に指定するには、次のように入力します。 <time-range> <start>2010-01-20T05:00:00</start> <end>2010-01-20T18:00:00</end> </time-range> XMLスキーマの 期間を指定しない場合、アプリケーションをデプロイしてもイベントは記録されず、Oracle CEP Visualizerまたは
|
|
開始時間と期間を使用して、記録が行われる期間を指定します。 期間は、開始時間を指定するために 開始時間を次のXMLスキーマの yyyy-mm-ddThh:mm:ss 次の形式で期間を表します。 hh:mm:ss たとえば、記録を2010年1月20日午前5時に開始し、3時間続くように指定するには、次のように入力します。 <time-range-offset> <start>2010-01-20T05:00:00</start> <duration>03:00:00</duration> </time-range-offset> XMLスキーマの 期間を指定しない場合、アプリケーションをデプロイしてもイベントは記録されず、Oracle CEP Visualizerまたは
|
|
イベント・バッファからイベント・ストアに書き込むためにOracle CEPによって単一のバッチで選択されるイベント数を指定します。 デフォルト値は1000です。 |
|
イベント・ストアに書き込む前に、イベント・バッファ枠が デフォルト値は60です。 |
|
指定した場合、Oracle CEPではイベント・ストアへの書込みにストリームが使用され、この要素はストリーム・サイズを指定します。0以外の値は非同期の書込みを示します。 デフォルト値は1024です。 |
|
指定した場合、Oracle CEPではイベント・ストアへの書込みにストリームが使用され、この要素によって、このストリームのイベントの処理に使用するスレッドの最大数が指定されます。 デフォルト値は1です。 |
アプリケーションの任意のプロセッサ、アダプタ、チャネル、またはイベントBeanでイベントの再生を構成できます。ただし、実際にイベントを受信し、それらのイベントを再生できるように、再生コンポーネントは記録コンポーネントの下流ノードである必要があります。すべての他のコンポーネントの構成と同様、構成ファイルを更新してコンポーネントでのイベントの再生を指定します。これらの構成ファイルの概要は、1.1.5項「コンポーネント構成ファイル」を参照してください。
この項では、イベントを再生するコンポーネントを構成するための主な手順について説明します。簡略化のため、この手順ではイベントの記録元であるEPNの上流ノードからのイベントを再生するチャネルを構成し、チャネルの構成ファイルがすでに作成されていることを想定しています。
イベント再生の構成ファイル要素が記述された完全なXSDスキーマを参照してください。
任意のXMLエディタを使用してコンポーネント構成XMLファイルを開き、イベントの再生を構成するコンポーネントにplayback-parameters
子要素を追加します。たとえば、チャネルeventStream
を構成する場合は、次のようになります。
<?xml version="1.0" encoding="UTF-8"?> <n1:config xmlns:n1="http://www.bea.com/ns/wlevs/config/application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <channel> <name>eventStream</name> <playback-parameters> ... </playback-parameters> </channel> ... </n1:config>
playback-parameters
に子要素を追加して、イベント・ストア・プロバイダの名前、再生されるイベントなどを指定します。例:
<channel> <name>eventStream</name> <playback-parameters> <dataset-name>recplay_sample</dataset-name> <event-type-list> <event-type>SimpleEvent</event-type> </event-type-list> </playback-parameters> </channel>
表12-3は指定できるplayback-parameters
の子要素の一覧を示します。dataset-name
のみ必須です。
表12-3 playback-parametersの子要素
子要素 | 説明 |
---|---|
|
グループにまとめる必要のあるデータのグループを指定します。 BDBプロバイダの場合は、データセット名はBerkeleyデータベースにあるデータベース環境として使用されます。 Oracle RDBMSベースのプロバイダの場合は、記録されたイベントが格納され、再生イベントの問合せが実行される表のデータベース領域またはスキーマを指定します。 Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。 |
|
イベント・ストアから再生されるイベント・タイプを指定します。この要素を指定しない場合、Oracle CEPではすべてのイベント・タイプが再生されます。
<event-type-list> <event-type>EventOne</event-type> <event-type>EventTwo</event-type> </event-type-list> Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。 |
|
開始および終了時間を使用して、再生が行われる期間を指定します。 期間は、開始時間を指定するために 開始時間および終了時間を次のXMLスキーマの yyyy-mm-ddThh:mm:ss たとえば、再生の開始を2010年1月20日午前5時、終了を2010年1月20日午後6時に指定するには、次のように入力します。 <time-range> <start>2010-01-20T05:00:00</start> <end>2010-01-20T18:00:00</end> </time-range> XMLスキーマの 期間を指定しない場合はアプリケーションをデプロイしてもイベントは再生されず、Oracle CEP Visualizerまたは
|
|
開始時間と期間を使用して、再生が行われる期間を指定します。 期間は、開始時間を指定するために 開始時間を次のXMLスキーマの yyyy-mm-ddThh:mm:ss 次の形式で期間を表します。 hh:mm:ss たとえば、再生を2010年1月20日午前5時に開始し、3時間続くように指定するには、次のように入力します。 <time-range-offset> <start>2010-01-20T05:00:00</start> <duration>03:00:00</duration> </time-range-offset> XMLスキーマの 期間を指定しない場合はアプリケーションをデプロイしてもイベントは再生されず、Oracle CEP Visualizerまたは
|
|
再生速度を正のfloatとして指定します。 デフォルト値は1であり、通常の速度に相当します。値2はイベントが元の記録速度の倍の速度で再生されることを意味します。同様に、値0.5はイベントが半分の速度で再生されることを意味します。 |
|
指定された期間の再生が終了した後に、イベントをもう一度再生するかどうかを指定します。 有効な値は |
|
指定した場合、Oracle CEPではイベント・ストアからのイベントの再生にストリームが使用され、この要素はストリーム・サイズを指定します。0以外の値は非同期の書込みを示します。 デフォルト値は1024です。 |
|
指定した場合、Oracle CEPではイベント・ストアからのイベントの再生にストリームが使用され、この要素によって、このストリームのイベントの処理に使用されるスレッドの最大数が指定されます。 デフォルト値は1です。 |
アプリケーションのコンポーネントで記録および再生機能構成が完了し、Oracle CEPにアプリケーションをデプロイしたら、最初の構成で開始および終了時間を明示的に指定した場合にのみサーバーでイベントの記録が開始されます。
たとえば、コンポーネント構成に次の要素が含まれているとします。
<time-range> <start>2010-01-20T05:00:00</start> <end>2010-01-20T18:00:00</end> </time-range>
この場合、2010年1月20日午前5時に記録が自動的に開始されます。
ただし、イベントの再生を開始するにはOracle CEP Visualizerまたはwlevs.Admin
を使用するのが唯一の方法です。これらの管理ツールは、イベントの記録を動的に開始または終了する際にも使用します。
詳細は、次を参照してください:
『Oracle CEP Visualizerユーザーズ・ガイド』のEPNを通じて流れるイベントの記録と再生に関する項
『Oracle CEP管理者ガイド』のイベントの記録および再生を制御するためのコマンドに関する項
Visualizerおよびwlevs.Admin
では、管理対象Bean (MBean)を使用して、イベントの記録と再生を動的に開始および終了し、イベント・ストアの構成を管理します。管理対象BeanはJava Management Extensions (JMX)インタフェースを提供するJava Beanです。JMXはネットワーク上のリソースをモニターおよび管理するためのJava EEソリューションです。com.bea.wlevs.management.configuration.StageMBean
を使用することにより、独自の管理ツールを作成し、JMXを使用してイベント・ストア機能を管理できます。
詳細は、次を参照してください:
『Oracle CEP管理者ガイド』のOracle CEP用JMXの構成に関する項
『Oracle CEP Java APIリファレンス』
イベント・レコードと再生のステージを構成した場合、dataset-name
を指定して記録したデータを識別します。
Oracle CEPサーバーは、bdb-config
要素で指定するdb-env-path
の下にこの名前のサブディレクトリを作成します。
たとえば、bdb-config
要素は例12-2のようになります。
dataset-name
がtest1
の場合、Oracle CEPサーバーは、データを次のディレクトリに格納します。
ORACLE_CEP_HOME
/user_projects/domains/
domainname
/
servername
/bdb
/test1
ORACLE_CEP_HOME
は、Oracle CEP (/oracle_home
など)をインストールしたディレクトリ、domainname
はドメイン名、そしてservername
は、(/oracle_cep/user_projects/domains/mydomain/myserver
など)サーバー名です。
Oracle CEPは、data-set
サブディレクトリ内に、記録された各イベント・タイプ別のデータベースを含むBerkeleyデータベース環境を作成します。データベース名は、イベント・タイプ・リポジトリに指定したイベント・タイプ名と同じです。
データベース・キーは、レコード時間およびシーケンス番号です。
Oracle CEPには、カスタム・イベント・ストア・プロバイダの作成に使用できる イベント・ストアAPI が用意されています。Oracle CEPではリレーショナル・データベースにイベントを格納するためのRDBMSベースの実装、またはJDBC接続をサポートする実装が提供されます。異なる種類のデータベースにイベントを格納する必要がある場合や、何らかの理由でOracle RDBMSプロバイダがニーズに合致しない場合は、イベント・ストアAPIを使用して独自のイベント・ストア・プロバイダを作成できます。
イベント・ストアAPIはcom.bea.wlevs.eventstore
パッケージに含まれています。次のリストに最も重要なインタフェースについて説明します。
EventStore
: 単一のイベント・ストアを表現するオブジェクト。このインタフェースのメソッドを使用すると、イベントをストアに永続化し、プロバイダ固有の問合せを使用してストアの内容への問合せを実行できます。
EventStoreManager
: イベント・ストアを管理します。特定のOracle CEPサーバーにはEventStoreManager
のインスタンスが1つのみ存在し、このインスタンスは自身をOSGiレジストリに登録するため、イベント・ストア・プロバイダは自身をイベント・ストア・マネージャに登録できるようになります。このインタフェースを使用して、既存のイベント・ストアの検索、新しいイベント・ストアの作成、特定のイベント・ストアのプロバイダの取得、イベント・プロバイダの登録を行います。イベント・ストア・マネージャは実際の作業をイベント・ストア・プロバイダに委任します。
EventStoreProvider
: イベント・ストア・サービスをクライアントに提供する基礎となるリポジトリ。
詳細は、『Oracle CEP Java APIリファレンス』を参照してください。