Oracle® Fusion Middleware Oracle Event Processing開発者ガイド

11gリリース1 (11.1.1.7) for Eclipse

B61654-06(原本部品番号:E14301-09)

目次

例一覧

図一覧

表一覧

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

このガイドの新機能

第1部 Oracle Event Processingアプリケーションの作成の開始

1 Oracle Event Processingアプリケーションの作成の概要

- 1.1 Oracle Event Processingアプリケーション・プログラミング・モデル

- 1.1.1 Oracle Event Processingアプリケーションの主要な概念

- 1.1.2 イベント処理ネットワークのコンポーネント・ロール

- 1.1.3 アプリケーションを開発するツールおよびサポートしている技術

- 1.2 Oracle Event Processingアプリケーションの仕組み

- 1.3 イベント、ストリームおよびリレーションの概要

- 1.4 アプリケーション構成の概要

- 1.4.1 EPNアセンブリ・ファイルの概要

- 1.4.1.1 EPNアセンブリ・ファイルのステージのネスト

- 1.4.1.2 EPNアセンブリ・ファイルの外部ステージの参照

- 1.4.2 コンポーネント構成ファイルの概要

- 1.4.2.1 ConfigurationPropertyPlaceholderConfigurerクラスによるコンポーネントおよびサーバー構成へのアクセス

- 1.4.3 Oracle Event Processingリソース・アクセスの構成

- 1.4.3.1 静的リソース・インジェクション

- 1.4.3.2 動的リソース・インジェクション

- 1.4.3.3 JNDIによる動的リソース参照

- 1.4.3.4 リソース名解決について

- 1.5 Oracle Event Processing API

- 1.6 アプリケーションのパッケージ化

- 1.7 Oracle Event Processingアプリケーション・ライフサイクル

2 Oracle Event Processingサンプル

- 2.1 配布キットで提供されるサンプルの概要

- 2.1.1 すぐに実行できるサンプル

- 2.1.2 サンプル・ソース

- 2.2 デフォルトのocep_domainとサンプルのインストール

- 2.3 サンプルでのOracle Event Processing Visualizerの使用

- 2.4 サンプルのパフォーマンスの改善

- 2.5 HelloWorldのサンプル

- 2.5.1 helloworldドメインから実行するHelloWorldのサンプル

- 2.5.2 ソース・ディレクトリからビルドおよびデプロイするHelloWorldのサンプル

- 2.5.3 Hello WorldをビルドするAntターゲットの説明

- 2.5.4 HelloWorldのサンプルの実装

- 2.6 Oracle Continuous Query Language (Oracle CQL)のサンプル

- 2.6.1 CQLのサンプルの実行

- 2.6.2 CQLのサンプルのビルドとデプロイ

- 2.6.3 CQLサンプルをビルドするAntターゲットの説明

- 2.6.4 CQLのサンプルの実装

- 2.6.4.1 欠落イベントの問合せの作成

- 2.6.4.2 移動平均の問合せの作成

- 2.7 Oracle Spatialサンプル

- 2.7.1 Oracle Spatialサンプルの実行

- 2.7.2 Oracle Spatialサンプルのビルドとデプロイ

- 2.7.3 Oracle SpatialサンプルをビルドするAntターゲットの説明

- 2.7.4 Oracle Spatialサンプルの実装

- 2.8 外国為替取引(FX)のサンプル

- 2.8.1 外国為替取引のサンプルの実行

- 2.8.2 ソース・ディレクトリからビルドおよびデプロイする外国為替取引のサンプル

- 2.8.3 FXをビルドするAntターゲットの説明

- 2.8.4 FXのサンプルの実装

- 2.9 シグナル生成のサンプル

- 2.9.1 シグナル生成のサンプルの実行

- 2.9.2 ソース・ディレクトリからビルドおよびデプロイするシグナル生成のサンプル

- 2.9.3 シグナル生成をビルドするAntターゲットの説明

- 2.9.4 シグナル生成のサンプルの実装

- 2.10 イベントの記録と再生のサンプル

- 2.10.1 イベントの記録/再生のサンプルの実行

- 2.10.2 ソース・ディレクトリからビルドおよびデプロイするイベントの記録/再生のサンプル

- 2.10.3 記録と再生のサンプルをビルドするAntターゲットの説明

- 2.10.4 記録と再生のサンプルの実装

3 Oracle Event Processingアプリケーションの開発の開始

- 3.1 Oracle Event Processingアプリケーションの作成

- 3.2 開発環境の設定

- 3.2.1 Windowsでの開発環境の設定方法

- 3.2.2 UNIXでの開発環境の設定方法

- 3.3 IDEを使用したアプリケーションの開発

- 3.4 アプリケーションのテスト

第2部 Oracle Event Processing IDE for Eclipse

4 Oracle Event Processing IDE for Eclipseの概要

- 4.1 Oracle Event Processing IDE for Eclipseの概要

- 4.1.1 機能

- 4.1.2 JDK要件

- 4.1.3 デフォルトのOracle Event Processingドメインocep_domainおよび開発

- 4.2 最新のOracle Event Processing IDE for Eclipseのインストール

- 4.3 Oracle Event Processingで配布されるOracle Event Processing IDE for Eclipseのインストール

- 4.4 Eclipseの構成

5 Oracle Event Processing IDE for Eclipseプロジェクト

- 5.1 Oracle Event Processingプロジェクトの概要

- 5.2 Oracle Event Processingプロジェクトの作成

- 5.2.1 Oracle Event Processingプロジェクトの作成方法

- 5.3 EPNアセンブリ・ファイルの作成

- 5.3.1 Oracle Event Processing IDE for Eclipseを使用した新しいEPNアセンブリ・ファイルの作成方法

- 5.4 コンポーネント構成ファイルの作成

- 5.4.1 Oracle Event Processing IDE for Eclipseを使用して新しいコンポーネント構成ファイルの作成方法

- 5.5 Oracle Event Processingプロジェクトのエクスポート

- 5.5.1 Oracle Event Processingプロジェクトのエクスポート方法

- 5.6 プロジェクトのアップグレード

- 5.6.1 Oracle Event Processingのプロジェクトの2.1から10.3へのアップグレード方法

- 5.6.2 Oracle Event Processingのプロジェクトの10.3から11gリリース1 (11.1.1)へのアップグレード方法

- 5.7 Oracle Event Processingプロジェクトのライブラリおよび他の非クラス・ファイルの管理

- 5.7.1 Oracle Event Processingプロジェクトへの標準JARファイルの追加方法

- 5.7.2 Oracle Event ProcessingプロジェクトへのOSGiバンドルの追加方法

- 5.7.3 Oracle Event Processingプロジェクトへのプロパティ・ファイルの追加方法

- 5.7.4 パッケージのエクスポート方法

- 5.7.5 パッケージのインポート方法

- 5.8 Oracle Event Processing IDE for Eclipseプリファレンスの構成

- 5.8.1 アプリケーション・ライブラリ・パス・プリファレンスの構成方法

- 5.8.2 問題の重大度プリファレンスの構成方法

6 Oracle Event Processing IDE for EclipseおよびOracle Event Processingサーバー

- 6.1 Oracle Event Processingサーバーの概要

- 6.2 Oracle Event Processingサーバーの作成

- 6.2.1 ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法

- 6.2.2 リモートOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法

- 6.2.3 Oracle Event Processingサーバー・ランタイムの作成方法

- 6.3 Oracle Event Processingサーバーの管理

- 6.3.1 ローカルOracle Event Processingサーバーの起動方法

- 6.3.2 ローカルOracle Event Processingサーバーの停止方法

- 6.3.3 既存のローカルOracle Event Processingサーバー・インスタンスにアタッチする方法

- 6.3.4 既存のリモートOracle Event Processingサーバー・インスタンスにアタッチする方法

- 6.3.5 既存のOracle Event Processingサーバー・インスタンスからデタッチする方法

- 6.3.6 アプリケーションをOracle Event Processingサーバーにデプロイする方法

- 6.3.7 Oracle Event Processingサーバーの接続およびコントロール設定の構成方法

- 6.3.8 Oracle Event Processingサーバーのドメイン(ランタイム)設定の構成方法

- 6.3.9 Oracle Event Processing IDE for EclipseからOracle Event Processing Visualizerを起動する方法

- 6.4 Oracle Event Processingサーバーで実行されるOracle Event Processingアプリケーションのデバッグ

- 6.4.1 Oracle Event Processingサーバーで実行されるOracle Event Processingアプリケーションのデバッグ方法

7 Oracle Event Processing IDE for Eclipseおよびイベント処理ネットワーク

- 7.1 EPNエディタを開く

- 7.1.1 プロジェクト・フォルダからEPNエディタを開く方法

- 7.1.2 コンテキストまたは構成ファイルからEPNエディタを開く方法

- 7.2 EPNエディタの概要

- 7.2.1 フロー表現

- 7.2.2 フィルタ処理

- 7.2.3 ズーム

- 7.2.4 レイアウト

- 7.2.5 接続されていないBeanの表示と非表示

- 7.2.6 印刷およびイメージへのエクスポート

- 7.2.7 構成のバッジング

- 7.2.8 リンク指定場所のインジケータ

- 7.2.9 ネストされたステージ

- 7.2.10 イベント・タイプ・リポジトリ・エディタ

- 7.3 EPNエディタのナビゲート

- 7.3.1 キャンバスの移動

- 7.3.2 コンポーネント構成およびEPNアセンブリ・ファイルへのショートカット

- 7.3.3 ハイパーリンク

- 7.3.3.1 コンポーネント構成およびEPNアセンブリ・ファイルでのハイパーリンク

- 7.3.3.2 Oracle CQL文でのハイパーリンク

- 7.3.4 コンテキスト・メニュー

- 7.3.5 Oracle Event Processingタイプの参照

- 7.3.5.1 Oracle Event Processingタイプの参照方法

- 7.4 EPNエディタの使用

- 7.4.1 ノードの作成

- 7.4.1.1 基本ノードの作成方法

- 7.4.1.2 アダプタ・ノードの作成方法

- 7.4.1.3 プロセッサ・ノードの作成方法

- 7.4.2 ノードの接続

- 7.4.2.1 ノードを接続する方法

- 7.4.3 ノードのレイアウト

- 7.4.4 ノード名の変更

- 7.4.5 ノードの削除

第3部 Oracle Event Processingアプリケーションの開発

8 ウォークスルー: 単純なアプリケーションのアセンブル

- 8.1 単純なアプリケーションのウォークスルーの概要

- 8.1.1 このウォークスルーの主要な概念

- 8.1.2 開始する前に

- 8.2 ワークスペースおよびプロジェクトの作成

- 8.3 イベント・データを移動するイベント・タイプの作成

- 8.4 イベント・データを受信する入力アダプタの追加

- 8.5 イベントを伝達するチャネルの追加

- 8.6 イベントを受信およびレポートするリスナーの作成

- 8.7 ロード・ジェネレータの設定およびテスト

- 8.8 イベントをフィルタ処理するOracle CQLプロセッサの追加

- 8.9 サマリー: 単純なアプリケーションのウォークスルー

9 イベント・タイプの定義および使用

- 9.1 Oracle Event Processingイベント・タイプの概要

- 9.1.1 イベント・タイプ・インスタンスが使用される場所

- 9.1.2 イベント・タイプを作成する上位レベル・プロセス

- 9.2 イベント・タイプの設計

- 9.2.1 イベント・データの構造の識別

- 9.2.2 イベント・タイプのデータ型の選択

- 9.2.3 イベント・タイプの設計の制約

- 9.2.3.1 csvgenアダプタとともに使用するイベント・タイプの制約

- 9.2.3.2 データベース表ソースとともに使用するイベント・タイプの制約

- 9.2.4 イベント・タイプ・データ型の使用の混在

- 9.3 イベント・タイプの作成

- 9.3.1 JavaBeanとしてのOracle Event Processingイベント・タイプの作成

- 9.3.1.1 イベント・タイプ・リポジトリ・エディタを使用して、JavaBeanとしてOracle Event Processingイベント・タイプを作成する方法

- 9.3.1.2 JavaBeanとしてOracle Event Processingイベント・タイプを手動で作成する方法

- 9.3.1.3 JavaコードのJavaBeanイベント・タイプ・インスタンスの使用

- 9.3.1.4 Oracle CQLコードのJavaBeanイベント・タイプ・インスタンスの使用

- 9.3.1.5 イベント・タイプ・ビルダー・クラスでのイベント・タイプのインスタンス化の制御

- 9.3.2 タプルとしてのOracle Event Processingイベント・タイプの作成

- 9.3.2.1 タプルベースのイベント・タイプのプロパティのタイプ

- 9.3.2.2 イベント・タイプ・リポジトリ・エディタを使用して、タプルとしてOracle Event Processingイベント・タイプを作成する方法

- 9.3.2.3 タプルとしてOracle Event Processingイベント・タイプを手動で作成する方法

- 9.3.2.4 Javaコードのタプル・イベント・タイプ・インスタンスの使用

- 9.3.2.5 Oracle CQLコードのタプル・イベント・タイプ・インスタンスの使用

- 9.3.3 java.util.MapとしてのOracle Event Processingイベント・タイプの作成

- 9.3.3.1 java.util.Mapベースのイベント・タイプのプロパティのタイプ

- 9.3.3.2 java.util.MapとしてOracle Event Processingイベント・タイプを作成する方法

- 9.3.3.3 Javaコードのマップ・イベント・タイプ・インスタンスの使用

- 9.3.3.4 Oracle CQLコードのマップ・イベント・タイプ・インスタンスの使用

- 9.4 イベント・タイプ・リポジトリへのアクセス

- 9.4.1 EPNアセンブリ・ファイルの使用

- 9.4.2 Spring-DM @ServiceReference注釈の使用

- 9.4.3 Oracle Event Processing @Service注釈の使用

- 9.5 アプリケーション・バンドル間でのイベント・タイプの共有

10 チャネルを使用したEPNステージの接続

- 10.1 チャネル構成の概要

- 10.1.1 チャネルを使用するタイミング

- 10.1.2 ストリームおよびリレーションを表すチャネル

- 10.1.2.1 ストリームとしてのチャネル

- 10.1.2.2 リレーションとしてのチャネル

- 10.1.3 システム・タイムスタンプ・チャネル

- 10.1.4 アプリケーション・タイムスタンプ・チャネル

- 10.1.5 ダウンストリーム・チャネルに対する問合せ出力の制御: selector

- 10.1.6 バッチ処理チャネル

- 10.1.7 EventPartitionerチャネル

- 10.1.8 チャネルのフォルトの処理

- 10.2 チャネルの構成

- 10.2.1 Oracle Event Processing IDE for Eclipseを使用してシステム・タイムスタンプ・チャネルを構成する方法

- 10.2.2 Oracle Event Processing IDE for Eclipseを使用してアプリケーション・タイムスタンプ・チャネルを構成する方法

- 10.2.3 手動によるチャネル・コンポーネント構成ファイルの作成方法

- 10.3 チャネル構成ファイルの例

- 10.3.1 チャネル・コンポーネント構成ファイル

- 10.3.2 チャネルEPNアセンブリ・ファイル

11 Java Message Serviceの統合

- 11.1 JMSアダプタ構成の概要

- 11.1.1 JMSサービス・プロバイダ

- 11.1.2 インバウンドJMSアダプタ

- 11.1.2.1 JMSメッセージとイベント・タイプの間の変換

- 11.1.2.2 シングルおよびマルチスレッド・インバウンドJMSアダプタ

- 11.1.2.3 恒久サブスクリプション用のJMSアダプタの構成

- 11.1.3 アウトバウンドJMSアダプタ

- 11.2 JMSサービス・プロバイダのJMSアダプタの構成

- 11.2.1 Oracle Event Processing IDE for Eclipseを使用したJMSアダプタの構成方法

- 11.2.2 JMSアダプタを手動で構成する方法

- 11.2.3 Oracle WebLogic Server JMS用にJMSアダプタを手動で構成する方法

- 11.2.4 Tibco EMS JMS用にJMSアダプタを手動で構成する方法

- 11.3 JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成

- 11.3.1 インバウンドJMSアダプタ用のカスタム・コンバータの作成方法

- 11.3.2 アウトバウンドJMSアダプタ用のカスタム・コンバータの作成方法

- 11.4 JMSアダプタ・コンポーネント構成ファイル内のパスワードの暗号化

- 11.4.1 JMSアダプタ・コンポーネント構成ファイル内のパスワードの暗号化方法

- 11.5 JMSアダプタのEPNアセンブリ・ファイルの構成

- 11.5.1 JMSインバウンド・アダプタのEPNアセンブリ・ファイルの構成

- 11.5.2 JMSアウトバウンド・アダプタのEPNアセンブリ・ファイルの構成

- 11.6 JMSアダプタのコンポーネント構成ファイルの構成

- 11.6.1 JMSインバウンド・アダプタのコンポーネント構成

- 11.6.2 JMSアウトバウンド・アダプタのコンポーネント構成

12 HTTPパブリッシュ・サブスクライブ・サーバーの統合

- 12.1 HTTPパブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要

- 12.1.1 パブリッシュ用の組込みPub-Subアダプタの概要

- 12.1.1.1 ローカル・パブリッシュ

- 12.1.1.2 リモート・パブリッシュ

- 12.1.2 サブスクライブ用の組込みPub-Subアダプタの概要

- 12.1.3 JSONメッセージとイベント・タイプの間の変換

- 12.2 HTTP Pub-Subアダプタの構成

- 12.2.1 Oracle Event Processing IDE for Eclipseを使用したHTTP Pub-Subアダプタの構成方法

- 12.2.2 HTTP Pub-Subアダプタを手動で構成する方法

- 12.3 HTTP Pub-Subメッセージとイベント・タイプの間のカスタム・コンバータの作成

- 12.4 HTTP Pub-SubアダプタのEPNアセンブリ・ファイルの構成

- 12.4.1 パブリッシュ用のHTTP Pub-SubアダプタのEPNアセンブリ・ファイル構成

- 12.4.2 サブスクライブ用のHTTP Pub-SubアダプタのEPNアセンブリ・ファイル構成

- 12.5 HTTP Pub-Subアダプタのコンポーネント構成ファイルの構成

- 12.5.1 パブリッシュ用のHTTP Pub-Subアダプタのコンポーネント構成

- 12.5.2 サブスクライブ用のHTTP Pub-Subアダプタのコンポーネント構成

13 キャッシュの統合

- 13.1 キャッシュの統合の概要

- 13.1.1 Oracle Event Processingでサポートされるキャッシュ実装

- 13.1.2 キャッシュ構成の概要

- 13.1.3 キャッシュのユース・ケース

- 13.1.4 キャッシュAPI

- 13.2 Oracle Coherenceキャッシュ・システムおよびキャッシュの構成

- 13.2.1 Oracle Coherenceキャッシュ・システムおよびキャッシュの構成

- 13.2.1.1 coherence-cache-config.xmlファイル

- 13.2.1.2 tangosol-coherence-override.xmlファイル

- 13.2.2 共有Oracle Coherenceキャッシュの構成

- 13.3 Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュの構成

- 13.3.1 Oracle Event Processingキャッシュ・システムの構成

- 13.4 サードパーティのキャッシュ・システムおよびキャッシュの構成

- 13.5 イベント処理ネットワークへのキャッシュの追加

- 13.5.1 EPNへのキャッシュ・システムおよびキャッシュの追加

- 13.5.2 アプリケーション間で再利用するためのキャッシュの構成

- 13.5.3 イベント・リスナーとしてのキャッシュの構成

- 13.5.3.1 キャッシュのインデックスに使用されるキーの指定

- 13.5.4 イベント・ソースとしてのキャッシュの構成

- 13.5.5 キャッシュおよび他のデータ・ソース間のデータの交換

- 13.5.5.1 読取り専用データ・ソースからのキャッシュ・データのロード

- 13.5.5.2 読取り/書込みデータ・ソースでのデータの交換

- 13.6 アプリケーション・コードからキャッシュへのアクセス

- 13.6.1 Oracle CQL文からキャッシュへのアクセス

- 13.6.1.1 Oracle CQL文からキャッシュへのアクセス方法

- 13.6.2 EPL文からキャッシュへのアクセス

- 13.6.2.1 EPL文からキャッシュへのアクセス方法

- 13.6.3 アダプタからキャッシュへのアクセス

- 13.6.4 ビジネスPOJOからキャッシュへのアクセス

- 13.6.5 Oracle CQLユーザー定義関数からキャッシュへのアクセス

- 13.6.6 EPLユーザー定義関数からキャッシュへのアクセス

- 13.6.7 JMXの使用によるキャッシュへのアクセス

- 13.6.7.1 Oracle Event Processing Visualizerを使用したJMXによるキャッシュへのアクセス方法

- 13.6.7.2 Javaを使用したJMXによるキャッシュへのアクセス方法

14 Webサービスの統合

- 14.1 Oracle Event ProcessingとWebサービスについて

- 14.2 Oracle Event ProcessingアプリケーションからのWebサービスの起動方法

- 14.3 Oracle Event ProcessingアプリケーションをWebサービスとして公開する方法

15 カスタム・アダプタを使用した外部コンポーネントの統合

- 15.1 カスタム・アダプタの概要

- 15.2 カスタム・アダプタの実装

- 15.2.1 例: 入力アダプタの実装

- 15.3 スレッドおよび作業管理のサポートの実装

- 15.3.1 マルチスレッド・アダプタでのスケーラビリティの向上

- 15.3.2 アダプタ・イベント処理の一時停止および再開

- 15.4 アダプタからデータ・フィード・プロバイダへのログイン資格証明の受け渡し

- 15.4.1 データ・フィード・プロバイダへの静的ログイン資格証明の受け渡し

- 15.4.2 データ・フィード・プロバイダへの動的ログイン資格証明の受け渡し

- 15.4.3 実行時のログイン資格証明へのアクセス方法

- 15.5 カスタム・アダプタの構成

- 15.5.1 EPNアセンブリ・ファイルのカスタム・アダプタの構成

- 15.5.2 コンポーネント構成ファイルのカスタム・アダプタの構成

- 15.6 カスタム・アダプタ・ファクトリの作成

16 Javaでのイベントの処理

- 16.1 イベント処理ネットワークのJavaコードのロール

- 16.2 ソースおよびシンクでのイベントの処理

- 16.2.1 イベント・シンクの実装

- 16.2.1.1 StreamSinkまたはBatchStreamSinkの実装

- 16.2.1.2 RelationSinkまたはBatchRelationSinkの実装

- 16.2.2 イベント・ソースの実装

- 16.2.2.1 StreamSourceの実装

- 16.2.2.2 RelationSourceの実装

- 16.3 BeanとしてのJavaクラスの構成

- 16.3.1 イベントBeanとしてのJavaクラスの構成

- 16.3.1.1 EPNアセンブリ・ファイルのイベントBeanの構成

- 16.3.1.2 コンポーネント構成ファイルのイベントBeanの構成

- 16.3.1.3 イベントBeanファクトリの作成

- 16.3.2 Spring BeanとしてのJavaクラスの構成

- 16.3.2.1 Spring Beanの特性のサポート

17 Oracle CQLでのイベント・ストリームの問合せ

- 17.1 Oracle CQLプロセッサの構成の概要

- 17.1.1 ダウンストリーム・チャネルに対する問合せ出力の制御

- 17.2 Oracle CQLプロセッサの構成

- 17.2.1 Oracle Event Processing IDE for Eclipseを使用したOracle CQLプロセッサの構成方法

- 17.2.2 Oracle CQLプロセッサ・コンポーネント構成ファイルの手動による作成方法

- 17.3 Oracle CQLプロセッサ表ソースの構成

- 17.3.1 Oracle Event Processing IDE for Eclipseを使用したOracle CQLプロセッサ表ソースの構成方法

- 17.4 Oracle CQLプロセッサ・キャッシュ・ソースの構成

- 17.5 パラレル問合せ実行用のOracle CQLプロセッサの構成

- 17.5.1 パラレル問合せ実行のサポートの設定

- 17.5.2 ordering-constraint属性の使用

- 17.5.3 問合せのパーティション化でのpartition-order-capacityの使用

- 17.5.4 制限事項

- 17.6 フォルトの処理

- 17.6.1 フォルト・ハンドラ・クラスの実装

- 17.6.2 フォルト・ハンドラの登録

- 17.7 Oracle CQLプロセッサ構成ファイルの例

- 17.7.1 Oracle CQLプロセッサ・コンポーネント構成ファイル

- 17.7.2 Oracle CQLプロセッサEPNアセンブリ・ファイル

18 データ・カートリッジを使用したアプリケーションの構成

- 18.1 データ・カートリッジ・アプリケーション・コンテキストについて

- 18.2 Oracle Spatialアプリケーション・コンテキストの構成方法

- 18.3 Oracle JDBCデータ・カートリッジ・アプリケーション・コンテキストの構成方法

19 Oracle EPLでのイベント・ストリームの問合せ

- 19.1 EPLプロセッサ・コンポーネント構成の概要

- 19.2 EPLプロセッサの構成

- 19.2.1 EPLプロセッサを手動で構成する方法

- 19.3 EPLプロセッサ・キャッシュ・ソースの構成

- 19.4 EPLプロセッサの構成ファイルの例

- 19.4.1 EPLプロセッサ・コンポーネント構成ファイル

- 19.4.2 EPLプロセッサのEPNアセンブリ・ファイル

20 イベント・レコードと再生の構成

- 20.1 イベントの記録および再生の構成の概要

- 20.1.1 永続イベント・ストアへのイベントの格納

- 20.1.1.1 デフォルトの永続イベント・ストア

- 20.1.1.2 カスタム永続イベント・ストア

- 20.1.1.3 永続イベント・ストア・スキーマ

- 20.1.2 イベントの記録

- 20.1.3 イベントの再生

- 20.1.4 格納されたイベントの問合せ

- 20.1.5 記録と再生のサンプル

- 20.2 アプリケーションにおけるイベントの記録および再生の構成

- 20.2.1 Oracle Event Processingサーバーのイベント・ストアの構成

- 20.2.2 イベントを記録するコンポーネントの構成

- 20.2.3 イベントを再生するコンポーネントの構成

- 20.2.4 イベントの記録と再生の開始および終了

- 20.2.5 Berkeleyデータベース・スキーマの説明

- 20.3 カスタム・イベント・ストア・プロバイダの作成

21 ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト

- 21.1 ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテストの概要

- 21.2 ロード・ジェネレータ・ユーティリティの構成と実行

- 21.3 ロード・ジェネレータのプロパティ・ファイルの作成

- 21.4 データ・フィード・ファイルの作成

- 21.5 アプリケーションのcsvgenアダプタの構成

22 イベント・インスペクタでのアプリケーションのテスト

- 22.1 イベント・インスペクタでのアプリケーションのテストの概要

- 22.1.1 イベントのトレース

- 22.1.2 イベントのインジェクト

- 22.1.3 イベント・インスペクタのイベント・タイプ

- 22.1.4 イベント・インスペクタHTTPパブリッシュ・サブスクライブ・チャネルとサーバー

- 22.1.5 イベント・インスペクタのクライアント

- 22.1.5.1 Oracle Event Processing Visualizer

- 22.2 イベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成

- 22.2.1 ローカルのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法

- 22.2.2 リモートのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法

- 22.3 イベントのインジェクト

- 22.4 イベントのトレース

第4部 Oracle Event Processingアプリケーションの完了および調整

23 Oracle Event Processingアプリケーションのアセンブルとデプロイ

- 23.1 アプリケーションのアセンブリおよびデプロイメントの概要

- 23.1.1 アプリケーション

- 23.1.2 アプリケーションの依存関係

- 23.1.2.1 プライベート・アプリケーションの依存関係

- 23.1.2.2 共有アプリケーションの依存関係

- 23.1.2.3 ネイティブ・コードの依存関係

- 23.1.3 アプリケーション・ライブラリ

- 23.1.3.1 ライブラリ・ディレクトリ

- 23.1.3.2 ライブラリ拡張ディレクトリ

- 23.1.3.3 アプリケーション・ライブラリの作成

- 23.1.4 デプロイメントおよびデプロイメント順序

- 23.1.5 構成履歴の管理

- 23.2 Oracle Event Processingアプリケーションのアセンブル

- 23.2.1 Oracle Event Processing IDE for Eclipseを使用したOracle Event Processingアプリケーションのアセンブル

- 23.2.2 Oracle Event Processingアプリケーションの手動アセンブル

- 23.2.2.1 MANIFEST.MFファイルの作成

- 23.2.2.2 サードパーティJARファイルへのアクセス

- 23.2.3 外部ステージによるアプリケーションのアセンブル

- 23.2.4 カスタム・アダプタまたはイベントBeanの固有ハンドルでのアセンブル

- 23.2.4.1 固有のバンドルでのカスタム・アダプタのアセンブル方法

- 23.2.4.2 固有のバンドルでのイベントBeanのアセンブル方法

- 23.3 アプリケーション・ライブラリの管理

- 23.3.1 Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの定義方法

- 23.3.1.1 絶対パスの構成方法

- 23.3.1.2 パス変数を拡張する方法

- 23.3.2 bundler.shを使用したアプリケーション・ライブラリの作成方法

- 23.3.3 Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの作成方法

- 23.3.4 Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの更新方法

- 23.3.5 Oracle Event Processing Visualizerを使用したアプリケーション・ライブラリの表示方法

- 23.4 ログ・メッセージ・カタログの管理

- 23.4.1 Oracle Event Processingサーバーでのメッセージ・カタログの使用

- 23.4.1.1 メッセージ・カタログの階層

- 23.4.1.2 メッセージ・カタログの命名のガイドライン

- 23.4.1.3 メッセージ引数の使い方

- 23.4.1.4 メッセージ・カタログのフォーマット

- 23.4.1.5 メッセージ・カタログのローカライゼーション

- 23.4.2 ローカライズ用LoggerおよびTextFormatterクラスを生成するためのメッセージ・カタログの解析方法

- 23.5 Oracle Event Processingアプリケーションのデプロイ

- 23.5.1 Oracle Event Processing IDE for Eclipseを使用してOracle Event Processingアプリケーションをデプロイする方法

- 23.5.2 Oracle Event Processing Visualizerを使用してOracle Event Processingアプリケーションをデプロイする方法

- 23.5.3 デプロイヤ・ユーティリティを使用してOracle Event Processingアプリケーションをデプロイする方法

24 高可用性のためのアプリケーションの開発

- 24.1 高可用性の理解

- 24.1.1 高可用性アーキテクチャ

- 24.1.1.1 高可用性のライフサイクルおよびフェイルオーバー

- 24.1.1.2 デプロイメント・グループおよび通知グループ

- 24.1.1.3 高可用性コンポーネント

- 24.1.1.4 高可用性およびスケーラビリティ

- 24.1.1.5 高可用性およびOracle Coherence

- 24.1.2 サービス品質の選択

- 24.1.2.1 シンプル・フェイルオーバー

- 24.1.2.2 バッファリングを使用するシンプル・フェイルオーバー

- 24.1.2.3 軽量キュー・トリミング

- 24.1.2.4 JMSによる正確なリカバリ

- 24.1.3 高可用性用Oracle Event Processingアプリケーションの設計

- 24.1.3.1 プライマリOracle Event Processingの高可用性のユースケース

- 24.1.3.2 高可用性の設計パターン

- 24.1.3.3 Oracle CQLの問合せの制約

- 24.2 高可用性の構成

- 24.2.1 高可用性のサービス品質の構成

- 24.2.1.1 シンプル・フェイルオーバーの構成方法

- 24.2.1.2 バッファリングを使用するシンプル・フェイルオーバーの構成方法

- 24.2.1.3 軽量キュー・トリミングの構成方法

- 24.2.1.4 JMSによる正確なリカバリの構成方法

- 24.2.2 高可用性アダプタの構成

- 24.2.2.1 高可用性入力アダプタの構成方法

- 24.2.2.2 バッファリング出力アダプタの構成方法

- 24.2.2.3 ブロードキャスト出力アダプタの構成方法

- 24.2.2.4 相関出力アダプタの構成方法

25 スケーラブルなアプリケーションの開発

- 25.1 スケーラビリティについて

- 25.1.1 スケーラビリティ・オプション

- 25.1.1.1 スケーラビリティと高可用性

- 25.1.2 スケーラビリティ・コンポーネント

- 25.1.2.1 EventPartitioner

- 25.1.2.2 ActiveActiveGroupBean

- 25.2 スケーラビリティの構成

- 25.2.1 チャネルEventPartitionerでのスケーラビリティの構成

- 25.2.1.1 デフォルト・チャネルEventPartitionerでのスケーラビリティの構成方法

- 25.2.1.2 カスタム・チャネルEventPartitionerでのスケーラビリティの構成方法

- 25.2.2 ActiveActiveGroupBeanでスケーラビリティの構成

- 25.2.2.1 Oracle Event Processing高可用性なしのJMSアプリケーションでスケーラビリティを構成する方法

- 25.2.2.2 Oracle Event Processing高可用性のあるJMSアプリケーションでスケーラビリティを構成する方法

- 25.2.2.3 ActiveActiveGroupBeanグループ・パターン一致の構成方法

26 コンポーネント構成の拡張

- 26.1 コンポーネント構成の拡張の概要

- 26.1.1 注釈を使用したコンポーネント構成の拡張

- 26.1.2 XSDを使用したコンポーネント構成の拡張

- 26.2 コンポーネント構成の拡張

- 26.2.1 注釈を使用したコンポーネント構成の拡張方法

- 26.2.2 XSDを使用したコンポーネント構成の拡張方法

- 26.2.2.1 XSDスキーマ・ファイルの作成

- 26.3 カスタム・アダプタまたはイベントBeanの構成へのプログラムからのアクセス

- 26.3.1 リソース・インジェクションを使用したコンポーネント構成へのアクセス方法

- 26.3.2 ライフサイクル・コールバックを使用したコンポーネント構成へのアクセス方法

- 26.3.2.1 ライフサイクル・コールバック注釈

- 26.3.2.2 ライフサイクル

27 パフォーマンス・チューニング

- 27.1 EPNパフォーマンスのチューニング

- 27.1.1 イベント・パーティショナ・チャネル

- 27.1.2 チャネルのバッチ処理

- 27.1.3 ActiveActiveGroupBeanを使用したスケーラビリティ

- 27.2 高可用性パフォーマンスのチューニング

- 27.2.1 ホスト構成

- 27.2.2 高可用性入力アダプタおよびサービス品質

- 27.2.3 高可用性入力アダプタの構成

- 27.2.4 ブロードキャスト出力アダプタの構成

- 27.2.5 Oracle Coherenceパフォーマンス・チューニング・オプション

- 27.2.5.1 Oracle Coherenceハートビート頻度

- 27.2.5.2 Oracle Coherenceシリアライゼーション

第V部 付録

A SpringおよびOSGiに関する追加情報

B Oracle Event Processingスキーマ

- B.1 EPNアセンブリ・スキーマspring-wlevs-v11_1_1_6.xsd

- B.1.1 EPNアセンブリ・ファイルの例

- B.2 コンポーネント構成スキーマwlevs_application_config.xsd

- B.2.1 コンポーネントの構成ファイルの例

- B.3 デプロイメント・スキーマdeployment.xsd

- B.3.1 デプロイメントXMLファイルの例

- B.4 サーバー構成スキーマwlevs_server_config.xsd

- B.4.1 サーバー構成XMLファイルの例

C スキーマ参照: EPNアセンブリspring-wlevs-v11_1_1_6.xsd

- C.1 Oracle Event Processingアプリケーション・アセンブリ要素の概要

- C.1.1 要素の階層

- C.1.2 Oracle Event Processing要素を使用したEPNアセンブリ・ファイルの例

- C.2 wlevs:adapter

- C.2.1 子要素

- C.2.2 属性

- C.2.3 例

- C.3 wlevs:application-timestamped

- C.3.1 子要素

- C.3.2 属性

- C.3.3 例

- C.4 wlevs:cache

- C.4.1 子要素

- C.4.2 属性

- C.4.3 例

- C.5 wlevs:cache-listener

- C.5.1 属性

- C.5.2 例

- C.6 wlevs:cache-loader

- C.6.1 属性

- C.6.2 例

- C.7 wlevs:cache-source

- C.7.1 属性

- C.7.2 例

- C.8 wlevs:cache-store

- C.8.1 属性

- C.8.2 例

- C.9 wlevs:caching-system

- C.9.1 子要素

- C.9.2 属性

- C.9.3 例

- C.10 wlevs:channel

- C.10.1 子要素

- C.10.2 属性

- C.10.3 例

- C.11 wlevs:class

- C.11.1 例

- C.12 wlevs:event-bean

- C.12.1 子要素

- C.12.2 属性

- C.12.3 例

- C.13 wlevs:event-type

- C.13.1 子要素

- C.13.2 属性

- C.13.3 例

- C.14 wlevs:event-type-repository

- C.14.1 子要素

- C.14.2 例

- C.15 wlevs:expression

- C.15.1 例

- C.16 wlevs:factory

- C.16.1 属性

- C.16.2 例

- C.17 wlevs:function

- C.17.1 属性

- C.17.2 例

- C.17.2.1 Oracle CQLプロセッサ上の単一行のユーザー定義関数

- C.17.2.2 EPLプロセッサ上の単一行のユーザー定義関数

- C.17.2.3 Oracle CQLプロセッサ上の集計のユーザー定義関数

- C.17.2.4 EPLプロセッサ上の集計のユーザー定義関数

- C.17.2.5 実装クラスの指定: ネストしたBeanまたはリファレンス

- C.18 wlevs:instance-property

- C.18.1 子要素

- C.18.2 属性

- C.18.3 例

- C.19 wlevs:listener

- C.19.1 属性

- C.19.2 例

- C.20 wlevs:metadata

- C.20.1 子要素

- C.20.2 属性

- C.20.3 例

- C.21 wlevs:processor

- C.21.1 子要素

- C.21.2 属性

- C.21.3 例

- C.22 wlevs:properties

- C.22.1 子要素

- C.22.2 属性

- C.22.3 例

- C.23 wlevs:property

- C.23.1 属性

- C.23.2 例

- C.24 wlevs:property

- C.24.1 子要素

- C.24.2 属性

- C.24.3 例

- C.25 wlevs:source

- C.25.1 属性

- C.25.2 例

- C.26 wlevs:table

- C.26.1 属性

- C.26.2 例

- C.27 wlevs:table-source

- C.27.1 属性

- C.27.2 例

D スキーマ参照: コンポーネント構成wlevs_application_config.xsd

- D.1 Oracle Event Processingコンポーネント構成要素の概要

- D.1.1 要素の階層

- D.1.2 Oracle Event Processingコンポーネント構成ファイルの例

- D.2 accept-backlog

- D.2.1 子要素

- D.2.2 属性

- D.2.3 例

- D.3 active

- D.3.1 子要素

- D.3.2 属性

- D.3.3 例

- D.4 adapter

- D.4.1 子要素

- D.4.2 属性

- D.4.3 例

- D.5 amount

- D.5.1 子要素

- D.5.2 属性

- D.5.3 例

- D.6 application

- D.6.1 子要素

- D.6.2 属性

- D.6.3 例

- D.7 average-interval

- D.7.1 子要素

- D.7.2 属性

- D.7.3 例

- D.8 average-latency

- D.8.1 子要素

- D.8.2 属性

- D.8.3 例

- D.9 batch-size

- D.9.1 子要素

- D.9.2 属性

- D.9.3 例

- D.10 batch-time-out

- D.10.1 子要素

- D.10.2 属性

- D.10.3 例

- D.11 binding

- D.11.1 子要素

- D.11.2 属性

- D.11.3 例

- D.12 bindings (jms-adapter)

- D.12.1 子要素

- D.12.2 属性

- D.12.3 例

- D.13 bindings (processor)

- D.13.1 子要素

- D.13.2 属性

- D.13.3 例

- D.14 buffer-size

- D.14.1 子要素

- D.14.2 属性

- D.14.3 例

- D.15 buffer-write-attempts

- D.15.1 子要素

- D.15.2 属性

- D.15.3 例

- D.16 buffer-write-timeout

- D.16.1 子要素

- D.16.2 属性

- D.16.3 例

- D.17 cache

- D.17.1 子要素

- D.17.2 属性

- D.17.3 例

- D.18 caching-system

- D.18.1 子要素

- D.18.2 属性

- D.18.3 例

- D.19 channel

- D.19.1 子要素

- D.19.2 属性

- D.19.3 例

- D.20 channel (http-pub-sub-adapterの子要素)

- D.20.1 子要素

- D.20.2 属性

- D.20.3 例

- D.21 channel-name

- D.21.1 子要素

- D.21.2 属性

- D.21.3 例

- D.22 coherence-cache-config

- D.22.1 子要素

- D.22.2 属性

- D.22.3 例

- D.23 coherence-caching-system

- D.23.1 子要素

- D.23.2 属性

- D.23.3 例

- D.24 coherence-cluster-config

- D.24.1 子要素

- D.24.2 属性

- D.24.3 例

- D.25 collect-interval

- D.25.1 子要素

- D.25.2 属性

- D.25.3 例

- D.26 concurrent-consumers

- D.26.1 子要素

- D.26.2 属性

- D.26.3 例

- D.27 connection-jndi-name

- D.27.1 子要素

- D.27.2 属性

- D.27.3 例

- D.28 connection-encrypted-password

- D.28.1 子要素

- D.28.2 属性

- D.28.3 例

- D.29 connection-password

- D.29.1 子要素

- D.29.2 属性

- D.29.3 例

- D.30 connection-user

- D.30.1 子要素

- D.30.2 属性

- D.30.3 例

- D.31 database

- D.31.1 子要素

- D.31.2 属性

- D.31.3 例

- D.32 dataset-name

- D.32.1 子要素

- D.32.2 属性

- D.32.3 例

- D.33 delivery-mode

- D.33.1 子要素

- D.33.2 属性

- D.33.3 例

- D.34 destination-jndi-name

- D.34.1 子要素

- D.34.2 属性

- D.34.3 例

- D.35 destination-name

- D.35.1 子要素

- D.35.2 属性

- D.35.3 例

- D.36 destination-type

- D.36.1 子要素

- D.36.2 属性

- D.36.3 例

- D.37 diagnostic-profiles

- D.37.1 子要素

- D.37.2 属性

- D.37.3 例

- D.38 direction

- D.38.1 子要素

- D.38.2 属性

- D.38.3 例

- D.39 durable-subscription

- D.39.1 子要素

- D.39.2 属性

- D.39.3 例

- D.40 durable-subscription-name

- D.40.1 子要素

- D.40.2 属性

- D.40.3 例

- D.41 duration

- D.41.1 子要素

- D.41.2 属性

- D.41.3 例

- D.42 enabled

- D.42.1 子要素

- D.42.2 属性

- D.42.3 例

- D.43 encrypted-password

- D.43.1 子要素

- D.43.2 属性

- D.43.3 例

- D.44 end

- D.44.1 子要素

- D.44.2 属性

- D.44.3 例

- D.45 end-location

- D.45.1 子要素

- D.45.2 属性

- D.45.3 例

- D.46 event-bean

- D.46.1 子要素

- D.46.2 属性

- D.46.3 例

- D.47 event-type

- D.47.1 子要素

- D.47.2 属性

- D.47.3 例

- D.48 event-type-list

- D.48.1 子要素

- D.48.2 属性

- D.48.3 例

- D.49 eviction-policy

- D.49.1 子要素

- D.49.2 属性

- D.49.3 例

- D.50 fail-when-rejected

- D.50.1 子要素

- D.50.2 属性

- D.50.3 例

- D.51 group-binding

- D.51.1 子要素

- D.51.2 属性

- D.51.3 例

- D.52 heartbeat

- D.52.1 子要素

- D.52.2 属性

- D.52.3 例

- D.53 http-pub-sub-adapter

- D.53.1 子要素

- D.53.2 属性

- D.53.3 例

- D.54 idle-time

- D.54.1 子要素

- D.54.2 属性

- D.54.3 例

- D.55 inject-parameters

- D.55.1 子要素

- D.55.2 属性

- D.55.3 例

- D.56 jms-adapter

- D.56.1 子要素

- D.56.2 属性

- D.56.3 例

- D.57 jndi-factory

- D.57.1 子要素

- D.57.2 属性

- D.57.3 例

- D.58 jndi-provider-url

- D.58.1 子要素

- D.58.2 属性

- D.58.3 例

- D.59 listeners

- D.59.1 子要素

- D.59.2 属性

- D.59.3 例

- D.60 location

- D.60.1 子要素

- D.60.2 属性

- D.60.3 例

- D.61 max-latency

- D.61.1 子要素

- D.61.2 属性

- D.61.3 例

- D.62 max-size

- D.62.1 子要素

- D.62.2 属性

- D.62.3 例

- D.63 max-threads

- D.63.1 子要素

- D.63.2 属性

- D.63.3 例

- D.64 message-selector

- D.64.1 子要素

- D.64.2 属性

- D.64.3 例

- D.65 name

- D.65.1 子要素

- D.65.2 属性

- D.65.3 例

- D.66 netio

- D.66.1 子要素

- D.66.2 属性

- D.66.3 例

- D.67 num-threads

- D.67.1 子要素

- D.67.2 属性

- D.67.3 例

- D.68 offer-timeout

- D.68.1 子要素

- D.68.2 属性

- D.68.3 例

- D.69 param

- D.69.1 子要素

- D.69.2 属性

- D.69.3 例

- D.70 parameter

- D.70.1 子要素

- D.70.2 属性

- D.70.3 例

- D.71 params

- D.71.1 子要素

- D.71.2 属性

- D.71.3 例

- D.72 partition-order-capacity

- D.72.1 子要素

- D.72.2 属性

- D.72.3 例

- D.73 password

- D.73.1 子要素

- D.73.2 属性

- D.73.3 例

- D.74 playback-parameters

- D.74.1 子要素

- D.74.2 属性

- D.74.3 例

- D.75 playback-speed

- D.75.1 子要素

- D.75.2 属性

- D.75.3 例

- D.76 processor (EPL)

- D.76.1 子要素

- D.76.2 属性

- D.76.3 例

- D.77 processor (Oracle CQL)

- D.77.1 子要素

- D.77.2 属性

- D.77.3 例

- D.78 profile

- D.78.1 子要素

- D.78.2 属性

- D.78.3 例

- D.79 provider-name

- D.79.1 子要素

- D.79.2 属性

- D.79.3 例

- D.80 query

- D.80.1 子要素

- D.80.2 属性

- D.80.3 例

- D.81 record-parameters

- D.81.1 子要素

- D.81.2 属性

- D.81.3 例

- D.82 repeat

- D.82.1 子要素

- D.82.2 属性

- D.82.3 例

- D.83 rule

- D.83.1 子要素

- D.83.2 属性

- D.83.3 例

- D.84 rules

- D.84.1 子要素

- D.84.2 属性

- D.84.3 例

- D.85 schedule-time-range

- D.85.1 子要素

- D.85.2 属性

- D.85.3 例

- D.86 schedule-time-range-offset

- D.86.1 子要素

- D.86.2 属性

- D.86.3 例

- D.87 selector

- D.87.1 子要素

- D.87.2 属性

- D.87.3 例

- D.88 server-context-path

- D.88.1 子要素

- D.88.2 属性

- D.88.3 例

- D.89 server-url

- D.89.1 子要素

- D.89.2 属性

- D.89.3 例

- D.90 session-ack-mode-name

- D.90.1 子要素

- D.90.2 属性

- D.90.3 例

- D.91 session-transacted

- D.91.1 子要素

- D.91.2 属性

- D.91.3 例

- D.92 stage

- D.92.1 子要素

- D.92.2 属性

- D.92.3 例

- D.93 start

- D.93.1 子要素

- D.93.2 属性

- D.93.3 例

- D.94 start-location

- D.94.1 子要素

- D.94.2 属性

- D.94.3 例

- D.95 start-stage

- D.95.1 子要素

- D.95.2 属性

- D.95.3 例

- D.96 store-policy-parameters

- D.96.1 子要素

- D.96.2 属性

- D.96.3 例

- D.97 stream

- D.97.1 子要素

- D.97.2 属性

- D.97.3 例

- D.98 symbol

- D.98.1 子要素

- D.98.2 属性

- D.98.3 例

- D.99 symbols

- D.99.1 子要素

- D.99.2 属性

- D.99.3 例

- D.100 threshold

- D.100.1 子要素

- D.100.2 属性

- D.100.3 例

- D.101 throughput

- D.101.1 子要素

- D.101.2 属性

- D.101.3 例

- D.102 throughput-interval

- D.102.1 子要素

- D.102.2 属性

- D.102.3 例

- D.103 time-range

- D.103.1 子要素

- D.103.2 属性

- D.103.3 例

- D.104 time-range-offset

- D.104.1 子要素

- D.104.2 属性

- D.104.3 例

- D.105 time-to-live

- D.105.1 子要素

- D.105.2 属性

- D.105.3 例

- D.106 trace-parameters

- D.106.1 子要素

- D.106.2 属性

- D.106.3 例

- D.107 unit

- D.107.1 子要素

- D.107.2 属性

- D.107.3 例

- D.108 user

- D.108.1 子要素

- D.108.2 属性

- D.108.3 例

- D.109 value

- D.109.1 子要素

- D.109.2 属性

- D.109.3 例

- D.110 view

- D.110.1 子要素

- D.110.2 属性

- D.110.3 例

- D.111 work-manager

- D.111.1 子要素

- D.111.2 属性

- D.111.3 例

- D.112 work-manager-name

- D.112.1 子要素

- D.112.2 属性

- D.112.3 例

- D.113 write-behind

- D.113.1 子要素

- D.113.2 属性

- D.113.3 例

- D.114 write-none

- D.114.1 子要素

- D.114.2 属性

- D.114.3 例

- D.115 write-through

- D.115.1 子要素

- D.115.2 属性

- D.115.3 例

E スキーマの参照: deployment.xsdのデプロイメント

- E.1 Oracle Event Processingデプロイメント要素の概要

- E.1.1 要素の階層

- E.1.2 Oracle Event Processingデプロイメント構成ファイルの例

- E.2 wlevs:deployment

- E.2.1 子要素

- E.2.2 属性

- E.2.3 例

F スキーマ参照: サーバー構成wlevs_server_config.xsd

- F.1 Oracle Event Processingサーバー構成要素の概要

- F.1.1 要素の階層

- F.1.2 Oracle Event Processingサーバー構成ファイルの例

- F.2 auth-constraint

- F.2.1 子要素

- F.2.2 属性

- F.2.3 例

- F.3 bdb-config

- F.3.1 子要素

- F.3.2 属性

- F.3.3 例

- F.4 channels

- F.4.1 子要素

- F.4.2 属性

- F.4.3 例

- F.5 channel-constraints

- F.5.1 子要素

- F.5.2 属性

- F.5.3 例

- F.6 channel-resource-collection

- F.6.1 子要素

- F.6.2 属性

- F.6.3 例

- F.7 cluster

- F.7.1 子要素

- F.7.2 属性

- F.7.3 例

- F.8 connection-pool-params

- F.8.1 子要素

- F.8.2 属性

- F.8.3 例

- F.9 cql

- F.9.1 子要素

- F.9.2 属性

- F.9.3 例

- F.10 data-source

- F.10.1 子要素

- F.10.2 属性

- F.10.3 例

- F.11 data-source-params

- F.11.1 子要素

- F.11.2 属性

- F.11.3 例

- F.12 driver-params

- F.12.1 子要素

- F.12.2 属性

- F.12.3 例

- F.13 domain

- F.13.1 子要素

- F.13.2 属性

- F.13.3 例

- F.14 debug

- F.14.1 子要素

- F.14.2 属性

- F.14.3 例

- F.15 event-store

- F.15.1 子要素

- F.15.2 属性

- F.15.3 例

- F.16 exported-jndi-context

- F.16.1 子要素

- F.16.2 属性

- F.16.3 例

- F.17 http-pubsub

- F.17.1 子要素

- F.17.2 属性

- F.17.3 例

- F.18 jetty

- F.18.1 子要素

- F.18.2 属性

- F.18.3 例

- F.19 jetty-web-app

- F.19.1 子要素

- F.19.2 属性

- F.19.3 例

- F.20 jmx

- F.20.1 子要素

- F.20.2 属性

- F.20.3 例

- F.21 jndi-context

- F.21.1 子要素

- F.21.2 属性

- F.21.3 例

- F.22 log-file

- F.22.1 子要素

- F.22.2 属性

- F.22.3 例

- F.23 log-stdout

- F.23.1 子要素

- F.23.2 属性

- F.23.3 例

- F.24 logging-service

- F.24.1 子要素

- F.24.2 属性

- F.24.3 例

- F.25 message-filters

- F.25.1 子要素

- F.25.2 属性

- F.25.3 例

- F.26 name

- F.26.1 子要素

- F.26.2 属性

- F.26.3 例

- F.27 netio

- F.27.1 子要素

- F.27.2 属性

- F.27.3 例

- F.28 netio-client

- F.28.1 子要素

- F.28.2 属性

- F.28.3 例

- F.29 partition-order-capacity

- F.29.1 子要素

- F.29.2 属性

- F.29.3 例

- F.30 path

- F.30.1 子要素

- F.30.2 属性

- F.30.3 例

- F.31 pubsub-bean

- F.31.1 子要素

- F.31.2 属性

- F.31.3 例

- F.32 rdbms-event-store-provider

- F.32.1 子要素

- F.32.2 属性

- F.32.3 例

- F.33 rmi

- F.33.1 子要素

- F.33.2 属性

- F.33.3 例

- F.34 scheduler

- F.34.1 子要素

- F.34.2 属性

- F.34.3 例

- F.35 server-config

- F.35.1 子要素

- F.35.2 属性

- F.35.3 例

- F.36 services

- F.36.1 子要素

- F.36.2 属性

- F.36.3 例

- F.37 show-detail-error-message

- F.37.1 子要素

- F.37.2 属性

- F.37.3 例

- F.38 ssl

- F.38.1 子要素

- F.38.2 属性

- F.38.3 例

- F.39 timeout-seconds

- F.39.1 子要素

- F.39.2 属性

- F.39.3 例

- F.40 transaction-manager

- F.40.1 子要素

- F.40.2 属性

- F.40.3 例

- F.41 use-secure-connections

- F.41.1 子要素

- F.41.2 属性

- F.41.3 例

- F.42 weblogic-instances

- F.42.1 子要素

- F.42.2 属性

- F.42.3 例

- F.43 weblogic-jta-gateway

- F.43.1 子要素

- F.43.2 属性

- F.43.3 例

- F.44 weblogic-rmi-client

- F.44.1 子要素

- F.44.2 属性

- F.44.3 例

- F.45 work-manager

- F.45.1 子要素

- F.45.2 属性

- F.45.3 例

- F.46 xa-params

- F.46.1 子要素

- F.46.2 属性

- F.46.3 例

G スキーマ参照: メッセージ・カタログmsgcat.dtd

- G.1 メッセージ・カタログ要素の概要

- G.1.1 要素の階層

- G.1.2 例

- G.2 message_catalog

- G.2.1 子要素

- G.2.2 属性

- G.2.3 例

- G.3 logmessage

- G.3.1 子要素

- G.3.2 属性

- G.3.3 例

- G.4 message

- G.4.1 子要素

- G.4.2 属性

- G.4.3 例

- G.5 messagebody

- G.5.1 子要素

- G.5.2 属性

- G.5.3 例

- G.6 messagedetail

- G.6.1 子要素

- G.6.2 属性

- G.6.3 例

- G.7 cause

- G.7.1 子要素

- G.7.2 属性

- G.7.3 例

- G.8 action

- G.8.1 子要素

- G.8.2 属性

- G.8.3 例

H スキーマ参照: ロケール・メッセージ・カタログl10n_msgcat.dtd

- H.1 ロケール・メッセージ・カタログ要素の概要

- H.1.1 要素の階層

- H.1.2 例

- H.2 locale_message_catalog

- H.2.1 子要素

- H.2.2 属性

- H.2.3 例

- H.3 logmessage

- H.3.1 子要素

- H.3.2 属性

- H.3.3 例

- H.4 message

- H.4.1 子要素

- H.4.2 属性

- H.4.3 例

- H.5 messagebody

- H.5.1 子要素

- H.5.2 属性

- H.5.3 例

- H.6 messagedetail

- H.6.1 子要素

- H.6.2 属性

- H.6.3 例

- H.7 cause

- H.7.1 子要素

- H.7.2 属性

- H.7.3 例

- H.8 action

- H.8.1 子要素

- H.8.2 属性

- H.8.3 例

I Oracle Event Processingメタデータ注釈リファレンス

- I.1 Oracle Event Processingメタデータ注釈の概要

- I.1.1 アダプタ・ライフサイクル注釈

- I.1.2 OSGiサービス参照注釈

- I.1.3 リソース・アクセス注釈

- I.2 com.bea.wlevs.configuration.Activate

- I.2.1 例

- I.3 com.bea.wlevs.configuration.Prepare

- I.3.1 例

- I.4 com.bea.wlevs.configuration.Rollback

- I.4.1 例

- I.5 com.bea.wlevs.util.Service

- I.5.1 属性

- I.5.2 例

例一覧

- 1-1 ネストされたBeanによるEPNアセンブリ・ファイル

- 1-2 ネストされたすべてのノードによるEPNアセンブリ・ファイル

- 1-3 アプリケーション2の外部ステージを参照するアプリケーション1

- 1-4 アプリケーション2の外部ステージ

- 1-5 ConfigurationPropertyPlaceholderConfigurerの追加

- 1-6 サンプル・リソース: データ・リソースStockDS

- 1-7 静的リソース名を使用する静的リソース・インジェクション: 注釈

- 1-8 静的リソース名を使用する静的リソース・インジェクション: XML

- 1-9 静的リソース名を使用する静的リソース・インジェクション: 注釈

- 1-10 静的リソース名を使用する静的リソース・インジェクション: XML

- 1-11 カスタム・コンポーネント構成

- 1-12 動的リソース名を使用する静的リソース・インジェクション: 注釈

- 1-13 動的リソース名を使用する静的リソース・インジェクション: XML

- 1-14 動的リソース・インジェクション: 注釈

- 1-15 JNDIによる動的リソース参照

- 2-1 recplayアプリケーション構成ファイルconfig.xml: adapter要素

- 4-1 デフォルトのeclipse.iniファイル

- 4-2 メモリー・リソース

- 4-3 仮想マシン・パス

- 5-1 プロパティ・ファイルのアクセス

- 7-1 ネストされるBeanを含むEPNのアセンブリ・ソース

- 7-2 すべてのノードがネストされたEPNのアセンブリ・ソース

- 8-1 CQLコードを使用したGetHighVolume問合せ要素

- 9-1 イベント・タイプ・リポジトリ

- 9-2 MarketEventクラス

- 9-3 MarketEventクラス

- 9-4 EPNアセンブリ・ファイルevent-type-repository

- 9-5 プログラムとしてイベントの登録

- 9-6 タプル・イベント・タイプ・プロパティ用のcom.bea.welvs.ede.api.Typeデータ型の指定

- 9-7 EPNアセンブリ・ファイルevent-type-repository

- 9-8 java.util.Mapイベント・タイプ・プロパティ用のJavaデータ型の指定

- 9-9 EPNアセンブリ・ファイルevent-type-repository

- 9-10 プログラムとしてイベントの登録

- 9-11 EPN EventTypeRepositoryのOSGi参照によるEPNアセンブリ・ファイル

- 9-12 MyBean実施でのEventTypeRepositoryへのアクセス

- 9-13 @ServiceReference注釈を使用するJavaソース・ファイル

- 9-14 @Service注釈を使用するJavaソース・ファイル

- 10-1 EPNアセンブリ・ファイルのチャネルID: priceStream

- 10-2 コンポーネント構成ファイルのチャネル名: priceStream

- 10-3 リレーションとしてのチャネル: primary-key属性

- 10-4 PriceEvent

- 10-5 filterFanoutProcessor Oracle CQL問合せ

- 10-6 どの問合せ結果を出力するか制御するためのselectorの使用

- 10-7 バッチ処理チャネル

- 10-8 コンポーネント構成ファイルのヘッダーおよびconfig要素

- 10-9 コンポーネント構成ファイルのチャネル要素

- 10-10 EPNアセンブリ・ファイルのチャネルID: priceStream

- 10-11 コンポーネント構成ファイルのチャネル名: priceStream

- 10-12 コンポーネント構成ファイルのヘッダーおよびconfig要素

- 10-13 コンポーネント構成ファイルのチャネル要素

- 10-14 EPNアセンブリ・ファイルのチャネルID: priceStream

- 10-15 コンポーネント構成ファイルのチャネル名: priceStream

- 10-16 サンプルのチャネル・コンポーネント構成ファイル

- 10-17 チャネルEPNアセンブリ・ファイル

- 11-1 インバウンド・アダプタのwlevs:adapter要素

- 11-2 インバウンド・アダプタのjms-adapter要素

- 11-3 Tibco EMS JMSのjms-adapter要素の構成

- 11-4 インバウンド・アダプタのwlevs:adapter要素

- 11-5 インバウンド・アダプタのjms-adapter要素

- 11-6 Oracle WebLogic Server JMSプロバイダのjms-adapter要素

- 11-7 インバウンド・アダプタのwlevs:adapter要素

- 11-8 インバウンド・アダプタのjms-adapter要素

- 11-9 Tibco EMS JMSのjms-adapter要素の構成

- 11-10 インバウンドJMSアダプタ用のカスタム・コンバータ

- 11-11 EPNアセンブリ・ファイルでのインバウンドJMSアダプタ用のコンバータ・クラスの指定

- 11-12 アウトバウンドJMSアダプタ用のカスタム・コンバータ

- 11-13 EPNアセンブリ・ファイルでのアウトバウンドJMSアダプタ用のコンバータ・クラスの指定

- 13-1 コンポーネント構成ファイル名値

- 13-2 EPNアセンブリ・ファイルIDおよび参照値

- 13-3 コンポーネント構成ファイル: Coherenceキャッシュ

- 13-4 Oracle CoherenceキャッシュのLocalListenerの実装

- 13-5 キャッシュ・ローダー用Oracle CoherenceキャッシュのEPNアセンブリ・ファイル

- 13-6 Oracle CoherenceキャッシュのLocalLoaderの実装

- 13-7 キャッシュ・ストア用Oracle CoherenceキャッシュのEPNアセンブリ・ファイル

- 13-8 Oracle CoherenceキャッシュのLocalStoreの実装

- 13-9 キャッシュに対して有効なOracle CQL問合せ

- 14-1 bea-jaxws.xmlファイル

- 15-1 入力アダプタ・クラスの上位レベル・ビュー

- 16-1 StreamSinkインタフェースの実装

- 16-2 RelationSinkインタフェースの実装

- 16-3 RelationSourceインタフェースの実装

- 17-1 EPNアセンブリ・ファイルOracle CQLプロセッサID: proc

- 17-2 コンポーネント構成ファイルOracle CQLプロセッサ名: proc

- 17-3 デフォルト・プロセッサ・コンポーネント構成

- 17-4 表作成SQL文

- 17-5 リレーショナル・データベース表StockのOracle CQL問合せ

- 17-6 データ・ソースStockDSを使用したOracle Event Processingサーバーのconfig.xmlファイル

- 17-7 EPNアセンブリ・ファイル表要素

- 17-8 EPNアセンブリ・ファイルtable-source要素

- 17-9 表のEPNアセンブリ・ファイルevent-type要素

- 17-10 表イベント・タイプStockEventを使用するOracle CQL問合せ

- 17-11 パラレル実行を許可するように構成された問合せ

- 17-12 パーティション間のパラレル実行を許可するように構成された問合せ

- 17-13 フォルト・ハンドラ・クラス

- 17-14 EPNステージにフォルト・ハンドラを登録するコード

- 18-1 EPNアセンブリ・ファイル: Oracle Spatialネームスペースおよびスキーマの場所

- 18-2 EPNアセンブリ・ファイル内のspatial:context要素

- 18-3 EPNアセンブリ・ファイル内のspatial:context要素

- 18-4 Oracle CQL問合せでspatial:contextの参照

- 18-5 EPNアセンブリ・ファイル: Oracle JDBCデータ・カートリッジ・ネームスペースおよびスキーマの場所

- 18-6 EPNアセンブリ・ファイル内のjdbc:jdbc-context要素: id

- 18-7 コンポーネント構成ファイル: Oracle JDBCデータ・カートリッジ・ネームスペース

- 18-8 コンポーネント構成ファイル内のjc:jdbc-ctx要素

- 18-9 コンポーネント構成ファイル内のjc:jdbc-ctx要素: name

- 18-10 コンポーネント構成ファイル内のjc:jdbc-ctx要素: data-source

- 18-11 コンポーネント構成ファイル内のjc:jdbc-ctx要素: function

- 18-12 Oracle CQL問合せでJDBCアプリケーション・コンテキストの参照

- 19-1 EPNアセンブリ・ファイル EPLプロセッサID: proc

- 19-2 コンポーネント構成ファイル EPLプロセッサ名: proc

- 20-1 bdb-config要素

- 20-2 デフォルトbdb-config要素

- 21-1 EmployeeEventのイベント・タイプ

- 21-2 EmployeeEventイベント・タイプのデータ・フィード・ファイル

- 22-1 イベント・インスペクタJSONイベント

- 22-2 イベント・インスペクタ・サービス・ローカルのHTTPパブリッシュ・サブスクライブ・サーバー

- 22-3 Oracle Event Processing組込みのHTTPパブリッシュ・サブスクライブ・サーバーのhttp-pubsub要素

- 22-4 イベント・インスペクタ・サービス・リモートのHTTPパブリッシュ・サブスクライブ・サーバー

- 22-5 Oracle Event Processing組込みのHTTPパブリッシュ・サブスクライブ・サーバーのhttp-pubsub要素

- 22-6 イベント・インジェクション・コンポーネント構成設定

- 22-7 イベント・トレース・コンポーネント構成設定

- 23-1 bundler.shコマンド・ライン・オプション

- 23-2 Bundlerユーティリティの使用

- 23-3 バンドルJARコンテンツ

- 23-4 サービス登録ログ・メッセージ

- 23-5 MyActivatorクラスの実装

- 23-6 データベース・ドライバの解凍

- 23-7 マニフェスト・エディタへのエクスポート・パッケージの追加

- 23-8 マニフェスト・エディタへのBundle-Activator要素の追加

- 23-9 マニフェスト・エディタへのDynamicImport-Package要素の追加

- 23-10 メッセージ引数

- 23-11 ログ・メッセージ・カタログ

- 23-12 シンプル・テキスト・カタログ

- 23-13 ロケール固有のカタログ

- 24-1 シンプル・フェイルオーバーのEPNアセンブリ・ファイル

- 24-2 シンプル・フェイルオーバーのコンポーネント構成アセンブリ・ファイル

- 24-3 シンプル・フェイルオーバーのEPNアセンブリ・ファイル: バッファリング出力アダプタ

- 24-4 アプリケーション・タイムスタンプの構成

- 24-5 バッファリング出力アダプタにおけるwindowLengthの構成

- 24-6 高可用性アダプタを使用したシンプル・フェイルオーバーのコンポーネント構成ファイル

- 24-7 バッファリングEPNアセンブリ・ファイルを使用するシンプル・フェイルオーバー

- 24-8 バッファリング・コンポーネント構成アセンブリ・ファイルを使用するシンプル・フェイルオーバー

- 24-9 シンプル・フェイルオーバーのEPNアセンブリ・ファイル: バッファリング出力アダプタ

- 24-10 アプリケーション・タイムスタンプの構成

- 24-11 バッファリング出力アダプタにおけるwindowLengthの構成

- 24-12 バッファリング・コンポーネント構成ファイルを使用するシンプル・フェイルオーバー

- 24-13 軽量キュー・トリミングのEPNアセンブリ・ファイル

- 24-14 軽量キュー・トリミングのコンポーネント構成アセンブリ・ファイル

- 24-15 軽量キュー・トリミングのEPNアセンブリ・ファイル: 高可用性入力アダプタ

- 24-16 軽量キュー・トリミングのEPNアセンブリ・ファイル: ブロードキャスト出力アダプタ

- 24-17 高可用性入力アダプタ: デフォルト構成

- 24-18 高可用性入力アダプタ: タプル・イベント

- 24-19 高可用性入力アダプタ: 1つのイベント・プロパティのキー

- 24-20 高可用性入力アダプタ: 複数のイベント・プロパティのキー

- 24-21 MyCompoundKeyClassの実装

- 24-22 アプリケーション・タイムスタンプの構成

- 24-23 ブロードキャスト出力アダプタ: デフォルト構成

- 24-24 ブロードキャスト出力アダプタ: 1つのイベント・プロパティのキー

- 24-25 ブロードキャスト出力アダプタ: 複数のイベント・プロパティのキー

- 24-26 MyCompoundKeyClassの実装

- 24-27 軽量キュー・トリミングのコンポーネント構成ファイル

- 24-28 JMSのEPNアセンブリ・ファイルによる正確なリカバリ

- 24-29 JMSコンポーネント構成アセンブリ・ファイルによる正確なリカバリ

- 24-30 JMSのEPNアセンブリ・ファイルによる正確なリカバリ: 高可用性入力アダプタ

- 24-31 JMSのEPNアセンブリ・ファイルによる正確なリカバリ: 相関出力アダプタ

- 24-32 高可用性入力アダプタ: デフォルト構成

- 24-33 高可用性入力アダプタ: タプル・イベント

- 24-34 高可用性入力アダプタ: 1つのイベント・プロパティのキー

- 24-35 高可用性入力アダプタ: 複数のイベント・プロパティのキー

- 24-36 MyCompoundKeyClassの実装

- 24-37 アプリケーション・タイムスタンプの構成

- 24-38 相関出力アダプタの構成: failOverDelay

- 24-39 インバウンドJMSアダプタのアセンブリ・ファイル

- 24-40 インバウンドJMSアダプタのコンポーネント構成ファイル

- 24-41 相関ソースの作成

- 24-42 相関出力アダプタ: correlatedSource

- 24-43 インバウンド/アウトバウンドJMSアダプタのコンポーネント構成ファイル

- 24-44 高可用性入力/出力アダプタのコンポーネント構成ファイル

- 24-45 高可用性入力アダプタのEPNアセンブリ・ファイル

- 24-46 高可用性入力アダプタのコンポーネント構成ファイル

- 24-47 ブロードキャスト出力アダプタのEPNアセンブリ・ファイル

- 24-48 バッファリング出力アダプタのコンポーネント構成ファイル

- 24-49 ブロードキャスト出力アダプタのEPNアセンブリ・ファイル

- 24-50 ブロードキャスト出力アダプタのコンポーネント構成ファイル

- 24-51 相関出力アダプタのEPNアセンブリ・ファイル

- 24-52 相関出力アダプタのコンポーネント構成ファイル

- 25-1 ActiveActiveGroupBeanのbean要素

- 25-2 共通jms-adapterセレクタの定義

- 25-3 イベント・タイプPriceEventの定義

- 25-4 EventPartitionerクラス

- 25-5 EventPartitionerクラスの実装

- 25-6 ActiveActiveGroupBeanのbean要素

- 25-7 ocep-server-1用のjms-adapterセレクタ定義

- 25-8 JMSのEPNアセンブリ・ファイルによる正確なリカバリ

- 25-9 JMSコンポーネント構成アセンブリ・ファイルによる正確なリカバリ

- 25-10 ActiveActiveGroupBeanのbean要素

- 25-11 インバウンドJMSアダプタ用のjms-adapter要素

- 25-12 ocep-server-1用のjms-adapterセレクタ定義

- 25-13 アウトバウンドJMSアダプタ用のjms-adapter要素

- 25-14 groupPattern属性を持つActiveActiveGroupBeanのBean要素

- 26-1 注釈を付けられたカスタム・アダプタ実装

- 26-2 拡張コンポーネント構成: 注釈

- 26-3 拡張コンポーネント構成ファイル: XSD

- 26-4 カスタム・アダプタ実装

- 26-5 拡張コンポーネント構成

- C-1 単一行のユーザー定義関数実装クラス

- C-2 Oracle CQLプロセッサ上の単一行のユーザー定義関数

- C-3 Oracle CQLプロセッサ上の単一行のユーザー定義関数の呼び出し

- C-4 単一行のユーザー定義関数実装クラス

- C-5 EPLプロセッサ上の単一行のユーザー定義関数

- C-6 EPLプロセッサ上の単一行のユーザー定義関数の呼び出し

- C-7 集計のユーザー定義関数実装クラス

- C-8 Oracle CQLプロセッサ上の集計のユーザー定義関数

- C-9 Oracle CQLプロセッサ上の集計のユーザー定義関数の呼び出し

- C-10 集計のユーザー定義関数実装クラス

- C-11 EPLプロセッサ上の集計のユーザー定義関数

- C-12 EPLプロセッサ上の集計のユーザー定義関数の呼び出し

- C-13 ネストしたBean要素を使用するユーザー定義関数

- C-14 リファレンスを使用するユーザー定義関数

- D-1 adapter要素の階層

- D-2 http-pub-sub-adapter要素の階層

- D-3 jms-adapter要素の階層

- D-4 processor (EPL)要素の階層

- D-5 processor (Oracle CQL)要素の階層

- D-6 stream要素の階層

- D-7 channel要素の階層

- D-8 event-bean要素の階層

- D-9 caching-system要素の階層

- D-10 coherence-caching-system要素の階層

- D-11 diagnostic-profiles要素の階層

- D-12 filterFanoutProcessor Oracle CQL問合せ

- D-13 どの問合せ結果を出力するか制御するためのselectorの使用

- G-1 ログ・メッセージ・カタログの階層

- G-2 シンプル・テキスト・カタログの階層

- G-3 ログ・メッセージ・カタログ

- G-4 シンプル・テキスト・カタログ

- H-1 ロケール固有のログ・メッセージ・カタログの階層

- H-2 ロケール固有のシンプル・テキスト・カタログの階層

- H-3 ロケール固有のログ・メッセージ・カタログ

- H-4 ロケール固有のシンプル・テキスト・カタログ

- I-1 @Activate注釈

- I-2 HelloWorldAdapterConfig

- I-3 @Prepare注釈

- I-4 @Rollback注釈

- I-5 @Service注釈

図一覧

- 1-1 Oracle Event Processingアプリケーション・ライフサイクルの状態図

- 2-1 HelloWorldサンプルのイベント処理ネットワーク

- 2-2 CQLサンプルのイベント処理ネットワーク

- 2-3 Oracle Event Processing Visualizerの「ログオン」画面

- 2-4 Oracle Event Processing Visualizerダッシュボード

- 2-5 CQLアプリケーション画面: 「全般」タブ

- 2-6 CQLアプリケーション: 「イベント処理ネットワーク」タブ

- 2-7 Oracle CQLプロセッサ: 「全般」タブ

- 2-8 Oracle CQLプロセッサ: 「問合せウィザード」タブ

- 2-9 「テンプレート」タブ

- 2-10 SSourceの構成ダイアログ

- 2-11 パターンの構成ダイアログ: 「パターン」タブ

- 2-12 パターンの構成ダイアログ: 「定義」タブ

- 2-13 式ビルダー: CustOrder

- 2-14 パターンの構成ダイアログ: CustOrder条件を含む「定義」タブ

- 2-15 式ビルダー: NoApproval

- 2-16 式ビルダー: Shipment

- 2-17 パターンの構成ダイアログ: 「定義」タブの完了

- 2-18 「メジャー」タブ

- 2-19 式ビルダー: orderid

- 2-20 式ビルダー: amount

- 2-21 「メジャー」タブ: 完了

- 2-22 選択の構成ダイアログ: 「プロジェクト」タブ

- 2-23 選択の構成ダイアログ: 「プロジェクト」タブの完了

- 2-24 出力の構成ダイアログ

- 2-25 ルールのインジェクトの「確認」ダイアログ

- 2-26 Tracking問合せを含む「CQLルール」タブ

- 2-27 ストリーム・ビジュアライザ: 欠落イベントの表示

- 2-28 Oracle Event Processing Visualizerの「ログオン」画面

- 2-29 Oracle Event Processing Visualizerダッシュボード

- 2-30 CQLアプリケーション画面: 「全般」タブ

- 2-31 CQLアプリケーション: 「イベント処理ネットワーク」タブ

- 2-32 Oracle CQLプロセッサ: 「全般」タブ

- 2-33 Oracle CQLプロセッサ: 「問合せウィザード」タブ

- 2-34 問合せウィザード: SSource

- 2-35 SSourceの構成ダイアログ

- 2-36 問合せウィザード: フィルタ

- 2-37 SSourceアイコンと「フィルタ」アイコンの接続

- 2-38 フィルタの構成ダイアログ

- 2-39 フィルタの式ビルダー

- 2-40 フィルタの構成ダイアログ: フィルタの追加後

- 2-41 問合せウィザード: 選択

- 2-42 選択の構成ダイアログ: プロパティの選択

- 2-43 問合せウィザード: 出力

- 2-44 出力の構成ダイアログ

- 2-45 ルールのインジェクトの「確認」ダイアログ

- 2-46 ビューStockVolGt1000を含む「CQLルール」タブ

- 2-47 Oracle Event Processing Visualizerの「ログオン」画面

- 2-48 Oracle Event Processing Visualizerダッシュボード

- 2-49 CQLアプリケーション画面: 「全般」タブ

- 2-50 CQLアプリケーション: 「イベント処理ネットワーク」タブ

- 2-51 Oracle CQLプロセッサ: 「全般」タブ

- 2-52 Oracle CQLプロセッサ: 「問合せウィザード」タブ

- 2-53 問合せウィザード: 移動平均問合せのSSource

- 2-54 SSourceの構成ダイアログ: 移動平均問合せ

- 2-55 問合せウィザード: 移動平均問合せのウィンドウ

- 2-56 ウィンドウの構成ダイアログ: ウィンドウの追加後

- 2-57 問合せウィザード: 移動平均問合せの選択

- 2-58 選択の構成ダイアログ: ソース・プロパティsymbolの選択

- 2-59 選択の構成ダイアログ: 出力イベント・プロパティにマップされたソース・プロパティsymbol

- 2-60 選択の構成ダイアログ: ソース・プロパティpriceの選択

- 2-61 式ビルダー: AVG関数の適用

- 2-62 選択の構成ダイアログ: 式を含む

- 2-63 選択の構成ダイアログ: 出力イベント・プロパティにマップされたソース・プロパティprice

- 2-64 検証エラー: GROUP BY

- 2-65 「グループ」タブ: グループ化プロパティsymbolを含む

- 2-66 問合せウィザード: 出力

- 2-67 出力の構成ダイアログ

- 2-68 ルールのインジェクトの「確認」ダイアログ

- 2-69 ビューMovingAverageを含む「CQLルール」タブ

- 2-70 ストリーム・ビジュアライザ: 移動平均問合せの出力表示

- 2-71 Oracle Spatialサンプルのイベント処理ネットワーク

- 2-72 Oracle SpatialのWebページ

- 2-73 Oracle SpatialのWebページ: バス停到着タブ

- 2-74 Oracle SpatialのWebページ: バスの追跡

- 2-75 FXサンプルのイベント処理ネットワーク

- 2-76 シグナル生成サンプルのイベント処理ネットワーク

- 2-77 シグナル生成のダッシュボード

- 2-78 イベントの記録と再生のサンプルのイベント処理ネットワーク

- 2-79 Oracle Event Processing Visualizerの「ログオン」画面

- 2-80 Oracle Event Processing Visualizerダッシュボード

- 2-81 イベントの「記録」タブ

- 2-82 記録開始の「アラート」ダイアログ

- 2-83 イベントの「再生」タブ

- 2-84 再生開始の「アラート」ダイアログ

- 2-85 ストリーム・ビジュアライザ

- 4-1 「インストール」ダイアログ

- 4-2 サイト追加ダイアログ

- 4-3 「インストール」ダイアログ - サイト選択

- 4-4 「インストール」ダイアログ-インストールの詳細

- 4-5 Eclipseについて

- 4-6 Eclipse機能についてダイアログ

- 4-7 機能プラグインダイアログ

- 4-8 「インストール」ダイアログ

- 4-9 サイト追加ダイアログ

- 4-10 ローカル・サイト・アーカイブの選択ダイアログ

- 4-11 Eclipseについて

- 4-12 Eclipse機能についてダイアログ

- 4-13 機能プラグインダイアログ

- 4-14 Java 6の構成詳細

- 5-1 Oracle Event Processingプロジェクト構造

- 5-2 新規プロジェクト-ウィザードの選択ダイアログ

- 5-3 新規Oracle Event Processingアプリケーション・プロジェクトウィザード:Oracle Event Processingアプリケーションの作成

- 5-4 新規Oracle Event Processingアプリケーション・プロジェクトウィザード:Oracle Event Processingアプリケーションのコンテンツ

- 5-5 新規Oracle Event Processingアプリケーション・プロジェクト・ウィザード:テンプレートダイアログ

- 5-6 「新規」ダイアログ

- 5-7 新規OEPアセンブリ・ファイルダイアログ

- 5-8 「新規」ダイアログ

- 5-9 新規OEPアプリケーション構成ファイルダイアログ

- 5-10 Oracle Event Processingプロジェクトbuild.propertiesファイル

- 5-11 Oracle Event Processingアプリケーション・エクスポート: プロジェクトの選択ダイアログ

- 5-12 プロジェクトのプロパティダイアログ:プロジェクト・ファセット

- 5-13 ファセット・プロジェクトの変更

- 5-14 「プリファレンス」ダイアログ

- 5-15 プロジェクト・プロパティダイアログ:ターゲット・ランタイム

- 5-16 ビルダー・エラー

- 5-17 プロジェクトのインポートダイアログ

- 5-18 プロジェクトのプロパティダイアログ:プロジェクト・ファセット

- 5-19 ファセット・プロジェクトの変更

- 5-20 「プリファレンス」ダイアログ

- 5-21 プロジェクト・プロパティダイアログ:ターゲット・ランタイム

- 5-22 ビルダー・エラー

- 5-23 「プリファレンス」ダイアログ

- 5-24 Oracle Event Processing IDE for Eclipseのlibディレクトリ

- 5-25 マニフェスト・エディタの「ビルド」タブ

- 5-26 マニフェスト・エディタの「ランタイム」タブ

- 5-27 JARの選択ダイアログ

- 5-28 JARをクラスパスに追加した後のマニフェスト・エディタの 「ランタイム」タブ

- 5-29 マニフェスト・エディタの「MANIFEST.MF」タブ

- 5-30 パッケージ・エクスプローラ

- 5-31 マニフェスト・エディタ:「依存関係」タブ

- 5-32 プラグインの選択ダイアログ

- 5-33 マニフェスト・エディタの「ビルド」タブ

- 5-34 Oracle Event Processing IDE for Eclipseのlibディレクトリ

- 5-35 マニフェスト・エディタの「ランタイム」タブ

- 5-36 パッケージの選択ダイアログ

- 5-37 パッケージをエクスポートした後のマニフェスト・エディタの 「ランタイム」タブ

- 5-38 Oracle Event Processing IDE for Eclipseのlibディレクトリ

- 5-39 マニフェスト・エディタの「依存関係」タブ

- 5-40 パッケージの選択ダイアログ

- 5-41 パッケージをインポートした後のマニフェスト・エディタの 「依存関係」タブ

- 5-42 Oracle Event Processingの問題の重大度ダイアログ: ワークスペース

- 6-1 Oracle Event Processing IDE for Eclipseのサーバー・ビュー

- 6-2 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)

- 6-3 新しいサーバー:新しいOracle Event Processing v11.1ランタイムダイアログ

- 6-4 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログ

- 6-5 新しいサーバー:新しいOracle Event Processing v11.1サーバー

- 6-6 ローカル・サーバー用の新しいサーバー:新しいOracle Event Processing v11サーバーダイアログ

- 6-7 Oracle Event Processing IDE for Eclipseのサーバー・ビュー

- 6-8 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)

- 6-9 新しいサーバー:新しいOracle Event Processing v11.1ランタイムダイアログ

- 6-10 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログ

- 6-11 新しいサーバー:新しいOracle Event Processing v11.1サーバー

- 6-12 リモート・サーバー用の新しいサーバー:新しいOracle Event Processing v11サーバーダイアログ

- 6-13 「プリファレンス」-「サーバー」(インストールされたランタイム)

- 6-14 新しいサーバー・ランタイム環境ダイアログ

- 6-15 新しいサーバー・ランタイム環境:新しいOracle Event Processing v11.1ランタイムダイアログ

- 6-16 Oracle Event Processingサーバーの起動

- 6-17 Oracle Event Processingサーバーの停止

- 6-18 既存のローカルOracle Event Processingサーバー・インスタンスへのアタッチ

- 6-19 既存のリモートOracle Event Processingサーバー・インスタンスへのアタッチ

- 6-20 Oracle Event Processingサーバーの停止

- 6-21 Oracle Event Processingサーバーへのプロジェクトの追加

- 6-22 追加と削除

- 6-23 プロジェクトを追加した後のサーバー・ビュー

- 6-24 「クラスタ・デプロイメント・グループ名の選択」ダイアログ

- 6-25 プロジェクトをデプロイ(パブリッシュ)した後のサーバー・ビュー

- 6-26 サーバー概要エディタ

- 6-27 ドメイン構成ファイルの編集

- 6-28 Oracle Event Processingドメイン構成ファイルconfig.xml

- 6-29 Oracle Event Processing Visualizerを開く

- 6-30 Oracle Event Processing Visualizer

- 6-31 ブレークポイントの設定

- 6-32 デバッグ・モードでのOracle Event Processingサーバーの起動

- 7-1 プロジェクトからEPNエディタを開く

- 7-2 EPNエディタ

- 7-3 コンテキストまたは構成ファイルからEPNエディタを開く

- 7-4 EPNエディタ

- 7-5 EPNのフロー表現

- 7-6 アセンブリ・ファイルによるEPNのフィルタ処理

- 7-7 ズーム・レベル

- 7-8 レイアウトの最適化

- 7-9 接続されていないBeanの表示/非表示

- 7-10 EPNをイメージ・ファイルとしてエクスポート

- 7-11 EPNの印刷

- 7-12 構成のバッジング

- 7-13 リンク・ソース

- 7-14 リンク・ソースのアセンブリ・ファイル

- 7-15 リンク・リスナー

- 7-16 リンク・リスナーのアセンブリ・ファイル

- 7-17 ネストされるBeanを含むEPN

- 7-18 すべてのノードがネストされたEPN

- 7-19 イベント・タイプ・リポジトリ・エディタ

- 7-20 構成バッジがついたノード

- 7-21 コンポーネント構成ファイル: EPNアセンブリ・ファイルへのハイパーリンク

- 7-22 EPNアセンブリ・ファイル: コンポーネント構成ファイルへのハイパーリンク

- 7-23 Oracle CQL文: イベント・スキーマ

- 7-24 EPNアセンブリ・ファイルの対応するイベント定義

- 7-25 Oracle Event Processing EPNの例

- 7-26 Oracle Event Processingタイプ・ブラウザ

- 7-27 EPNアセンブリ・ファイルFilterAsiaを開く

- 7-28 FilterAsiaコンポーネント構成ファイルを開く

- 7-29 基本ノードの作成

- 7-30 新規基本ノード

- 7-31 アダプタ・ノードの作成

- 7-32 新規アダプタ・ウィザード

- 7-33 新規アダプタ・ウィザード - jms-inbound

- 7-34 新規アダプタ・ウィザード - jms-outbound

- 7-35 新規アダプタ・ウィザード - httppub

- 7-36 新規アダプタ・ウィザード - httpsub

- 7-37 新規アダプタ・ノード

- 7-38 プロセッサ・ノードの作成

- 7-39 「新規プロセッサ」ダイアログ

- 7-40 新規プロセッサ・ノード

- 7-41 ノードの接続: 接続可能

- 7-42 ノードの接続: 接続禁止

- 7-43 有効な接続

- 7-44 EPNアセンブリ・ファイル: 接続前

- 7-45 EPNアセンブリ・ファイル: 接続後

- 7-46 ノードのレイアウト

- 7-47 ノード名の変更

- 7-48 ノードの削除

- 7-49 チャネル・ノードの削除前のEPN

- 7-50 チャネル・ノードの削除前のアセンブリ・ファイル

- 7-51 チャネル・ノードの削除後のEPN

- 7-52 チャネル・ノードの削除後のアセンブリ・ファイル

- 9-1 イベント・タイプ・リポジトリ・エディタ - JavaBeanイベント

- 9-2 イベント・タイプ・リポジトリ・エディタ - タプル・イベント

- 10-1 Oracle CQLプロセッサおよびダウンストリーム・チャネルを備えたEPN

- 10-2 構成バッジを備えたチャネル

- 10-3 構成バッジを備えたチャネル

- 10-4 2つのチャネルを持つEPN

- 12-1 ローカル・パブリッシュ用の組込みPub-Subアダプタ

- 12-2 リモート・パブリッシュ用の組込みPub-Subアダプタ

- 12-3 サブスクライブ用の組込みPub-Subアダプタ

- 13-1 プロセッサ・ソースとしてキャッシュ

- 13-2 プロセッサ・シンクとしてキャッシュ

- 20-1 EPNでの記録と再生の構成

- 23-1 外部ステージ依存関係グラフ

- 23-2 「プリファレンス」ダイアログ: アプリケーション・ライブラリのパス

- 23-3 パス変数の選択ダイアログ

- 23-4 新しい変数ダイアログ

- 23-5 パス変数の選択(当該変数名が表示)

- 23-6 変数の拡張ダイアログ

- 23-7 「プリファレンス」ダイアログ: アプリケーション・ライブラリ・パスとパス変数

- 23-8 Oracle Event Processing IDE for Eclipseのlibディレクトリ

- 23-9「新規Javaクラス」ダイアログ

- 23-10 マニフェスト・エディタ:「概要」タブ

- 23-11 マニフェスト・エディタ:「ランタイム」タブ

- 23-12 JARの選択ダイアログ

- 23-13 マニフェスト・エディタ:「依存関係」タブ

- 23-14 パッケージの選択ダイアログ

- 23-15 マニフェスト・エディタ

- 24-1 Oracle Event Processingの高可用性: プライマリ・サーバーおよびセカンダリ・サーバー

- 24-2 Oracle Event Processingの高可用性ライフサイクルの状態図

- 24-3 セカンダリの障害

- 24-4 プライマリの障害およびフェイルオーバー

- 24-5 EPN内の高可用性アダプタ

- 24-6 高可用性およびスケーラビリティ

- 24-7 JMSによる正確なリカバリ

- 24-8 イベント順序

- 24-9 シンプル・フェイルオーバーのEPN

- 24-10 バッファリングEPNを使用するシンプル・フェイルオーバー

- 24-11 軽量キュー・トリミングのEPN

- 24-12 JMSのEPNによる正確なリカバリ

- 25-1 イベント・パーティショナEPN

- 25-2 高可用性なしのOracle Event Processing ActiveActiveGroupBean

- 25-3 高可用性のあるOracle Event Processing ActiveActiveGroupBean

- 25-4 EventPartitioner EPN

- 25-5「新規Javaクラス」ダイアログ

- 25-6 JMSのEPNによる正確なリカバリ

- 25-7 高可用性のあるOracle Event Processing ActiveActiveGroupBean

- D-1 Oracle CQLプロセッサおよびダウンストリーム・チャネルがあるEPN

表一覧

- 1-1 リソース名解決

- 2-1 有効な注文のワークフロー

- 2-2 無効な注文のワークフロー

- 2-3 MATCH_RECOGNIZEのパターン量指定子

- 2-4 条件定義

- 4-1 新規更新サイトダイアログの属性

- 4-2 Oracle Event Processing IDE for Eclipseプラグイン

- 4-3 Oracle Event Processing IDE for Eclipseプラグイン

- 5-1 Oracle Event Processingプロジェクト・アーティファクト

- 5-2 Oracle Event Processingアプリケーションの作成ダイアログ

- 5-3 Oracle Event Processingアプリケーションのコンテンツダイアログ

- 5-4 新規OEPアセンブリ・ファイルダイアログ

- 5-5 新規OEP構成ファイルダイアログ

- 5-6 Oracle Event Processingアプリケーションのコンテンツダイアログ

- 5-7 Oracle Event Processingの問題の重大度

- 6-1 EclipseおよびOracle Event Processingサーバーの概念

- 6-2 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)の属性

- 新しいサーバー:新しいOracle Event Processing v11ランタイムダイアログの属性

- 6-4 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログの属性

- 6-5 ローカル・サーバー用の新しいサーバー:新しいOracle Event Processing v11サーバーダイアログの属性

- 6-6 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)の属性

- 新しいサーバー:新しいOracle Event Processing v11ランタイムダイアログの属性

- 6-8 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログの属性

- 6-9 ローカル・サーバー用の新しいサーバー:新しいOracle Event Processing v11サーバーダイアログの属性

- 6-10 新しいサーバー・ランタイムダイアログの属性

- 6-11 新しいサーバー・ランタイムダイアログの属性

- 6-12 追加と削除ダイアログの属性

- 6-13 サーバー概要エディタの属性

- 7-1 Oracle Event Processingタイプダイアログ

- 7-2 EPNエディタのアイコン

- 7-3 新規アダプタ・ウィザードのページ1

- 7-4 「新規プロセッサ」ダイアログ

- 9-1 イベント・タイプのデータ型

- 9-2 csvgenアダプタ・タイプ

- 9-3 EPNアセンブリ・ファイルevent-type要素プロパティ属性

- 9-4 SQL列タイプおよびOracle Event Processing Typeタイプの対応するもの

- 11-1 jms-adapterインバウンド子要素

- 11-2 jms-adapterアウトバウンド・コンポーネント構成の子要素

- 12-1 パブリッシュ用コンポーネント構成のhttp-pub-sub-adapterの子要素

- 12-2 サブスクライブ用コンポーネント構成のhttp-pub-sub-adapterの子要素

- 14-1 bea-jaxws.xmlファイルの属性

- 15-1 アダプタの一時停止および再開をサポートするインタフェース

- 16-1 イベント・ソースを実装するインタフェース

- 16-2 センダー・クラスで実装されるインタフェース

- 16-3 イベントBeanおよびSpring Beanの比較

- 17-1 EPNアセンブリ・ファイル表要素属性

- 18-1 spatial:context要素の属性

- 20-1 bdb-configの子要素

- 20-2 record-parametersの子要素

- 20-3 playback-parametersの子要素

- 21-1 ロード・ジェネレータのプロパティ

- 22-1 イベント・インスペクタJSONイベントの必要な属性

- 23-1 Oracle Event Processingアプリケーション・ライブラリのパス

- 23-2 Oracle Event Processingアプリケーション・ライブラリ・パス変数

- 23-3 bundler.shコマンド・ライン・オプション

- 23-4 ファクトリ・クラスおよびサービス・インタフェース

- 23-5 新規Javaクラス・パラメータ

- 23-6 weblogic.i18ngenユーティリティ・オプション

- 24-1 Oracle Event Processing高可用性のサービス品質

- 24-2 Oracle Event Processingの高可用性アプリケーションの種類

- 24-3 高可用性入力アダプタ用wlevs:adapterの子要素

- 24-4 高可用性入力アダプタのインスタンス・プロパティ

- 24-5 高可用性入力アダプタ用ha-inbound-adapterの子要素

- 24-6 バッファリング出力アダプタ用wlevs:adapterの子要素

- 24-7 バッファリング出力アダプタのインスタンス・プロパティ

- 24-8 バッファリング出力アダプタ用ha-buffering-adapterの子要素

- 24-9 ブロードキャスト出力アダプタ用wlevs:adapterの子要素

- 24-10 ブロードキャスト出力アダプタのインスタンス・プロパティ

- 24-11 ブロードキャスト出力アダプタ用ha-broadcast-adapterの子要素

- 24-12 相関出力アダプタ用wlevs:adapterの子要素

- 24-13 相関出力アダプタのインスタンス・プロパティ

- 24-14 相関出力アダプタ用ha-correlating-adapterの子要素

- 25-1 イベント・パーティショナ・チャネルのスレッド・オプション

- 25-2 EventPartitionerの「新規Javaクラス」オプション

- 25-3 Oracle Event Processingサーバー構成ファイル・グループ要素構成

- 25-4 Oracle Event Processingサーバー構成ファイル・グループ要素構成

- C-1 wlevs:adapterアプリケーション・アセンブリ要素の属性

- C-2 wlevs:application-timestampedアプリケーション・アセンブリ要素の属性

- C-3 wlevs:cacheアプリケーション・アセンブリ要素の属性

- C-4 wlevs:cache-listenerアプリケーション・アセンブリ要素の属性

- C-5 wlevs:cache-loaderアプリケーション・アセンブリ要素の属性

- C-6 wlevs:cache-sourceアプリケーション・アセンブリ要素の属性

- C-7 wlevs:cache-storeアプリケーション・アセンブリ要素の属性

- C-8 wlevs:caching-systemアプリケーション・アセンブリ要素の属性

- C-9 wlevs:channelアプリケーション・アセンブリ要素の属性

- C-10 wlevs:event-beanアプリケーション・アセンブリ要素の属性

- C-11 wlevs:event-typeアプリケーション・アセンブリ要素の属性

- C-12 wlevs:factoryアプリケーション・アセンブリ要素の属性

- C-13 wlevs:functionアプリケーション・アセンブリ要素の属性

- C-14 wlevs:instance-propertyアプリケーション・アセンブリ要素の属性

- C-15 wlevs:listenerアプリケーション・アセンブリ要素の属性

- C-16 wlevs:metadataアプリケーション・アセンブリ要素の属性

- C-17 wlevs:processorアプリケーション・アセンブリ要素の属性

- C-18 wlevs:propertiesアプリケーション・アセンブリ要素の属性

- C-19 wlevs:propertyアプリケーション・アセンブリ要素の属性

- C-20 wlevs:propertyアプリケーション・アセンブリ要素の属性

- C-21 wlevs:sourceアプリケーション・アセンブリ要素の属性

- C-22 wlevs:tableアプリケーション・アセンブリ要素の属性

- C-23 wlevs:table-sourceアプリケーション・アセンブリ要素の属性

- D-1 bindingコンポーネント構成要素の属性

- D-2 databaseコンポーネント構成要素の属性

- D-3 group-bindingコンポーネント構成要素の属性

- D-4 listenersコンポーネント構成要素の属性

- D-5 paramコンポーネント構成要素の属性

- D-6 paramsコンポーネント構成要素の属性

- D-7 queryコンポーネント構成要素の属性

- D-8 ruleコンポーネント構成要素の属性

- D-9 viewコンポーネント構成要素の属性

- E-1 wlevs:deploymentデプロイメント要素の属性

- F-1 auth-constraintの子要素

- F-2 bdb-configの子要素

- F-3 channel-resource-collectionの子要素

- F-4 clusterの子要素

- F-5 connection-pool-paramsの子要素

- F-6 data-source-paramsの子要素

- F-7 driver-paramsの子要素

- F-8 debugの子要素

- F-9 event-storeの子要素

- F-10 exported-jndi-contextの子要素

- F-11 jettyの子要素

- F-12 jetty-web-appの子要素

- F-13 jmxの子要素

- F-14 jndi-contextの子要素

- F-15 log-fileの子要素

- F-16 log-stdoutの子要素

- F-17 logging-serviceの子要素

- F-18 netioの子要素

- F-19 netio-clientの子要素

- F-20 rdbms-event-store-providerの子要素

- F-21 rmiの子要素

- F-22 schedulerの子要素

- F-23 server-configの子要素

- F-24 servicesの子要素

- F-25 show-detail-error-messageの子要素

- F-26 sslの子要素

- F-27 transaction-managerの子要素

- F-28 use-secure-connectionsの子要素

- F-29 weblogic-instancesの子要素

- F-30 weblogic-rmi-clientの子要素

- F-31 work-managerの子要素

- F-32 xa-paramsの子要素

- G-1 message_catalog要素の属性

- G-2 logmessage要素の属性

- G-3 message要素の属性

- H-1 locale_message_catalog要素の属性

- H-2 logmessage要素の属性

- H-3 message要素の属性

- I-1 com.bea.wlevs.util.Service JWS注釈タグの属性

Oracle® Fusion Middleware

Oracle Event Processing開発者ガイド

11gリリース1 (11.1.1.7) for Eclipse

B61654-06(原本部品番号:E14301-09)

2013年2月

ストリーミング・イベントを処理するためのOracle Event Processingのスケーラブルなアプリケーションの構築方法を説明する、開発者向けのドキュメント。

Oracle Fusion Middleware Oracle Event Processing開発者ガイド 11gリリース1 (11.1.1.7) for Eclipse

B61654-06

Copyright © 2007, 2013, Oracle and/or its affiliates.All rights reserved.

原本著者: Oracle Corporation

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007).Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

はじめに

このドキュメントは、Oracle Event Processingアプリケーションの作成方法、デプロイ方法およびデバッグ方法について説明します。

Oracle Event Processing(以前の名称はWebLogic Event Server)は、高パフォーマンスのイベント駆動アプリケーションを開発するためのJavaサーバーです。これは、Oracle Continuous Query Language (Oracle CQL)ベースの豊富な宣言的環境を提供するOracle Event Processingサービス・エンジンを含む共有サービスがある、Equinox OSGiに基づく軽量Javaアプリケーション・コンテナです。Oracle CQLは、ビジネス・オペレーションを管理するための効率と効果を向上するためにデータのストリームをサポートする追加のコンストラクトがあるSQLベースの問合せ言語です。Oracle Event Processingは、きわめて高いスループットとJRockit Real Timeを使用したマイクロ秒単位の待機時間をサポートしており、完全なリアルタイムでエンドツーエンドのJavaイベント駆動アーキテクチャ(EDA)開発プラットフォームのためにOracle Event Processing VisualizerおよびOracle Event Processing IDE for Eclipseの開発者ツールを提供しています。

対象読者

このドキュメントは、Oracle Event Processingアプリケーションを作成するプログラマを対象としています。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

Oracleのお客様は、My Oracle Supportから電子サポートにアクセスできます。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

関連ドキュメント

詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle Event Processingスタート・ガイド』

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』

- Oracle Fusion Middleware Oracle Event Processing Java APIリファレンス

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』

- 『Oracle Fusion Middleware Oracle Event Processing EPL言語リファレンス』

- http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/toc.htmにあるOracle Database SQL言語リファレンス

- SQL99仕様 (ISO/IEC 9075-1:1999、ISO/IEC 9075-2:1999、ISO/IEC 9075-3:1999およびISO/IEC 9075-4:1999)

- Oracle Event Processingフォーラム: http://forums.oracle.com/forums/forum.jspa?forumID=820

- Oracle Event Processingサンプル: http://www.oracle.com/technologies/soa/complex-event-processing.html

表記規則

このドキュメントでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

斜体

イタリックは、ユーザーが特定の値を指定するプレースホルダー変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

このガイドの新機能

このリリース用に、このガイドはいくつかの点が更新されています。次の表に、追加または変更された項を示します。11.1.1.7.xの最初のリリースで機能を使用できなかった場合は、最後の列に更新を含むドキュメントのリリースを示します。

既知の問題のリストについては(リリース・ノート)、Oracle SOA製品およびOracle AIA Foundation Packの既知の問題に関するページ(http://www.oracle.com/technetwork/middleware/docs/soa-aiafp-knownissuesindex-364630.html)を参照してください。

項

変更内容

2013年2月

ガイド全体

Oracle Event Processingへの製品名の変更

X

第1章「Oracle Event Processingアプリケーションの作成の概要」

1.1.1項「Oracle Event Processingアプリケーションの主要な概念」

Oracle Event Processingプログラミング・モデルの主要な概念を示すために項が追加されました。

X

1.2項「Oracle Event Processingアプリケーションの仕組み」

アプリケーションのコンポーネントおよび技術の組合せ方法の概要を示すために項が追加されました。

X

1.3項「イベント、ストリームおよびリレーションの概要」

イベント、ストリームおよびリレーションを説明するために項が追加されました。

X

第2章「Oracle Event Processingサンプル」

第2章「Oracle Event Processingサンプル」

『Oracle Fusion Middleware Oracle Event Processingスタート・ガイド』から章が移動しました。

X

2.9項「シグナル生成のサンプル」

サンプルの説明を修正しました。

X

第3章「Oracle Event Processingアプリケーションの開発の開始」

第3章「Oracle Event Processingアプリケーションの開発の開始」

以前は概要の章にあった内容から章が作成されました。

X

第8章「ウォークスルー: 単純なアプリケーションのアセンブル」

第8章「ウォークスルー: 単純なアプリケーションのアセンブル」

章が追加されました。これはOracle Event Processingアプリケーションを作成する開発者の段階を追った説明です。

X

第9章「イベント・タイプの定義および使用」

第9章「イベント・タイプの定義および使用」

概要とともに章が更新されました。非JavaBeanクラスからイベント・タイプを作成する内容が削除されました。

X

第9章「イベント・タイプの定義および使用」

10.1.8項「チャネルのフォルトの処理」

フォルト処理クラスを書き込んでチャネルのOracle CQLフォルトを処理する方法の要約を追加しました。

X

第11章「Java Message Serviceの統合」

11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

session-ack-mode-name AUTO_ACKNOWLEDGEの説明を更新しました。

X

第13章「キャッシュの統合」

第13章「キャッシュの統合」

概要とともに章を更新し、わかりやすく再構築しました。

X

第16章「Javaでのイベントの処理」

第16章「Javaでのイベントの処理」

章が追加されました。イベントBeanおよびSpring Beanのイベント・ソースおよびシンクを実装する情報を表す章です。

X

第17章「Oracle CQLでのイベント・ストリームの問合せ」

17.6項「フォルトの処理」

CQLコードで発生するフォルトの処理方法を説明する項が追加されました。

X

第22章「イベント・インスペクタでのアプリケーションのテスト」

第22章「イベントのインジェクト」および第22章「イベントのトレース」

コンポーネント構成ファイルのイベントのインジェクトおよびトレースの構成方法を説明する情報とともに項が更新されました。

X

付録D「スキーマ参照: コンポーネント構成wlevs_application_config.xsd」

D.52項「heartbeat」

システム・タイムスタンプ・チャネルに新しいハートビートのタイムアウトを指定するheartbeat子要素を説明する内容が追加されました。

X

第1部

Oracle Event Processingアプリケーションの作成の開始

第1部の章の内容は次のとおりです。

- 第1章「Oracle Event Processingアプリケーションの作成の概要」

- 第2章「Oracle Event Processingサンプル」

- 第3章「Oracle Event Processingアプリケーションの開発の開始」

1 Oracle Event Processingアプリケーションの作成の概要

この章では、プログラミング・モデル、アプリケーションの仕組み、主要な概念および技術を含むOracle Event Processingアプリケーションを作成できるツール、技術およびプロセスについて説明します。

この章の内容は次のとおりです。

- 1.1項「Oracle Event Processingアプリケーション・プログラミング・モデル」

- 1.2項「Oracle Event Processingアプリケーションの仕組み」

- 1.3項「イベント、ストリームおよびリレーションの概要」

- 1.4項「アプリケーション構成の概要」

- 1.5項「Oracle Event Processing API」

- 1.6項「アプリケーションのパッケージ化」

- 1.7項「Oracle Event Processingアプリケーション・ライフサイクル」

1.1 Oracle Event Processingアプリケーション・プログラミング・モデル

この項では、Oracle Event Processingアプリケーションの作成の一部である概念、技術およびツールの概要を示します。

Oracle Event Processingアプリケーションは、イベント・ソースからのデータ・ストリーミングを受信および処理します。データは、監視デバイス、金融サービス企業または車両を含む様々な場所のいずれかから受信する可能性があります。データを使用して、アプリケーションはパターンを識別して応答し、異常なイベントを検索して他のアプリケーションに警告し、迅速に変更されるデータに基づいた即時アクションを必要とする他の処理を実行する場合があります。

Oracle Event Processingアプリケーションを開発する場合、それぞれデータを処理するロールを持つコンポーネントのネットワークをアセンブルします。このイベント処理ネットワークは基本的に線形で、端から端にイベントが通過します。途中で、コンポーネントはデータをストリーミングするために特に設計された言語の問合せを実行し、Javaのロジックを実行し、他の外部コンポーネントとの接続を作成します。

1.1.1項「Oracle Event Processingアプリケーションの主要な概念」

1.1.2項「イベント処理ネットワークのコンポーネント・ロール」

1.1.3項「アプリケーションを開発するツールおよびサポートしている技術」

1.1.1 Oracle Event Processingアプリケーションの主要な概念

Oracle Event Processingを使用して作成するアプリケーションは、既知および(イベントベース・アプリケーションを初めて使用する場合)未知が混在する概念および技術に基づいています。次のリストは、イベント処理ネットワークの仕組みの基礎となる主要な概念および技術を簡潔に示します。

- アプリケーションは、データベース・プログラミング・モデルを利用します。Oracle Event Processingアプリケーションの一部のプログラミング・モデルは、データベース・プログラミングの内容を概念的に拡張したものです。問合せを実行できるタプルである点で、イベントはデータベース行と類似しています(SQLを拡張する言語を使用)。つまり、リレーショナル・データベースを理解している場合、ほとんどの処理に精通します。
データベース・プログラミングとOracle Event Processingアプリケーション間の類似性を詳細に参照する場合、1.3項「イベント、ストリームおよびリレーションの概要」を参照してください。

- ステージは、個別の機能ロールを表します。イベント処理ネットワーク(EPN)のステージングされた構造は、ネットワークを通過するイベントに対する様々なロジックを実行する手段を提供します。これには、Oracle Continuous Query Language (Oracle CQL)を使用した問合せロジックおよびJavaのロジックが含まれています。コードの検出に基づいて複数のダウンストリーム方向に分岐するネットワークで複数の処理パスを取得する方法も提供します。
EPNのステージのロールのリストは、1.1.2項「イベント処理ネットワークのコンポーネント・ロール」を参照してください。EPNの一部を詳細に調べるには、1.2項「Oracle Event Processingアプリケーションの仕組み」を参照してください。

- ステージは、イベント・シンクおよびイベント・ソースとして、EPNを介してイベントを送信します。EPNのステージは、(イベント・シンクとして)イベントを受信したり、(イベント・ソースとして)イベントを送信できます。これには、固有のアダプタやBeanなどの作成するコンポーネントとともにOracle Event Processingに付属するステージ・コンポーネントが含まれます。
固有のイベント・シンクおよびソースの実装の詳細は、第16章「Javaでのイベントの処理」を参照してください。

- イベントは、ストリームまたはリレーションとして処理されます。イベントベース・アプリケーションのストリーミングに一意であるストリームの概念は、イベントがタイムスタンプ順でアプリケーションに到着する事実を示します。これと表の行がスキーマを除いて相互に固有の関係を持たないデータベースの行を対比します。ただし、ストリームの多くの問合せのイベントはリレーションになり、時間の相対順序以外の方法でイベントを関連付けることができます(データベース問合せ結果に類似しています)。
ストリームおよびリレーションの詳細は、1.3項「イベント、ストリームおよびリレーションの概要」を参照してください。

1.1.2 イベント処理ネットワークのコンポーネント・ロール

作成するOracle Event Processingアプリケーションの中心は、イベント処理ネットワーク(EPN)です。それぞれにネットワークを通過するイベントを処理するロールを持つコンポーネント(ステージとも呼ばれます)を接続して、EPNを作成します。Oracle Event Processingアプリケーションを開発する場合、必要なコンポーネントの種類を識別します。コンポーネントをEPNに追加する場合、相互の接続とともにそれぞれを構成します。IDEを使用してEPNを作成する場合、イベントを左端から届いてEPNを通過して右端で終了するほぼ線形の形状でコンポーネントを配置および接続します。

含まれる技術の詳細な説明を含むアプリケーションの例を使用したEPNの上位レベルの概要は、1.2項「Oracle Event Processingアプリケーションの仕組み」を参照してください。

使用するEPNコンポーネントは、次の方法を提供します。

- イベント・データと外部ソースの交換。アダプタおよび他のステージを介して、外部コンポーネントをアプリケーションのEPNに接続して、イベント・データを含むデータをEPNの内外に渡す方法を追加できます。
外部コンポーネントには、次のリストの外部コンポーネントが含まれます(固有の外部コンポーネントも作成できます)。

- リレーショナル・データベース。SQLと同様にデータベースに問い合せて、Oracle CQLコード内からデータベース表にアクセスできます。

- キャッシュ。キャッシュ・ステージをEPNに追加して、キャッシュを使用してデータを交換できます。

- Java Message Service (JMS)。JMSアダプタを使用すると、通常必要になるJavaコードを書き込まずにJMS宛先を使用してメッセージを交換できます。

- HTTPパブリッシュ・サブスクライブ・サーバー。HTTP Pub-Subアダプタは、HTTPパブリッシュ・サブスクライブ・サーバーでのメッセージの交換を単純化します。

- アプリケーション・コードで処理できるよう、イベント・データをモデル化します。アプリケーション・コードで使用できるよう、イベント・データをモデル化するイベント・タイプを実装または定義します。詳細は、第9章「イベント・タイプの定義および使用」を参照してください。

- イベントを問い合せてフィルタ処理します。Oracle Continuous Query Language (Oracle CQL)は、SQL言語の拡張機能であり、データベースのデータのようにイベントを問い合せることができます。Oracle CQLには、特にストリーミング・データを問い合せる機能が含まれます。プロセッサを追加して、Oracle CQLコードをイベント処理ネットワークに追加します。詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

- イベントを処理するJavaロジックを実行します。EPNに対して、他のEPNステージのようにイベントを送受信するJavaクラスを追加できます。これらのクラスのロジックでは、イベントから値を取得したり、新しいイベントを作成したりできます。詳細は、第16章「Javaでのイベントの処理」を参照してください。

イベント処理ネットワークの作成のIDEの詳細なリファレンスは、7.4項「EPNエディタの使用」を参照してください。

1.1.3 アプリケーションを開発するツールおよびサポートしている技術

アプリケーションを開発するために使用できる一連のツールおよびサポートしている技術には、Oracle Event Processingが含まれます。アプリケーションの作成およびデバッグ、負荷のかからないアプリケーションのテスト、Javaによる基本機能へのアクセス、およびOracle CQL問合せの設計のためのツールが含まれます。

次のリストは、このようなツールおよび技術の一部を示します。

- Oracle Event Processing IDE for Eclipseは、イベント処理ネットワークをグラフィカルに設計するEPNエディタを含むOracle Event Processingの開発を容易にするよう特に設計された機能を提供します。詳細は、第4章「Oracle Event Processing IDE for Eclipseの概要」を参照してください。
IDEを使用して単純なアプリケーションを作成する手順を追った説明は、第8章「ウォークスルー: 単純なアプリケーションのアセンブル」を参照してください。

- csvgenアダプタとともにロード・ジェネレータを使用して、開発の早期段階でアプリケーションをより簡単にデバッグできます。ロード・ジェネレータは、カンマ区切りテキスト・ファイルからデータを読み取り、イベント・データとしてデータをEPNにフィードするツールです。詳細は、第21章「ロード・ジェネレータおよびcsvgenアダプタによるアプリケーションのテスト」を参照してください。

- Oracle Event Processing Java APIには、イベント処理ネットワークのステージの実装、含まれる機能の拡張、サーバーの管理などの処理のためのクラスが含まれます。詳細は、1.5項「Oracle Event Processing API」を参照してください。

- Oracle Event Processing Visualizerは、Oracle CQL問合せを設計してサーバーのOracle Event Processingアプリケーションを構成できるWebベースのユーザー・インタフェースです。詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のOracle Event Processing Visualizerの概要に関する項を参照してください。

- 標準のXML構成ファイルを介して、コンポーネントを接続および構成します。IDEを使用してイベント処理ネットワークをアセンブルする場合、ほとんどのこれらのファイルの書込み処理が実行されます。ただし、ファイルを直接編集して実行する必要がある場合がある多くの設定が存在します。構成ファイルの詳細は、1.4項「アプリケーション構成の概要」を参照してください。

- 特定のアプリケーション設計パターン、サーバー・リソースおよび構成規則を使用して、スケーラビリティを向上し、高可用性を促進できます。詳細は、第25章「スケーラブルなアプリケーションの開発」および第24章「高可用性のためのアプリケーションの開発」を参照してください。

1.2 Oracle Event Processingアプリケーションの仕組み

多くの企業規模のアプリケーションと同様に、Oracle Event Processingアプリケーションは接続関係が多くあります。たとえば、アダプタはプロセッサに接続され、プロセッサはイベントBeanに接続され、イベントBeanは外部データ・ソースに接続される場合などがあります。接続は必ずしもこの順序ではありませんが、概念がわかります。

イベントは外部ソースから受信し、アプリケーションのイベント処理ネットワーク(EPN)を移動します。途中で、フィルタ処理、問合せおよび配置するEPNコンポーネントの必要に応じた処理が行われる場合があります。

たとえば、単純なTradeReportアプリケーションの場合、第8章「ウォークスルー: 単純なアプリケーションのアセンブル」に記載されているトピックを使用して作成できます。

図tradereport_finishedepn.pngの説明

次の項では、アプリケーションの各コンポーネントのロールについて説明します。

イベント情報をRaw形式で受信します

TradeReportの例では、イベント・データ・ソースは、カンマ区切り値の行を使用したテキスト・ファイルです。試行するには、Oracle Event Processingに付属しているロード・ジェネレータと組み合せてそのようなファイルを使用できます。

イベント・データ・ソースはアプリケーションの外部にありますが、データの取得方法を認識するアダプタを介して接続されます。イベント・ソースは物理的に近い可能性があるか(組織内の別のアプリケーションなど)、非常に遠い可能性があります(他の都市のサーバー室の温度センサーなど)。

イベント・データおよびイベント・タイプの作成の詳細は、第9章「イベント・タイプの定義および使用」を参照してください。

TradeReportアプリケーションのイベント・タイプの取得の段階を追った内容は、8.3項「イベント・データを移動するイベント・タイプの作成」を参照してください。

アダプタは外部コンポーネントをEPNに接続します

TradeReportの例で、イベント・データ・ソースは、CSVファイルから送信されるイベント・データの受信方法を認識するアダプタを介してイベント処理ネットワークに接続されます。アダプタは、着信データをEPNで使用できるイベント・タイプのインスタンスに変換します。

アダプタを使用して、着信データの受信または発信データの送信を行うことができます。Oracle Event Processingに付属のアダプタは、CSVファイルおよびJava Message ServiceやHTTPパブリッシュ・サブスクライブ・サーバーなどのシステムへのアクセスを提供します。デフォルトでサポートされていないシステムを統合する固有のアダプタも開発できます。

入力アダプタを構成する場合、イベント・データをEPNで定義したイベント・タイプのインスタンスにバインドする方法を指定します。

詳細は、次を参照してください。

第11章「Java Message Serviceの統合」

第12章「HTTPパブリッシュ・サブスクライブ・サーバーの統合」

第13章「キャッシュの統合」

第15章「カスタム・アダプタを使用した外部コンポーネントの統合」

第21章「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト」

csvgenアダプタを追加してTradeReportアプリケーションのCSVの内容を受信する段階を追った内容は、8.4項「イベント・データを受信する入力アダプタの追加」を参照してください。

イベント・タイプはイベント・データの便利な構造を提供します

TradeReportアプリケーションでは、入力アダプタは、一連のカンマ区切り値からJavaクラスとして定義されるイベント・タイプ・インスタンスのプロパティ値に着信イベント・データを変換します。

イベント・タイプは、アプリケーションの他のコードで使用できるイベント・データの予測可能な構造を提供します。このコードの例には、イベントをフィルタ処理して動作対象のイベントを検出するOracle CQL問合せ、アプリケーションで受信した内容に基づいた新しい種類のイベントを作成するBeanのJavaコード、値を取得して別のデータ・ソースの値とマージするコードが含まれます。

イベント・タイプは、イベント・データへのアクセスを提供するプロパティを定義します。アダプタはJavaメッセージ・システム(JMS)または金融マーケット・データ・フィードなどの様々なイベント・ソースからの着信イベントを受信します。コードで使用する前に、これらのイベントのOracle Event Processingイベント・タイプを定義する必要があります。

EPNを構成する場合、イベント・タイプを指定します。所有しているrawイベント・データの構造を使用して、アプリケーションのニーズに最適なイベント・タイプを定義できます。イベント・タイプを定義する一般的なベスト・プラクティスは、プロパティをアプリケーションで使用するイベント・データにマップするJavaBeanクラスを書き込むことです。単純なタプルおよびJavaマップ・インスタンスとしてイベント・タイプを定義することもできます。

詳細は、第9章「イベント・タイプの定義および使用」を参照してください。

TradeReportアプリケーションのイベント・タイプの定義の段階を追った内容は、8.3項「イベント・データを移動するイベント・タイプの作成」を参照してください。

チャネルはステージ間でイベントを転送します

TradeReportアプリケーションでは、入力アダプタは、チャネルを介してイベントを送信して、イベントをOracle CQLプロセッサに送信します。

チャネルは、イベント処理ネットワークのステージを接続します。ほとんどのコンポーネント間で、ステージからのイベントをリスニングするチャネルを追加し、それらのイベントを別のステージに送信します。

チャネルの追加の詳細は、第10章「チャネルを使用したEPNステージの接続」を参照してください。

TradeReportアプリケーションへのチャネルの追加の段階を追った内容は、8.5項「イベントを伝達するチャネルの追加」を参照してください。

プロセッサはイベントを調査する問合せコードを含みます

TradeReportアプリケーションには、受信したイベントのストリームを特定の基準を満たすイベントのみにフィルタ処理する単純なOracle Continuous Query Language (Oracle CQL)問合せを含むプロセッサが含まれます。イベントは、次のステージに渡すイベントを決定するフィルタとして機能するOracle CQLコードで実行されるプロセッサを通過します。

アプリケーションのロジックは、通過するイベントの特性に依存します。このアプリケーションでは、プロセッサ・ステージは、特定のデータまたはトレンドの発生を検索するOracle CQLコードを使用してそれらの品質を検出する場所です。

より静的なリレーショナル・データ・ソースの問合せに使用されるSQL言語に非常に類似しているため、Oracle CQL言語は、イベントで表されるデータの情報を検出する強力なツールです。たとえば、Oracle CQLには、単純なcount()およびsum()関数から高度な統計関数まで、様々な関数が含まれます。

Oracle CQLはSQLと類似していますが、通常は静的データベースの問合せ時ほど重要ではない特性、つまり時間の経過を表す問合せを書き込むことを対象にした機能も含まれます。このような時間に関連する機能を介して、現在から5ミリ秒前などの特定のウィンドウを定義するコードを書き込むことなどができます。問合せを実行して、イベントが通過する際にこのウィンドウを分離できます。

Oracle CQLプロセッサのコードを使用して、キャッシュおよびリレーショナル・データベースを含む様々なソースからデータを収集および結合することもできます。たとえば、キャッシュを使用すると、パフォーマンスが高速になる頻繁に取得するデータを配置する場所が提供されます。

Oracle CQLエンジンは、Oracle CQLコードで追加機能を使用できるカートリッジでも拡張できます。

Oracle CQLの詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

TradeReportアプリケーションのOracle CQL問合せの定義の段階を追った情報は、8.8項「イベントをフィルタ処理するOracle CQLプロセッサの追加」を参照してください。

BeanはJavaロジックの場所を提供します

TradeReportアプリケーションはOracle CQLを使用してイベントを処理すると、イベントを受信して各イベント・タイプ・インスタンスに含まれるコンソール・データに出力するイベントBeanに結果イベントを渡します。

EPNでは、Beanは、通過するイベント上でJavaコードを実行する場所を提供します。Beanは、イベントを送受信できます。たとえば、Beanは特定のタイプのイベントを受信し、データを取得してデータを使用した計算または検索を実行します。Beanは、新しいイベントを別のステージに渡す前に、新しく生成したデータから新しいイベントを作成できます。

Spring BeanまたはイベントBeanとしてBeanを書き込んで構成することができます。Spring Beanは、Springフレームワークで管理され、Beanを既存のSpringデプロイメントに統合する場合に適切な選択肢です。一方、イベントBeanは、Oracle Event Processingサーバーで管理するよう、Beanを構成するOracle Event Processing規則を使用します。たとえば、イベントBeanを使用して、監視やイベントの記録および再生などのOracle Event Processingサーバー機能のサポートを取得します(アプリケーションのデバッグに役立ちます)。

イベントを処理するJavaクラスの書込みおよび使用の詳細は、第16章「Javaでのイベントの処理」を参照してください。

TradeReportアプリケーションへのイベントBeanの追加の段階を追った内容は、8.6項「イベントを受信およびレポートするリスナーの作成」を参照してください。

構成ファイルはEPNおよびコンポーネントを定義します

TradeReportアプリケーション・ステージ間のEPNプレゼンスおよび接続は、EPNアセンブリXMLファイルで構成されます。この場合は使用されませんが、コンポーネントのランタイム構成を定義できるコンポーネント構成ファイルもあります。

EPNアセンブリ・ファイルは、IDEを使用してイベント処理ネットワークをアセンブルする場合に書き込む内容です(EPNエディタは、基本的にEPNアセンブリ・ファイルを設計するユーザー・インタフェースです)。EPNアセンブリ・ファイルの内容はステージを宣言し、あるステージから別のステージに移動する場合のイベントの方向を含む対話方法を決定します。EPNアセンブリ・ファイルは、コンポーネント設定のデフォルト値または実行時に変更する必要がない値も設定します。

一方、コンポーネント構成ファイルを使用して、アプリケーションの実行中に管理者が後で変更できる構成データを指定できます。コンポーネント構成ファイルは、通常Oracle CQLコードが書き込まれます(プロセッサ・コンポーネントの構成として)。

構成ファイルの詳細は、1.4項「アプリケーション構成の概要」を参照してください。

設計および構成規則のスケーラビリティおよび高可用性

単純なTradeReportアプリケーションではわかりませんが、アプリケーションを引き続き使用して十分なスケーラビリティを確保するために使用できる設計パターンがあります。

アプリケーションの高可用性を維持する場合、ソフトウェアまたはハードウェアで障害が発生した場合でもデプロイされたアプリケーションで引き続き役割を果たすよう、アプリケーションの設計パターン、サーバー・リソースおよび構成規則を統合します。

スケーラブルなOracle Event Processingアプリケーションは、設計パターンに実装および構成規則を組み込んで、イベント・ロードが増える場合のアプリケーションの十分な動作を保証します。

詳細は、次を参照してください。

第24章「高可用性のためのアプリケーションの開発」

第25章「スケーラブルなアプリケーションの開発」

1.3 イベント、ストリームおよびリレーションの概要

Oracle Event Processingアプリケーションは、rawイベント・データとしてストリームに到着し、アプリケーション内のイベント・タイプ・インスタンスに変換され、イベント処理ネットワークのあるアプリケーション・ステージから別のアプリケーション・ステージに移動するイベントを処理します。途中で、イベントは、Oracle CQL問合せでフィルタ処理され、Javaコードで処理され、キャッシュに格納され、他のアプリケーションに転送される場合などがあります。

イベントとは何ですか。イベント・データのストリーミングという視点を重視すると、どれくらいのイベントがデータベース内の行となるかを忘れがちです。アプリケーションの用語では、イベントはタプルまたは一連の値です。リレーショナル・データベース行と同様に、イベントには、各値が特定のデータ型などの特定の制約を持つスキーマがあります。イベントのスキーマは、プロパティ(値の場所)およびタイプのセットを定義します。

イベントとデータベース行の相違点は時間の重要性です。イベントのストリームでは、別のイベントの前後のイベントの到着を含むイベントが到着する時間が非常に重要になります。そのため、アプリケーションで時間および順序を説明できる必要があります。

たとえば、株式取引を処理するアプリケーションでは、銘柄記号、価格、終値、変化率および量で構成されるイベント・タプルは、各取引を実行した順序で順に到着します。アプリケーションのロジックでは、別の取引の直後に発生した株式の取引を検索する場合があります。

つまり、イベント処理アプリケーションでは、イベントがストリームで発生する順序は、各イベント・プロパティのデータ型および値と同じように重要です。その結果、Oracle Event Processingプログラミング・モデルの規則は、時間および順序の重要性を反映します。コードによって、特定の基準(銘柄記号など)に基づいて相互に関連するイベントを検出できます。ただし、順序パターン(相互に15秒以内の取引など)も検出できる必要があります。アプリケーションにイベントが到着する場合に低待機時間で、これらを検出できる必要があります。

イベント・データのシーケンシャルおよびリレーショナルな側面を説明するには、Oracle Event Processingはストリームおよびリレーションの概念を使用します。

- ストリームは、ほぼ無制限の連続するイベントです。データベースの行と同様に、イベントはタプルですが、それぞれ固有のタイムスタンプがあります。ストリームでは、あるイベントから次のイベントにタイムスタンプが古くならないよう、イベントを時系列に並べる必要があります(ただし、同じタイムスタンプを持つストリームのイベントが存在する場合があります)。

- リレーションでは、順序は重要ではありません(データベース問合せの結果と同様)。かわりに、特定の基準を満たすため、通常リレーションのイベントが関連します。たとえば、リレーションのイベントは、問合せで特定のレベルを超える取引量を検索した場合、株式取引のストリームに対して実行される問合せの結果である可能性があります。

株式取引イベントのストリームを考えてみます。イベントが順に到着し、それぞれ固有のタイムスタンプ(取引が発生した時間)があります。相互に5秒以内で発生した取引の株価を分離するには、次のOracle CQLコードを使用して、ストリーム(StockTradeChannelから受信)を問い合せます。

select price from StockTradeChannel [range 5 seconds]

期間[range 5 seconds]を使用してイベントを分離するため、この問合せの出力はリレーションです。問合せから返されたイベントはタイムスタンプを持ちますが、リレーションで順序付けされません。着信イベントがストリームにあるため、問合せは、問合せプロセッサに渡す場合に5秒分のイベントごとに継続的に実行されます。新しいイベントが到着すると、問合せの条件を満たすイベントはリレーションに挿入されますが、離れる(実際に押し出される)イベントはリレーションから削除されます。

これはなぜ重要なのでしょうか。ストリームとしてのストリームの完全性は重要です。技術的に、ストリームは、タプルの継続的に移動(ストリーミング)する順序付けされたセットです。ストリームでは、ソースで順番にストリームに配置して各イベントを挿入できます。問合せを使用してストリームのサブセットを取得すると、順序付けされるものが必要ありません。サブセットを所有した後、ストリームの問合せ結果のリレーションを問い合せるOracle CQLコードを実行して、イベントをさらに分離できます。

このため、Oracle CQL参照の例では、問合せ結果として特定の時点で挿入または削除されるイベントとして問合せの出力を示します。

EPNの次のステージにリレーションを渡す前に、IStreamなどの演算子を使用してストリームに変換できます。

詳細は、次を参照してください:

- 10.1.2項「ストリームおよびリレーションを表すチャネル」

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のストリームとリレーションに関する項

1.4 アプリケーション構成の概要

標準スキーマに基づくXMLファイルを介して、Oracle Event Processingアプリケーションを構成します。Oracle Event Processingをインストールすると、これらのスキーマのXSDファイルは、ディレクトリMIDDLEWARE_HOME\ocep_11.1\xsdに含まれます。

イベント処理ネットワーク(EPN)をアセンブルすると、IDEを使用している場合でも、EPNアセンブリXMLファイルを作成します。このファイルのステージのエントリは、ステージをEPNに追加し、他のステージとの接続を定義します。このファイルの詳細は、1.4.1項「EPNアセンブリ・ファイルの概要」を参照してください。

イベント処理ネットワークの各コンポーネント(アダプタ、プロセッサ、チャネルまたはイベントBean)は、関連付けられた構成XMLを持つことができます。この構成を提供して、実行時にコンポーネントの構成を編集する方法を提供します。(構成ファイルを所有するには、プロセッサのみが必要です。)開発プロセスのニーズに応じて、コンポーネントの構成XMLを単一のコンポーネント構成ファイルにグループ化し、複数のファイルに分割できます。コンポーネント構成ファイルの詳細は、1.4.2項「コンポーネント構成ファイルの概要」を参照してください。

Oracle Event Processingアプリケーションの他の側面では、固有の構成ファイルが必要な場合があります。Oracle Coherenceで提供されるキャッシュが含まれます。他の構成の詳細は、それらの技術に関連するドキュメントの項を参照してください。

1.4.1 EPNアセンブリ・ファイルの概要

IDEを使用してイベント処理ネットワーク(EPN)をアセンブルする場合、アセンブリ・ファイルでEPNを定義します。EPNアセンブリ・ファイルは、SpringフレームワークのXML構成ファイルに基づいた形状のXMLファイルです。EPNアセンブリ・ファイル・スキーマは、Spring構成スキーマを拡張します。

spring-wlevs-v11_1_1_6.xsdスキーマ・ファイルでは、EPNアセンブリ・ファイルの構造について説明しています。Oracle Event Processingをインストールすると、このようなXSDファイルは、ディレクトリMIDDLEWARE_HOME\ocep_11.1\xsdに含まれます。

EPNアセンブリ・ファイルの構造は次のとおりです。beansという最上位ルート要素に、サブ要素のシーケンスが含まれています。個々のサブ要素には、Oracle Event Processingコンポーネントの構成データが含まれています。例:

<?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-v11_1_1_6.xsd">

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>

<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutputChannel"
event-type="HelloWorldEvent" advertise="true">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

</beans>

一部のOracle Event Processing機能では、EPNアセンブリ・ファイルおよびコンポーネント構成ファイルで一部の構成を指定します。

詳細は、次を参照してください:

- 5.3項「EPNアセンブリ・ファイルの作成」

- 1.4.2項「コンポーネント構成ファイルの概要」

- 付録B「EPNアセンブリ・スキーマspring-wlevs-v11_1_1_6.xsd」

1.4.1.1 EPNアセンブリ・ファイルのステージのネスト

EPNの親ステージ内に子ステージを定義した場合、子ステージはネストと言われます。親ステージのみが子ステージをリスナーとして指定できます。

例1-1は、HelloWorldBeanがhelloworldOutputChannel内にネストされているEPNアセンブリ・ソースです。親helloworldOutputChannelのみが、ネストされたBeanをリスナーとして指定できます。

例1-1 ネストされたBeanによるEPNアセンブリ・ファイル

<wlevs:adapter id="helloworldAdapter" class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>

<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutput" event-type="HelloWorldEvent" advertise="true">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

かわりに、例1-2に示すように、すべてにノードがネストされるようにこのEPNを定義できます。helloworldAdapterは最も外側の親ステージであり、EPNの他のステージにアクセスできる単一ステージです。

例1-2 ネストされたすべてのノードによるEPNアセンブリ・ファイル

<wlevs:adapter id="helloworldAdapter" class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message"
value="HelloWorld - the current time is:"/>
<wlevs:listener>
<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener>
<wlevs:processor id="helloworldProcessor">
<wlevs:listener>
<wlevs:channel id="helloworldOutputChannel"
event-type="HelloWorldEvent">
<wlevs:listener>
<bean
class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
</wlevs:channel>
</wlevs:listener>
</wlevs:processor>
</wlevs:listener>
</wlevs:channel>
</wlevs:listener>
</wlevs:adapter>

詳細は、7.2.9項「ネストされたステージ」を参照してください。

1.4.1.2 EPNアセンブリ・ファイルの外部ステージの参照

別のOracle Event Processingアプリケーションのステージを参照できます。別のアプリケーションのステージは、外部ステージと見なされます。同じアプリケーションのソースおよびターゲット・ステージを定義する場合、idでこれを実行します。

注意:

プロセッサ・ステージを外部ステージのチャネルに接続できません。

別のアプリケーションで定義したステージを参照するには、次の構文を使用します。

FOREIGN-APPLICATION-NAME:FOREIGN-STAGE-ID

ここでは、FOREIGN-APPLICATION-NAMEは、外部ステージを定義したアプリケーションの名前であり、FOREIGN-STAGE-IDは、外部ステージのid属性です。

例1-3では、アプリケーションapplication2で定義した外部ステージHelloWorldBeanSourceをapplication1が参照する方法について説明しています。

例1-3 アプリケーション2の外部ステージを参照するアプリケーション1

<wlevs:stream id="helloworldInstream" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="application2:HelloWorldBeanSource"/>
</wlevs:stream>

例1-4 アプリケーション2の外部ステージ

<wlevs:event-bean id="HelloWorldBeanSource"
class="com.bea.wlevs.example.helloworld.HelloWorldBeanSource"
advertise="true"/>

次の各ステージは外部ステージにはできません。

- キャッシュ

外部ステージを伴うOracle Event Processingアプリケーションを作成する場合、アプリケーションのアセンブリ、デプロイおよび再デプロイのときに外部ステージの依存関係を考慮する必要があります。詳細は、23.2.3項「外部ステージによるアプリケーションのアセンブリ」を参照してください。

1.4.2 コンポーネント構成ファイルの概要

イベント処理ネットワークの各コンポーネント(アダプタ、プロセッサ、チャネル、またはイベントBean)には構成ファイルを関連付けることができますが、構成ファイルが必須なのはプロセッサのみです。イベント処理ネットワークのステージであるかどうかにかかわらず、キャッシング・システムも構成ファイルを使用します。Oracle Event Processingのコンポーネント構成ファイルは、標準のXMLスキーマを使用して定義された構造を持つXMLドキュメントです。アプリケーションのすべてのコンポーネントの構成を含む単一のファイルを作成するか、または各コンポーネントごとに個別のファイルを作成できます。これらのうち、管理しやすい方を選択します。

wlevs_application_config.xsdスキーマ・ファイルでは、コンポーネント構成ファイルの構造について説明しています。Oracle Event Processingをインストールすると、このようなXSDファイルは、ディレクトリMIDDLEWARE_HOME\ocep_11.1\xsdに含まれます。

このXSDスキーマでは、次のスキーマがインポートされます。

- wlevs_base_config.xsd: アプリケーション構成ファイルとサーバー構成ファイルの間で共有される共通要素を定義します。

- wlevs_eventstore_config.xsd: イベント・ストア固有の要素を定義します。

- wlevs_diagnostic_config.xsd: 診断要素を定義します。

アプリケーション構成ファイルの構造は次のとおりです。configという最上位ルート要素に、サブ要素のシーケンスが含まれています。個々のサブ要素には、Oracle Event Processingコンポーネント(プロセッサ、チャネルまたはアダプタ)の構成データが含まれています。例:

<?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">
<processor>
<name>helloworldProcessor</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from helloworldInputChannel [Now] ]]>
</query>
</rules>
</processor>
<channel>
<name>helloworldInputChannel</name>
<max-size>10000</max-size>
<max-threads>2</max-threads>
</channel>
<channel>
<name>helloworldOutputChannel</name>
<max-size>10000</max-size>
<max-threads>2</max-threads>
</channel>
</n1:config>

詳細は、次を参照してください:

- 1.4.2.1項「ConfigurationPropertyPlaceholderConfigurerクラスを使用したコンポーネントおよびサーバーの構成へのアクセス」

- 5.4項「コンポーネント構成ファイルの作成」

- 付録B「コンポーネント構成スキーマwlevs_application_config.xsd」

1.4.2.1 ConfigurationPropertyPlaceholderConfigurerクラスによるコンポーネントおよびサーバー構成へのアクセス

ConfigurationPropertyPlaceholderConfigurerクラスを使用すると、シンボリック・プレースホルダーでコンポーネント構成ファイルおよびサーバー構成ファイルの両方で既存の構成ファイル・プロパティを参照できます。そうすると、複数の場所で同じ値をハードコードするのではなく、1つの場所に値を定義して、その1つの定義を参照できます。

この機能を使用するには、例1-5に示すように、アプリケーション・バンドルのアプリケーション・コンテキスト構成ファイルにConfigurationPropertyPlaceholderConfigurer Beanを挿入します。

例1-5 ConfigurationPropertyPlaceholderConfigurerの追加

<bean class="com.bea.wlevs.spring.support.ConfigurationPropertyPlaceholderConfigurer"/>

詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスのcom.bea.wlevs.spring.support.ConfigurationPropertyPlaceholderConfigurerクラスを参照してください。

プロパティ・ファイルのアクセスの詳細は、5.7.3項「Oracle Event Processingプロジェクトにプロパティ・ファイルを追加する方法」を参照してください。

1.4.3 Oracle Event Processingリソース・アクセスの構成

Oracle Event Processingアプリケーションは、低待機時間、イベントドリブンかつ高性能駆動型のアプリケーションであるため、軽量なコンテナ上で実行し、POJOベースのプログラミング・モデルを使用して開発されています。POJO (Plain Old Java Object)プログラミングでは、ビジネス・ロジックはPOJO形式で実装され、必要とするサービスが注入されます。これは一般に、依存関係インジェクションと呼ばれます。インジェクトされたサービスは、構成管理などのOracle Event Processingサービスで提供されるものから、Oracle Kodoなどの他のOracle製品で提供されるサービスやサード・パーティ製のサービスまで多岐に渡ります。

Oracle Event Processingおよび標準のJava注釈およびデプロイメントXMLを使用することによって、Oracle Event Processing Springコンテナを構成して、リソース(データ・ソースや永続性マネージャなど)をOracle Event Processingアプリケーション・コンポーネントにインジェクトできます。

一般的に、コンポーネント初期化中に、Springコンテナでリソースがインジェクトされます。しかし、これによって、ランタイム時にリソースがインジェクトおよび再インジェクトされます。また、ランタイム時に、JNDIルックアップがサポートされます。

Oracle Event Processingでは、次のタイプのリソース・アクセスがサポートされます。

- 1.4.3.1項「静的リソース・インジェクション」

- 1.4.3.2項「動的リソース・インジェクション」

- 1.4.3.3項「JNDIによる動的リソース参照」

リソース名解決の詳細は、1.4.3.4項「リソース名解決について」を参照してください。

すべてのOracle Event Processing注釈の詳細は、付録I「Oracle Event Processingメタデータ注釈リファレンス」を参照してください。

次の項では、例1-6に示す例のリソースを考慮します。これは、Oracle Event Processingサーバーconfig.xmlファイルに指定するStockDSと呼ばれるデータ・ソース・リソースです。

例1-6 サンプル・リソース: データ・リソースStockDS

<config ...>
<data-source>
<name>StockDs</name>
...
<driver-params>
<url>jdbc:derby:</url>
...
<driver-params>
</data-source>
...
</config>

1.4.3.1 静的リソース・インジェクション

静的リソース・インジェクションは、コンポーネント・ライフサイクルの初期化フェーズ中にリソースのインジェクションを参照します。一度インジェクトされると、コンポーネントがアクティブまたは実行中の間、リソースは固定または静的になります。

次を使用して、静的リソース・インジェクションを構成できます。

- 1.4.3.1.1項「静的リソース名」

- 1.4.3.1.2項「動的リソース名」

1.4.3.1.1 静的リソース名

静的リソース名を使用して静的リソース・インジェクションを構成する場合、@Resource注釈またはOracle Event ProcessingアセンブリXMLファイルに使用されるリソース名は、定義されたリソース名と完全一致する必要があります。リソース名は静的であるため、再コンパイルしないと変更できません。

設計のときに静的リソース名を使用して静的リソース・インジェクションを構成するには、例1-7に示すように、標準のjavax.annotation.Resource注釈を使用します。

設計タイムの構成をデプロイ・タイムにオーバーライドするには、例1-8に示すように、Oracle Event Processingアセンブリ・ファイルXMLを使用します。

例1-7および例1-8では、例1-6に示すように、リソース名StockDsは、Oracle Event Processingサーバーconfig.xmlファイルのデータ・ソース名と正確に一致する必要があります。

例1-7 静的リソース名を使用する静的リソース・インジェクション: 注釈

import javax.annotation.Resource;

public class SimpleBean implements EventBean {
...
@Resource (name="StockDs")
public void setDataSource (DataSource dataSource){
this.dataSource = dataSource;
}
}

例1-8 静的リソース名を使用する静的リソース・インジェクション: XML

< wlevs:event-bean id="simpleBean" class="...SimpleBean"/>
<wlevs:resource property="dataSource" name="StockDs"/>
</wlevs:event-bean>

EventBeanセット・メソッド名がリソース名と一致する場合、例1-9に示すように、@Resource注釈name属性は必要ではありません。また、この場合、例1-10に示すように、wlevs:resource要素name属性は必要ではありません。

例1-9 静的リソース名を使用する静的リソース・インジェクション: 注釈

import javax.annotation.Resource;

public class SimpleBean implements EventBean {
...
@Resource ()
public void setStockDs (DataSource dataSource){
this.dataSource = dataSource;
}
}

例1-10 静的リソース名を使用する静的リソース・インジェクション: XML

< wlevs:event-bean id="simpleBean" class="...SimpleBean"/>
<wlevs:resource property="dataSource"/>
</wlevs:event-bean>

1.4.3.1.2 動的リソース名

動的リソース名は、アプリケーションの動的または外部構成の一部として指定されます。動的リソース名を使用することによって、デプロイヤまたは管理者は、アプリケーション開発者がアプリケーション・コードまたはSpringアプリケーション・コンテキストを変更する必要なくリソース名を変更できます。

アダプタまたはPOJOなどのコンポーネントに動的リソース名を追加するには、例1-11に示すように、まず、リソース名を含むコンポーネントのためにカスタム構成を指定する必要があります。

例1-11 カスタム・コンポーネント構成

<simple-bean>
<name>SimpleBean</name>
<trade-datasource>StockDs</trade-datasource>
</simple-bean>

設計のときに動的リソース名を使用して静的リソース・インジェクションを構成するには、例1-12に示すように、標準のjavax.annotation.Resource注釈を使用します。

設計タイムの構成をデプロイ・タイムにオーバーライドするには、例1-13に示すように、Oracle Event Processingアセンブリ・ファイルXMLを使用します。

例1-12 動的リソース名を使用する静的リソース・インジェクション: 注釈

import javax.annotation.Resource;

public class SimpleBean implements EventBean {
...
@Resource (name="trade-datasource")
public void setDataSource (DataSource dataSource){
this.dataSource = dataSource;
}
}

例1-13 動的リソース名を使用する静的リソース・インジェクション: XML

< wlevs:event-bean id="simpleBean" class="...SimpleBean"/>
<wlevs:resource property="dataSource" name="trade-datasource"/>
</wlevs:event-bean>

1.4.3.2 動的リソース・インジェクション

動的リソース・インジェクションは、Springコンテナ・メソッド・インジェクションを使用して変更した動的構成に対して、コンポーネントがアクティブである間、動的リソースのインジェクションを参照します。

設計のときに動的リソース・インジェクションを構成するには、例1-14に示すように、標準のjavax.annotation.Resource注釈を使用します。

例1-14 動的リソース・インジェクション: 注釈

import javax.annotations.Resource;

public class SimpleBean implements EventBean {
...
@Resource ("trade-datasource")
public abstract DataSource getDataSource ();
...
}

リソース名trade-datasourceが参照するリソースの新しいインスタンスを取得する必要がある場合は、ランタイム時にコンポーネントによって、getDataSourceメソッドが呼び出されます。

一般的に、動的構成の変更が処理されている場合、@Prepareまたは@Activateメソッド中に、コンポーネントによって、getDataSourceメソッドが呼び出されます。詳細は、次を参照してください。

- I.2項「com.bea.wlevs.configuration.Activate」

- I.3項「com.bea.wlevs.configuration.Prepare」

他の方法では、データ・ソースを使用する前に必ずgetDataSourceが呼び出されます。つまり、アプリケーション・コードでは参照をコンポーネントのフィールドとしてデータ・ソースに格納されません。

1.4.3.3 JNDIによる動的リソース参照

Oracle Event Processingでは、例1-15に示すように、リソースを動的に参照するためにJNDIの使用がサポートされます。

例1-15 JNDIによる動的リソース参照

import javax.naming.InitialContext;

public class SimpleBean implements EventBean {
...
public abstract void getDataSource () throws Exception {
InitialContext initialContext= new InitialContext ();
return initialContext.lookup ("StockDs”);
}
}

例1-15では、例1-6に示すように、JNDI名StockDsは、Oracle Event Processingサーバーconfig.xmlファイルのデータ・ソース名と正確に一致する必要があります。

注意:

JNDIを使用するために、Oracle Event Processingサーバーを起動するときにセキュリティを無効にする必要があります。この理由から、JNDIの使用はお薦めしません。

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingのセキュリティの構成に関する項を参照してください。

1.4.3.4 リソース名解決について

Oracle Event Processingサーバーでは、表1-1にリストされたネーミング・スコープを調べて、リソース名が解決されます。

表1-1 リソース名解決

ネーミング・スコープ

目次

解決動作

コンポーネント

コンポーネントのカスタム構成のプロパティ名

マッピング

アプリケーション

アプリケーション構成ファイルの構成要素名

マッチング

サーバー

サーバー構成ファイルの構成要素名

マッチング

JNDI

サーバーのJNDIレジストリに登録された名前

マッチング

各ネーミング・スコープには一意の名前のセットが含まれます。名前解決動作は、ネーミング・スコープ固有の動作です。一部のネーミング・スコープでは、簡単な一致によって名前を解決します。他のスコープでは、新しい名前を参照するために使用する名前をマップすることで名前を解決します。一度名前がマップされると、参照は現在のスコープで再帰的に続行します。

1.5 Oracle Event Processing API

Oracle Event Processingには、アダプタまたはイベントBeanの実装に使用される様々なJava APIが用意されています。

この項では、アダプタおよびイベントBeanで最も一般的に使用されるcom.bea.wlevs.ede.apiパッケージ内のAPIについて説明しています。

- AdapterFactory: アダプタ・ファクトリではこのインタフェースを実装する必要があります。
詳細は、15.6項「カスタム・アダプタ・ファクトリの作成」を参照してください。

- コンポーネント・ライフサイクル・インタフェース—プログラミングするコンポーネントのライフサイクルを制御する必要がある場合は、コンポーネントで次の1つまたは複数のインタフェースを実装する必要があります。
ライフサイクルの詳細は、1.7項「Oracle Event Processingアプリケーション・ライフサイクル」を参照してください。

- InitializingBean: Oracle Event Processingでコンポーネントのすべてのプロパティが設定された後でカスタムを初期化する必要がある場合に使用します。afterPropertiesSetメソッドを実装します。

- ActivatableBean: すべての動的な構成が設定され、イベント処理ネットワークがアクティブ化された後でコードを実行する場合に使用します。afterConfigurationActiveメソッドを実装します。

- RunnableBean: コンポーネントをスレッドで実行する場合に使用します。
Springフレームワークでも同様のBeanライフサイクル・インタフェースが実装されますが、同等のSpringインタフェースを使用してもファクトリによって作成されたBeanを操作することはできず、一方でOracle Event Processingインタフェースではこの操作が可能です。

- SuspendableBean: イベント処理ネットワークが一時停止されたときにリソースを一時停止したり、イベントの処理を停止したりする場合に使用します。suspendメソッドを実装します。

- ResumableBean: コンポーネントの作業が再開される前に、リソースの取得や構成などのタスクを実行する場合に使用します。

- DisposableBean: アプリケーションがアンデプロイされたときにリソースを解放する場合に使用します。コンポーネントのコードにdestroyメソッドを実装します。

また、追加ライフサイクル注釈の詳細は、付録I「Oracle Event Processingメタデータ注釈リファレンス」を参照してください。

- イベント・タイプ・インスタンス化インタフェース: EPNで使用するためにイベント・タイプをインスタンス化する方法のより詳細な制御にこれらのインタフェースを使用します。
イベント・タイプの詳細は、第1章「Oracle Event Processingアプリケーションの作成の概要」を参照してください。

- EventBuilder: たとえば、イベント・タイプ・ビルダーを使用して、構成されたイベントのプロパティがJavaBeanとして実装したクラスなどのイベント・タイプ・クラスのプロパティに正しくバインドされていることを確認する場合など、イベント・タイプのインスタンス化を制御するために使用されます。
詳細は、9.3.1.5項「イベント・タイプ・ビルダー・クラスでのイベント・タイプのインスタンス化の制御」を参照してください。

- EventBuilder.Factory: EventBuildersを作成するファクトリ。

- イベント・ソースおよびシンク・インタフェース: クラスを有効にしてイベント処理ネットワークの一部としてイベントを送受信するために使用します。
イベント・ソースおよびシンクの詳細は、16.2項「ソースおよびシンクでのイベントの処理」を参照してください。

- StreamSinkおよびBatchStreamSink: Oracle Event Processingストリームとしてイベントを受信するコンポーネントでは、このインタフェースを実行する必要があります。Oracle Event Processingストリームには、次の特性があります。

- 追加のみ。つまり、イベントはいつもストリームの終わりに追加されます。

- バインドなし。一般的に、これを処理する前にウィンドウを定義する必要があります。

- イベントには、非減少のタイムスタンプがあります。

実装の詳細は、16.2.1項「イベント・シンクの実装」を参照してください。

- StreamSource、StreamSenderおよびBatchStreamSender: アダプタなど、Oracle Event Processingストリームをモデル化するイベントを送信するコンポーネントでは、StreamSourceを実装する必要があります。インタフェースには、イベントを実際にネットワーク内の次のコンポーネントに送信するStreamSenderまたはBatchStreamSenderを設定するためのsetEventSenderメソッドが含まれています。
実装の詳細は、16.2.2項「イベント・ソースの実装」を参照してください。

- RelationSinkおよびBatchRelationSink: Oracle Event Processingリレーションをモデル化するイベントを受信するコンポーネントでは、これらのインタフェースのいずれかを実行する必要があります。Oracle Event Processingリレーションには、次の特性があります。

- コンテントを挿入、削除または更新できるイベントをサポートします。

- いつも、インスタント・タイムと呼ばれます。

- イベントには、非減少のタイムスタンプがあります。

実装の詳細は、16.2.1項「イベント・シンクの実装」を参照してください。

- RelationSource、RelationSenderおよびBatchRelationSender—アダプタなど、Oracle Event Processingリレーションをモデル化するイベントを送信するコンポーネントではこのインタフェースを実装する必要があります。インタフェースには、イベントを実際にネットワーク内の次のコンポーネントに送信するRelationSenderまたはBatchRelationSenderを設定するためのsetEventSenderメソッドが含まれています。
実装の詳細は、16.2.2項「イベント・ソースの実装」を参照してください。

詳細は、次を参照してください:

- すべてのクラスおよびインタフェースの参照ドキュメントについては、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください。

- これらのAPIを使用するサンプルJavaコードについては、以下を参照してください。

- 第9章「イベント・タイプの定義および使用」

- 第15章「カスタム・アダプタを使用した外部コンポーネントの統合」

- 第16章「Javaでのイベントの処理」

- 第2章「Oracle Event Processingサンプル」

- Oracle Event Processing注釈およびデプロイメントXMLを使用したリソース・インジェクションの構成の詳細は、1.4.3項「Oracle Event Processingリソース・アクセスの構成」を参照してください。

1.6 アプリケーションのパッケージ化

アプリケーションをアセンブルした後、Oracle Event Processingにデプロイできるよう、パッケージ化する必要があります。この処理は簡単です。アプリケーションのデプロイメント単位はプレーンJARファイルであり、少なくとも次のアーティファクトが含まれている必要があります。

- ビジネス・ロジックPOJOのコンパイル済アプリケーションJavaコード。

- コンポーネント構成ファイル。各プロセッサには構成ファイルが必須ですが、アダプタとストリームに関しては、デフォルトの十分な構成があり、これらのコンポーネントをモニターしない場合は、構成ファイルは必要ではありません。

- EPNアセンブリ・ファイル。

- いくつかの追加のOSGiエントリを含むMANIFEST.MFファイル。

JARファイルへのアーティファクトのアセンブルが完了したら、着信データの受信を直ちに開始できるようOracle Event Processingにこのバンドルをデプロイします。

詳細は、第23章「Oracle Event Processingアプリケーションのアセンブルとデプロイ」を参照してください。

1.7 Oracle Event Processingアプリケーション・ライフサイクル

図1-1>では、Oracle Event Processingアプリケーション・ライフサイクルの状態図を示します。この図では、状態名(STARTING、INITIALIZING、RUNNING、SUSPENDING、SUSPENDEDおよびFAILED)がApplicationRuntimeMBeanメソッドgetState戻り値に対応します。この状態は、Oracle Event Processing固有の状態であり、OSGiバンドル状態ではありません。

図1-1 Oracle Event Processingアプリケーション・ライフサイクルの状態図

「図1-1 Oracle Event Processingアプリケーション・ライフサイクルの状態図」の説明

注意:

Oracle Event Processingサーバー・ライフサイクルの詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingサーバー・ライフサイクルに関する項を参照してください。

この項では、Oracle Event Processingサーバーにデプロイされたアプリケーションのライフサイクルと、com.bea.wlevs.ede.apiAPIコールバックのシーケンスについて説明します。

この情報で、Oracle Event Processingのアプリケーション・ライフサイクルを管理する方法が説明されます。これによって、アプリケーションのライフサイクルAPIをより良く使用できます。

これらのライフサイクルAPI (RunnableBeanおよびSuspendableBeanなど)の詳細に付いては、以下を参照してください。

- 1.5項「Oracle Event Processing API」

- 付録I「Oracle Event Processingメタデータ注釈リファレンス」

- Oracle Fusion Middleware Oracle Event Processing Java APIリファレンス

ライフサイクルの説明は、次の項に記載されているアクションを含むユーザーが実行するアクションに分類されます。

アプリケーションのインストールまたはすでにデプロイされているアプリケーションを使用したサーバーの起動

Oracle Event Processingでは、次のアクションが実行されます。

1. Oracle Event ProcessingでアプリケーションがOSGIバンドルとしてインストールされます。OSGIでインポートおよびエクスポートが解決され、サービスがパブリッシュされます。

2. Oracle Event Processingは、Beanを作成します(標準のSpring BeanおよびEPNアセンブリ・ファイルのOracle Event Processingタグに対応するBeanの両方)。各Beanでは、Oracle Event Processingは次を実行します。

- Spring Beanのプロパティが設定されます。<wlevs:instance-property>値はアダプタおよびイベントBeanで設定されます。

- @Serviceまたは@ServiceReference注釈で指定されたサービスに適切な依存関係がインジェクションされます。

- 静的な構成プロパティに適切な依存関係が注入されます。

- InitializingBean.afterPropertiesSetメソッドが呼び出されます。

- 構成コールバック(@Prepare、@Activate)がSpring Beanおよびファクトリで作成されたステージで呼び出されます。
詳細は、1.4.3項「Oracle Event Processingリソース・アクセスの構成」を参照してください。

3. アプリケーションの現在の状態はINITIALIZINGです。

4. Oracle Event Processingは、MBeanを登録します。

5. Oracle Event Processingは、すべてのActivatableBeansのActivatableBean.afterConfigurationActiveメソッドを呼び出します。

6. Oracle Event Processingは、すべてのResumableBeansのResumableBean.beforeResumeメソッドを呼び出します。

7. RunnableBeanを実装する各Beanについて、Oracle Event Processingでスレッドでの実行が開始されます。

8. アプリケーションの現在の状態はRUNNINGです。

アプリケーションの一時停止

Oracle Event Processingでは、次のアクションが実行されます。

1. Oracle Event Processingは、すべてのSuspendableBeansのSuspendableBean.suspendメソッドを呼び出します。

2. アプリケーションの現在の状態はSUSPENDEDです。

アプリケーションの再開

Oracle Event Processingでは、次のアクションが実行されます。

1. Oracle Event Processingは、すべてのResumableBeansのResumableBean.beforeResumeメソッドを呼び出します。

2. RunnableBeanを実装する各Beanについて、Oracle Event Processingでスレッドでの実行が開始されます。

3. アプリケーションの現在の状態はRUNNINGです。

アプリケーションのアンインストール

Oracle Event Processingでは、次のアクションが実行されます。

1. Oracle Event Processingは、すべてのSuspendableBeansのSuspendableBean.suspendメソッドを呼び出します。

2. Oracle Event ProcessingはMBeanを登録解除します。

3. Oracle Event Processingは、すべてのDisposableBeansのDisposableBean.disposeメソッドを呼び出します。

4. Oracle Event Processingでアプリケーション・バンドルがOSGIからアンインストールされます。

アプリケーションの更新

これは、最初にアプリケーションをアンインストールしてから再びインストールするのと同等です。

このリストのユーザー・アクションを参照してください。

ストリームおよびリレーション・ソースおよびシンクのメソッドの呼出し

ストリーム、リレーション・ソースまたはシンクでは、アプリケーション・ライフサイクルでこれらのフェーズが完了するまでコンポーネントはイベントを受信する準備ができない場合があるので、ライフサイクル・コールバックからメソッドを呼び出すべきではありません。

たとえば、afterConfigurationActiveまたはbeforeResumeなど、ライフサイクル・コールバックからStreamSenderメソッドのsendInsertEventは呼び出しません。

RunnableBeanを実装するBeanの実行メソッドから、ストリーム、リレーション・ソースまたはシンクでメソッドを呼び出すことができます。

詳細は、アプリケーションのインストールの説明を参照してください。16.2項「ソースおよびシンクでのイベントの処理」も参照してください。

2 Oracle Event Processingサンプル

この章では、Oracle Event Processingに付属するサンプル・コードを紹介し、簡単な"Hello World"からOracle Continuous Query Language (Oracle CQL)のアプリケーションまでのコードの設定および使用方法だけでなく、空間や業界に特化したシナリオの場合も同様に説明します。

この章の内容は次のとおりです。

- 2.1項「配布キットで提供されるサンプルの概要」

- 2.2項「デフォルトのocep_domainとサンプルのインストール」

- 2.3項「サンプルでのOracle Event Processing Visualizerの使用」

- 2.4項「サンプルのパフォーマンスの改善」

- 2.5項「HelloWorldのサンプル」

- 2.6項「Oracle Continuous Query Language (Oracle CQL)のサンプル」

- 2.7項「Oracle Spatialサンプル」

- 2.8項「外国為替取引(FX)サンプル」

- 2.9項「シグナル生成のサンプル」

- 2.10項「イベントの記録と再生のサンプル」

2.1 配布キットで提供されるサンプルの概要

Oracle Event Processingには、次のサンプルがあります。

- HelloWorld: 標準的なOracle Event Processingの基本スケルトン。

- Oracle Continuous Query Language (CQL): Oracle Event Processing Visualizer問合せウィザードを使用して、イベント・ストリームを処理する様々なOracle CQL問合せを作成する方法を示すサンプル。

- Oracle Spatial: Oracle Spatialの使用方法を示すサンプルで、Oracle CQL問合せで全地球測位システム(GPS)のイベント・ストリームを処理してバスのGPS位置を追跡し、バスが事前に定義されたバス停の位置に到着するとアラートを生成します。

- 外国為替取引(FX): 複数のコンポーネントを含む完全なサンプル。

- シグナル生成: 市場取引およびトレンド検出をシミュレートするサンプル。

- イベントの記録と再生: 永続イベント・ストアを使用してイベントの記録と再生を構成する方法を示すサンプル。

これらのサンプルは次の2つの形式で提供されます。

- 2.1.1項「すぐに実行できるサンプル」

- 2.1.2項「サンプル・ソース」

サンプルではAntを開発ツールとして使用しています。Antの詳細とコンピュータへのインストール方法は、http://ant.apache.org/を参照してください。

2.1.1 すぐに実行できるサンプル

アセンブルしたアプリケーションをデプロイするための、そのまま使用できるサンプル・ドメインが事前に構成されています。わかりやすくするために、サンプルごとに固有のドメインが用意されています。各ドメインはスタンドアロンのサーバー・ドメインです。サーバー・ファイルは、ドメイン・ディレクトリのdefaultserverサブディレクトリに格納されます。アプリケーションをデプロイするには、単にドメインのデフォルト・サーバーを起動します。

- サンプルのHelloWorldドメインは\MIDDLEWARE_HOME\ocep_11.1\samples\domains\helloworld_domainにあります。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。
詳細は、2.5.1項「helloworldドメインから実行するHelloWorldのサンプル」を参照してください。

- サンプルのCQLドメインはMIDDLEWARE_HOME\ocep_11.1\samples\domains\cql_domainにあります。
詳細は、2.6.1項「CQLのサンプルの実行」を参照してください。

- サンプルのOracle SpatialドメインはMIDDLEWARE_HOME\ocep_11.1\samples\domains\spatial_domainにあります。
詳細は、2.7.1項「Oracle Spatialサンプルの実行」を参照してください。

- サンプルの外国為替取引ドメインはMIDDLEWARE_HOME\ocep_11.1\samples\domains\fx_domainにあります。
詳細は、2.8.1項「外国為替取引のサンプルの実行」を参照してください。

- サンプルのシグナル生成ドメインはMIDDLEWARE_HOME\ocep_11.1\samples\domains\signalgeneration_domainにあります。
詳細は、2.9.1項「シグナル生成のサンプルの実行」を参照してください。

- サンプルの記録と再生のドメインはMIDDLEWARE_HOME\ocep_11.1\samples\domains\recplay_domainにあります。
詳細は、2.10.1項「イベントの記録/再生のサンプルの実行」を参照してください。

2.1.2 サンプル・ソース

各サンプルのJavaソースと構成XMLソースは、サンプルの開発環境を示す個別のソース・ディレクトリで提供されます。

- HelloWorldソース・ディレクトリは\MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\helloworldにあります。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。
詳細は、2.5.4項「HelloWorldのサンプルの実装」を参照してください。

- CQLのソース・ディレクトリはMIDDLEWARE_HOME\ocep_11.1\\samples\source\applications\cqlにあります。
詳細は、2.6.4項「CQLのサンプルの実装」を参照してください。

- Oracle Spatialのソース・ディレクトリはMIDDLEWARE_HOME\ocep_11.1\\samples\source\applications\spatialにあります。
詳細は、2.7.4項「Oracle Spatialサンプルの実装」を参照してください。

- 外国為替取引のソース・ディレクトリはMIDDLEWARE_HOME\ocep_11.1\samples\source\applications\fxにあります。
詳細は、2.8.4項「外国為替取引のサンプルの実装」を参照してください。

- シグナル生成のソース・ディレクトリは、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\signalgenerationにあります。
詳細は、2.9.4項「シグナル生成のサンプルの実装」を参照してください。

- 記録と再生のソース・ディレクトリはMIDDLEWARE_HOME\ocep_11.1\\samples\source\applications\recplayにあります。
詳細は、2.10.4項「記録と再生のサンプルの実装」を参照してください。

2.2 「デフォルトのocep_domainとサンプルのインストール」

デフォルトのocep_domainドメイン(デフォルトのパスワード)およびサンプルを含め、すべてのOracle Event Processingコンポーネントをインストールするには、「カスタム」オプションを使用する必要があります。「標準」オプションには、デフォルトのocep_domainおよびサンプルは含まれません。

Typicalオプションを使用してOracle Event Processingを以前にインストールした場合、サンプルをインストールし、Oracle Event Processingインストール・プロセスを再実行し、同じOracle Event Processingホーム・ディレクトリを指定することもできます。インストール・プロセスの後の手順を使用して、サンプルのみを次にインストールできます。

2.3 サンプルでのOracle Event Processing Visualizerの使用

Oracle Event Processing VisualizerはWeb 2.0アプリケーションで、Oracle Event Processingからデータを消費し、それを実用的かつ直感的な方式でシステム管理やオペレータに表示し、特定のタスクについては、構成を変更するためにOracle Event Processingへ戻されるデータを受け入れます。

Visualizer自身は各サーバー・インスタンスに自動的にデプロイされるOracle Event Processingアプリケーションです。サンプルでそれを使用するには、次の各サンプルに示されている手順に従ってサーバーを起動済であることを確認し、ブラウザで次のURLを起動します。

http://host:9002/wlevs

hostは、Oracle Event Processingをホストするコンピュータ名です。ブラウザを実行しているのと同じコンピュータである場合は、localhostとすることができます。

HelloWorldアプリケーションではセキュリティが無効になるため、ログイン画面でユーザー名とパスワードを入力せずに「ログオン」をクリックできます。ただし、FXおよびシグナル生成のサンプルでは、セキュリティが有効になるため、次の情報を使用してログインします。

User Id: wlevs
Password: wlevs

Oracle Event Processing Visualizerの詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』を参照してください。

2.4 サンプルのパフォーマンスの改善

サンプルおよびOracle Event Processingアプリケーション全般について、実行時のスループットを向上させ待機時間を短縮させるには、次の処理をお薦めします。

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用して、該当するドメインのOracle Event Processingインスタンスの起動コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.cmd -dgc

デフォルトでは、確定的ガベージ・コレクタはサンプルに対して無効になっています。

Oracle JRockit Real Timeの詳細は、http://www.oracle.com/technology/products/jrockit/jrrt/index.htmlを参照してください。

- メモリー容量の大きいコンピュータでOracle Event Processingを実行している場合は、コンピュータの容量に合わせてロード・ジェネレータとサーバーのヒープ・サイズを適切に設定する必要があります。十分なメモリー容量のコンピュータでは、サーバーのヒープ・サイズを1GB、ロード・ジェネレータのヒープ・サイズを512MB - 1GBとすることをお薦めします。

2.5 HelloWorldのサンプル

Oracle Event Processingアプリケーションの作成方法を示すこの最初のサンプルは、よく知られているHelloWorldです。

図2-1に、HelloWorldサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。

図2-1 HelloWorldサンプルのイベント処理ネットワーク

「図2-1 HelloWorldサンプルのイベント処理ネットワーク」の説明

このサンプルには次のコンポーネントが含まれています。

- helloworldAdapter - 「Hello World」というメッセージを毎秒生成するコンポーネント。実世界のシナリオでは、このコンポーネントは通常、ソース(金融機関から送られてくるデータなど)からデータ・ストリームを読み込み、読み込んだデータ・ストリームをイベント・プロセッサで処理できるイベント・ストリームに変換します。HelloWorldアプリケーションには、HelloWorldAdapterのインスタンスを作成するHelloWorldAdapterFactoryも含まれています。

- helloworldInputChannel - アダプタで生成されたイベント(この場合、「Hello World」のメッセージ)をイベント・プロセッサに送信するコンポーネント。

- helloworldProcessor - 単純に、helloworldAdapterコンポーネントから受け取ったメッセージをビジネス・ロジックを含むPOJOに転送するコンポーネント。実世界のシナリオでは、このコンポーネントは通常、ストリームから受け取ったイベントに対して追加の処理やより多くの処理を実行します。例として、Oracle CQLを使用して、プロパティ値に基づいてイベントのサブセットを選択する処理や、イベントをグループ化する処理があります。

- helloworldOutputChannel - イベント・プロセッサで処理されたイベントを、ユーザー定義のビジネス・ロジックを含むPOJOに送るコンポーネント。

- helloworldBean - 出力チャネルを経由してプロセッサからひとまとまりのメッセージを受け取るたびに、単純にメッセージを出力するPOJOコンポーネント。実世界のシナリオでは、このコンポーネントにはアプリケーションのビジネス・ロジックが含まれます。例として、プロセッサから受け取ったイベントに関するレポートを実行するロジックや、適切な電子メールまたはアラートを送信するロジックがあります。

2.5.1 helloworldドメインから実行するHelloWorldのサンプル

HelloWorldアプリケーションはhelloworldドメインにあらかじめデプロイされています。このアプリケーションを実行するには、ただOracle Event Processingのインスタンスを起動します。

HelloWorldのサンプルをhelloworldドメインから実行するには:

1. コマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\domains\helloworld_domain\defaultserverにあるhelloworldドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです(d:\Oracle\Middlewareなど)。

prompt> cd d:\Oracle\Middleware\ocep_11.1\samples\domains\helloworld_domain\defaultserver

2. サーバー起動スクリプトで環境が正しく設定されていることを確認します。
詳細は、第3章「Oracle Event Processingアプリケーションの開発の開始」を参照してください。

3. 適切なスクリプトに正しいコマンド・ライン引数を指定して実行し、Oracle Event Processingを起動します。

1. Windowsの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.cmd -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.cmd

2. UNIXの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.sh -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.sh

サーバー・ステータス・メッセージがスクロールされた後、約1秒ごとに次のメッセージが出力されます。

Message: HelloWorld - the current time is: 3:56:57 PM

このメッセージは、HelloWorldのサンプルが正しく実行されていることを示しています。

2.5.2 ソース・ディレクトリからビルドおよびデプロイするHelloWorldのサンプル

HelloWorldサンプルのソース・ディレクトリには、Javaソースと、HelloWorldアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。build.xml Antファイルには、アプリケーションをビルドしてhelloworldドメインにデプロイするためのターゲットが含まれています。

詳細は、2.5.3項「Hello WorldをビルドするAntターゲットの説明」を参照してください。

ソース・ディレクトリからHelloWorldのサンプルをビルドしてデプロイするには:

1. helloworldのOracle Event Processingインスタンスがまだ実行されていない場合は、2.5.1項「helloworldドメインから実行するHelloWorldのサンプル」の手順に従ってサーバーを起動します。
再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\helloworldにあるHelloWorldソース・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです。
例:

prompt> cd d:\Oracle\Middleware\ocep_11.1\samples\source\applications\helloworld

3. 3.2項「開発環境の設定」に従って開発環境を設定します。

4. all Antターゲットを実行してアプリケーションをコンパイルし、JARファイルを作成します。

prompt> ant all

5. deploy Antターゲットを実行してアプリケーションJARファイルをOracle Event Processingにデプロイします。

prompt> ant -Daction=update deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のhelloworldアプリケーションJARファイルを上書きします。

出力先に約1秒ごとに次のメッセージが出力されます。

Message: HelloWorld - the current time is: 3:56:57 PM

このメッセージは、HelloWorldのサンプルが再デプロイされ、正しく実行されていることを示しています。

2.5.3 Hello WorldをビルドするAntターゲットの説明

HelloWorldソース・ディレクトリの最上位レベルにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。

- clean - このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。

- all - このターゲットは、アプリケーションをクリーンアップしてコンパイルし、com.bea.wlevs.example.helloworld_11.1.1.4_0.jarというJARファイルを生成し、生成したJARファイルを現在のディレクトリの下のdistディレクトリに格納します。

- deploy - このターゲットはDeployerユーティリティを使用してJARファイルをOracle Event Processingにデプロイします。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のDeployerコマンドライン・リファレンスに関する項を参照してください。

2.5.4 HelloWorldのサンプルの実装

HelloWorldのサンプルの実装は、通常は3.1項「Oracle Event Processingアプリケーションの作成」に従って行われます。

標準的な開発プロセスが説明されているタスクごとの手順は、この項を参照してください。

HelloWorldのサンプルは、比較的単純な内容であるため、Oracle Event Processingアプリケーションを作成する一般的な手順で説明されるすべてのコンポーネントと構成ファイルが使用されるわけではありません。

サンプルのすべてのファイルは、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\helloworldディレクトリを基準にして相対的な場所にあります。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。実際の環境でも、このサンプルのとおりのディレクトリ設定を使用することをお薦めします。ただし、これは必須条件ではありません。

HelloWorldのサンプルで使用するファイルは次のとおりです。

- アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。EPNアセンブリ・ファイルは標準のSpringコンテキスト・ファイルを拡張します。また、このファイルはアプリケーションで使用されるイベント・タイプを登録します。このXMLファイルをOracle Event Processingアプリケーションに組み込む必要があります。
サンプルでは、このファイルはcom.bea.wlevs.example.helloworld-context.xmlという名前で、META-INF/springディレクトリにあります。

- helloworldAdapterコンポーネントのJavaソース・ファイル。
サンプルでは、このファイルはHelloWorldAdapter.javaという名前で、src/com/bea/wlevs/adapter/example/helloworldディレクトリにあります。

このファイルの詳細な説明と、アダプタJavaファイルの一般的なプログラミング方法については、第15章「カスタム・アダプタを使用した外部コンポーネントの統合」を参照してください。

- HelloWorldEventイベント・タイプを記述したJavaソース・ファイル。
サンプルでは、このファイルはHelloWorldEvent.javaという名前で、src/com/bea/wlevs/event/example/helloworldディレクトリにあります。

このファイルの詳細な説明と、イベント・タイプのプログラミングの概要については、第9章「イベント・タイプの定義および使用」を参照してください。

- helloworldProcessorおよびhelloworldOutputChannelコンポーネントを構成するXMLファイル。このファイルの重要な部分は、HelloWorldアプリケーションで処理するイベント・セットを選択するためのEPLルール・セットです。プロセッサ構成ファイルをOracle Event Processingアプリケーションに組み込む必要があります。アダプタとチャネルの構成は省略可能です。
サンプルでは、このファイルはconfig.xmlという名前で、META-INF/wlevsディレクトリにあります。

- アプリケーションのhelloworldBeanコンポーネント(ビジネス・ロジックを含むPOJO)を実装するJavaファイル。
サンプルでは、このファイルはHelloWorldBean.javaという名前で、src/com/bea/wlevs/example/helloworldディレクトリにあります。

このファイルの詳細な説明と、イベント・シンクのプログラミングの概要については、第16章「Javaでのイベントの処理」を参照してください。

- Oracle Event ProcessingにデプロイされるOSGiバンドルのコンテンツを記述したMANIFEST.MFファイル。
サンプルでは、MANIFEST.MFファイルがMETA-INFディレクトリにあります。

このファイルの作成方法およびOracle Event ProcessingにデプロイするOSGiバンドルの作成方法の詳細は、23.1項「アプリケーションのアセンブリおよびデプロイメントの概要」を参照してください。

HelloWorldのサンプルでは、OSGiバンドルのコンパイル、アセンブリ、およびデプロイにbuild.xml Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xmlファイルの詳細は、2.5.2項「ソース・ディレクトリからビルドおよびデプロイするHelloWorldのサンプル」を参照してください。

2.6 Oracle Continuous Query Language (Oracle CQL)のサンプル

CQLのサンプルは、Oracle Event Processing Visualizerの問合せウィザードを使用して様々な種類のOracle CQL問合せを作成する方法を示します。

図2-2に、CQLサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。

図2-2 CQLサンプルのイベント処理ネットワーク

「図2-2 CQLサンプルのイベント処理ネットワーク」の説明

このアプリケーションのEPNには3つの異なるイベント・パスが含まれます。

- 欠落イベント: このイベント・パスは、チャネルorderChannelに接続するアダプタorderCVSAdapterで構成されています。orderChannelからプロセッサorderProcessor、チャネルalertChannel、アダプタalertOutputの順に接続しています。
このイベント・パスは、顧客注文ワークフローの欠落イベントを検出するために使用されます。

cqlProcプロセッサが実行する問合せの作成方法の詳細は、2.6.4.1項「欠落イベントの問合せの作成」を参照してください。

- 移動平均: このイベント・パスは、順に接続されているチャネルstockChannel、プロセッサstockProcessor、チャネルmovingAvgChannel、アダプタmovingOutputで構成されます。
このイベント・パスは、数が1000を超える在庫の移動平均を計算するために使用されます。

cqlProcプロセッサが実行する問合せの作成方法の詳細は、2.6.4.2項「移動平均の問合せの作成」を参照してください。

- キャッシュ: このイベント・パスは、順に接続されているアダプタadapter、チャネルS1、Oracle CQLプロセッサcacheProcessor、チャネルS2、Bean Beanで構成されます。キャッシュstockCacheもあり、Oracle CQLプロセッサcacheProcessorに接続しています。また、Bean Loaderもあります。
このイベント・パスは、Oracle CQL問合せのキャッシュの情報にアクセスするために使用されます。

注意:

EPNの様々なコンポーネントの詳細は、このマニュアルの他のサンプルを参照してください。

2.6.1 CQLのサンプルの実行

最適なデモンストレーションの目的のためには、複数のCPUまたは3GHzのデュアル・コアIntelと最低限2GBのRAMを搭載した強力なコンピュータでこのサンプルを実行することをお薦めします。

CQLアプリケーションはcql_domainドメインにあらかじめデプロイされています。このアプリケーションを実行するには、ただOracle Event Processingのインスタンスを起動します。

CQLのサンプルを実行するには:

1. コマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\domains\cql_domain\defaultserverにあるCQLドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

prompt> cd d:\Oracle\Middleware\ocep_11.1\samples\domains\cql_domain\defaultserver

2. 第3章「開発環境の設定」に従って開発環境を設定します。

3. 適切なスクリプトに正しいコマンド・ライン引数を指定して実行し、Oracle Event Processingを起動します。

1. Windowsの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.cmd -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.cmd

2. UNIXの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.sh -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.sh

これで、CQLアプリケーションでデータ・フィードからデータを受信する準備ができました。

4. 欠落イベントの問合せのデータ・フィードをシミュレートするには、新しいコマンド・ウィンドウを開き、第3章「Oracle Event Processingアプリケーションの開発の開始」の説明に従って環境を設定します。

5. MIDDLEWARE_HOME\ocep_11.1\utils\load-generatorディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

6. orderData.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。

1. Windowsの場合:

prompt> runloadgen.cmd orderData.prop

2. UNIXの場合:

prompt> runloadgen.sh orderData.prop

7. 移動平均の問合せのデータ・フィードをシミュレートするには、新しいコマンド・ウィンドウを開き、第3章「Oracle Event Processingアプリケーションの開発の開始」の説明に従って環境を設定します。

8. MIDDLEWARE_HOME\ocep_11.1\utils\load-generatorディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

9. stockData.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。

1. Windowsの場合:

prompt> runloadgen.cmd stockData.prop

2. UNIXの場合:

prompt> runloadgen.sh stockData.prop

10. キャッシュの問合せのデータ・フィードをシミュレートするには、ただサンプルを実行します。
ロード・データがAdaptor.javaによって生成され、キャッシュ・データがLoader.javaによって生成されます。Oracle Event Processing Visualizer Query Planの統計を有効にすると、データが流れていることを確認できます。

2.6.2 CQLのサンプルのビルドとデプロイ

CQLサンプルのソース・ディレクトリには、Javaソースと、CQLアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。build.xml Antファイルには、アプリケーションをビルドしてcql_domainドメインにデプロイするためのターゲットが含まれています(2.5.3項「Hello WorldをビルドするAntターゲットの説明」を参照)。

ソース・ディレクトリからCQLのサンプルをビルドしてデプロイするには:

1. CQLのOracle Event Processingインスタンスがまだ実行されていない場合は、2.6.1項「CQLのサンプルの実行」の手順に従ってサーバーを起動します。
再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\cqlにあるCQLソース・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

prompt> cd d:\Oracle\Middleware\ocep_11.1\samples\source\applications\cql

3. 3.2項「開発環境の設定」に従って開発環境を設定します。

4. all Antターゲットを実行してアプリケーションをコンパイルし、JARファイルを作成します。

prompt> ant all

5. deploy Antターゲットを実行してアプリケーションJARファイルをOracle Event Processingにデプロイします。

prompt> ant -Dusername=wlevs -Dpassword=wlevs -Daction=update deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のCQLアプリケーションJARファイルを上書きします。

6. CQLアプリケーションで必要なロード・ジェネレータが実行されていない場合は、2.6.1項「CQLのサンプルの実行」の説明に従って起動します。

2.6.3 CQLサンプルをビルドするAntターゲットの説明

CQLソースの最上位レベル・ディレクトリにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。

- clean - このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。

- all - このターゲットは、アプリケーションをクリーンアップしてコンパイルし、com.bea.wlevs.example.cql_11.1.1.4_0.jarというJARファイルを生成し、生成したJARファイルを現在のディレクトリの下のdistディレクトリに格納します。

- deploy - このターゲットはDeployerユーティリティを使用してJARファイルをOracle Event Processingにデプロイします。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のDeployerコマンドライン・リファレンスに関する項を参照してください。

2.6.4 CQLのサンプルの実装

ここでは、CQLのサンプルで使用される問合せの作成方法を説明します。

- 2.6.4.1項「欠落イベントの問合せの作成」

- 2.6.4.2項「移動平均の問合せの作成」

2.6.4.1 欠落イベントの問合せの作成

ここでは、Oracle Event Processing Visualizer問合せウィザードを使用して、cqlProcプロセッサが欠落イベントを検出するために実行するOracle CQLのパターン一致問合せを作成する方法を説明します。

顧客注文ワークフロー・イベントがOracle Event Processingシステムに流れる顧客注文ワークフローについて考えてみます。

有効なシナリオでは、表2-1に示す順序でイベントが出現します。

表2-1 有効な注文のワークフロー

イベント・タイプ

説明

C

顧客の注文

A

承認

S

出荷

ただし、表2-2に示すように承認イベントなしで注文が出荷されるとエラーになります。

表2-2 無効な注文のワークフロー

イベント・タイプ

説明

C

顧客の注文

S

出荷

承認イベントの欠落を検出してアラート・イベントを生成する問合せを作成してテストします。

- 「欠落イベントの問合せの作成」

- 「欠落イベントの問合せのテスト」

欠落イベントの問合せを作成するには:

1. CQLのOracle Event Processingインスタンスがまだ実行されていない場合は、2.6.1項「CQLのサンプルの実行」の手順に従ってサーバーを起動します。
Oracle Event Processing Visualizerを使用するには、サーバーが実行中である必要があります。

2. ブラウザで以下のURLを起動します。

http://host:port/wlevs

hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。

図2-3に示すように「ログオン」画面が表示されます。

図2-3 Oracle Event Processing Visualizerの「ログオン」画面

「図2-3 Oracle Event Processing Visualizerの「ログオン」画面」の説明

3. 「ログオン」画面で、「ユーザーID」にwlevs、「パスワード」にwlevsを入力し、「ログイン」をクリックします。
図2-4に示すようにOracle Event Processing Visualizerダッシュボードが表示されます。

図2-4 Oracle Event Processing Visualizerダッシュボード

「図2-4 Oracle Event Processing Visualizerダッシュボード」の説明

Oracle Event Processing Visualizerのユーザー・インタフェースの詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のOracle Event Processing Visualizerユーザー・インタフェースの概要に関する項を参照してください。

4. 右側のペインで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」を展開します。

5. cqlノードを選択します。
図2-5に示すようにCQLアプリケーション画面が表示されます。

図2-5 CQLアプリケーション画面: 「全般」タブ

「図2-5 CQLアプリケーション画面: 「全般」タブ」の説明

6. 「イベント処理ネットワーク」タブを選択します。
図2-6に示すように「イベント処理ネットワーク」画面が表示されます。

図2-6 CQLアプリケーション: 「イベント処理ネットワーク」タブ

「図2-6 CQLアプリケーション: 「イベント処理ネットワーク」タブ」の説明

7. Oracle CQLプロセッサorderProcessorのアイコンをダブルクリックします。
図2-7に示すようにOracle CQLプロセッサ画面が表示されます。

図2-7 Oracle CQLプロセッサ: 「全般」タブ

「図2-7 Oracle CQLプロセッサ: 「全般」タブ」の説明

8. 「問合せウィザード」タブを選択します。
図2-8に示すように「問合せウィザード」画面が表示されます。

図2-8 Oracle CQLプロセッサ: 「問合せウィザード」タブ

「図2-8 Oracle CQLプロセッサ: 「問合せウィザード」タブ」の説明

Oracle CQL問合せウィザードを使用すると、テンプレートまたは個々のOracle CQL構文からOracle CQL問合せを作成できます。

この手順では、テンプレートからOracle CQL問合せを作成します。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』の問合せウィザードを使用したOracle CQLプロセッサのルール作成に関する項を参照してください。

9. 「テンプレート」タブを選択します。
図2-9に示すように「テンプレート」タブが表示されます。

図2-9 「テンプレート」タブ

「図2-9 「テンプレート」タブ」の説明

10. 図2-9に示すように、「パターン一致」テンプレートを「テンプレート」タブでクリックし、問合せウィザードのキャンバスの任意の場所にドラッグ・アンド・ドロップします。

11. SSourceのアイコンをダブルクリックします。
図2-10に示すようにSSourceの構成ダイアログが表示されます。

図2-10 SSourceの構成ダイアログ

「図2-10 SSourceの構成ダイアログ」の説明

問合せのソースはorderChannelストリームです。

12. SSourceを次のように構成します。

- 「タイプ」として「ストリーム」を選択します。

- 「ソースの選択」プルダウン・メニューでorderChannelを選択します。

13. 「保存」をクリックします。

14. 「問合せの保存」をクリックします。

15. 「パターン」アイコンをダブルクリックします。
図2-11に示すようにパターンの構成ダイアログが表示されます。

図2-11 パターンの構成ダイアログ: 「パターン」タブ

「図2-11 パターンの構成ダイアログ: 「パターン」タブ」の説明

「パターン」タブを使用して、欠落イベントの発生と一致するパターン式を定義します。この式は、後の手順で「定義」タブに指定する名前付き条件を使用して作成します。

16. 「パターン式」フィールドに次の式を入力します。

CustOrder NoApproval*? Shipment

このパターンでは、表2-3に示すOracle CQLのパターン量指定子が使用されます。パターン量指定子を使用して、パターン一致が許可される範囲を指定します。1文字のパターン量指定子は最大(最長マッチ)を指定し、まず最大の数量との一致を試行します。2文字のパターン量指定子は最小(最短マッチ)を指定し、まず最小の数量との一致を試行します。

表2-3 MATCH_RECOGNIZEのパターン量指定子

最大

最小限

説明

*

*?

0回以上

+

+?

1回以上

?

??

0または1回

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のPATTERN条件に関する項

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のMATCH_RECOGNIZE条件に関する項

17. 「パーティション基準」プルダウン・メニューからorderidを選択し、プラス記号ボタンをクリックしてこのプロパティをPARTITION BY句に追加します。
これで、Oracle Event Processingが各注文について欠落イベントの問合せを検証するようになります。

18. 別名フィールドにOrdersと入力します。
これで、パターンの別名(Orders)が割り当てられ、後から問合せで使用するときに便利です。

19. 「定義」タブをクリックします。
図2-12に示すように「定義」タブが表示されます。

図2-12 パターンの構成ダイアログ: 「定義」タブ

「図2-12 パターンの構成ダイアログ: 「定義」タブ」の説明

ここで、表2-4に示すようにパターン句に指定する各条件を定義します。

表2-4 条件定義

条件名

定義

CustOrder

orderChannel.eventType = 'C'

NoApproval

NOT(orderChannel.eventType = 'A')

Shipment

orderChannel.eventType = 'C'

20. 「オブジェクト名」フィールドにCustOrderと入力します。

21. 「式ビルダー」ボタンをクリックし、次のように式ビルダーを構成します(図2-13を参照)。

- 「変数」リストでeventTypeをダブルクリックします。

- 「オペランド」リストで=をダブルクリックします。

- =オペランドの後に値'C'を入力します。

図2-13 式ビルダー: CustOrder

「図2-13 式ビルダー: CustOrder」の説明

22. 「保存」をクリックします。

23. プラス記号ボタンをクリックします。
図2-14に示すように条件定義がオブジェクト・リストに追加されます。

図2-14 パターンの構成ダイアログ: CustOrder条件を含む「定義」タブ

「図2-14 パターンの構成ダイアログ: CustOrder条件を含む「定義」タブ」の説明

24. 「オブジェクト名」フィールドにNoApprovalと入力します。

25. 「式ビルダー」ボタンをクリックし、次のように式ビルダーを構成します(図2-15を参照)。

- 「変数」リストでeventTypeをダブルクリックします。

- 「オペランド」リストで=をダブルクリックします。

- =オペランドの後に値'A'を入力します。

- 式をカッコで囲みます。

- 式の先頭のカッコの外側にカーソルを置きます。

- 「オペランド」リストでNOTをダブルクリックします。

図2-15 式ビルダー: NoApproval

「図2-15 式ビルダー: NoApproval」の説明

26. 「保存」をクリックします。

27. プラス記号ボタンをクリックします。
条件定義がオブジェクト・リストに追加されます。

28. 「オブジェクト名」フィールドにShipmentと入力します。

29. 「式ビルダー」ボタンをクリックし、次のように式ビルダーを構成します(図2-16を参照)。

- 「変数」リストでeventTypeをダブルクリックします。

- 「オペランド」リストで=をダブルクリックします。

- =オペランドの後に値'S'を入力します。

図2-16 式ビルダー: Shipment

「図2-16 式ビルダー: Shipment」の説明

30. 「保存」をクリックします。

31. プラス記号ボタンをクリックします。
図2-17に示すように「定義」タブが表示されます。

図2-17 パターンの構成ダイアログ: 「定義」タブの完了

「図2-17 パターンの構成ダイアログ: 「定義」タブの完了」の説明

32. 「メジャー」タブをクリックします。
図2-18に示すように「メジャー」タブが表示されます。

図2-18 「メジャー」タブ

「図2-18 「メジャー」タブ」の説明

「メジャー」タブを使用して、MATCH_RECOGNIZE条件に式を定義し、DEFINE句の条件と一致するストリーム要素を問合せのselect文に指定する引数にバインドします。

「メジャー」タブを使用して次のように指定します。

- CustOrder.orderid AS orderid

- CustOrder.amount AS amount

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のMEASURES句に関する項

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のMATCH_RECOGNIZE条件に関する項

33. 「オブジェクト名」フィールドにorderidと入力します。

34. 「式ビルダー」ボタンをクリックし、次のように式ビルダーを構成します(図2-19を参照)。

- 「変数」リストでCustOrder.orderidをダブルクリックします。

図2-19 式ビルダー: orderid

「図2-19 式ビルダー: orderid」の説明

35. 「保存」をクリックします。

36. プラス記号ボタンをクリックします。

37. 「オブジェクト名」フィールドにamountと入力します。

38. 「式ビルダー」ボタンをクリックし、次のように式ビルダーを構成します(図2-20を参照)。

- 「変数」リストでCustOrder.amountをダブルクリックします。

図2-20 式ビルダー: amount

「図2-20 式ビルダー: amount」の説明

39. 「保存」をクリックします。

40. プラス記号ボタンをクリックします。
図2-21に示すように「メジャー」タブが表示されます。

図2-21 「メジャー」タブ: 完了

「図2-21 「メジャー」タブ: 完了」の説明

41. 「保存」をクリックします。

42. 選択アイコンをダブルクリックします。
図2-22に示すように選択の構成画面が表示されます。

図2-22 選択の構成ダイアログ: 「プロジェクト」タブ

「図2-22 選択の構成ダイアログ: 「プロジェクト」タブ」の説明

43. 「プロジェクト」タブを次のように構成します。

- イベント・タイプの選択または入力プルダウン・メニューからAlertEventを選択します。

- 「ソースの選択」プルダウン・メニューでOrdersを選択します。

44. 「プロパティ」リストのorderidをダブルクリックし、別名の選択または入力プルダウン・メニューからorderidを選択します。

45. プラス記号ボタンをクリックして、このプロパティを「生成されたCQL文」に追加します。

46. 「プロパティ」リストのamountをダブルクリックし、別名の選択または入力プルダウン・メニューからamountを選択します。

47. プラス記号ボタンをクリックして、このプロパティを「生成されたCQL文」に追加します。

48. 「プロジェクト式」フィールドをクリックして値"Error - Missing Approval"を入力し、別名の選択または入力プルダウン・メニューからalertTypeを選択します。

49. プラス記号ボタンをクリックして、このプロパティを「生成されたCQL文」に追加します。
図2-23に示すように「プロジェクト」タブが表示されます。

図2-23 選択の構成ダイアログ: 「プロジェクト」タブの完了

「図2-23 選択の構成ダイアログ: 「プロジェクト」タブの完了」の説明

50. 「保存」をクリックします。

51. 「問合せの保存」をクリックします。

52. 「出力」アイコンをダブルクリックします。
図2-24に示すように出力の構成ダイアログが表示されます。

図2-24 出力の構成ダイアログ

「図2-24 出力の構成ダイアログ」の説明

53. 出力を次のように構成します。

- 「問合せ」を選択します。

- 「問合せ名」としてTrackingと入力します。

54. 「ルールのインジェクト」をクリックします。
図2-25に示すように、ルールのインジェクトの「確認」ダイアログが表示されます。

図2-25 ルールのインジェクトの「確認」ダイアログ

「図2-25 ルールのインジェクトの「確認」ダイアログ」の説明

55. 「OK」をクリックします。
問合せウィザードによってルールがcqlProcプロセッサに追加されます。

56. 「保存」をクリックします。

57. 「CQLルール」タブをクリックします。
図2-26に示すように「CQLルール」タブが表示されます。

58. 「問合せ」ラジオ・ボタンをクリックします。
Tracking問合せが存在していることを確認します。

図2-26 Tracking問合せを含む「CQLルール」タブ

「図2-26 Tracking問合せを含む「CQLルール」タブ」の説明

欠落イベントの問合せをテストするには:

1. 欠落イベントの問合せのデータ・フィードをシミュレートするには、新しいコマンド・ウィンドウを開き、第3章「Oracle Event Processingアプリケーションの開発の開始」の説明に従って環境を設定します。

2. MIDDLEWARE_HOME\ocep_11.1\utils\load-generatorディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に作成したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

3. orderData.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。

1. Windowsの場合:

prompt> runloadgen.cmd orderData.prop

2. UNIXの場合:

prompt> runloadgen.sh orderData.prop

4. Oracle Event Processing Visualizerで上のペインの「ストリームの表示」ボタンをクリックします。
図2-27に示すように「ストリーム・ビジュアライザ」画面が表示されます。

図2-27 ストリーム・ビジュアライザ: 欠落イベントの表示

「図2-27 ストリーム・ビジュアライザ: 欠落イベントの表示」の説明

5. 「クライアントの初期化」をクリックします。

6. 「登録」タブをクリックします。

7. オーダー警告ラジオ・ボタンを選択します。

8. 「サブスクライブ」をクリックします。
欠落イベントが検出されると、Oracle Event Processingによって「受信メッセージ」領域が更新され、生成されたAlertEventsが表示されます。

2.6.4.2 移動平均の問合せの作成

ここでは、Oracle Event Processing Visualizer問合せウィザードを使用して、stockProcプロセッサが実行するOracle CQLの移動平均問合せを作成する方法を説明します。

これは2段階で行います。

- まず、移動平均問合せのソースとして使用するビュー(Oracle CQLにおける副問合せ)を作成します。
「移動平均問合せのビュー・ソースの作成」を参照してください。

- 次に、ソース・ビューを使用する移動平均問合せを作成します。
「ビュー・ソースを使用する移動平均問合せの作成」を参照してください。

- 最後に、移動平均問合せをテストします。
「移動平均問合せのテスト」を参照してください。

移動平均問合せのビュー・ソースを作成するには:

1. CQLのOracle Event Processingインスタンスがまだ実行されていない場合は、2.6.1項「CQLのサンプルの実行」の手順に従ってサーバーを起動します。
Oracle Event Processing Visualizerを使用するには、サーバーが実行中である必要があります。

2. ブラウザで以下のURLを起動します。

http://host:port/wlevs

hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。

図2-28に示すように「ログオン」画面が表示されます。

図2-28 Oracle Event Processing Visualizerの「ログオン」画面

「図2-28 Oracle Event Processing Visualizerの「ログオン」画面」の説明

3. 「ログオン」画面で、「ユーザーID」にwlevs、「パスワード」にwlevsを入力し、「ログイン」をクリックします。
図2-29に示すようにOracle Event Processing Visualizerダッシュボードが表示されます。

図2-29 Oracle Event Processing Visualizerダッシュボード

「図2-29 Oracle Event Processing Visualizerダッシュボード」の説明

Oracle Event Processing Visualizerのユーザー・インタフェースの詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のOracle Event Processing Visualizerユーザー・インタフェースの概要に関する項を参照してください。

4. 右側のペインで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」を展開します。

5. cqlノードを選択します。
図2-30に示すようにCQLアプリケーション画面が表示されます。

図2-30 CQLアプリケーション画面: 「全般」タブ

「図2-30 CQLアプリケーション画面: 「全般」タブ」の説明

6. 「イベント処理ネットワーク」タブを選択します。
図2-31に示すように「イベント処理ネットワーク」画面が表示されます。

図2-31 CQLアプリケーション: 「イベント処理ネットワーク」タブ

「図2-31 CQLアプリケーション: 「イベント処理ネットワーク」タブ」の説明

7. Oracle CQLプロセッサstockProcessorのアイコンをダブルクリックします。
図2-32に示すようにOracle CQLプロセッサ画面が表示されます。

図2-32 Oracle CQLプロセッサ: 「全般」タブ

「図2-32 Oracle CQLプロセッサ: 「全般」タブ」の説明

8. 「問合せウィザード」タブを選択します。
図2-33に示すように「問合せウィザード」画面が表示されます。

図2-33 Oracle CQLプロセッサ: 「問合せウィザード」タブ

「図2-33 Oracle CQLプロセッサ: 「問合せウィザード」タブ」の説明

Oracle CQL問合せウィザードを使用すると、テンプレートまたは個々のOracle CQL構文からOracle CQL問合せを作成できます。

この手順では、個々のOracle CQL構文からOracle CQLのビューおよび問合せを作成します。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』の問合せウィザードを使用したOracle CQLプロセッサのルール作成に関する項を参照してください。

9. 図2-34に示すように、SSourceアイコン(ストリーム・ソース)を「CQL構文」パレットでクリックし、問合せウィザードのキャンバスの任意の場所にドラッグ・アンド・ドロップします。

図2-34 問合せウィザード: SSource

「図2-34 問合せウィザード: SSource」の説明

10. SSourceのアイコンをダブルクリックします。
SSourceの構成画面が表示されます。

ビューのソースはstockChannelストリームになります。このストリームから、数が1000を超える在庫イベントを選択します。これが移動平均問合せのソースになります。

11. SSourceを次のように構成します(図2-35)。

- 「タイプ」として「ストリーム」を選択します。
ビューのソースはstockChannelストリームになります。

- 「ソースの選択」プルダウン・メニューでstockChannelを選択します。

- 別名StockVolGt1000を「AS」フィールドに入力します。

図2-35 SSourceの構成ダイアログ

「図2-35 SSourceの構成ダイアログ」の説明

12. 「保存」をクリックします。

13. 「問合せの保存」をクリックします。

14. プロンプトが表示されたら、「問合せID」フィールドにStockVolGt1000と入力します。

15. 「保存」をクリックします。
次は、Oracle CQLフィルタを追加します。

16. 図2-36に示すように、「フィルタ」アイコンを「CQL構文」パレットでクリックし、問合せウィザードのキャンバスの任意の場所にドラッグ・アンド・ドロップします。

図2-36 問合せウィザード: フィルタ

「図2-36 問合せウィザード: フィルタ」の説明

17. SSourceアイコンをクリックしてウィンドウアイコンまでドラッグし、図2-37に示すようにOracle CQL構文を接続します。

図2-37 SSourceアイコンと「フィルタ」アイコンの接続

「図2-37 SSourceアイコンと「フィルタ」アイコンの接続」の説明

18. 「フィルタ」アイコンをダブルクリックします。
図2-38に示すようにフィルタの構成ダイアログが表示されます。

図2-38 フィルタの構成ダイアログ

「図2-38 フィルタの構成ダイアログ」の説明

19. 「式ビルダー」ボタンをクリックします。
「式ビルダー」ダイアログが表示されます。

20. 式ビルダーを次のように構成します(図2-39)。

- 「イベント・タイプの選択」プルダウン・メニューからStockVolGt100を選択し、この式で使用できる変数を定義します。

- volume変数をダブルクリックして、「式ビルダー」フィールドに追加します。

- 「オペランド」リストの>をダブルクリックして、「式ビルダー」フィールドに追加します。

- >オペランドの後に値1000を入力します。

図2-39 フィルタの式ビルダー

「図2-39 フィルタの式ビルダー」の説明

21. 「保存」をクリックします。

22. 「フィルタの追加」をクリックします。
図2-40に示すように、問合せウィザードによって「生成されたCQL文」にこの式が追加されます。

図2-40 フィルタの構成ダイアログ: フィルタの追加後

「図2-40 フィルタの構成ダイアログ: フィルタの追加後」の説明

23. 「保存」をクリックします。

24. 「問合せの保存」をクリックします。
次は、select文を追加します。

25. 図2-41に示すように、選択アイコンを「CQL構文」パレットでクリックし、問合せウィザードのキャンバスの任意の場所にドラッグ・アンド・ドロップします。

図2-41 問合せウィザード: 選択

「図2-41 問合せウィザード: 選択」の説明

26. 「フィルタ」アイコンをクリックして選択アイコンにドラッグし、Oracle CQL構文を接続します。

27. 選択アイコンをダブルクリックします。
選択の構成画面が表示されます。

price、symbolおよびvolumeをStockVolGt1000ストリームから選択します。

28. 選択を次のように構成します。

- 「ソースの選択」プルダウン・メニューでStockVolGt1000を選択します。

- priceプロパティを選択し、プラス記号ボタンをクリックします。
問合せウィザードによって、プロパティが「生成されたCQL文」に追加されます。

- symbolプロパティとvolumeプロパティについても繰り返します。

図2-42に示すように選択の構成ダイアログが表示されます。

図2-42 選択の構成ダイアログ: プロパティの選択

「図2-42 選択の構成ダイアログ: プロパティの選択」の説明

29. 「保存」をクリックします。

30. 「問合せの保存」をクリックします。
最後に出力を追加します。

31. 図2-43に示すように、「出力」アイコンを「CQL構文」パレットでクリックし、問合せウィザードのキャンバスの任意の場所にドラッグ・アンド・ドロップします。

図2-43 問合せウィザード: 出力

「図2-43 問合せウィザード: 出力」の説明

32. 選択アイコンをクリックして「出力」アイコンにドラッグし、Oracle CQL構文を接続します。

33. 「出力」アイコンをダブルクリックします。
出力の構成画面が表示されます。

34. 出力を次のように構成します(図2-44)。

- 「ビュー」を選択します。

- 「ビュー名」にStockVolGt1000を構成します。

- 「スキーマの表示」フィールドの内容を削除します。
Oracle Event Processingサーバーによってビュー・スキーマが定義されます。

図2-44 出力の構成ダイアログ

「図2-44 出力の構成ダイアログ」の説明

35. 「ルールのインジェクト」をクリックします。
図2-45に示すように、ルールのインジェクトの「確認」ダイアログが表示されます。

図2-45 ルールのインジェクトの「確認」ダイアログ

「図2-45 ルールのインジェクトの「確認」ダイアログ」の説明

36. 「OK」をクリックします。
問合せウィザードによってルールがcqlProcプロセッサに追加されます。

37. 「保存」をクリックします。

38. 「CQLルール」タブをクリックします。
図2-46に示すように「CQLルール」タブが表示されます。

39. 「ビュー」ラジオ・ボタンをクリックします。
StockVolGt1000ビューが存在していることを確認します。

図2-46 ビューStockVolGt1000を含む「CQLルール」タブ

「図2-46 ビューStockVolGt1000を含む「CQLルール」タブ」の説明

ソース・ビューを使用する移動平均問合せを作成するには:

1. CQLのOracle Event Processingインスタンスがまだ実行されていない場合は、2.6.1項「CQLのサンプルの実行」の手順に従ってサーバーを起動します。
Oracle Event Processing Visualizerを使用するには、サーバーが実行中である必要があります。

2. ブラウザで以下のURLを起動します。

http://host:port/wlevs

hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。

図2-47に示すように「ログオン」画面が表示されます。

図2-47 Oracle Event Processing Visualizerの「ログオン」画面

「図2-47 Oracle Event Processing Visualizerの「ログオン」画面」の説明

3. 「ログオン」画面で、「ユーザーID」にwlevs、「パスワード」にwlevsを入力し、「ログイン」をクリックします。
図2-48に示すようにOracle Event Processing Visualizerダッシュボードが表示されます。

図2-48 Oracle Event Processing Visualizerダッシュボード

「図2-48 Oracle Event Processing Visualizerダッシュボード」の説明

Oracle Event Processing Visualizerのユーザー・インタフェースの詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のOracle Event Processing Visualizerユーザー・インタフェースの概要に関する項を参照してください。

4. 左側のペインで、「WLEventServerDomain」→「NonClusteredServer」→「アプリケーション」を展開します。

5. cqlノードを選択します。
図2-49に示すようにCQLアプリケーション画面が表示されます。

図2-49 CQLアプリケーション画面: 「全般」タブ

「図2-49 CQLアプリケーション画面: 「全般」タブ」の説明

6. 「イベント処理ネットワーク」タブを選択します。
図2-50に示すように「イベント処理ネットワーク」画面が表示されます。

図2-50 CQLアプリケーション: 「イベント処理ネットワーク」タブ

「図2-50 CQLアプリケーション: 「イベント処理ネットワーク」タブ」の説明

7. Oracle CQLプロセッサstockProcessorのアイコンをダブルクリックします。
図2-51に示すようにOracle CQLプロセッサ画面が表示されます。

図2-51 Oracle CQLプロセッサ: 「全般」タブ

「図2-51 Oracle CQLプロセッサ: 「全般」タブ」の説明

8. 「問合せウィザード」タブを選択します。
図2-52に示すように「問合せウィザード」画面が表示されます。最近このプロセッサに対する問合せを作成または編集している場合は、その問合せが問合せウィザードのキャンバスに表示される可能性があります。それ以外の場合、キャンバスは空白になります。

図2-52 Oracle CQLプロセッサ: 「問合せウィザード」タブ

「図2-52 Oracle CQLプロセッサ: 「問合せウィザード」タブ」の説明

Oracle CQL問合せウィザードを使用すると、テンプレートまたは個々のOracle CQL構文からOracle CQL問合せを作成できます。

この手順では、個々のOracle CQL構文からOracle CQLのビューおよび問合せを作成します。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』の問合せウィザードを使用したOracle CQLプロセッサのルール作成に関する項を参照してください。

9. 図2-53に示すように、SSourceアイコン(ストリーム・ソース)を「CQL構文」パレットでクリックし、問合せウィザードのキャンバスの任意の場所にドラッグ・アンド・ドロップします。

図2-53 問合せウィザード: 移動平均問合せのSSource

「図2-53 問合せウィザード: 移動平均問合せのSSource」の説明

10. SSourceのアイコンをダブルクリックします。
SSourceの構成画面が表示されます。

11. SSourceダイアログを次のように構成します(図2-54)。

- 「タイプ」として「ビュー」を選択します。

- 「ソースの選択」プルダウン・メニューでStockVolGt1000ビューを選択します。

図2-54 SSourceの構成ダイアログ: 移動平均問合せ

「図2-54 SSourceの構成ダイアログ: 移動平均問合せ」の説明

12. 「保存」をクリックします。

13. 「問合せの保存」をクリックします。

14. 図2-55に示すように、ウィンドウアイコンを「CQL構文」パレットでクリックし、問合せウィザードのキャンバスの任意の場所にドラッグ・アンド・ドロップします。

図2-55 問合せウィザード: 移動平均問合せのウィンドウ

「図2-55 問合せウィザード: 移動平均問合せのウィンドウ」の説明

15. SSourceアイコンをクリックしてウィンドウアイコンにドラッグし、Oracle CQL構文を接続します。

16. ウィンドウアイコンをダブルクリックします。
SSourceの構成画面が表示されます。

symbolをパーティションとして、最後の2つのイベントに対するスライディング・ウィンドウを作成します。

17. ウィンドウ・ダイアログを次のように構成します(図2-56)。

- 「ソース・プロパティ・リスト」でsymbolを選択して、パーティション・リストに追加します。

- 「タイプ」として「パーティション」を選択します。

- 「行ベース」を選択し、「行ベース」フィールドに2を入力します。

18. 「ウィンドウの追加」をクリックします。
図2-56に示すように、問合せウィザードによって「生成されたCQL文」にこのスライディング・ウィンドウが追加されます。

図2-56 ウィンドウの構成ダイアログ: ウィンドウの追加後

「図2-56 ウィンドウの構成ダイアログ: ウィンドウの追加後」の説明

19. 「保存」をクリックします。

20. 「問合せの保存」をクリックします。

21. 図2-57に示すように、選択アイコンを「CQL構文」パレットでクリックし、問合せウィザードのキャンバスの任意の場所にドラッグ・アンド・ドロップします。

図2-57 問合せウィザード: 移動平均問合せの選択

「図2-57 問合せウィザード: 移動平均問合せの選択」の説明

22. ウィンドウ・アイコンをクリックして選択アイコンにドラッグし、Oracle CQL構文を接続します。

23. 選択アイコンをダブルクリックします。
選択の構成画面が表示されます。

24. 「ソースの選択」プルダウン・メニューでStockVolGt1000を選択します。
これは、前に作成した移動平均問合せのビューのソースです(「移動平均問合せのビュー・ソースを作成するには:」を参照してください)。

25. ターゲット・イベント・タイププルダウン・メニューからMovingAvgEventを選択します。
これは、移動平均問合せによって生成される出力イベントです。ソース・イベントからこの出力イベントにプロパティをマップします。

26. 「ソースのプロパティ」リストからsymbolを選択します。
図2-58に示すように、選択したソース・プロパティが「プロジェクト式」に追加されます。

図2-58 選択の構成ダイアログ: ソース・プロパティsymbolの選択

「図2-58 選択の構成ダイアログ: ソース・プロパティsymbolの選択」の説明

このケースでは、ソース・プロパティsymbolを出力イベント・プロパティsymbolにそのままマップします。

27. 「AS」フィールドの横のプルダウン・メニューをクリックし、symbolを選択します。

28. プラス記号ボタンをクリックします。
図2-59に示すように、このソース・プロパティが「生成されたCQL文」のプロジェクト式に追加されます。

図2-59 選択の構成ダイアログ: 出力イベント・プロパティにマップされたソース・プロパティsymbol

「図2-59 選択の構成ダイアログ: 出力イベント・プロパティにマップされたソース・プロパティsymbol」の説明

29. 「ソースのプロパティ」リストからpriceを選択します。
図2-60に示すように、選択したソース・プロパティが「プロジェクト式」に追加されます。

図2-60 選択の構成ダイアログ: ソース・プロパティpriceの選択

「図2-60 選択の構成ダイアログ: ソース・プロパティpriceの選択」の説明

このケースでは、ソース・プロパティpriceを処理した後で出力イベントにマップします。

30. 「式ビルダー」ボタンをクリックします。
「式ビルダー」ダイアログが表示されます。

31. 「関数タイプの選択」プルダウン・メニューで「集計関数」を選択します。
Oracle CQLで提供される集計関数のリストが表示されます。AVG関数を使用します。

32. 「式ビルダー」フィールドでStockVolGt1000.priceを選択します。

33. AVG関数をダブルクリックします。
図2-61に示すように、「式ビルダー」フィールドで選択した部分がAVG()関数によって囲まれます。

図2-61 式ビルダー: AVG関数の適用

「図2-61 式ビルダー: AVG関数の適用」の説明

34. 「保存」をクリックします。
図2-62に示すように、式が「プロジェクト式」フィールドに追加されます。

図2-62 選択の構成ダイアログ: 式を含む

「図2-62 選択の構成ダイアログ: 式を含む」の説明

35. 「AS」フィールドの横のプルダウン・メニューをクリックし、movingAvgPriceを選択します。

36. プラス記号ボタンをクリックします。
図2-63に示すように、このソース・プロパティが「生成されたCQL文」のプロジェクト式に追加されます。

図2-63 選択の構成ダイアログ: 出力イベント・プロパティにマップされたソース・プロパティprice

「図2-63 選択の構成ダイアログ: 出力イベント・プロパティにマップされたソース・プロパティprice」の説明

37. 「検証」をクリックします。
図2-64に示すように検証エラー・ダイアログが表示されます。

図2-64 検証エラー: GROUP BY

「図2-64 検証エラー: GROUP BY」の説明

パーティションを使用しているため、GROUP BY句を指定する必要があります。

38. 「グループ」タブを選択します。
「グループ」タブが表示されます。

39. 「グループ」タブを次のように構成します(図2-65)。

- 「ソースの選択」プルダウン・メニューでStockVolGt1000を選択します。

- 「プロパティ」リストからsymbolを選択します。

- プラス記号ボタンをクリックします。

図2-65に示すようにsymbolプロパティがGROUP BY句に追加されます。

図2-65 「グループ」タブ: グループ化プロパティsymbolを含む

「図2-65 「グループ」タブ: グループ化プロパティsymbolを含む」の説明

40. 「保存」をクリックします。

41. 「問合せの保存」をクリックします。
次は、問合せを出力に結び付けます。

42. 図2-66に示すように、「出力」アイコンを「CQL構文」パレットでクリックし、問合せウィザードのキャンバスの任意の場所にドラッグ・アンド・ドロップします。

図2-66 問合せウィザード: 出力

「図2-66 問合せウィザード: 出力」の説明

43. 選択アイコンをクリックして「出力」アイコンにドラッグし、Oracle CQL構文を接続します。

44. 「出力」アイコンをダブルクリックします。
出力の構成画面が表示されます。

45. 出力を次のように構成します(図2-67)。

- 「問合せ」を選択します。

- 「問合せ名」としてMovingAverageと入力します。

図2-67 出力の構成ダイアログ

「図2-67 出力の構成ダイアログ」の説明

46. 「ルールのインジェクト」をクリックします。
図2-68に示すように、ルールのインジェクトの「確認」ダイアログが表示されます。

図2-68 ルールのインジェクトの「確認」ダイアログ

「図2-68 ルールのインジェクトの「確認」ダイアログ」の説明

47. 「OK」をクリックします。
問合せウィザードによってルールがcqlProcプロセッサに追加されます。

48. 「保存」をクリックします。

49. 「CQLルール」タブをクリックします。
図2-69に示すように「CQLルール」タブが表示されます。

50. 「問合せ」ラジオ・ボタンをクリックします。
MovingAverage問合せが存在していることを確認します。

図2-69 ビューMovingAverageを含む「CQLルール」タブ

「図2-69 ビューMovingAverageを含む「CQLルール」タブ」の説明

移動平均問合せをテストするには:

1. 移動平均の問合せのデータ・フィードをシミュレートするには、新しいコマンド・ウィンドウを開き、3.2項「開発環境の設定」の説明に従って環境を設定します。

2. MIDDLEWARE_HOME\ocep_11.1\utils\load-generatorディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

3. stockData.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。

1. Windowsの場合:

prompt> runloadgen.cmd stockData.prop

2. UNIXの場合:

prompt> runloadgen.sh stockData.prop

4. Oracle Event Processing Visualizerで上のペインの「ストリームの表示」ボタンをクリックします。
図2-70に示すように「ストリーム・ビジュアライザ」画面が表示されます。

図2-70 ストリーム・ビジュアライザ: 移動平均問合せの出力表示

「図2-70 ストリーム・ビジュアライザ: 移動平均問合せの出力表示」の説明

5. 「クライアントの初期化」をクリックします。

6. 「クライアントの初期化」フィールドに/stockmovingと入力します。

7. 「サブスクライブ」をクリックします。
移動平均問合せによってイベントが出力されると、Oracle Event Processingによって「受信メッセージ」領域が更新され、生成されたイベントが表示されます。

2.7 Oracle Spatialサンプル

このサンプルは、Oracle Spatialの使用方法を示すもので、Oracle CQL問合せで全地球測位システム(GPS)のイベント・ストリームを処理してバスのGPS位置を追跡し、バスが事前に定義されたバス停の位置に到着するとアラートを生成します。

図2-71に、Oracle Spatialサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。

図2-71 Oracle Spatialサンプルのイベント処理ネットワーク

「図2-71 Oracle Spatialサンプルのイベント処理ネットワーク」の説明

このサンプルには次のコンポーネントが含まれています。

- BusPositionGen - バス位置のGPSイベントの入力ストリームをシミュレートするコンポーネント。Oracle Event Processingのloadgenユーティリティおよびcsvgenアダプタ・プロバイダを使用して、カンマ区切り値(CSV)を読み取り、EPNにBusPosイベントとして渡します。

- BusStopAdapter - MIDDLEWARE_HOME\ocep_11.1\samples\domains\spatial_domain\defaultserver\applications\spatial_sample\bus_stops.csvに基づいてバス停の位置を生成するカスタム・アダプタ・コンポーネント。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

- BusPosStream - BusPosイベントをProcessorにストリームとして送るコンポーネント。

- BusStopRelation - BusPosイベントをProcessorにリレーションとして送るコンポーネント。

- Processor - 着信BusPosイベントに対してOracle CQL問合せを実行するコンポーネント。

- BusStopChannel、BusPosChannelおよびBusStopArrivalChannel - Processorコンポーネントから別の問合せの結果を適切な発信アダプタまたは発信Beanに伝えるために、それぞれが別のセレクタを指定するコンポーネント。

- BusStopPub、BusPosPubおよびBusStopArrivalPub - Processorコンポーネントの問合せの結果をパブリッシュするコンポーネント。

- BusStopArrivalOutputBean - 挿入、削除および更新の各イベントのメッセージを記録するPOJOイベントBeanコンポーネント。BusStopArrivalChannelで提供されるリレーションの視覚化に役立ちます。

注意:

データ・カートリッジの詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のデータ・カートリッジの概要に関する項

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のOracle Spatialに関する項

2.7.1 Oracle Spatialサンプルの実行

Oracle Spatialアプリケーションはspatial_domainドメインにあらかじめデプロイされています。このアプリケーションを実行するには、ただOracle Event Processingのインスタンスを起動します。

Oracle Spatialサンプルをspatial_domainドメインから実行するには:

1. コマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\domains\spatial_domain\defaultserverにあるOracle Spatialサンプルのドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

prompt> cd d:\Oracle iddleware\ocep_11.1\samples\domains\spatial_domain\defaultserver

2. サーバー起動スクリプトで環境が正しく設定されていることを確認します。
詳細は、第3章「Oracle Event Processingアプリケーションの開発の開始」を参照してください。

3. 適切なスクリプトに正しいコマンド・ライン引数を指定して実行し、Oracle Event Processingを起動します。

1. Windowsの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.cmd -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.cmd

2. UNIXの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.sh -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.sh

コンソール・ログに次のように表示されるまで待機します。

<Mar 4, 2010 2:13:15 PM EST> <Notice> <Spring> <BEA-2047000> <The application context for "spatial_sample" was started successfully>
<Mar 4, 2010 2:13:15 PM EST> <Notice> <Server> <BEA-2046000> <Server STARTED>

このメッセージは、Oracle Spatialサンプルが正しく実行されていることを示しています。

4. Oracle Spatialサンプルが実行しているのと同じホストで、ブラウザを起動してhttp://localhost:9002/bus/main.htmlに移動します。

注意:

あるホストでこのサンプルを実行し、別のホストからブラウズすることはできません。これは、このサンプルが使用するGoogle API Keyの制約です。Oracle Event Processingの制約ではありません。

Oracle SpatialサンプルのWebページが、図2-72のように表示されます。

図2-72 Oracle SpatialのWebページ

「図2-72 Oracle SpatialのWebページ」の説明

バス停到着タブをクリックすると、図2-73に示すようにバス停の到着データが表示されます。

図2-73 Oracle SpatialのWebページ: バス停到着タブ

「図2-73 Oracle SpatialのWebページ: バス停到着タブ」の説明

5. Oracle Event Processingロード・ジェネレータを実行して、サンプル・データを生成します。

1. Windowsの場合:

- コマンド・プロンプトを開いて、MIDDLEWARE_HOME/ocep_11.1/utils/load-generatorにナビゲートします。

- runloadgen.cmd bus_positions.prop

2. UNIXの場合:

- ターミナル・ウィンドウを開いて、MIDDLEWARE_HOME/ocep_11.1/utils/load-generatorにナビゲートします。

- runloadgen.sh bus_positions.prop

6. 図2-74に示すように、バスの運行状況とアラートをブラウザで確認します。

図2-74 Oracle SpatialのWebページ: バスの追跡

「図2-74 Oracle SpatialのWebページ: バスの追跡」の説明

2.7.2 Oracle Spatialサンプルのビルドとデプロイ

Oracle Spatialサンプルのソース・ディレクトリには、Javaソースと、Oracle Spatialアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。build.xml Antファイルには、アプリケーションをビルドしてspatial_domainドメインにデプロイするためのターゲットが含まれています。

詳細は、2.5.3項「Hello WorldをビルドするAntターゲットの説明」を参照してください。

ソース・ディレクトリからOracle Spatialサンプルをビルドしてデプロイするには:

1. spatial_domainのOracle Event Processingインスタンスがまだ実行されていない場合は、2.7.1項「Oracle Spatialサンプルの実行」の手順に従ってサーバーを起動します。
再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\spatialにあるOracle Spatialソース・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです。
例:

prompt> cd d:\Oracle\Middleware\ocep_11.1\samples\source\applications\spatial

3. 3.2項「開発環境の設定」に従って開発環境を設定します。

4. all Antターゲットを実行してアプリケーションをコンパイルし、JARファイルを作成します。

prompt> ant all

5. deploy Antターゲットを実行してアプリケーションJARファイルをOracle Event Processingにデプロイします。

prompt> ant -Daction=update deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のOracle SpatialのアプリケーションJARファイルを上書きします。

2.7.3 Oracle SpatialサンプルをビルドするAntターゲットの説明

Oracle Spatialのソース・ディレクトリの最上位レベルにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。

- clean - このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。

- all - このターゲットは、アプリケーションをクリーンアップしてコンパイルし、com.bea.wlevs.example.helloworld_11.1.1.4_0.jarというJARファイルを生成し、生成したJARファイルを現在のディレクトリの下のdistディレクトリに格納します。

- deploy - このターゲットはDeployerユーティリティを使用してJARファイルをOracle Event Processingにデプロイします。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のDeployerコマンドライン・リファレンスに関する項を参照してください。

2.7.4 Oracle Spatialサンプルの実装

Oracle Spatialのサンプルの実装は、通常は『Oracle Fusion Middleware Oracle Event Processing開発者ガイドfor Eclipse』のOracle Event Processingアプリケーションの標準的な作成手順に関する項に従って行われます。

標準的な開発プロセスが説明されているタスクごとの手順は、この項を参照してください。

Oracle Spatialサンプルのすべてのファイルは、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\spatialディレクトリを基準にして相対的な場所にあります。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。実際の環境でも、このサンプルのとおりのディレクトリ設定を使用することをお薦めします。ただし、これは必須条件ではありません。

Oracle Spatialサンプルで使用されるファイルは次のとおりです。

- アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。このXMLファイルをOracle Event Processingアプリケーションに組み込む必要があります。
サンプルでは、このファイルはcontext.xmlという名前で、META-INF/springディレクトリにあります。

- アプリケーションのプロセッサ・コンポーネントなど、EPNの様々なコンポーネントを構成するコンポーネント構成ファイル。
サンプルでは、このファイルはconfig.xmlという名前で、META-INF/wlevsディレクトリにあります。

- 次のコンポーネントを実装するJavaファイル

- BusStopAdapter: MIDDLEWARE_HOME\ocep_11.1\samples\domains\spatial_domain\defaultserver\applications\spatial_sample\bus_stops.csvに基づいてバス停の位置を生成するカスタム・アダプタ・コンポーネント。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

- OutputBean:挿入、削除および更新の各イベントのメッセージを記録するPOJOイベントBeanコンポーネント。BusStopArrivalChannelで提供されるリレーションの視覚化に役立ちます。

- OrdsHelper: JGeometryからDouble値のListとして縦座標を返すメソッドgetOrdsを提供するヘルパー・クラス。

これらのJavaファイルは、source\applications\spatial\src\com\oracle\cep\sample\spatialディレクトリにあります。

このPOJOで参照されているOracle Event Processing APIの詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください。

- Oracle Event ProcessingにデプロイされるOSGiバンドルのコンテンツを記述したMANIFEST.MFファイル。
サンプルでは、MANIFEST.MFファイルがMETA-INFディレクトリにあります。

このファイルの作成方法およびOracle Event ProcessingにデプロイするOSGiバンドルの作成方法の詳細は、23.1項「アプリケーションのアセンブリおよびデプロイメントの概要」を参照してください。

Oracle Spatialサンプルでは、OSGiバンドルのコンパイル、アセンブリ、およびデプロイにbuild.xml Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xmlファイルの詳細は、2.7.2項「ソース・ディレクトリからビルドおよびデプロイするOracle Spatialサンプル」を参照してください。

2.8 外国為替取引(FX)のサンプル

外国為替取引のサンプル(簡単にFXと呼びます)は、複数のデータ・フィードから読み込んだ情報を処理するために複数のプロセッサを使用しているので、HelloWorldのサンプルよりも複雑です。FXのサンプルでは、Oracle Event Processingロード・ジェネレータ・ユーティリティを使用してデータ・フィードをシミュレートします。

図2-75に、FXサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。

図2-75 FXサンプルのイベント処理ネットワーク

「図2-75 FXサンプルのイベント処理ネットワーク」の説明

このシナリオでは、ロード・ジェネレータを使用してシミュレートした3つのデータ・フィードにより、世界各地から定数の値のペアが送信されます。値のペアは通貨を組み合せたもので、たとえばUSDEURは米ドルと欧州ユーロの組合せを表します。値のペアと共に2つの通貨間の為替レートも送信されます。fxMarketAmer、fxMarketAsiaおよびfxMarketEuroの各アダプタはフィードからデータを受信し、受信したデータをイベントに変換して、対応するFilterAmer、FilterAsiaおよびFilterEuroの各プロセッサに渡します。各プロセッサは、初期期限切れチェックを実行し、発生からの経過時間が1秒を超えているイベントがないことを確認します。さらに境界チェックを実行し、2つの通貨間の為替レートが現在の境界の範囲内にあることを確認します。プロセッサは、特定のチャネルから特定の通貨のペアのみを選択します。たとえば、シミュレートされた米国のデータ・フィードからはUSDEURを選択し、USDAUD(オーストラリア・ドル)などの他のすべてのペアを拒否します。

各データ・フィード・プロバイダからのデータがこの初期準備フェーズを通過すると、FindCrossRateという別のプロセッサが、すべてのプロバイダのすべてのイベントを結合し、最大レートと最小レートの中間点を計算して、トレーダが指定したスプレッドを適用します。最後に、プロセッサはビジネス・コードを含むPOJOにレートを転送します。このサンプルでは、POJOは単純にレートをクライアントにパブリッシュします。

Oracle Event Processingモニターは、直前のステップのイベント待機時間が特定のしきい値を超えていないか(たとえば、30秒という時間内に更新されたレートがないか)、また同じ通貨のペアで2つの連続的なレート間の偏差が大きすぎないかを監視するように構成されています。最後に、通貨の各ペアの直前のレートがOracle Event Processing httpパブリッシュ/サブスクライブ・サーバーに転送されます。

2.8.1 外国為替取引のサンプルの実行

最適なデモンストレーションの目的のためには、複数のCPUまたは3GHzのデュアル・コアIntelと最低限2GBのRAMを搭載した強力なコンピュータでこのサンプルを実行することをお薦めします。

外国為替取引(FX)アプリケーションはfx_domainドメインにあらかじめデプロイされています。このアプリケーションを実行するには、ただOracle Event Processingのインスタンスを起動します。

外国為替取引のサンプルを実行するには:

1. コマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\domains\fx_domain\defaultserverにあるFXドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

prompt> cd d:\Oracle iddleware\ocep_11.1\samples\domains\fx_domain\defaultserver

2. 3.2項「開発環境の設定」に従って開発環境を設定します。

3. 適切なスクリプトに正しいコマンド・ライン引数を指定して実行し、Oracle Event Processingを起動します。

1. Windowsの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.cmd -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.cmd

2. UNIXの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.sh -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.sh

これで、FXアプリケーションでデータ・フィードからデータを受信する準備ができました。

4. 米国のデータ・フィードをシミュレートするには、新しいコマンド・ウィンドウを開き、3項「Oracle Event Processingアプリケーションの開発の開始」の説明に従って環境を設定します。

5. MIDDLEWARE_HOME\ocep_11.1\utils\load-generatorディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

6. fxAmer.propプロパティ・ファイルを使用してロード・ジェネレータを実行します。

1. Windowsの場合:

prompt> runloadgen.cmd fxAmer.prop

2. UNIXの場合:

prompt> runloadgen.sh fxAmer.prop

7. fxAsia.propプロパティ・ファイルを使用して手順4 - 6を繰り返し、アジアのデータ・フィードをシミュレートします。

1. Windowsの場合:

prompt> runloadgen.cmd fxAsia.prop

2. UNIXの場合:

prompt> runloadgen.sh fxAsia.prop

8. fxEuro.propプロパティ・ファイルを使用して手順4 - 6を繰り返し、ヨーロッパのデータ・フィードをシミュレートします。

1. Windowsの場合:

prompt> runloadgen.cmd fxEuro.prop

2. UNIXの場合:

prompt> runloadgen.sh fxEuro.prop

サーバーを起動したコマンド・ウィンドウでサーバー・ステータス・メッセージがスクロールされ、3つのロード・ジェネレータが起動した後、サーバーのコマンド・ウィンドウに次のようなメッセージが出力されます(おそらくメッセージは1行で表示されます)。

OutputBean:onEvent() +
<TupleValue>
<EventType>SpreaderOuputEvent</EventType>
<ObjectName>FindCrossRatesRule</ObjectName>
<Timestamp>1843704855846</Timestamp>
<TupleKind>null</TupleKind>
<DoubleAttribute>
<Value>90.08350000074516</Value>
</DoubleAttribute>
<CharAttribute>
<Value>USD</Value>
<Length>3</Length>
</CharAttribute>
<CharAttribute>
<Value>JPY</Value>
<Length>3</Length>
</CharAttribute>
<IsTotalOrderGuarantee>false</IsTotalOrderGuarantee>
</TupleValue>

これらのメッセージは、外国為替取引のサンプルが正しく実行されていることを示しています。出力では、米ドル対日本円および米ドル対英国ポンドのクロス・レートが示されています。

2.8.2 ソース・ディレクトリからビルドおよびデプロイする外国為替取引のサンプル

外国為替取引(FX)サンプルのソース・ディレクトリには、Javaソースと、FXアプリケーションを構成する他の必須リソース(構成XMLファイルなど)が含まれます。build.xml Antファイルには、アプリケーションをビルドしてfx_domainドメインにデプロイするためのターゲットが含まれています(2.5.3項「Hello WorldをビルドするAntターゲットの説明」を参照)。

ソース・ディレクトリから外国為替取引のサンプルをビルドおよびデプロイするには:

1. FXのOracle Event Processingインスタンスがまだ実行されていない場合は、2.8.1項「外国為替取引のサンプルの実行」の手順に従ってサーバーを起動します。
再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\fxにあるFXソース・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingインストール・ディレクトリをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

prompt> cd d:\Oracle\Middleware\ocep_11.1\samples\source\applications\fx

3. 3.2項「開発環境の設定」に従って開発環境を設定します。

4. all Antターゲットを実行してアプリケーションをコンパイルし、JARファイルを作成します。

prompt> ant all

5. deploy Antターゲットを実行してアプリケーションJARファイルをOracle Event Processingにデプロイします。

prompt> ant -Dusername=wlevs -Dpassword=wlevs -Daction=update deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のFXアプリケーションJARファイルを上書きします。

6. FXアプリケーションで必要なロード・ジェネレータが実行されていない場合は、2.8.1項「外国為替取引のサンプルの実行」の説明に従って起動します。
サーバー・ステータス・メッセージがスクロールされた後、出力先に次のメッセージが出力されます。

{crossRate=USDJPY, internalPrice=119.09934499999781}, {crossRate=USDGBP, internalPrice=0.5031949999999915}, {crossRate=USDJPY, internalPrice=117.73945624999783}

このメッセージは、FXのサンプルが再デプロイされ、正しく実行されていることを示しています。

2.8.3 FXをビルドするAntターゲットの説明

FXソースの最上位レベル・ディレクトリにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。

- clean - このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。

- all - このターゲットは、アプリケーションをクリーンアップしてコンパイルし、com.bea.wlevs.example.fx_11.1.1.4_0.jarというJARファイルを生成し、生成したJARファイルを現在のディレクトリの下のdistディレクトリに格納します。

- deploy - このターゲットはDeployerユーティリティを使用してJARファイルをOracle Event Processingにデプロイします。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のDeployerコマンドライン・リファレンスに関する項を参照してください。

2.8.4 FXのサンプルの実装

外国為替取引(FX)のサンプルの実装は、通常は『Oracle Fusion Middleware Oracle Event Processing開発者ガイドfor Eclipse』のOracle Event Processingアプリケーションの標準的な作成手順に関する項に従って行われます。

標準的な開発プロセスが説明されているタスクごとの手順は、この項を参照してください。

FXサンプルのすべてのファイルは、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\fxディレクトリを基準にして相対的な場所にあります。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです(d:\Oracle\Middlewareなど)。実際の環境でも、このサンプルのとおりのディレクトリ設定を使用することをお薦めします。ただし、これは必須条件ではありません。

FXのサンプルで使用するファイルは次のとおりです。

- アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。このXMLファイルをOracle Event Processingアプリケーションに組み込む必要があります。
サンプルでは、このファイルはcom.oracle.cep.sample.fx.context.xmlという名前で、META-INF/springディレクトリにあります。

- アプリケーションのプロセッサ・コンポーネントを構成する2つのXMLファイル。
1つ目のXMLファイルは、filterAmer、filterAsia、filterEuroおよびFindCrossRatesの各プロセッサをすべて1つのファイルで構成します。このXMLファイルに含まれるOracle CQLルールは、シミュレートされた特定のマーケット・フィードから特定の通貨ペアを選択し、プリプロセッサで選択されたすべてのイベントを結合し、特定の通貨ペアの内部価格を計算し、さらにクロス・レートを計算します。サンプルでは、このファイルはspreader.xmlという名前で、META-INF/wlevsディレクトリにあります。

2つ目のXMLファイルは、summarizeResultsプロセッサを構成し、FindCrossRatesプロセッサの結果を要約するOracle CQLルールを含みます。サンプルでは、このファイルはSummarizeResults.xmlという名前で、META-INF/wlevsディレクトリにあります。

- PublishSummaryResults httpパブリッシュ/サブスクライブ・アダプタを構成するXMLファイル。サンプルでは、このファイルはPubSubAdapterConfiguration.xmlという名前で、META-INF/wlevsディレクトリにあります。

- アプリケーションのOutputBeanコンポーネント(ビジネス・ロジックを含むPOJO)を実装するJavaファイル。このPOJOは、受信したイベント(onEventメソッドでプログラミングされたもの)を画面に出力します。また、イベント・タイプ・リポジトリにForeignExchangeEventイベント・タイプを登録します。
サンプルでは、このファイルはOutputBean.javaという名前で、src/com/oracle/cep/sample/fxディレクトリにあります。

このPOJOで参照されているOracle Event Processing APIの詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください。

- Oracle Event ProcessingにデプロイされるOSGiバンドルのコンテンツを記述したMANIFEST.MFファイル。
サンプルでは、MANIFEST.MFファイルがMETA-INFディレクトリにあります。

このファイルの作成方法およびOracle Event ProcessingにデプロイするOSGiバンドルの作成方法の詳細は、23.1項「アプリケーションのアセンブリおよびデプロイメントの概要」を参照してください。

FXのサンプルでは、OSGiバンドルのコンパイル、アセンブル、およびデプロイにbuild.xml Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xmlファイルの詳細は、2.8.2項「ソース・ディレクトリからビルドおよびデプロイする外国為替取引のサンプル」を参照してください。

2.9 シグナル生成のサンプル

シグナル生成のサンプル・アプリケーションは、シミュレートされたマーケット・データを受信し、証券の価格変動が2%を超えたかどうかを検証します。このアプリケーションは、特定の銘柄の連続的な株価を追跡することにより、パターンの発生も検出します。以前を上回る価格が連続3回を超えた場合に、パターンと見なします。

図2-76に、シグナル生成サンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。

図2-76 シグナル生成サンプルのイベント処理ネットワーク

「図2-76 シグナル生成サンプルのイベント処理ネットワーク」の説明

このアプリケーションでは、Oracle Event Processingロード・ジェネレータ・ユーティリティを使用してマーケット・データ・フィードをシミュレートします。このサンプルでは、ロード・ジェネレータは毎秒最大10,000個のメッセージを生成します。サンプルには、照合したイベントとレイテンシを表示するHTMLダッシュボードが含まれています。イベントは、銘柄記号、タイム・スタンプ、および価格で構成されます。

このサンプルは非常に短い待機時間を示し、スループットが高い状況では待機時間のジッタは最小限になります。アプリケーションの実行が開始されると、プロセッサは毎秒平均800個のメッセージを照合します。最小限の構成をしたシステムでアプリケーションを実行した場合、このサンプルは非常に短い平均待機時間(平均30 - 300マイクロ秒)と最小待機時間スパイク(数ミリ秒単位)を示します。

サンプルでは、ロード・ジェネレータで生成されたタイム・スタンプとOracle Event Processingのタイム・スタンプ間の差分に基づいてレイテンシ値を計算し、表示しています。有効なレイテンシを計算するには、ロード・ジェネレータを実行するコンピュータとOracle Event Processingを実行するコンピュータの間で、1ミリ秒のような非常に厳密なクロック同期が必要です。このため、ロード・ジェネレータとOracle Event Processingの両方を1台のマルチCPUコンピュータで実行し、共通のクロックを共有することをお薦めします。

サンプルでは、Oracle Event Processingイベント・キャッシング機能の使用方法も示されています。具体的には、EPNの単一のプロセッサからイベントBeanとキャッシュの両方にイベントが送信されます。

このサンプルはOracle CQL問合せの使用方法も示します。

2.9.1 シグナル生成のサンプルの実行

最適なデモンストレーションの目的のためには、複数のCPUまたは3GHzのデュアル・コアIntelと最低限2GBのRAMを搭載した強力なコンピュータでこのサンプルを実行することをお薦めします。

signalgeneration_domainドメインには、単一のアプリケーションであるシグナル生成サンプル・アプリケーションが含まれています。シグナル生成アプリケーションを実行するには、ドメインのOracle Event Processingインスタンスを起動するだけです。

シグナル生成のサンプルを実行するには:

1. コマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\domains\signalgeneration_domain\defaultserverにあるsignalgeneration_domainドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです(d:\Oracle\Middlewareなど)。

prompt> cd d:\Oracle\Middleware\ocep_11.1\samples\domains\signalgeneration_domain\defaultserver

2. 3.2項「開発環境の設定」に従って開発環境を設定します。

3. 適切なスクリプトに正しいコマンド・ライン引数を指定して実行し、Oracle Event Processingを起動します。

1. Windowsの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.cmd -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.cmd

2. UNIXの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.sh -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.sh

4. 次のようなコンソール・メッセージが表示されるまで待機します。

<Apr 24, 2009 11:40:37 AM EDT> <Notice> <Server> <BEA-2046000> <Server STARTED>
Throughput (msg per second): 0. Average latency (microseconds): 0
Throughput (msg per second): 0. Average latency (microseconds): 0
Throughput (msg per second): 0. Average latency (microseconds): 0
Throughput (msg per second): 0. Average latency (microseconds): 0
...

これで、シグナル生成アプリケーションでデータ・フィードからデータを受信する準備ができました。

次は、データ・フィードをシミュレートするために、このサンプル用にプログラミングされたロード・ジェネレータを使用します。

5. 新しいコマンド・ウィンドウを開きます。

6. MIDDLEWARE_HOME\ocep_11.1\samples\domains\signalgeneration_domain\defaultserver\utilsディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです(d:Oracle\Middlewareなど)。

7. startDataFeedコマンドを実行します。

1. Windowsの場合:

prompt> startDataFeed.cmd

2. UNIXの場合:

prompt> startDataFeed.sh

8. ブラウザを起動し、次のHTMLページを開いて、サンプルのダッシュボードを起動します。

http://host:9002/signalgeneration/dashboard.html

hostは、Oracle Event Processingを実行しているコンピュータの名前に置き換えます。ブラウザと同じコンピュータである場合は、localhostとすることができます。

9. ブラウザで、HTMLページの開始をクリックします。
図2-77に示すように、このサンプルに構成されているOracle CQLルールと一致するイベントの表示が開始します。

図2-77 シグナル生成のダッシュボード

「図2-77 シグナル生成のダッシュボード」の説明

2.9.2 ソース・ディレクトリからビルドおよびデプロイするシグナル生成のサンプル

シグナル生成サンプルのソース・ディレクトリには、Javaソースと、シグナル生成アプリケーションを構成する他の必須のリソース(構成XMLファイル、EPNアセンブリ・ファイル、DOJOクライアントJavaScriptライブラリなど)が含まれます。build.xml Antファイルには、アプリケーションをビルドしてsignalgeneration_domainドメインにデプロイするためのターゲットが含まれています(2.9.3項「シグナル生成をビルドするAntターゲットの説明」を参照)。

ソース・ディレクトリからシグナル生成のサンプルをビルドおよびデプロイするには:

1. シグナル生成のOracle Event Processingインスタンスがまだ実行されていない場合は、2.9.1項「シグナル生成のサンプルの実行」の手順に従ってサーバーを起動します。再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\signalgenerationにあるシグナル生成ソース・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです(d:\Oracle\Middlewareなど)。

prompt> cd d:\Oracle\Middleware\ocep_11.1\samples\source\applications\signalgeneration

3. 3.2項「開発環境の設定」に従って開発環境を設定します。

4. all Antターゲットを実行してアプリケーションをコンパイルし、JARファイルを作成します。

prompt> ant all

5. deploy Antターゲットを実行してアプリケーションJARファイルをMIDDLEWARE_HOME\ocep_11.1\samples\domains\signalgeneration_domain\defaultserver\applications\signalgenerationディレクトリにデプロイします。

prompt> ant deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のシグナル生成アプリケーションJARファイルを上書きします。

6. シグナル生成アプリケーションで必要なロード・ジェネレータが実行されていない場合は、2.9.1項「シグナル生成のサンプルの実行」の説明に従って起動します。

7. 2.9.1項「シグナル生成のサンプルの実行」の説明に従って、サンプルのダッシュボードを起動します。

2.9.3 シグナル生成をビルドするAntターゲットの説明

シグナル生成サンプル・ソースの最上位レベル・ディレクトリにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。

- clean - このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。

- all - このターゲットは、アプリケーションをクリーンアップしてコンパイルし、com.bea.wlevs.example.signalgen_11.1.1.4_0.jarというJARファイルを生成し、生成したJARファイルを現在のディレクトリの下のdistディレクトリに格納します。

- deploy - このターゲットはDeployerユーティリティを使用してJARファイルをOracle Event Processingにデプロイします。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のDeployerコマンドライン・リファレンスに関する項を参照してください。

2.9.4 シグナル生成のサンプルの実装

シグナル生成のサンプルの実装は、通常は『Oracle Fusion Middleware Oracle Event Processing開発者ガイドfor Eclipse』のOracle Event Processingアプリケーションの標準的な作成手順に関する項に従って行われます。

標準的な開発プロセスが説明されているタスクごとの手順は、この項を参照してください。

シグナル生成のすべてのファイルは、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\signalgenerationディレクトリを基準にして相対的な場所にあります。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです(c:\Oracle\Middlewareなど)。実際の環境でも、このサンプルのとおりのディレクトリ設定を使用することをお薦めします。ただし、これは必須条件ではありません。

シグナル生成のサンプルで使用されるファイルは次のとおりです。

- アプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。
サンプルでは、このファイルはepn_assembly.xmlという名前で、META-INF/springディレクトリにあります。

- アプリケーションのプロセッサ・コンポーネントを構成するXMLファイル。このファイルはconfig.xmlという名前で、META-INF/wlevsディレクトリにあります。
config.xmlファイルはprocessor1というOracle CQLプロセッサを構成します。特に、証券の価格変動が2%を超えたかどうか、また価格においてトレンドが発生したかどうかを確認するOracle CQLルールを構成します。

- アプリケーションのSignalgenOutputBeanコンポーネントすなわちビジネス・ロジックを含むPOJOを実装するJavaファイル。このPOJOは、HttpServletおよびEventSinkです。このonEventメソッドは、PercentTickおよびTrendTickイベント・インスタンスを使用して、待機時間を計算し、ダッシュボードの情報を表示します。
サンプルでは、このファイルはSignalgenOutputBean.javaという名前で、src/oracle/cep/example/signalgenディレクトリにあります。

イベント・シンクのプログラミングに関する一般情報については、16.2項「ソースおよびシンクでのイベントの処理」を参照してください。

- Oracle Event ProcessingにデプロイされるOSGiバンドルのコンテンツを記述したMANIFEST.MFファイル。
サンプルでは、MANIFEST.MFファイルがMETA-INFディレクトリにあります。

このファイルの作成方法およびOracle Event ProcessingにデプロイするOSGiバンドルの作成方法の詳細は、23.1項「アプリケーションのアセンブリおよびデプロイメントの概要」を参照してください。

- メインのサンプル・ディレクトリにあるdashboard.htmlファイル。このHTMLファイルは、実行中のシグナル生成アプリケーションのイベントと待機時間を表示するサンプル・ダッシュボードです。このHTMLファイルは、http://dojotoolkit.org/のdojoディレクトリにあるDojo JavaScriptライブラリを使用します。

ForeignExchangeBuilderFactoryで参照されているOracle Event Processing APIの詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください。

シグナル生成のサンプルでは、OSGiバンドルのコンパイル、アセンブリ、およびデプロイにbuild.xml Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xmlファイルの詳細は、2.9.2項「ソース・ディレクトリからビルドおよびデプロイするシグナル生成のサンプル」を参照してください。

2.10 イベントの記録と再生のサンプル

記録と再生のサンプルは、1つのコンポーネントを構成してイベントをイベント・ストアに記録し、ネットワークの別のコンポーネントを構成してストアにあるイベントを再生する方法を示します。サンプルは、Oracle Event Processingで提供されるデフォルトのBerkeleyデータベースを使用してイベントを格納します。サンプルでは、イベント処理ネットワークのノードとしてパブリッシュ用HTTP pub-subアダプタを構成する方法も示します。

図2-78に、イベントの記録と再生のサンプルのイベント処理ネットワーク(EPN)を示します。EPNには、このアプリケーションを構成するコンポーネントが含まれ、コンポーネントの組合せが示されます。

図2-78 イベントの記録と再生のサンプルのイベント処理ネットワーク

「図2-78 イベントの記録と再生のサンプルのイベント処理ネットワーク」の説明

このアプリケーションのイベント処理ネットワークには次の4つのコンポーネントが含まれています。

- simpleEventSource: 例を示すだけの目的で単純なイベントを生成するアダプタ。図で示したように、このコンポーネントはイベントを記録するよう構成されています。
このアダプタの構成ソースは次のとおりです。

<adapter>
<name>simpleEventSource</name>
<record-parameters>
...
</record-parameters>
</adapter>

- eventStream: simpleEventSourceアダプタとrecplayEventSinkイベントBeanを接続するチャネル。このコンポーネントはイベントを再生するように構成されています。
このチャネルの構成ソースは次のとおりです。

<channel>
<name>eventStream</name>
<playback-parameters>
...
</playback-parameters>
...
</channel>

- recplayEventSink: アダプタで生成されるイベントのシンクとして機能するイベントBean。

- playbackHttpPublisher: recplayEventSinkイベントBeanをリスニングし、Oracle Event Processing HTTPパブリッシュ/サブスクライブ・サーバーの/playbackchannelというチャネルにパブリッシュするパブリッシュ用HTTPパブリッシュ/サブスクライブ・アダプタ。

2.10.1 イベントの記録/再生のサンプルの実行

recplay_domainドメインには、記録と再生のサンプル・アプリケーションという単一のアプリケーションが含まれています。このアプリケーションを実行するには、次の手順の説明に従って、ドメインのOracle Event Processingのインスタンスを最初に起動します。

この後の手順では、Oracle Event Processing Visualizerを使用してsimpleEventSourceおよびeventStreamコンポーネントでイベントの記録と再生をそれぞれ開始する方法を示しています。手順の最後では、Oracle Event Processing Visualizerを使用して、playbackHttpPublisherアダプタによってチャネルにパブリッシュされるイベントのストリームを表示する方法を示しています。

イベントの記録/再生のサンプルを実行するには:

1. コマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\domains\recplay_domain\defaultserverにあるrecplay_domainドメイン・ディレクトリのデフォルト・サーバー・ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ディレクトリです(d:\Oracle\Middlewareなど)。

prompt> cd d:\Oracle\Middleware\ocep_11.1\samples\domains\recplay_domain\defaultserver

2. 3.2項「開発環境の設定」に従って開発環境を設定します。

3. 適切なスクリプトに正しいコマンド・ライン引数を指定して実行し、Oracle Event Processingを起動します。

1. Windowsの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.cmd -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.cmd

2. UNIXの場合:

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用している場合は、コマンドに-dgcパラメータを指定して確定的ガベージ・コレクタを有効にします。

prompt> startwlevs.sh -dgc

- Oracle JRockit Real Timeに含まれるJRockit JDKを使用しない場合

prompt> startwlevs.sh

サーバー・ステータス・メッセージがスクロールされた後、出力先に次のメッセージが出力されます。

SimpleEvent created at: 14:33:40.441

このメッセージは、Oracle Event Processingサーバーが正しく起動され、simpleEventSourceコンポーネントがイベントを作成していることを示しています。

4. ブラウザで以下のURLを起動します。

http://host:port/wlevs

hostは、Oracle Event Processingが実行中のコンピュータ名を指します。portは、サーバーに構成されているJetty NetIOポートを指します(デフォルト値9002)。

図2-79に示すように「ログオン」画面が表示されます。

図2-79 Oracle Event Processing Visualizerの「ログオン」画面

「図2-79 Oracle Event Processing Visualizerの「ログオン」画面」の説明

5. 「ログオン」画面で、「ユーザーID」にwlevs、「パスワード」にwlevsを入力し、「ログイン」をクリックします。
図2-80に示すようにOracle Event Processing Visualizerダッシュボードが表示されます。

図2-80 Oracle Event Processing Visualizerダッシュボード

「図2-80 Oracle Event Processing Visualizerダッシュボード」の説明

Oracle Event Processing Visualizerのユーザー・インタフェースの詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のOracle Event Processing Visualizerユーザー・インタフェースの概要に関する項を参照してください。

6. 左側のペインで、WLEventServerDomain→NonClusteredServer→「アプリケーション」→「Recplay」→「ステージ」→simpleEventSourceを選択します。

7. 図2-81に示すように、右側のペインで「記録」タブを選択します。

図2-81 イベントの「記録」タブ

「図2-81 イベントの「記録」タブ」の説明

DataSet Nameフィールドには、例2-1に示すように、simpleEventSourceアダプタ・アプリケーション構成ファイルMIDDLEWARE_HOME\ocep_11.1\samples\domains\recplay_domain\defaultserver\applications\recplay\config.xmlのdataset-name要素のrecord-parameters子要素の値が含まれます。

例2-1 recplayアプリケーション構成ファイルconfig.xml: adapter要素

<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>

8. 「記録」タブの下の「開始」をクリックします。
図2-82に示すように「アラート」ダイアログが表示されます。

図2-82 記録開始の「アラート」ダイアログ

「図2-82 記録開始の「アラート」ダイアログ」の説明

9. 「OK」をクリックします。
現在のステータス・フィールドに記録中と表示されます。

「OK」をクリックするとすぐに、イベントがsimpleEventSourceコンポーネントから出力され始め、構成済のデータベースに格納されます。

「記録の開始」フィールドと「記録の停止」フィールドを使用すると、いつイベントを記録するかを構成できます。

10. 左側のペインでeventStreamを選択します。

11. 図2-83に示すように、右側のペインで「再生」タブを選択します。

図2-83 イベントの「再生」タブ

「図2-83 イベントの「再生」タブ」の説明

12. タブの下の「開始」をクリックします。
図2-84に示すように「アラート」ダイアログが表示されます。

図2-84 再生開始の「アラート」ダイアログ

「図2-84 再生開始の「アラート」ダイアログ」の説明

13. 「OK」をクリックします。
現在のステータス・フィールドに再生中と表示されます。

「OK」をクリックするとすぐに、simpleEventSourceコンポーネントで記録されたイベントがsimpleStreamコンポーネントに再生されます。

Oracle Event Processingサーバーを起動したコマンド・ウィンドウに次のメッセージが表示され、元のイベントと再生イベントの両方がEPNをストリームしていることが通知されます。

SimpleEvent created at: 14:33:11.501
Played back: Original time=14:15:23.141 Playback time=14:33:11.657

再生されるイベントが記録される期間や再生速度などの再生パラメータをさらに構成できます。そのためには、適切なフィールドを更新し、パラメータの変更をクリックします。再生パラメータを変更した後、再生を再開する必要があります。

14. playbackHttpPublisher アダプタがチャネルにパブリッシュしているイベントを表示するには、次のステップを実行します:

1. 上のペインでViewstreamを選択します。
図2-85に示すようにViewstreamウィンドウが表示されます。

図2-85 ストリーム・ビジュアライザ

「図2-85 ストリーム・ビジュアライザ」の説明

2. 右側のペインで「クライアントの初期化」をクリックします。

3. 「チャネルのサブスクライブ」テキスト・ボックスに/playbackchannelと入力します。

4. 「サブスクライブ」をクリックします。

「受信メッセージ」テキスト・ボックスに、再生されたイベントの詳細が表示されます。再生されたイベントは、イベントの作成時刻と再生時刻を示します。

2.10.2 ソース・ディレクトリからビルドおよびデプロイするイベントの記録/再生のサンプル

記録と再生のサンプルのソース・ディレクトリには、Javaソースと、アプリケーションを構成する他の必須リソース(構成XMLファイル、EPNアセンブリ・ファイルなど)が含まれます。build.xml Antファイルには、アプリケーションをビルドしてsignalgeneration_domainドメインにデプロイするためのターゲットが含まれています(2.10.3項「記録と再生をビルドするAntターゲットの説明」を参照)。

ソース・ディレクトリからイベントの記録/再生のサンプルをビルドおよびデプロイするには:

1. 記録/再生のOracle Event Processingインスタンスがまだ実行されていない場合は、2.10.1項「イベントの記録/再生のサンプルの実行」の手順に従ってサーバーを起動します。再ビルドしたアプリケーションを正常にデプロイするには、サーバーが実行中である必要があります。

2. 新しいコマンド・ウィンドウを開き、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\recplayにある記録/再生ディレクトリに移動します。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです(d:\Oracle\Middlewareなど)。

prompt> cd d:\Oracle\Middleware\ocep_11.1\samples\source\applications\recplay

3. 3.2項「開発環境の設定」に従って開発環境を設定します。

4. all Antターゲットを実行してアプリケーションをコンパイルし、JARファイルを作成します。

prompt> ant all

5. deploy Antターゲットを実行してアプリケーションJARファイルをMIDDLEWARE_HOME\ocep_11.1\samples\domains\recplay_domain\defaultserver\applications\recplayディレクトリにデプロイします。

prompt> ant -Dusername=wlevs -Dpassword=wlevs -Daction=update deploy

注意:

このターゲットは、ドメイン・ディレクトリにある既存のイベントの記録/再生アプリケーションのJARファイルを上書きします。

アプリケーション再デプロイ・メッセージの後、約1秒ごとに次のメッセージが出力先に出力されます。

SimpleEvent created at: 14:33:40.441

このメッセージは、記録と再生のサンプルが再デプロイされ、正しく実行されていることを示します。

6. 2.10.1項「イベントの記録/再生のサンプルの実行」の手順(4以降)に従ってOracle Event Processing Visualizerを起動し、イベントの記録と再生を開始します。

2.10.3 記録と再生のサンプルをビルドするAntターゲットの説明

記録/再生のソースの最上位レベル・ディレクトリにあるbuild.xmlファイルには、アプリケーションをビルドおよびデプロイするための次のターゲットが含まれています。

- clean - このターゲットは、現在のディレクトリの下にあるdistおよびoutput作業ディレクトリを削除します。

- all - このターゲットは、アプリケーションをクリーンアップしてコンパイルし、com.bea.wlevs.example.recplay_11.1.1.4_0.jarというJARファイルを生成し、生成したJARファイルを現在のディレクトリ下のdistディレクトリに格納します。

- deploy - このターゲットはDeployerユーティリティを使用してJARファイルをOracle Event Processingにデプロイします。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のDeployerコマンドライン・リファレンスに関する項を参照してください。

2.10.4 記録と再生のサンプルの実装

シグナル生成のサンプルの実装は、通常は『Oracle Fusion Middleware Oracle Event Processing開発者ガイドfor Eclipse』のOracle Event Processingアプリケーションの標準的な作成手順に関する項に従って行われます。

標準的な開発プロセスが説明されているタスクごとの手順は、この項を参照してください。

サンプルのすべてのファイルは、MIDDLEWARE_HOME\ocep_11.1\samples\source\applications\recplayディレクトリを基準にして相対的な場所にあります。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです(c:\Oracle\Middlewareなど)。実際の環境でも、このサンプルのとおりのディレクトリ設定を使用することをお薦めします。ただし、これは必須条件ではありません。

記録と再生のサンプルで使用するファイルは次のとおりです。

- 図2-78に示すアプリケーションの各コンポーネントと、すべてのコンポーネントの接続方法を記述したEPNアセンブリ・ファイル。
サンプルでは、このファイルはcom.bea.wlevs.example.recplay-context.xmlという名前で、META-INF/springディレクトリにあります。

- simpleEventSourceアダプタのJavaソース・ファイル。
サンプルでは、このファイルはSimpleEventSource.javaという名前で、src/com/bea/wlevs/adapter/example/recplayディレクトリにあります。

アダプタJavaファイルのプログラミング方法の詳細な説明は、15.1項「カスタム・アダプタの概要」を参照してください。

- PlayedBackEventおよびSimpleEventイベント・タイプを記述するJavaソース・ファイル。SimpleEventイベント・タイプは、最初にアダプタによって生成されたイベントですが、PlayedBackEventイベント・タイプは、記録された後に再生されるイベントに対して使用します。PlayedBackEventsは、SimpleEventとほぼ同じですが、イベントが記録された時刻を示す追加フィールドがあります。
サンプルでは、2つのイベントはSimpleEvent.javaおよびPlayedBackEvent.javaという名前で、src/com/bea/wlevs/event/example/recplayディレクトリにあります。

このファイルの詳細な説明と、イベント・タイプのプログラミングの概要については、9.1項「Oracle Event Processingイベント・タイプの概要」を参照してください。

- アプリケーションのrecplayEventSinkイベントBeanを実装するJavaファイルは、simpleEventSourceアダプタからリアル・タイム・イベントと再生イベントの両方を受け取るイベント・シンクです。
サンプルでは、このファイルはRecplayEventSink.javaという名前で、src/com/bea/wlevs/example/recplayディレクトリにあります。

イベント・ソースおよびシンクの詳細は、16.2項「ソースおよびシンクでのイベントの処理」を参照してください。

- simpleEventSourceアダプタとeventStreamチャネル・コンポーネントを構成するXMLファイル。コンポーネントを指定する<record-parameters>要素を含むアダプタは、イベントをイベント・ストアに記録します。同様に、チャネルには再生イベントを受け取るように指定する<playback-parameters>要素が含まれます。
サンプルでは、このファイルはconfig.xmlという名前で、META-INF/wlevsディレクトリにあります。

- Oracle Event ProcessingにデプロイされるOSGiバンドルのコンテンツを記述したMANIFEST.MFファイル。
サンプルでは、MANIFEST.MFファイルがMETA-INFディレクトリにあります。

このファイルの作成方法およびOracle Event ProcessingにデプロイするOSGiバンドルの作成方法の詳細は、23.1項「アプリケーションのアセンブリおよびデプロイメントの概要」を参照してください。

記録/再生のサンプルでは、OSGiバンドルのコンパイル、アセンブリ、およびデプロイにbuild.xml Antファイルを使用します。開発環境でもAntを使用する場合、このbuild.xmlファイルの詳細は、2.10.2項「ソース・ディレクトリからビルドおよびデプロイするイベントの記録/再生のサンプル」を参照してください。

3 Oracle Event Processingアプリケーションの開発の開始

この章では、開始から終了までの推奨される手順を含むOracle Event Processingアプリケーションの作成の開始、開発環境の設定および開発とテストのツールの推奨事項について説明します。

この章の内容は次のとおりです。

- 3.1項「Oracle Event Processingアプリケーションの作成」

- 3.2項「開発環境の設定」

- 3.3項「IDEを使用したアプリケーションの開発」

- 3.4項「アプリケーションのテスト」

3.1 Oracle Event Processingアプリケーションの作成

Oracle Event Processingを作成するための、開始から終了までの推奨される手順を以下に示します。各種コンポーネントのプログラミングおよび構成は必ずしもこの順序で行う必要はありませんが、次の手順ではお薦めの通常の論理的な流れを示しています。

この手順ではIDEの使用を想定していますが、これは必須ではなく、任意の環境を選択できます。Oracle Event Processing開発者を対象とする場合は、第4章「Oracle Event Processing IDE for Eclipseの概要」を参照してください。

Oracle Event Processingアプリケーションを作成するには:

1. 3.2項「開発環境の設定」に従って環境を設定します。

2. Oracle Event Processing IDE for Eclipseを使用して、Oracle Event Processingプロジェクトを作成します。
詳細は、第5章「Oracle Event Processing IDE for Eclipseプロジェクト」を参照してください。

3. イベント処理ネットワーク(EPN)を設計します。
Oracle Event Processing IDE for EclipseおよびEPNエディタを使用して、EPNアセンブリ・ファイルを作成してアプリケーションを構成するコンポーネントの完全なリストおよびそれらが互いに接続する方法を追加し、アプリケーションで使用されるイベント・タイプを登録します。

この手順では、特に構成しコード化する必要があるコンポーネントを決定するアプリケーションの設計、およびすべてのコンポーネント(EPNアセンブリ・ファイル)を指定する実XMLファイルおよびコンポーネント構成(コンポーネント構成ファイル)を指定するXMLファイルの作成の両方が組み合されています。アプリケーションを実行するたびにこのアプリケーションを更新します。しかし、アプリケーションへのハイレベルな視点を持つためにこの手順で起動することをお薦めします。

詳細は、次を参照してください:

- 第7章「Oracle Event Processing IDE for Eclipseおよびイベント処理ネットワーク」

- 5.3項「EPNアセンブリ・ファイルの作成」

- 5.4項「コンポーネント構成ファイルの構成」

4. アプリケーションで使用されるイベント・タイプを設計します。独自のJavaBeanを作成する場合は、Javaファイルのプログラミングを行います。
第9章「イベント・タイプの定義および使用」を参照してください。

5. イベント処理ネットワークの着信、中間、発信コンポーネントとして動作するアダプタまたはイベントBeanをプログラミングし、必要に応じて構成します。独自のアダプタまたはイベントBeanを作成するか、またはOracle Event Processingで提供されるアダプタを使用できます。詳細は、次を参照してください。

- 1.5項「Oracle Event Processing API」

- 1.4.3項「Oracle Event Processingリソース・アクセスの構成」

- 第11章「Java Message Serviceの統合」

- 第12章「HTTPパブリッシュ・サブスクライブ・サーバーの統合」

- 第15章「カスタム・アダプタを使用した外部コンポーネントの統合」

- 第16章「Javaでのイベントの処理」

6. コンポーネント構成XMLファイルを作成して、プロセッサを構成します。この手順の最も重要な部分は、各プロセッサに関連付けられている初期ルールの設計および宣言です。
参照:

- 第17章「Oracle CQLでのイベント・ストリームの問合せ」

- 第19章「Oracle EPLでのイベント・ストリームの問合せ」

7. アップストリーム・チャネルからイベントを選択して、ダウンストリーム・チャネルにイベントを出力するためにプロセッサによって使用されるルールを設計します。
参照:

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』

- 『Oracle Fusion Middleware Oracle Event Processing EPL言語リファレンス』

注意:

イベント処理言語(EPL)は、Oracle Event Processing 11gリリース1 (11.1.1)ではOracle CQLによって置き換えられます。Oracle Event Processingは、EPLとの下位互換性をサポートします。

8. 必要に応じて、構成XMLファイルを作成して、アダプタ、プロセッサ、およびビジネス・ロジックPOJOの間を流れるデータを処理するチャネルを構成します。
第10章「チャネルを使用したEPNステージの接続」を参照してください。

9. イベントをキャッシュにパブリッシュしたり、キャッシュのイベントを使用したりすることで、イベントの可用性を高め、アプリケーションのパフォーマンスを向上するために、キャッシング・システムを必要に応じて構成します。
第13章「キャッシュの統合」を参照してください。

10. オプションで、アプリケーションからOracle Event Processingサーバー・ログにログ・メッセージを書き込むために、Oracle Event Processingサーバー・ログ・サブシステムを使用します。

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
...
Log LOG=LogFactory.getLog("LogName");
...
LOG.debug("Some debug information");
...

Oracle Event Processing Visualizerを使用すると、アプリケーションのデプロイ、アプリケーションのログ・レベルの構成およびOracle Event Processingサーバー・コンソールの表示を行うことができます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingのロギングおよびデバッグの構成に関する項

- 23.4項「ログ・メッセージ・カタログの管理」

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のコンポーネント・ロギングの構成方法に関する項

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のコンソール出力の表示方法に関する項

3.2 開発環境の設定

Oracle Event Processingインスタンスを起動してサンプルを実行する前に、開発環境を設定する必要があります。特に、正しいバージョンのJRockit JDKを使用するようにPATHおよびJAVA_HOME環境変数を設定する必要があります。

JRockitをコンピュータにインストールするときに使用された可能性がある方法として、次の2つの方法があります。

- Oracle JRockit Real Timeインストールの一部としてのインストール。このバージョンのJRockit JDKには確定的ガベージ・コレクタが含まれています。

- Oracle Event Processing 11gリリース1 (11.1.1)インストールの一部としてのインストール。このバージョンのJRockit JDKには確定的ガベージ・コレクタが含まれていません。このバージョンはテスト目的専用に提供されています。

必須ではありませんが、最適な結果を得るためには、Oracle JRockit Real Timeに含まれるJRockit JDKバージョンを使用してOracle Event Processingを実行することをお薦めします。以下の手順では、いずれの場合にも適用できる環境の設定方法を説明します。

JRockitの詳細は、2.4項「サンプルのパフォーマンスの改善」を参照してください。

この項では次について説明します:

- 3.2.1項「Windowsでの開発環境の設定方法」

- 3.2.2項「UNIXでの開発環境の設定方法」

3.2.1 Windowsでの開発環境の設定方法

この手順は、Windowsに開発環境を設定する方法を説明します。

setEnv.cmdなどのコマンド・ファイルを作成して、ここで説明するsetコマンドを指定しておくと、セッションからログアウトした後に開発環境を簡単にリセットできます。

Windowsコンピュータで、「コントロール パネル」→「システム」ウィンドウを呼び出し、「詳細設定」タブ、「環境変数」ボタンの順にクリックして、必要な環境変数を永続的に設定することもできます。環境変数は、現在のユーザーに対して、またはシステム全体に対して設定できます。

Windowsで開発環境を設定するには:

1. JRockit JDKのbinディレクトリを含むようにPATH環境変数を更新します。また、PATH環境変数にAntのインストール先のbinディレクトリが含まれていることを確認してください。

1. Oracle JRockit Real Timeと一緒にインストールされたJRockit JDKを使用する場合
Oracle JRockit Real Timeがd:\jrockitディレクトリにインストールされていて、Antがd:\antディレクトリにインストールされている場合は、PATH環境変数を次のように設定します。

prompt> set PATH=d:\jrockit\[JRRT_HOME]\bin;d:\ant\bin;%PATH%

JRRT_HOMEは、JRockit Real Timeのディレクトリです。

2. Oracle Event Processingと一緒にインストールされたJRockit JDKを使用する場合
Oracle Event Processingがd:\Oracle\Middlewareディレクトリにインストールされていて、Antがd:\antディレクトリにインストールされている場合は、PATH環境変数を次のように設定します。

prompt> set PATH=d:\Oracle\Middleware\jrockit_160_20\bin;d:\ant\bin;%PATH%

2. setDomainEnv.cmdスクリプトのJAVA_HOME変数が正しいJRockit JDKを参照していることを確認します。正しくない場合は、スクリプトを編集します。
setDomainEnv.cmdスクリプトは、メイン・ドメイン・ディレクトリのdefaultserverサブディレクトリにあります。defaultserverサブディレクトリには、各ドメインのスタンドアロン・サーバーのファイルが含まれます。たとえば、HelloWorldドメインは\MIDDLEWARE_HOME\ocep_11.1\samples\domains\helloworld_domainにあります。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです(d:\Oracle\Middlewareなど)。

1. Oracle JRockit Real Timeと一緒にインストールされたJRockit JDKを使用する場合
setコマンドを次のように指定します。

set JAVA_HOME=d:\jrockit\[JRRT_HOME]

JRRT_HOMEは、JRockit Real Timeのディレクトリです。

2. Oracle Event Processingと一緒にインストールされたJRockit JDKを使用する場合
setコマンドを次のように指定します。

set JAVA_HOME=d:\Oracle\Middleware\jrockit_160_20

3. 独自の開発環境のJAVA_HOME変数を、JRockit JDKを参照するように設定します。

1. Oracle JRockit Real Timeと一緒にインストールされたJRockit JDKを使用する場合
setコマンドを次のように指定します。

prompt> set JAVA_HOME=d:\jrockit\[JRRT_HOME]

JRRT_HOMEは、JRockit Real Timeのディレクトリです。

2. Oracle Event Processingと一緒にインストールされたJRockit JDKを使用する場合
setコマンドを次のように指定します。

prompt> set JAVA_HOME=d:\Oracle\Middleware\jrockit_160_20

3.2.2 UNIXでの開発環境の設定方法

この手順は、UNIXに開発環境を設定する方法を説明します。

setEnv.shなどのコマンド・ファイルを作成して、ここで説明するsetコマンドを指定しておくと、セッションからログアウトした後に開発環境を簡単にリセットできます。

UNIXで開発環境を設定するには:

1. JRockit JDKのbinディレクトリを含むようにPATH環境変数を更新します。また、PATH環境変数にAntのインストール先のbinディレクトリが含まれていることを確認してください。

1. Oracle JRockit Real Timeと一緒にインストールされたJRockit JDKを使用する場合
Oracle JRockit Real Timeが/jrockitディレクトリにインストールされていて、Antが/antディレクトリにインストールされている場合は、PATH環境変数を次のように設定します。

prompt> PATH=/jrockit/j[JRRT_HOME]/bin:/ant/bin:$PATH

JRRT_HOMEは、JRockit Real Timeのディレクトリです。

2. Oracle Event Processingと一緒にインストールされたJRockit JDKを使用する場合
Oracle Event Processingが/Oracle/Middlewareディレクトリにインストールされていて、Antが/antディレクトリにインストールされている場合は、PATH環境変数を次のように設定します。

prompt> PATH=/Oracle/Middleware/jrockit_160_20/bin:/ant/bin:$PATH

2. setDomainEnv.shスクリプトのJAVA_HOME変数が正しいJRockit JDKを参照していることを確認します。正しくない場合は、スクリプトを編集します。
setDomainEnv.shスクリプトは、メイン・ドメイン・ディレクトリのdefaultserverサブディレクトリにあります。defaultserverサブディレクトリには、各ドメインのスタンドアロン・サーバーのファイルが含まれます。たとえば、HelloWorldドメインはMIDDLEWARE_HOME/ocep_11.1/samples/domains/helloworld_domainにあります。MIDDLEWARE_HOMEはOracle Event Processingをインストールした際に指定したミドルウェア・ホーム・ディレクトリです(/Oracle/Middlewareなど)。

1. Oracle JRockit Real Timeと一緒にインストールされたJRockit JDKを使用する場合
JAVA_HOME変数を次のように設定します。

JAVA_HOME=/jrockit/[JRRT_HOME]

JRRT_HOMEは、JRockit Real Timeのディレクトリです。

2. Oracle Event Processingと一緒にインストールされたJRockit JDKを使用する場合
JAVA_HOME変数を次のように設定します。

JAVA_HOME=/Oracle/Middleware/jrockit_160_20

3. 開発環境のJAVA_HOME変数を、JRockit JDKを参照するように設定します。

1. Oracle JRockit Real Timeと一緒にインストールされたJRockit JDKを使用する場合
JAVA_HOME変数を次のように設定します。

prompt> JAVA_HOME=/jrockit/[JRRT_HOME]

JRRT_HOMEは、JRockit Real Timeのディレクトリです。

2. Oracle Event Processingと一緒にインストールされたJRockit JDKを使用する場合
JAVA_HOME変数を次のように設定します。

prompt> JAVA_HOME=/Oracle/Middleware/jrockit_160_20

3.3 IDEを使用したアプリケーションの開発

Oracle Event Processingには、Oracle Event Processingアプリケーションを作成する処理を容易にするよう特に設計された機能とともにEclipse IDEを強化するプラグインが含まれます。IDEの詳細は、4項「Oracle Event Processing IDE for Eclipseの概要」を参照してください。

3.4 アプリケーションのテスト

付属のcsvadapterおよびロード・ジェネレータを使用して、作成するOracle Event Processingアプリケーションをテストできます。

ロード・ジェネレータは、カンマ区切り値(CSV)ファイルを読み取り、結果をcsvadapterにフィードするコマンドライン・ツールです。csvadapterは、ロード・ジェネレータから値を受信し、それらの値を指定するイベント・タイプにバインドするよう設計されています。

これらのツールの使用は、アプリケーションで実際のイベント・データ・ソースからデータを受信する前に開発中のコードを試行する比較的簡単な方法です。

これらのツールを使用したテストの詳細は、21項「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト」を参照してください。

第2部

Oracle Event Processing IDE for Eclipse

第2部の章の内容は次のとおりです。

- 第4章「Oracle Event Processing IDE for Eclipseの概要」

- 第5章「Oracle Event Processing IDE for Eclipseプロジェクト」

- 第6章「Oracle Event Processing IDE for EclipseおよびOracle Event Processingサーバー」

- 第7章「Oracle Event Processing IDE for Eclipseおよびイベント処理ネットワーク」

4 Oracle Event Processing IDE for Eclipseの概要

この章では、Oracle Event Processing IDEのEclipseで利用可能な機能、その機能のインストールおよび構成方法に関する情報について説明します。

この章の内容は次のとおりです。

- 4.1項「Oracle Event Processing IDE for Eclipseの概要」

- 4.2項「最新のOracle Event Processing IDE for Eclipseのインストール」

- 4.3項「Oracle Event Processingで配布されるOracle Event Processing IDE for Eclipseのインストール」

- 4.4項「Eclipseの構成」

4.1 Oracle Event Processing IDE for Eclipseの概要

Oracle Event Processing IDE for Eclipseは、Oracle Event Processingのアプリケーションの開発、デプロイおよびデバッグに役立つよう設計された一連のEclipse IDEのプラグインです。

この項では次について説明します:

- 4.1.1項「機能」

- 4.1.2項「JDK要件」

- 4.1.3項「デフォルトのOracle Event Processingドメインocep_domainおよび開発」

Oracle Event Processing IDE for Eclipseの詳細は、http://www.oracle.com/technology/products/event-driven-architecture/cep-ide/11/を参照してください。

4.1.1 機能

Oracle Event Processing IDE for Eclipseの主な機能は次のとおりです。

- イベント駆動型アプリケーションの作成を直ちに開始するためのプロジェクト作成ウィザードおよびテンプレート。

- JavaやXMLファイルなどのOracle Event Processingアプリケーションに共通のソース・ファイル用の高度なエディタ。

- IDE内部からOracle Event Processingサーバー・インスタンスをシームレスに開始、停止およびデプロイするための統合化されたサーバー管理。

- 統合化されたデバッグ。

- イベント処理アプリケーション内を参照および移動し、EPNコンポーネントを視覚的に作成および編集するイベント処理ネットワーク(EPN)のビジュアル設計ビュー。

- Oracle Continuous Query Language (Oracle CQL)構文の強調表示、コンポーネントの構成およびアセンブリ・ファイルを含むOracle Event Processingアプリケーション・ソース・ファイルの検証

- デプロイ可能なOracle Event Processingアプリケーションを作成およびエクスポートできる機能。

- IDE内からOracle Event Processing Visualizerを使用できるOracle Event Processing Visualizerの統合化されたサポート。

4.1.2 JDK要件

11g リリース1 (11.1.1)では、Oracle Event Processing IDE for EclipseはJDK 6.0が必要です。詳細は、次を参照してください:

- 3.2項「開発環境の設定」

- 4.4項「Eclipseの構成」

4.1.3 デフォルトのOracle Event Processingドメインocep_domainおよび開発

Oracle Event Processingサーバー・インストールで「標準」オプションを選択した場合、インストールにはデフォルトのocep_domainドメイン(デフォルトのパスワード付き)と製品サンプルは含まれません。

デフォルトのocep_domainとサンプル(推奨)をインストールする場合は、Oracle Event Processingサーバー・インストールの「カスタム」オプションを選択してください。

「標準」インストールは本番環境、「カスタム」インストールは開発環境に適しています。

開発中にOracle Event Processing IDE for Eclipseで使用するために、デフォルトのocep_domainとサンプルをインストールすることをお薦めします。

標準のOracle Event Processingサーバー・インストールを選択する場合、構成ウィザードを使用して、Oracle Event Processingサーバー・ドメインを作成できます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processingスタート・ガイド』のインストール概要に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingスタンドアロン・サーバー・ドメインの作成に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingネイティブ・クラスタリングを使用したOracle Event Processingマルチサーバー・ドメインの作成に関する項

4.2 最新のOracle Event Processing IDE for Eclipseのインストール

最新バージョンのIDEはOracle Technology Network Webサイトで入手可能です。Eclipse更新のサイトからIDEをインストールすることをお薦めします。

最新のOracle Event Processing IDE for Eclipseをインストールするには:

1. Eclipse (3.7.2)およびWTP (2.0)の必要なバージョンを取得します。必ずJava EE開発者用のEclipse IDEをインストールしてください。次のWebサイトで入手可能なIndigoインストール全体を取得することをお薦めします。
Windows: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/indigo/R/eclipse-jee-indigo-win32.zip

Linux: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/indigo/SR2/eclipse-jee-indigo-SR2-linux-gtk.tar.gz

2. Eclipse IDEを開き、「ヘルプ」>新規ソフトウェアのインストールのメニュー項目を選択します。
図4-1に表示されているように、「インストール」ダイアログが表示されます。

図4-1 「インストール」ダイアログ

「図4-1 「インストール」ダイアログ」の説明

3. 「追加」をクリックします。
図4-2に表示されているように、「サイト追加」ダイアログが表示されます。

図4-2 サイト追加ダイアログ

「図4-2 「サイトの追加」ダイアログ」の説明

4. 表4-1の説明に従って、このダイアログを構成します。

表4-1 新規更新サイトダイアログの属性

属性

説明

Name

このリモート更新サイトの名前。例: Oracle Event Processing Tools更新

URL

リモート更新サイトへのURL。有効な値:

http://download.oracle.com/technology/software/cep-ide/11/

5. 「OK」をクリックします。

6. 「インストール」ダイアログで、操作プルダウン・メニューから、作成したOracle Event Processing Tools更新サイトを選択します。
Eclipseのリモート更新サイトへの接続には多少時間がかかります。その間、サイトが選択されていませんのエントリは「保留中」になります。

Eclipseがリモート更新サイトに接続した後、図4-3に示すように、「Oracle Event Processing Tools」エントリが更新サイトのリストに表示されます。

7. 図4-3に示すように、Oracle Event Processingツールエントリの横にあるチェック・ボックスを選択します。

図4-3 「インストール」ダイアログ - サイト選択

「図4-3 「インストール」ダイアログ - サイト選択」の説明

8. 「次へ」をクリックします。
図4-4に示すように、「インストールの詳細」ダイアログが表示されます。

図4-4 「インストール」ダイアログ-「インストールの詳細」

「図4-4 「インストール」ダイアログ-「インストールの詳細」」の説明

9. 「次へ」をクリックします。
「ライセンスの確認」ダイアログが表示されます。

10. 「終了」をクリックします。

11. メッセージが表示されたら、Eclipseを再起動します。この操作を省略すると、予期しない動作が発生する可能性があります。

12. インストールを確認するために、「ヘルプ」>Eclipseについてを選択します。
図4-5に示すように、「Eclipseについて」ダイアログが表示されます。

図4-5 Eclipseについて

「図4-5 Eclipseについて」の説明

13. Oracleをクリックします。
図4-6に示すように、Eclipseの機能についてダイアログが表示されます。

図4-6 Eclipse機能についてダイアログ

「図4-6 Eclipse機能についてダイアログ」の説明

14. プラグインの詳細をクリックします。
図4-7に示すように、機能プラグインのダイアログが表示されます。

図4-7 機能プラグインダイアログ

「図4-7 機能プラグインダイアログ」の説明

15. 表4-2にあるプラグインが表示されていることを確認してください。

表4-2 Oracle Event Processing IDE for Eclipseプラグイン

プロバイダ

プラグイン名

プラグインID

Oracle

Oracle Event Processing Toolsコア

com.bea.wlevs.eclipse.tools.core

Oracle

Oracle Event Processing Toolsドキュメント

com.bea.wlevs.eclipse.tools.doc

Oracle

Oracle Event Processing Tools UI

com.bea.wlevs.eclipse.tools.ui

16. Oracle Event Processing IDE for Eclipseを選択した後、次のトピックを検討します。

- 4.1.3項「デフォルトのOracle Event Processingドメインocep_domainおよび開発」

- 4.4項「Eclipseの構成」

4.3 Oracle Event Processingで配布されるOracle Event Processing IDE for Eclipseのインストール

バージョンがOracle Technology Networkサイトより古い場合がありますが、Oracle Event Processing IDE for EclipseのバージョンがOracle Event Processing製品に付属しています。

Oracle Event Processingで配布されるOracle Event Processing IDE for Eclipseをインストールするには:

1. Eclipse (3.7.2)およびWTP (2.0)の必要なバージョンを取得します。必ずJava EE開発者用のEclipse IDEをインストールしてください。次のWebサイトで入手可能なIndigoインストール全体を取得することをお薦めします。
Windows: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/indigo/R/eclipse-jee-indigo-win32.zip

Linux: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/indigo/SR2/eclipse-jee-indigo-SR2-linux-gtk.tar.gz

2. Eclipse IDEを開き、「ヘルプ」>新規ソフトウェアのインストールのメニュー項目を選択します。
図4-1に表示されているように、「インストール」ダイアログが表示されます。

図4-8 「インストール」ダイアログ

「図4-8 「インストール」ダイアログ」の説明

3. 「追加」をクリックします。
図4-2に表示されているように、「サイト追加」ダイアログが表示されます。

図4-9 サイト追加ダイアログ

「図4-9 「サイトの追加」ダイアログ」の説明

4. 「アーカイブ」をクリックします。
図4-10に示すように、ローカル・サイト・アーカイブの選択ダイアログが表示されます。

図4-10 ローカル・サイト・アーカイブの選択ダイアログ

「図4-10 ローカル・サイト・アーカイブの選択ダイアログ」の説明

5. MIDDLEWARE_HOME/ocep_11.1/eclipse-update-siteディレクトリに移動して、cep-tools-11.1.0.DATE-BUILD.zipファイルを選択します。
MIDDLEWARE_HOMEはOracle Event Processingをインストールしたディレクトリ(c:\Oracle\Middlewareなど)、DATEはビルド日付、BUILDはビルド番号です。

6. 「開く」をクリックします。

7. Oracle Event Processing Toolsのインストールを選択し、アップデート・マネージャを終了します。

8. メッセージが表示されたら、Eclipseを再起動します。この操作を省略すると、予期しない動作が発生する可能性があります。

9. インストールを確認するために、「ヘルプ」>Eclipseについてを選択します。
図4-5に示すように、「Eclipseについて」ダイアログが表示されます。

図4-11 Eclipseについて

「図4-11 Eclipseについて」の説明

10. Oracleをクリックします。
図4-6に示すように、Eclipseの機能についてダイアログが表示されます。

図4-12 Eclipse機能についてダイアログ

「図4-12 Eclipse機能についてダイアログ」の説明

11. プラグインの詳細をクリックします。
図4-7に示すように、機能プラグインのダイアログが表示されます。

図4-13 機能プラグインダイアログ

「図4-13 機能プラグインダイアログ」の説明

12. 表4-2にあるプラグインが表示されていることを確認してください。

表4-3 Oracle Event Processing IDE for Eclipseプラグイン

プロバイダ

プラグイン名

プラグインID

Oracle

Oracle Event Processing Toolsコア

com.bea.wlevs.eclipse.tools.core

Oracle

Oracle Event Processing Toolsドキュメント

com.bea.wlevs.eclipse.tools.doc

Oracle

Oracle Event Processing Tools UI

com.bea.wlevs.eclipse.tools.ui

13. Oracle Event Processing IDE for Eclipseを選択した後、次のトピックを検討します。

- 4.1.3項「デフォルトのOracle Event Processingドメインocep_domainおよび開発」

- 4.4項「Eclipseの構成」

4.4 Eclipseの構成

この項では、Eclipseを構成してOracle Event Processingを操作する方法について説明します。

Eclipseを構成するには:

1. 実行中の場合は、Eclipseを終了します。

2. 使用のコンピュータにJava 6 JREをインストールします。
たとえば、Java Development Kitに付属のJREを次の場所にインストールします。

C:\Java\jre6

3. 任意のエディタを使用して、たとえば、例4-1のC:\eclipse\などのEclipseインストール・ディレクトリにあるeclipse.iniファイルを開きます。

例4-1 デフォルトのeclipse.iniファイル

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M

注意:

http://wiki.eclipse.org/Eclipse.iniの説明のように、eclipse.iniファイルを変更する場合、引数を追加します(1行につき1つの引数)。

Eclipseの構成方法の詳細は、http://wiki.eclipse.org/FAQ_How_do_I_run_Eclipseを参照してください。

4. 例4-2に示すように、次の行をeclipse.iniファイルに追加します。

例4-2 メモリー・リソース

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-vmargs
-Xmx512m
-XX:MaxPermSize=256M

5. 例4-3に示すように、次の行をeclipse.iniファイルに追加します。

例4-3 仮想マシン・パス

-vm
PATH-TO-JRE-6.0-JAVAW

PATH-TO-JRE-6.0-JAVAWは、Java 6.0 JRE javaw実行可能ファイルの完全修飾パスです。例:

-vm
C:\Java\jre6\bin\javaw.exe

注意:

-vmとパスの両方を同じ行に置きません。例4-3に示すように、それぞれを別の行に分ける必要があります。

6. eclipse.iniファイルを保存して閉じます。

7. Eclipseを起動します。

8. 「ヘルプ」>Eclipseについてを選択して、「インストール」詳細をクリックします。

9. 「構成」タブをクリックします。
図4-14に示すように、「構成の詳細」タブが表示されます。

図4-14 Java 6の構成詳細

「図4-14 Java 6の構成詳細」の説明

10. eclipse.vmプロパティは、eclipse.iniファイルに構成したJava 6.0 JREを指していることを確認します。

5 Oracle Event Processing IDE for Eclipseプロジェクト

この章では、EPNアセンブリ・ファイル、コンポーネント構成ファイルなど、イベント処理ネットワーク(EPN)を開発するのに使用するプロジェクトを作成するためにOracle Event Processing IDE for Eclipseを使用する方法について説明します。

この章の内容は次のとおりです。

- 5.1項「Oracle Event Processingプロジェクトの概要」

- 5.2項「Oracle Event Processingプロジェクトの作成」

- 5.3項「EPNアセンブリ・ファイルの作成」

- 5.4項「コンポーネント構成ファイルの作成」

- 5.5項「Oracle Event Processingプロジェクトのエクスポート」

- 5.6項「プロジェクトのアップグレード」

- 5.7項「Oracle Event Processingプロジェクトのライブラリおよび他の非クラス・ファイルの管理」

- 5.8項「Oracle Event Processing IDE for Eclipseプリファレンスの構成」

5.1 Oracle Event Processingプロジェクトの概要

Oracle Event Processingアプリケーションには、次のアーティファクトが含まれます。

- Javaソース・ファイル

- XML構成ファイル

- OSGiバンドル・マニフェスト・ファイル

図5-1は、プロジェクト作成後の「エクスプローラ」を示します。

図5-1 Oracle Event Processingプロジェクト構造

「図5-1 Oracle Event Processingプロジェクト構造」の説明

表5-1では、Oracle Event Processingプロジェクトの重要なファイルを、それらのファイルの使用および場所を含めて要約します。

表5-1 Oracle Event Processingプロジェクト・アーティファクト

ファイル・タイプ

ロケーション

説明

Javaソース・ファイル

任意のJavaソース・フォルダ

デフォルト: src

イベント、アダプタ、およびリスナーは、JavaファイルとともにOracle Event Processingアプリケーションに実装されます。すべてのJavaファイルは、コンパイルするために、ソース・フォルダに格納する必要があります。

詳細は、第1章「Oracle Event Processingアプリケーションの作成の概要」を参照してください。

EPNアセンブリ・ファイル

META-INF/spring

これらのファイルは、EPNのwire-upおよびイベント・タイプの定義に使用する主なファイルです。これはSpringコンテキスト・ファイルであり、アダプタ、チャネル、プロセッサ、およびリスナーが接続する場所です。

詳細は、第1章「EPNアセンブリ・ファイルの概要」を参照してください。

プロセッサ構成ファイル

META-INF/wlevs

プロセッサ構成ファイルでは、Oracle Event Processingプロセッサが定義されます。このファイルには、プロセッサ・ルール(Continuous Query Language - CQLまたはEvent Processing Language--EPLで定義)および他のコンポーネント構成設定が含まれます。

詳細は、次を参照してください:

- 第17章「Oracle CQLでのイベント・ストリームの問合せ」

- 第19章「Oracle EPLでのイベント・ストリームの問合せ」

MANIFEST.MFファイル

META-INF

マニフェスト・ファイルには、名前、バージョン、および依存性などのアプリケーションのメタデータが含まれます。

詳細は、第23章「Oracle Event Processingアプリケーションのアセンブルとデプロイ」を参照してください。

5.2 Oracle Event Processingプロジェクトの作成

Oracle Event Processingアプリケーションの開発は、プロジェクトを作成してすべてのソース・コードおよび関連するファイルを保持することから開始します。

プロジェクトはOracle Event Processingアプリケーションと1対1で対応し、サーバー・インスタンスに関連およびデプロイするワークのユニットです。具体的には、構築されたプロジェクトの出力はOracle Event Processingアプリケーションを含む単一のOSGiバンドル(JAR)です。

5.2.1 Oracle Event Processingプロジェクトの作成方法

デフォルトでは、新しいプロジェクトはJava 6.0を使用するように設定されます。この項には、Java 6を使用してOracle Event Processingプロジェクトを作成する方法が記載されています。Java 6を使用するようにOracle Event Processingプロジェクトを構成する方法の詳細は、4.4項「Eclipseの構成」を参照してください。

注意:

デフォルトで、Eclipseマニフェスト・エディタの「概要」ビューには、プラグインのテスト用にOSGiフレームワークを起動するためのリンクが用意されています。アプリケーション・テンプレートを使用してOracle Event Processingプロジェクトを作成した場合、フレームワークの起動はサポートされていません。

Oracle Event Processingプロジェクトを作成するには:

1. EPNエディタを開きます(7.1項「EPNエディタを開く」を参照)

2. 「ファイル」>新規プロジェクトを選択します。
図5-2に表示されているように、新規プロジェクト-ウィザードの選択ダイアログが表示されます。

図5-2 新規プロジェクト-ウィザードの選択ダイアログ

「図5-2 新規プロジェクト - ウィザードの選択ダイアログ」の説明

3. Oracle Event Processingを展開し、Oracle Event Processingアプリケーション・プロジェクトを選択します。

4. 「次へ」をクリックします。
図5-3に表示されているように、新規Oracle Event Processingアプリケーション・プロジェクトウィザードが表示されます。

図5-3 新規Oracle Event Processingアプリケーション・プロジェクトウィザード:Oracle Event Processingアプリケーションの作成

「図5-3 新規Oracle Event Processingアプリケーション・プロジェクトウィザード:Oracle Event Processingアプリケーションの作成」の説明

5. 表5-2に表示されているように、Oracle Event Processingアプリケーションの作成ダイアログを構成します。

表5-2 Oracle Event Processingアプリケーションの作成ダイアログ

属性

説明

プロジェクト名

Oracle Event Processingプロジェクトの名前。この名前は、Oracle Event Processingサーバーにデプロイされるときに、アプリケーションのデフォルト名として使用されます。

ロケーション

プロジェクトが保存されているディレクトリ。

デフォルトでは、作成したプロジェクトはEclipseワークスペース・ディレクトリ内にあります。

ワークスペースおよびソース・コード・コントロール・ディレクトリを別々にするには、デフォルトのロケーションを使用をクリアし、「参照」をクリックして、プロジェクトをワークスペース以外のディレクトリに配置します。

ターゲット・ランタイム

プロジェクトがデプロイされるOracle Event Processingサーバー。

6. 「次へ」をクリックします。
図5-4に表示されているように、Oracle Event Processingアプリケーションのコンテンツダイアログが表示されます。

図5-4 新規Oracle Event Processingアプリケーション・プロジェクトウィザード:Oracle Event Processingアプリケーションのコンテンツ

「図5-4 新規Oracle Event Processingアプリケーション・プロジェクトウィザード:Oracle Event Processingアプリケーションのコンテンツ」の説明

7. オプションで、表5-3に表示されているようにOracle Event Processingアプリケーションのコンテンツダイアログを構成します。

表5-3 Oracle Event Processingアプリケーションのコンテンツダイアログ

属性

説明

バンドルID

このアプリケーションのOSGiバンドルを、ターゲット・ランタイムにデプロイしたバンドルと識別する一意のID。

バンドルのバージョン

このOSGiバンドルのこのインスタンスのバージョン。

バンドル名

このアプリケーションのOSGiバンドルの名前。

バンドル・プロバイダ

このアプリケーションのOSGiバンドルのプロバイダの名前(オプション)。

8. 「次へ」をクリックします。
図5-5に表示されているように、「テンプレート」ダイアログが表示されます。

図5-5 新規Oracle Event Processingアプリケーション・プロジェクト・ウィザード:テンプレートダイアログ

「図5-5 新規Oracle Event Processingアプリケーション・プロジェクト・ウィザード:テンプレートダイアログ」の説明

9. オプションで、Oracle Event Processingアプリケーション・テンプレートを選択し、テンプレートに指定しているコンテンツのあるプロジェクトを事前移入できます。

10. 「終了」をクリックします。
Oracle Event Processing IDE for Eclipseは、Oracle Event Processingプロジェクトを作成します。

11. オプションで、追加のEPNアセンブリ・ファイルおよびコンポーネント構成ファイルを作成します。
デフォルトでは、Oracle Event Processing IDE for Eclipseは、プロジェクトに対して1つのEPNアセンブリ・ファイルおよび1つのコンポーネント構成ファイルを作成します。オプションで、管理、同時開発、および再利用を向上するために、複数のEPNアセンブリおよびコンポーネント構成ファイルでOracle Event Processingオブジェクトを定義および構成することを選択できます。

詳細は、次を参照してください:

- 5.3項「EPNアセンブリ・ファイルの作成」

- 5.4項「コンポーネント構成ファイルの作成」

5.3 EPNアセンブリ・ファイルの作成

Event Processing Network (EPN)アセンブリ・ファイルを使用して、Oracle Event Processingアプリケーションを作成するコンポーネント、およびそれらのコンポーネントの接続方法を宣言できます。このファイルを使用して、アプリケーションのイベント・タイプのみでなく、アプリケーションのアダプタおよびPOJOコンポーネントを実装するJavaクラスも登録できます。

EPNアセンブリ・ファイルの例については、2.8項「外国為替取引(FX)サンプル」を参照してください。SpringおよびOSGiに関する追加情報の詳細は、付録A「SpringおよびOSGiの追加情報」を参照してください。

5.3.1 Oracle Event Processing IDE for Eclipseを使用した新しいEPNアセンブリ・ファイルの作成方法

EPNファイルを作成および編集する、間違いが起こるのが少なく最も効率的な方法は、Oracle Event Processing IDE for Eclipseで新しいファイルのウィザードを使用することです。

詳細は、次を参照してください:

- 7.2項「EPNエディタの概要」

- 5.7項「Oracle Event Processingプロジェクトのライブラリおよび他の非クラス・ファイルの管理」

Oracle Event Processing IDE for Eclipseを使用して、新しいEPNアセンブリ・ファイルを作成するには:

1. Oracle Event Processingプロジェクトを作成します。
5.2項「Oracle Event Processingプロジェクトの作成」を参照してください。

デフォルトでは、Oracle Event Processing IDE for Eclipseは、プロジェクトの1つのEPNアセンブリ・ファイルを作成します。オプションで、管理、同時開発、および再利用を向上するために、複数のEPNアセンブリ・ファイルでOracle Event Processingオブジェクトを定義することを選択できます。

2. 追加EPNアセンブリ・ファイルを別の方法で作成するには:

1. 「ファイル」>「新規」>「その他」を選択します。
図5-6に表示されているように、「新規」ダイアログが表示されます。

図5-6 「新規」ダイアログ

「図5-6 「新規」ダイアログ」の説明

2. Oracle Event Processingを展開し、Oracle Event Processingアセンブリ・ファイルを選択します。

3. 「次へ」をクリックします。
図5-7に表示されているように、新規OEPアセンブリ・ファイルダイアログが表示されます。

図5-7 新規OEPアセンブリ・ファイルダイアログ

「図5-7 新規OEPアセンブリ・ファイルダイアログ」の説明

4. 表5-4に表示されているように、新規OEPアセンブリ・ファイルダイアログを構成します。

表5-4 新規OEPアセンブリ・ファイルダイアログ

属性

説明

親フォルダを入力または選択してください

Oracle Event Processing IDE for EclipseがEPNアセンブリ・ファイルを作成するフォルダへの完全修飾パスを入力するか、またはファイル・システム・ナビゲーション・コントロールを使用してフォルダを選択します。

ファイル名

新しいEPNアセンブリ・ファイルの名前を入力します。

5. 「終了」をクリックします。

3. EPNエディタを開きます。
7.1項「EPNエディタを開く」を参照してください。

4. 複数のEPNアセンブリ・ファイルを作成した場合、EPNエディタ「フィルタ」プルダウン・メニューで、使用するEPNアセンブリ・ファイルを選択できます。
これにより、選択したEPNアセンブリ・ファイルが示すEPNのサブセットのみに集中できます。

すべてのEPNアセンブリ・ファイルのすべてのコンポーネントの結合を表示するには、EPNエディタ「フィルタ」プルダウン・メニューから「EPN全体」を選択します。

詳細は、7.2.2項「フィルタ処理」を参照してください。

5. EPNにノードを作成し、接続します。
7.4項「EPNエディタの使用」を参照してください。

5.4 コンポーネント構成ファイルの作成

コンポーネント構成ファイルを使用して、Oracle Event Processingアプリケーションを作成するコンポーネントを構成します。

コンポーネント構成ファイルの例については、2.8項「外国為替取引(FX)サンプル」を参照してください。

5.4.1 Oracle Event Processing IDE for Eclipseを使用して新しいコンポーネント構成ファイルの作成方法

コンポーネント構成ファイルを作成および編集する、間違いが起こるのが少なく最も効率的な方法は、Oracle Event Processing IDE for Eclipseで新しいファイルのウィザードを使用することです。

詳細は、次を参照してください:

- 7.2項「EPNエディタの概要」

- 5.7項「Oracle Event Processingプロジェクトのライブラリおよび他の非クラス・ファイルの管理」

Oracle Event Processing IDE for Eclipseを使用して新しいコンポーネント構成ファイルを作成するには:

1. Oracle Event Processingプロジェクトを作成します。
5.2項「Oracle Event Processingプロジェクトの作成」を参照してください。

デフォルトでは、Oracle Event Processing IDE for Eclipseは、プロジェクトの1つのコンポーネント構成ファイルを作成します。オプションで、管理、同時開発、および再利用を向上するために、複数のコンポーネント構成ファイルでOracle Event Processingオブジェクトを構成することを選択できます。

2. コンポーネント構成ファイルを別の方法で作成するには:

- 「ファイル」>「新規」>「その他」を選択します。
図5-8に表示されているように、「新規」ダイアログが表示されます。

図5-8 「新規」ダイアログ

「図5-8 「新規」ダイアログ」の説明

- Oracle Event Processingを展開し、Oracle Event Processingアプリケーション構成ファイルを選択します。

- 「次へ」をクリックします。
図5-9に表示されているように、新規OEPアプリケーション構成ファイルダイアログが表示されます。

図5-9 新規OEPアプリケーション構成ファイルダイアログ

「図5-9 新規OEPアプリケーション構成ファイルダイアログ」の説明

- 表5-4に表示されているように、新規OEPアセンブリ・ファイルダイアログを構成します。

表5-5 新規OEP構成ファイルダイアログ

属性

説明

親フォルダを入力または選択してください

Oracle Event Processing IDE for Eclipseがコンポーネント構成ファイルを作成するフォルダへの完全修飾パスを入力するか、またはファイル・システム・ナビゲーション・コントロールを使用してフォルダを選択します。

ファイル名

新しいコンポーネント構成ファイルの名前を入力します。

- 「終了」をクリックします。

3. EPNエディタを開きます。
7.1項「EPNエディタを開く」を参照してください。

4. EPNにノードを作成し、接続します。
7.4項「EPNエディタの使用」を参照してください。

5.5 Oracle Event Processingプロジェクトのエクスポート

Oracle Event Processingプロジェクトのエクスポートは、プロジェクトを本番Oracle Event ProcessingサーバーにデプロイできるOSGiバンドルに組み込みます。

5.5.1 Oracle Event Processingプロジェクトのエクスポート方法

この項には、Oracle Event ProcessingプロジェクトをOSGiバンドルにエクスポートする方法が記載されています。

Oracle Event Processingプロジェクトをエクスポートするには:

1. Oracle Event Processing IDE for Eclipseを起動し、Oracle Event Processingプロジェクトを開きます。

2. Oracle Event Processing IDE for Eclipseにより、自動的にJavaリソースがコンパイルされ、エクスポートしたJARに追加されます。プロジェクトに他のリソース(マニフェスト・ファイルまたはイメージなど)がある場合、それらをエクスポートするようにプロジェクトを構成します。

1. 「プロジェクト・エクスプローラ」でbuild.propertiesファイルを検出し、そのファイルをダブルクリックして編集します。
図5-10に表示されているように、build.propertiesファイルが開きます。

図5-10 Oracle Event Processingプロジェクトbuild.propertiesファイル

「図5-10 Oracle Event Processingプロジェクトbuild.propertiesファイル」の説明

2. バイナリ・ビルド領域で、アプリケーションとともにエクスポートするリソースを確認します。

3. 「ファイル」>「エクスポート」を選択します。

「エクスポート」ダイアログが表示されます。

4. Oracle Event Processingオプションを展開し、Oracle Event Processingアプリケーションを選択します。

5. 「次へ」をクリックします。
図5-11に表示されているように、Oracle Event Processingアプリケーション・エクスポート: プロジェクトの選択ダイアログが表示されます。

図5-11 Oracle Event Processingアプリケーション・エクスポート: プロジェクトの選択ダイアログ

「図5-11 Oracle Event Processingアプリケーション・エクスポート: プロジェクトの選択ダイアログ」の説明

6. 表5-6に表示されているように、Oracle Event Processingアプリケーション・エクスポート: プロジェクトの選択ダイアログを構成します。

表5-6 Oracle Event Processingアプリケーションのコンテンツダイアログ

属性

説明

使用可能なプロジェクト

エクスポートに使用できるOracle Event Processingプロジェクトの一覧。

プロジェクトまたはエクスポートするプロジェクトを確認します。

「出力ファイル」列に指定した名前で各プロジェクトがJARファイルにエクスポートされます。エクスポートされるバンドルの名前は、OSGiバンドル・ネーミング・ルールに従って、JAR名のバンドルIDおよびバンドル・バージョンを使用します。

ディレクトリ

Oracle Event ProcessingプロジェクトJARファイルがエクスポートされるディレクトリ。

「参照」をクリックして、このディレクトリを選択します。

既存のファイルを警告なしで上書き

このオプションをチェックして、選択したディレクトリの名前と同じ名前の既存のJARファイルを上書きします。

7. 「終了」をクリックします。
作成したプロジェクト、そのJavaリソース、および選択したすべてのバイナリ・リソースは、プロジェクトJARファイルにエクスポートされます。

8. JARファイルをOracle Event Processingサーバーにデプロイします。

1. JARがアプリケーションの場合、6.3.6項「アプリケーションをOracle Event Processingサーバーにデプロイする方法」を参照してください。

2. JARがアプリケーション・ライブラリの場合、23.1.3項「アプリケーション・ライブラリ」を参照してください。

9. 他の従属リソースがある場合、それらをOracle Event Processingサーバーにデプロイします。
例:

- アプリケーションが依存している他のOSGiバンドル。
Oracle Event Processing Visualizerまたはコマンドラインのデプロイメント・ツールを使用して、Oracle Event Processingサーバーにこれらのバンドルをデプロイします。

- アプリケーション内から参照されるデータソースのconfig.xmlのエントリ。
これらのエントリをターゲット・サーバーのconfig.xmlファイルに追加します。

5.6 プロジェクトのアップグレード

あるバージョンから別のバージョンにOracle Event Processingをアップグレードする場合、既存のOracle Event Processingプロジェクトの変更が必要になることがあります。

この項では次について説明します:

- 5.6.1項「Oracle Event Processingのプロジェクトの2.1から10.3へのアップグレード方法」

- 5.6.2項「Oracle Event Processingのプロジェクトの10.3から11gリリース1 (11.1.1)へのアップグレード方法」

詳細は、次を参照してください:

- 4.4項「Eclipseの構成」

- 『Oracle Fusion Middleware Oracle Event Processingスタート・ガイド』

5.6.1 Oracle Event Processingのプロジェクトの2.1から10.3へのアップグレード方法

プロジェクト構造は2.1から変わりませんが、Oracle Event Processingプロジェクトに格納されるデータは大幅に変更されています。したがって、プロジェクトの開発を10.3で続行する前に、2.1プロジェクトを手動でアップグレードする必要があります。

プロジェクトの2.1から10.3へのアップグレードに必要なステップを、次に説明します。

Oracle Event Processing 2.1から10.3にプロジェクトをアップグレードするには:

1. Oracle Event Processing IDE for EclipseでOracle Event Processing 2.1プロジェクトを開きます。

2. 「ファイル」>ワークスペースの切替え>「その他」を選択します。
ワークスペース・ランチャダイアログが表示されます。

注意:

現行のワークスペースから設定をコピーしないでください。

3. 「参照」をクリックし、新しいワークスペース・ディレクトリを選択します。
Eclipseが終了し、新しいワークスペースで再起動されます。

4. 「ファイル」>「インポート」を選択します。
「インポート」ダイアログが表示されます。

5. 「全般」オプションを展開し、ワークスペースの既存のプロジェクトを選択します。

6. 「次へ」をクリックします。
「プロジェクトのインポート」ダイアログが表示されます。

7. プロジェクトのインポートダイアログを使用して、2.1のプロジェクトを新しいワークスペースにインポートします。オプションで、プロジェクト・ファイルを新しいワークスペースにコピーするように選択します。

8. 各オブジェクトに対して、プロジェクト・ファセット・バージョンを次のように変更します。

1. プロジェクトを右クリックし、「プロパティ」を選択します。
図5-12に表示されているように、プロジェクト・プロパティダイアログが表示されます。

図5-12 プロジェクトのプロパティダイアログ:プロジェクト・ファセット

「図5-12 「プロジェクト・プロパティ」ダイアログ:プロジェクト・ファセット」の説明

2. プロジェクト・ファセットオプションを選択します。
図5-12に表示されているように、プロジェクト・ファセット・プロパティが表示されます。

3. プロジェクトの変更をクリックします。
図5-13に表示されているように、ファセット・プロジェクトの変更ダイアログが表示されます。

図5-13 ファセット・プロジェクトの変更

「図5-13 ファセット・プロジェクトの変更ダイアログ」の説明

4. Oracle Event Processingファセットに対して、「バージョン」プルダウン・メニューから10.3を選択します。

5. 「終了」をクリックします。

6. 「OK」をクリックします。

7. 次のプロジェクトに対して手順を繰り返します。

9. 新しいOracle Event Processingサーバー・ランタイムを作成します。

1. 「ウィンドウ」>「プリファレンス」を選択します。
図5-14に表示されているように、「プリファレンス」ダイアログが表示されます。

図5-14 「プリファレンス」ダイアログ

「図5-14 「プリファレンス」ダイアログ」の説明

2. 「サーバー」オプションを展開し、インストール済ランタイムを選択します。

3. 6.2.3項「Oracle Event Processingサーバー・ランタイムの作成方法」に示すように、新しい10.3 Oracle Event Processingサーバー・ランタイムを追加します。

4. 「OK」をクリックします。

10. 各プロジェクトに対して、作成した新しい10.3 Oracle Event Processingサーバー・ランタイムを指定します。

1. プロジェクトを右クリックし、「プロパティ」を選択します。
図5-15に表示されているように、プロジェクト・プロパティダイアログが表示されます。

図5-15 プロジェクト・プロパティダイアログ:ターゲット・ランタイム

「図5-15 プロジェクト・プロパティダイアログ:ターゲット・ランタイム」の説明

2. ターゲット・ランタイムオプションを選択します。
図5-15に表示されているように、ターゲット・ランタイム・プロパティが表示されます。

3. 作成した新しいOracle Event Processing 10.3ターゲット・ランタイムを確認します。

4. 「OK」をクリックします。

5. 次のプロジェクトに対して手順を繰り返します。

11. 各プロジェクトのために、プロジェクト・ビルダーを更新します。

1. プロジェクトを右クリックし、「EPNエディタを開く」を選択します。

2. EPNダイアグラムがエラーなしに開く場合は、ステップ12に進みます。

3. 図5-16に示すエラーを表示するEPNダイアグラムが開かれた場合は、「ビルダーの構成」ボタンをクリックしてください。

図5-16 ビルダー・エラー

「図5-16 ビルダー・エラー」の説明

EPNダイアグラムが表示されます。

4. 次のプロジェクトに対して手順を繰り返します。

12. ビルド包含を検証します。

アプリケーション・バンドルがバンドル・ローカライゼーションを使用し、そのMANIFEST.MFファイルに次のような代替変数がある場合:

Bundle-Name: %project.name

プロジェクト・ルート・ディレクトリのbuild.propertiesファイル要素bin.includeには、次のようなbundle.propertiesファイルへの参照を含める必要があります。

bin.includes = META-INF/,\
bundle.properties,\
.

13. 必要に応じて、ソースの変更を行います。
詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processingスタート・ガイド』のOracle Event Processing 10.3で実行するためのWebLogic Event Server 2.0アプリケーションのアップグレードに関する項

- Oracle Event Processingリリース・ノート10.3用(http://download.oracle.com/docs/cd/E13157_01/wlevs/docs30/notes/notes.html)

これらの手順を実行した後、プロジェクトのクリーン・ビルドをする必要があります。

5.6.2 Oracle Event Processingのプロジェクトの10.3から11gリリース1 (11.1.1)へのアップグレード方法

プロジェクト構造は10.3から変わりませんが、Oracle Event Processingプロジェクトに格納されるデータは大幅に変更されています。したがって、プロジェクトの開発を11g リリース1 (11.1.1)で続行する前に、10.3プロジェクトを手動でアップグレードする必要があります。

プロジェクトの10.3から11g リリース1 (11.1.1)へのアップグレードに必要な手順を次に説明します。

Oracle Event Processing 10.3から11gリリース1 (11.1.1)にプロジェクトをアップグレードするには

1. Oracle Event Processing IDE for EclipseでOracle Event Processing 10.3プロジェクトを開きます。

2. 「ファイル」>ワークスペースの切替え>「その他」を選択します。
ワークスペース・ランチャダイアログが表示されます。

3. 「参照」をクリックし、新しいワークスペース・ディレクトリを選択します。

注意:

現行のワークスペースから設定をコピーしないでください。

Eclipseが終了し、新しいワークスペースで再起動されます。

4. 「ファイル」>「インポート」を選択します。
「インポート」ダイアログが表示されます。

5. 「全般」オプションを展開し、ワークスペースの既存のプロジェクトを選択します。

6. 「次へ」をクリックします。
図5-17に表示されているように、プロジェクトのインポートダイアログが表示されます。

図5-17 プロジェクトのインポートダイアログ

「図5-17 プロジェクトのインポートダイアログ」の説明

7. プロジェクトのインポートダイアログを使用して、10.3のプロジェクトを新しいワークスペースにインポートします。オプションで、プロジェクト・ファイルを新しいワークスペースにコピーするように選択します。

8. 各オブジェクトに対して、プロジェクト・ファセット・バージョンを次のように変更します。

1. プロジェクトを右クリックし、「プロパティ」を選択します。
図5-12に表示されているように、プロジェクト・プロパティダイアログが表示されます。

図5-18 プロジェクトのプロパティダイアログ:プロジェクト・ファセット

「図5-18 「プロジェクト・プロパティ」ダイアログ:プロジェクト・ファセット」の説明

2. プロジェクト・ファセットオプションを選択します。
図5-12に表示されているように、プロジェクト・ファセット・プロパティが表示されます。

3. プロジェクトの変更をクリックします。
図5-13に表示されているように、ファセット・プロジェクトの変更ダイアログが表示されます。

図5-19 ファセット・プロジェクトの変更

「図5-19 ファセット・プロジェクトの変更ダイアログ」の説明

4. Javaファセットに、「バージョン」プルダウン・メニューから6.0を選択します。

5. Oracle Event Processingファセットに対して、「バージョン」プルダウン・メニューから11.1を選択します。

6. 「終了」をクリックします。

7. 「OK」をクリックします。

8. 次のプロジェクトに対して手順を繰り返します。

9. 新しいOracle Event Processingサーバー・ランタイムを作成します。

1. 「ウィンドウ」>「プリファレンス」を選択します。
図5-14に表示されているように、「プリファレンス」ダイアログが表示されます。

図5-20 「プリファレンス」ダイアログ

「図5-20 「プリファレンス」ダイアログ」の説明

2. 「サーバー」オプションを展開し、インストール済ランタイムを選択します。

3. 6.2.3項「Oracle Event Processingサーバー・ランタイムの作成方法」に示すように、新しい11.0 Oracle Event Processingサーバー・ランタイムを追加します。

4. 「OK」をクリックします。

10. 各プロジェクトに対して、作成した新しい11.0 Oracle Event Processingサーバー・ランタイムを指定します。

1. プロジェクトを右クリックし、「プロパティ」を選択します。
図5-15に表示されているように、プロジェクト・プロパティダイアログが表示されます。

図5-21 プロジェクト・プロパティダイアログ:ターゲット・ランタイム

「図5-21 プロジェクト・プロパティダイアログ:ターゲット・ランタイム」の説明

2. ターゲット・ランタイムオプションを選択します。
図5-15に表示されているように、ターゲット・ランタイム・プロパティが表示されます。

3. 作成した新しいOracle Event Processing 11.0ターゲット・ランタイムを確認します。

4. 「OK」をクリックします。

5. 次のプロジェクトに対して手順を繰り返します。

11. 各プロジェクトのために、プロジェクト・ビルダーを更新します。

1. プロジェクトを右クリックし、「EPNエディタを開く」を選択します。

2. EPNダイアグラムがエラーなしに開く場合は、ステップ12に進みます。

3. 図5-16に示すエラーを表示するEPNダイアグラムが開かれた場合は、「ビルダーの構成」ボタンをクリックしてください。

図5-22 ビルダー・エラー

「図5-22 ビルダー・エラー」の説明

EPNダイアグラムが表示されます。

4. 次のプロジェクトに対して手順を繰り返します。

12. 「ウィンドウ」>「プリファレンス」を選択します。

図5-23に表示されているように、「プリファレンス」ダイアログが表示されます。

図5-23 「プリファレンス」ダイアログ

「図5-23 「プリファレンス」ダイアログ」の説明

13. 「検証」オプションを選択します。

14. 次の検証オプションを選択していることを確認します。

- CQLバリデータ

- EPNの検証機能

- XMLバリデータ

15. 他のすべてのオプションをクリアします。

16. 「OK」をクリックします。

17. ビルド包含を検証します。
アプリケーション・バンドルがバンドル・ローカライゼーションを使用し、そのMANIFEST.MFファイルに次のような代替変数がある場合:

Bundle-Name: %project.name

プロジェクト・ルート・ディレクトリのbuild.propertiesファイル要素bin.includeには、次のようなbundle.propertiesファイルへの参照を含める必要があります。

bin.includes = META-INF/,\
bundle.properties,\
.

18. 必要に応じて、ソースの変更を行います。
詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processingスタート・ガイド』のOracle Event Processingリリース11gR1 (11.1.1)で実行するためのOracle Event Processing 10.3アプリケーションのアップグレードに関する項

5.7 Oracle Event Processingプロジェクトのライブラリおよび他の非クラス・ファイルの管理

多くのプロジェクトでは、サード・パーティ・ライブラリ、他のプロジェクトで作成した内部ライブラリ、その他のライブラリにかかわらず、プロジェクト自体以外のソースから取得したライブラリまたはプロパティ・ファイルなどの非クラス・ファイルを使用する必要があります。

次の非クラス・ファイルをOracle Event Processingプロジェクトに追加できます。各ファイルに独自のパッケージ化およびデプロイメント特性があります。

- 標準のJARファイル: プロジェクトに標準のJARファイルを追加すると、ライブラリを最も簡単に管理できます。ライブラリはOracle Event Processing IDE for Eclipseによってプロジェクトに直接パッケージ化され、そのライブラリをプロジェクトの一部としてソース・コード・コントロール・システムで確認できます。
詳細は、次を参照してください:

- 5.7.1項「Oracle Event Processingプロジェクトへの標準JARファイルの追加方法」

- 5.7.2項「Oracle Event ProcessingプロジェクトへのOSGiバンドルの追加方法」

- 5.7.3項「Oracle Event Processingプロジェクトへのプロパティ・ファイルの追加方法」

- 5.7.4項「パッケージのエクスポート方法」

- 5.7.5項「パッケージのインポート方法」

- 23.2.2.2.2項「-Xbootclasspathを使用したサードパーティJARファイルへのアクセス」

- OSGiバンドル: ライブラリがOSGiバンドルとしてすでにパッケージされていて、それをサーバーに一度デプロイする場合(複数のアプリケーションがそれを参照できるようになります)、OSGiバンドル・ライブラリ・オプションを使用できます。OSGiバンドルは自動的にアプリケーションにパッケージ化されないため、ユーザーがデプロイメントの一部を行う必要があることに注意してください。チーム環境での作業の場合、残りのプロジェクトでバンドルがソース管理されず、各開発者のマシン上のDOMAIN_DIR/servername/modulesディレクトリにバンドルがある必要があるので、作業が少し難しくなります。
OSGiバンドル・ライブラリ・オプションの主な利点は、Oracle Event Processingサーバー・アプリケーション・ライブラリを使用してOSGiバンドル・ライブラリを管理し、アプリケーションがライブラリに依存する前にライブラリが確実にデプロイされることです。

詳細は、次を参照してください:

- 5.7.2項「Oracle Event ProcessingプロジェクトへのOSGiバンドルの追加方法」

- 23.1.3項「アプリケーション・ライブラリ」

- プロパティ・ファイル: プロジェクトにJavaプロパティ・ファイルを追加すると、プロパティを効率的に管理できます。Javaプロパティ・ファイルをOracle Event Processingプロジェクトに追加すると、プロパティ・ファイルがアプリケーションでデプロイされ、実行時に使用できます。
詳細は、次を参照してください:

- 5.7.3項「Oracle Event Processingプロジェクトへのプロパティ・ファイルの追加方法」

- 1.4.2.1項「ConfigurationPropertyPlaceholderConfigurerクラスを使用したコンポーネントおよびサーバーの構成へのアクセス」

5.7.1 Oracle Event Processingプロジェクトへの標準JARファイルの追加方法

使用するライブラリが標準のJARファイルである場合、それをOracle Event Processingプロジェクトに追加できます。または、ライブラリをOSGiバンドルとして追加できます(5.7.2項「Oracle Event ProcessingプロジェクトへのOSGiバンドルの追加方法」を参照してください)。

標準のJARファイルをOracle Event Processingプロジェクトに追加すると、このバンドルに依存する他のバンドルにプロジェクトの一部またはすべてのパッケージを公開することもできます。

標準のJARファイルをOracle Event Processingプロジェクトに追加するには:

1. Oracle Event Processing IDE for EclipseプロジェクトにJARファイルを保存するためのフォルダを作成します。
Oracleでは、それらを置くためにlibのようなフォルダを作成することをお薦めします。

新しいフォルダを作成するには、プロジェクト・フォルダを右クリックし、「新規」>「フォルダ」を選択します。

2. Oracle Event Processing IDE for Eclipse以外では、JARファイルをlibフォルダにコピーします。

3. Oracle Event Processing IDE for Eclipse内で、libフォルダを右クリックして、「リフレッシュ」を選択します。
図5-24に表示されているように、JARファイルがlibフォルダに表示されます。

図5-24 Oracle Event Processing IDE for Eclipseのlibディレクトリ

「図5-24 Oracle Event Processing IDE for Eclipseのlibディレクトリ」の説明

4. META-INFディレクトリを展開し、MANIFEST.MFファイルを右クリックして、次で開く>プラグイン・マニフェストエディタを選択します。
図5-25に表示されているように、マニフェスト・エディタが開きます。

図5-25 マニフェスト・エディタの「ビルド」タブ

「図5-25 マニフェスト・エディタの「ビルド」タブ」の説明

5. ビルドタブをクリックします。

6. 次のように、JARファイルをプロジェクト・ルートの下にあるバイナリ・ビルドに追加します。

- バイナリ・ビルド領域で、libディレクトリを展開します。

- 図5-25に表示されているように、ライブラリの横にあるボックスを選択します。

- すべてのファイルを保存するには、[CTRL]-[SHIFT]-[S]キーを押します。
これにより、プロジェクトのbuild.propertiesファイルが編集され、バンドルJARをビルドするときに、Oracle Event Processing IDE for EclipseにJARファイルをバンドルに追加することが指示されます。

7. マニフェスト・エディタで、「ランタイム」タブをクリックします。
図5-26に表示されているように、 「ランタイム」タブが表示されます。

図5-26 マニフェスト・エディタの 「ランタイム」タブ

「図5-26 マニフェスト・エディタの 「ランタイム」タブ」の説明

8. 次のように、JARファイルをプロジェクトのクラスパスに追加します。

- マニフェスト・エディタで、「追加」ボタンをクリックします。
図5-27に表示されているように、JARの選択ダイアログが表示されます。

図5-27 JARの選択ダイアログ

「図5-27 JAR選択ダイアログ」の説明

- バンドルに追加するJARファイルを選択します。
この例では、libディレクトリを展開し、javax.jws_2.0.jarファイルを選択します。

- 「OK」をクリックします。
これにより、図5-28に表示されているように、選択したJARがクラスパス・リストに追加されます。

図5-28 JARをクラスパスに追加した後のマニフェスト・エディタの「ランタイム」タブ

「図5-28 JARをクラスパスに追加した後のマニフェスト・エディタの 「ランタイム」タブ」の説明

- すべてのファイルを保存するには、[CTRL]-[SHIFT]-[S]キーを押します。
これにより、プロジェクトのクラスパスにJARが配置され、MANIFEST.MFファイルが編集されます。

これを確認するには、マニフェスト・エディタで、「MANIFEST.MF」タブをクリックし、図5-29に表示されているように、JARがBundle-Classpathプロパティの下にリストされていることを確認します。

図5-29 マニフェスト・エディタの「MANIFEST.MF」タブ

「図5-29 マニフェスト・エディタの「MANIFEST.MF」タブ」の説明

図5-30に表示されているように、JARがプロジェクトのルートにライブラリとして表示されることにも注意してください。

図5-30 パッケージ・エクスプローラ

「図5-30 パッケージ・エクスプローラ」の説明

9. オプションで、バンドルがこのJARからこのバンドルに依存する他のバンドルにパッケージをエクスポートする必要がある場合、5.7.4項「パッケージのエクスポート方法」の説明に従って、これらのパッケージをエクスポートできます。

5.7.2 Oracle Event ProcessingプロジェクトへのOSGiバンドルの追加方法

使用するライブラリがOSGiバンドルである場合、それをOracle Event Processingプロジェクトに追加できます。または、ライブラリを標準のJARファイルとして追加できます(5.7.1項「Oracle Event Processingプロジェクトへの標準JARファイルの追加方法」を参照してください)。

OSGiバンドルをOracle Event Processingプロジェクトに追加するには、バンドルをそのバンドルの依存性の定義に追加します。

注意:

この処理では、ビルド時にプロジェクトで参照バンドルを使用できるようになるのみです。デプロイまたはエクスポートした場合、バンドルはアプリケーションに直接パッケージ化されません。かわりに、このバンドルを手動でOracle Event Processingサーバーにデプロイする必要があります。詳細は、23.1.3項「アプリケーション・ライブラリ」を参照してください。

OSGiバンドルをOracle Event Processingプロジェクトに追加するには:

1. OSGiバンドルをDOMAIN_DIR/servername/modulesディレクトリに配置します。ここで、DOMAIN_DIRは、/oracle_cep/user_projects/domains/mydomainのようにドメイン・ディレクトリを示し、servernameは、myserverのようにサーバー・インスタンスを示します。例:

c:\oracle_cep\user_projects\domains\mydomain\myserver\modules

2. Oracle Event Processing IDE for Eclipseを起動します。

3. 「プロジェクト」を右クリックし、「ターゲットのランタイムをリフレッシュ」を選択します。

4. META-INF/MANIFEST.MFファイルを右クリックし、次で開く>プラグイン・マニフェストエディタを選択します。
図5-31に表示されているように、マニフェスト・エディタが開きます。

図5-31 マニフェスト・エディタの「依存関係」タブ

「図5-31 マニフェスト・エディタ:「依存関係」タブ」の説明

5. 「依存関係」タブをクリックします。

6. 必須プラグイン領域で、「追加」をクリックします。
図5-32に表示されているように、プラグインの選択ダイアログが表示されます。

図5-32 プラグインの選択ダイアログ

「図5-32 プラグインの選択ダイアログ」の説明

7. ステップ1でOracle Event Processingサーバー・インストール・ディレクトリのDOMAIN_DIR/servername/modulesディレクトリに追加したバンドルを選択し、「OK」をクリックします。
選択したバンドルがMANIFEST.MFファイルの必須バンドル項に表示されます。

5.7.3 Oracle Event Processingプロジェクトへのプロパティ・ファイルの追加方法

Javaプロパティ・ファイルをOracle Event Processingプロジェクトに追加すると、プロパティ・ファイルがアプリケーションでデプロイされ、実行時に使用できます。

プロパティ・ファイルをOracle Event Processingプロジェクトに追加するには:

1. Oracle Event Processing IDE for Eclipseプロジェクトにプロパティ・ファイルを保存するためのフォルダを作成します。
Oracleでは、プロパティ・ファイルの保存のためにプロパティのようなフォルダを作成することをお薦めします。

新しいフォルダを作成するには、プロジェクト・フォルダを右クリックし、「新規」>「フォルダ」を選択します。

2. Oracle Event Processing IDE以外では、プロパティ・ファイルを「プロパティ」フォルダにコピーします。

3. Oracle Event Processing IDE for Eclipseでは、「プロパティ」フォルダを右クリックし、「リフレッシュ」を選択します。
プロパティ・ファイルがpropertiesフォルダに表示されます。

4. META-INFディレクトリを展開し、MANIFEST.MFファイルを右クリックして、次で開く>プラグイン・マニフェストエディタを選択します。
図5-33に表示されているように、マニフェスト・エディタが開きます。

図5-33 マニフェスト・エディタの「ビルド」タブ

「図5-33 マニフェスト・エディタの「ビルド」タブ」の説明

5. ビルドタブをクリックします。

6. 次のように、「プロパティ」ファイルをプロジェクト・ルートの下にあるバイナリ・ビルドに追加します。

- バイナリ・ビルド領域で、「プロパティ」ディレクトリを展開します。

- 図5-33に表示されているように、「プロパティ」ファイルの横にあるボックスを選択します。

- すべてのファイルを保存するには、[CTRL]-[SHIFT]-[S]キーを押します。
これにより、プロジェクトのbuild.propertiesファイルが編集され、バンドルJARをビルドするときに、Oracle Event Processing IDE for Eclipseにプロパティ・ファイルをバンドルに追加することが指示されます。

7. 例5-1に表示されているように、プロパティ・ファイルをJavaコードでアクセスできます。

例5-1 プロパティ・ファイルのアクセス

public void onInsertEvent(Object event) {
if (event instanceof HelloWorldEvent) {
HelloWorldEvent helloWorldEvent = (HelloWorldEvent) event;
InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream(
"properties/test.properties"
);
Properties props = new Properties();
try {
props.load(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Message: " + props.get("test-key"));
// Throw com.bea.wlevs.ede.api.EventRejectedException to have exceptions propagated
// up to senders. Other errors will be logged and dropped.
}

}

5.7.4パッケージのエクスポート方法

オプションで、バンドルがこのJARからこのバンドルに依存する他のバンドルにパッケージをエクスポートする必要がある場合、このパッケージをエクスポートできます。そうすると、パッケージのOSGiエクスポータを作成するためのPackage-Export MANIFESTエントリが更新されます。

パッケージをエクスポートするには:

1. Oracle Event Processing IDE for Eclipse内で、図5-34に表示されているように、META-INFディレクトリを展開します。

図5-34 Oracle Event Processing IDE for Eclipseのlibディレクトリ

「図5-34 Oracle Event Processing IDE for Eclipseのlibディレクトリ」の説明

2. MANIFEST.MFファイルを右クリックし、次で開く>プラグイン・マニフェストエディタを選択します。
図5-35に表示されているように、マニフェスト・エディタが開きます。

図5-35 マニフェスト・エディタの 「ランタイム」タブ

「図5-35 マニフェスト・エディタの「ランタイム」タブ」の説明

3. 「ランタイム」タブをクリックします。
図5-35に表示されているように、 「ランタイム」タブが表示されます。

4. エクスポート・パッケージ領域で、「追加」ボタンをクリックします。
図5-36に表示されているように、パッケージの選択ダイアログが表示されます。

図5-36 パッケージの選択ダイアログ

「図5-36 パッケージ選択ダイアログ」の説明

5. エクスポートするパッケージを選択します。
名前でリスト内のパッケージを検索するには、テキスト・フィールドに名前を入力します。

この例では、javax.jws.soapパッケージを選択します。

6. 「OK」をクリックします。
図5-37に表示されているように、選択したパッケージがエクスポート・パッケージ領域に追加されます。

図5-37 パッケージをエクスポートした後のマニフェスト・エディタの 「ランタイム」タブ

「図5-37 パッケージをエクスポートした後のマニフェスト・エディタの 「ランタイム」タブ」の説明

7. すべてのファイルを保存するには、[CTRL]-[SHIFT]-[S]キーを押します。

5.7.5 パッケージのインポート方法

オプションで、バンドルでJARからパッケージをインポートする必要がある場合、このパッケージをインポートできます。そうすると、パッケージのOSGiインポータを作成するためのPackage-Import MANIFESTエントリが更新されます。

パッケージをインポートするには、次の手順を実行します。

1. Oracle Event Processing IDE for Eclipse内で、図5-38に表示されているように、META-INFディレクトリを展開します。

図5-38 Oracle Event Processing IDE for Eclipseのlibディレクトリ

「図5-38 Oracle Event Processing IDE for Eclipseのlibディレクトリ」の説明

2. MANIFEST.MFファイルを右クリックし、次で開く>プラグイン・マニフェストエディタを選択します。
図5-39に表示されているように、マニフェスト・エディタが開きます。

図5-39 マニフェスト・エディタ:「依存関係」タブ

「図5-39 マニフェスト・エディタ:「依存関係」タブ」の説明

3. 「依存関係」タブをクリックします。
図5-39に示すように、「依存関係」タブが表示されます。

4. インポート・パッケージ領域で、「追加」ボタンをクリックします。
図5-40に表示されているように、パッケージの選択ダイアログが表示されます。

図5-40 パッケージの選択ダイアログ

「図5-40 パッケージ選択ダイアログ」の説明

5. インポートするパッケージを選択します。
名前でリスト内のパッケージを検索するには、テキスト・フィールドに名前を入力します。

この例では、javax.jws.soapパッケージを選択します。

6. 「OK」をクリックします。
図5-41に表示されているように、選択したパッケージがインポート・パッケージ領域に追加されます。

図5-41 パッケージをインポートした後のマニフェスト・エディタの 「依存関係」タブ

「図5-41 パッケージをインポートした後のマニフェスト・エディタの 「依存関係」タブ」の説明

7. すべてのファイルを保存するには、[CTRL]-[SHIFT]-[S]キーを押します。

5.8 Oracle Event Processing IDE for Eclipseプリファレンスの構成

ニーズにあわせてOracle Event Processing IDE for Eclipseをカスタマイズするように、様々なプリファレンスを構成できます。それには、次のような構成が含まれます。

- 5.8.1項「アプリケーション・ライブラリ・パス・プリファレンスの構成方法」

- 5.8.2項「問題の重大度プリファレンスの構成方法」

5.8.1 アプリケーション・ライブラリ・パス・プリファレンスの構成方法

Oracle Event Processingランタイムを拡張するアプリケーション・ライブラリを含むOracle Event Processingサーバー・ドメイン・ディレクトリへのパスを定義できます。

詳細は、23.3.1項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリ・ディレクトリの定義方法」を参照してください。

5.8.2 問題の重大度プリファレンスの構成方法

Oracle Event Processing IDE for EclipseによってOracle Event Processingプロジェクトおよびアプリケーションで検出できる様々な問題に重大度を割り当てることができます。

個別のプロジェクトごとにこれらのプリファレンスを構成するか、または特定ワークスペースのすべてのプロジェクトに対して同じプリファレンスを構成できます。

問題の重大度プリファレンスを構成するには:

1. EPNエディタを開きます(7.1項「EPNエディタを開く」を参照)

2. 「ウィンドウ」>「プリファレンス」を選択します。
「プリファレンス」ダイアログが表示されます。

3. Oracle Event Processingの問題の重大度を選択します。
図5-42に表示されているように、Oracle Event Processingの問題の重大度ダイアログが表示されます。

図5-42 Oracle Event Processingの問題の重大度ダイアログ: ワークスペース

「図5-42 Oracle Event Processingの問題の重大度ダイアログ: ワークスペース」の説明

4. 各タイプの問題の重大度を選択します。次のいずれかを選択できます。

- Error: 問題をエラーとして処理します。

- Warning: 問題を警告として処理します。

- Ignore: 問題を無視します。

表5-7は、構成できる各問題領域を説明しています。

表5-7 Oracle Event Processingの問題の重大度

カテゴリ

問題

説明

キャッシュ構成

未解決のキャッシュ・ローダーまたはインタフェース宣言が正しくない解決済のローダー

アセンブリ・ファイルには、各wlevs:cache-loader要素のキャッシュ・ローダー・クラスを識別するbean要素があることを確認し、キャッシュ・ローダー・クラスが適切なインタフェースを実装することを確認します。

詳細は、次を参照してください:

- 13.5.5.1項「読取り専用データ・ソースからのキャッシュ・データのロード」

未解決のキャッシュ・ストアまたはインタフェース宣言が正しくない解決済のストア

アセンブリ・ファイルには、各wlevs:cache-store要素のキャッシュ・ストア・クラスを識別するbean要素があることを確認し、キャッシュ・ストア・クラスが適切なインタフェースを実装することを確認します。

詳細は、次を参照してください:

- 13.5.5.2項「読取り/書込みデータ・ソースでのデータの交換」

イベント処理ネットワーク

一致するアセンブリ定義がない構成オブジェクト

EPN構成要素は、名前およびIDそれぞれでアセンブリ定義にリンクされています。構成要素の名前が、同じアプリケーション内のアセンブリ要素とIDが完全に一致していることを確認します。

重複した名前の宣言を持つ構成オブジェクト

Oracle Event Processing構成ファイルの構成要素は名前で識別されます。アプリケーションで名前が重複する構成要素がないことを確認します。

未解決のイベント・リスナーまたはインタフェース宣言が正しくない解決済のリスナー

イベント処理ネットワークは、ネットワークの要素がアプリケーションの他の要素にイベントをプルまたは送信する方法を定義することによってビルドされます。イベント送信のターゲット、EPNアセンブリ要素でのリスナーの宣言が、送信したイベントの受信に必要なインタフェースを実装します。

未解決のイベント・ソースまたはインタフェース宣言が正しくない解決済のソース

イベント処理ネットワークは、ネットワークの要素がアプリケーションの他の要素にイベントをプルまたは送信する方法を定義することによってビルドされます。イベント・プルのソース、EPNアセンブリ要素でのソースの宣言が、プル・イベントの指定に必要なインタフェースを実装します。

チャネルに構成されている未解決の問合せセレクタ

1つ以上のルールを定義するアップストリームOracle CQLプロセッサのあるチャネルを指定している場合、チャネル・コンポーネント構成ファイルselector要素には、アップストリームOracle CQLプロセッサで定義しているルールの名前のみが含まれることを確認します。

詳細は、D.87項「セレクタ」を参照してください。

外部ステージ(外部アプリケーションで定義されたステージ)への参照

外部ステージへの参照が解決できることを確認します。

詳細は、1.4.1.2項「EPNアセンブリ・ファイルの外部ステージの参照」を参照してください。

Oracle CQLプロセッサに関連付けられていないチャネルの''event-type''宣言なし

アップストリームOracle CQLプロセッサのないチャネルを指定している場合、アセンブリ・ファイルwlevs:channel要素がevent-type属性で構成されていることを確認します。

詳細は、第10章「チャネルを使用したEPNステージの接続」を参照してください。

非推奨のEPN要素

Oracle Event Processingでは、旧バージョン向けに構築されたアプリケーションとの下位互換性を供給します。アプリケーションの非推奨のXML要素の使用を確認します。

イベント・タイプ・リポジトリ

事前定義済の型でない、または既知のクラスで解決できないイベント・プロパティ・タイプの値

イベント・タイプは、properties要素でダイナミックSpring Beanを使用して定義できます。property値は、サポートされているタイプの固定のセットに制限されます。propertyタイプが許可されたいずれかのタイプであることを確認します。

詳細は、第9章「イベント・タイプの定義および使用」を参照してください。

問合せの検証

CQL文の検証で検出した問題

プロセッサ構成のOracle CQL文が現行のアプリケーションで指定しているように正しいことを確認します。プロパティ名、イベント・タイプ、構文、およびOracle CQL参照の他のアセンブリを検証します。

CQL文の検証を阻止する問題

一部の基本的なアプリケーション・エラーでは、Oracle CQL文が検証されません。たとえば、Oracle CQL要件を満たす前に、プロセッサ構成には一致するプロセッサ・アセンブリ定義がある必要があります。プロセッサのOracle CQL文を検証するための最低要件を満たしていることを確認します。

欠落したバインド・パラメータによって直接または間接的に影響を受けるCQL文。

パラメータ化された問合せ。

切断されたプロセッサのCQL文(EPNにアップストリーム・チャネルなし)

すべてのOracle CQLプロセッサがEPNのアップストリーム・ステージに接続していることを確認します。アップストリーム・ステージがない場合、Oracle CQLプロセッサのルールには操作するイベント・ストリームがありません。

5. 「適用」をクリックします。

6. 「OK」をクリックします。

6 Oracle Event Processing IDE for EclipseおよびOracle Event Processingサーバー

この章では、イベント駆動型アプリケーションを開発およびデバッグするOracle Event Processingサーバーを作成および管理するためにOracle Event Processing IDE for Eclipseを使用する方法について説明します。

この章の内容は次のとおりです。

- 6.1項「Oracle Event Processingサーバーの概要」

- 6.2項「Oracle Event Processingサーバーの作成」

- 6.3項「Oracle Event Processingサーバーの管理」

- 6.4項「Oracle Event Processingサーバーで実行されるOracle Event Processingアプリケーションのデバッグ」

6.1 Oracle Event Processingサーバーの概要

Oracle Event Processing IDE for Eclipseは、開発中に使用されるOracle Event Processingサーバーを設定および管理できる機能を提供します。このツールによって次のことが可能です。

- Oracle Event Processingサーバーのインスタンスの構成

- 外部Oracle Event Processingサーバー・インスタンスへのアタッチ

- 開始コマンド、停止コマンドおよびデバッグ・コマンドによるOracle Event Processingサーバー・ライフサイクルの管理

- 開発中におけるアプリケーションのOracle Event Processingサーバーへの関連付けおよびデプロイ

表6-1では、Oracle Event Processing IDE for Eclipseに使用されるEclipse用語がOracle Event Processingサーバー用語にマップされます。

表6-1 EclipseおよびOracle Event Processingサーバーの概念

Eclipse IDEの概念

Oracle Event Processingサーバーの概要

説明

ランタイム

Oracle Event Processingサーバーのインストール

Oracle Event Processing IDE for Eclipseにはランタイムの概念があります。ランタイムは、Oracle Event Processing IDE for Eclipseで特定のOracle Event Processingサーバーのインストールを確認できる場所を定義します。この情報は、プロジェクトのクラスパスに追加するJARファイルおよびOSGiバンドルを見つけて、サーバーおよびサーバー・インスタンスを定義するために使用されます。

ランタイムは、それ自体は実行可能アーティファクトではないことに注意してください。

サーバーおよびサーバー・インスタンス

ドメイン

Oracle Event Processing IDE for Eclipseでは、実際に実行可能なOracle Event Processingサーバー・インスタンスを表すために、サーバーという用語を使用します。これに、起動スクリプトを持つものだと考えることができます。たとえば、Oracle Event Processingサーバーの用語では、これはドメインと同じです。サーバーを設定する場合、このインスタンスを実行するドメインを指定します。

ドメインの詳細は、次を参照してください。

- 詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingスタンドアロン・サーバー・ドメインの管理に関する項を参照してください。

- 詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingスタンドアロン・サーバー・ドメインの管理に関する項を参照してください。

パブリッシュ

デプロイ

通常、Oracle Event Processing IDE for Eclipseでは、サーバーにアプリケーションを物理的にデプロイする方法を表すために、パブリッシュという用語を使用します。

プロジェクト

アプリケーションまたはデプロイメント

Oracle Event Processing IDE for Eclipseのプロジェクトは、OSGiバンドルとしてパッケージされている1つのOracle Event Processingアプリケーションになります。サーバーにデプロイされ、Oracle Event Processingサーバーのdeployments.xmlファイルで示されます。

サーバー定義は、Oracle Event Processing IDE for EclipseからOracle Event Processingサーバーを制御する主要な概念です。サーバー定義からサーバーを起動または停止できます。プロジェクトをサーバーと関連付けた後、Oracle Event Processing IDE for Eclipseを使用したまま、サーバーにアプリケーションをパブリッシュ(デプロイ)したり、サーバーからアプリケーションをアンパブリッシュ(アンデプロイ)したりすることができます。詳細は、6.2項「Oracle Event Processingサーバーの作成」を参照してください。

次の方法で、Oracle Event Processing IDE for Eclipseを使用して、実行しているOracle Event Processingサーバーと通信できます。

- Oracle Event Processing IDE for Eclipse内からサーバーを起動します。
この場合、Oracle Event Processingサーバー・コンソールは、Oracle Event Processing IDE for Eclipseのコンソール・ビューに直接送信されます。すべてのOracle Event Processingサーバー機能(Oracle Event Processing Visualizerの開始、停止、パブリッシュ、アンパブリッシュ、デバッグ、起動など)を使用できます。Oracle Event Processingサーバー・プロセス自体は、Oracle Event Processing IDE for Eclipse内から管理されます。つまり、Oracle Event Processing IDE for EclipseからOracle Event Processingサーバーを停止すると、実際のOracle Event Processingサーバー・プロセスが終了します。Oracle Event Processingサーバーからのコンソール・メッセージは、Oracle Event Processing IDE for Eclipseの「コンソール」ビューに送信されます。

詳細は、次を参照してください:

- 6.3.1項「ローカルOracle Event Processingサーバーの起動方法」

- 6.3.2項「ローカルOracle Event Processingサーバーの停止方法」

- 実行中のOracle Event Processingサーバーにアタッチします。
この場合、ユーザーはコマンドラインからOracle Event Processingサーバーを起動し、Oracle Event Processing IDE for Eclipseのそのサーバーの「開始」ボタンをクリックします。アタッチするかどうかを尋ねるダイアログが表示されます。ユーザーが「はい」をクリックすると、Oracle Event Processing IDE for Eclipseがアタッチ・モードに入ります。Oracle Event Processingサーバーのデバック以外のすべての機能を使用できます。ただし、Oracle Event Processingサーバー・プロセスは、Oracle Event Processing IDE for Eclipseで管理されません。「停止」ボタンをクリックすると、アタッチされているOracle Event Processingサーバーから切断され、実際のOracle Event Processingサーバー・プロセスは終了しません。Oracle Event Processingサーバーからのコンソール・メッセージは、Oracle Event Processingサーバー・コンソール(実行中のターミナル・ウィンドウの標準出力)に送信されます。Oracle Event Processing IDE for Eclipseは、コンソール・ビューに制限されたOracle Event Processing IDE for Eclipse操作メッセージのみ表示します。

詳細は、次を参照してください:

- 6.3.3項「既存のローカルOracle Event Processingサーバー・インスタンスにアタッチする方法」

- 6.3.5項「既存のOracle Event Processingサーバー・インスタンスからデタッチする方法」

6.2 Oracle Event Processingサーバーの作成

サーバーを作成すると、Oracle Event Processing IDE for Eclipse内からサーバー・インスタンスを起動および停止できます。また、サーバーにアプリケーションを自動的にデプロイできます。

ローカルまたはリモートのOracle Event Processingサーバーを作成できます。

- ローカル・サーバー: ローカルOracle Event Processingサーバーでは、サーバーおよびサーバー・ランタイムの両方が同じホスト上にあります。

- リモート・サーバー: リモートOracle Event Processingサーバーでは、サーバーおよびサーバー・ランタイムが別々のホスト上にあります。サーバーはリモート・ホスト上にあり、サーバー・ランタイムはローカル・ホスト(Oracle Event Processing IDE for Eclipseを実行するホスト)にあります。

この項では次について説明します:

- 6.2.1項 「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

- 6.2.2項 「リモートOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

- 6.2.3項 「Oracle Event Processingサーバー・ランタイムの作成方法」

6.2.1 ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法

この項では、ローカル・サーバーおよびサーバー・ランタイムの両方を作成する方法について説明しています。初期サーバーおよびサーバー・ランタイムを作成した後、追加のサーバー・ランタイムを作成できます。

ローカルOracle Event Processingサーバーでは、サーバーおよびサーバー・ランタイムの両方が同じホスト上にあります。または、リモート・サーバーおよびサーバー・ランタイムを作成できます。

注意:

Eclipseで作成しているサーバーが構成ウィザードを使用したドメインから作成したものである場合、Eclipseプロジェクトにサーバーを追加する前に、必ずコマンドラインからサーバーを実行してください。そうすることにより、すべてのサーバー・アーティファクトが作成されたことが保証されます。また、Eclipseの新規サーバー・ウィザードでドメイン構成情報を指定する際に、必ず「詳細」タブをクリックして、ドメインの作成時に使用するユーザー名およびパスワードを指定してください。

コマンドラインからサーバーを実行する場合の詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のスタンドアロン・サーバー・ドメインでのOracle Event Processingサーバーの起動および停止に関する項を参照してください。

詳細は、次を参照してください:

- 6.2.3項 「Oracle Event Processingサーバー・ランタイムの作成方法」

- 6.2.2項 「リモートOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

ローカルOracle Event Processingサーバーおよびサーバー・ランタイムを作成するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図6-1に示すように、「サーバー」ビューが表示されます。

図6-1 Oracle Event Processing IDE for Eclipseのサーバー・ビュー

「図6-1 Oracle Event Processing IDE for Eclipseのサーバー・ビュー」の説明

2. 「サーバー」ビュー・ペインで右クリックして、「新規」>「サーバー」を選択します。

3. サーバー・ランタイムが作成されているかどうかを検討してください。

1. Oracle Event Processingサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。ステップ4に進みます。

2. Oracle Event Processingサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。ステップ5に進みます。

4. Oracle Event Processingサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。

この場合、図6-2に示すように、新しいサーバー: 新しいサーバーの定義ダイアログが表示されます。

図6-2 新しいサーバー: 新しいサーバーの定義ダイアログ(インストールされたランタイムなし)

「図6-2 新しいサーバー: 新しいサーバーの定義ダイアログ(インストールされたランタイムなし)」の説明

次の手順に従い、新しいサーバーを構成します。

1. 表6-2に示すように、ダイアログを構成します。

表6-2 新しいサーバー: 新しいサーバーの定義ダイアログ(インストールされたランタイムなし)属性

属性

説明

サーバーのホスト名

Oracle Event Processingサーバーをインストールしたコンピュータのホスト名。

開発の場合、通常、localhostとなります。

サーバー型の選択

Oracle Event Processingサーバーのタイプ。

この例では、Oracle Event Processing v11を選択します。

サーバー名

Oracle Event Processingサーバーの名前。

デフォルト: HOSTNAMEのOracle Event Processing v11.1

ここでは、HOSTNAMEは、サーバーのホスト名フィールドに入力された値です。

2. 「次へ」をクリックします。
図6-3に示すように、新しいサーバー:新しいOracle Event Processing v11ランタイムダイアログが表示されます。

図6-3 新しいサーバー:新しいOracle Event Processing v11.1ランタイムダイアログ

「図6-3 新しいサーバー:新しいOracle Event Processing v11.1ランタイムダイアログ」の説明

3. 表6-3に示すように、ダイアログを構成します。

表6-3 新しいサーバー:新しいOracle Event Processing v11ランタイムダイアログの属性

属性

説明

Oracleミドルウェア・ホーム・ディレクトリ

Oracle Event Processingサーバー・インストール・ディレクトリへの完全修飾パス。これは、サーバーをインストールするとき選択した「ミドルウェア・ホーム」と同じです。

このディレクトリを選択する場合、Oracle Event Processingディレクトリ自体ではなくOracle Event Processingインストールを含むディレクトリを選択します。たとえば、次を選択します:

C:\OracleCEP

しかし、次は選択しません:

C:\OracleCEP\ocep_11.1

ランタイム・ウィザードでは、適切なOracle Event Processingインストール・ディレクトリを検索するために、インストールが使用されます。

詳細は、『Oracle Fusion Middleware Oracle Event Processingスタート・ガイド』のOracle Fusion Middlewareのディレクトリ構造および概念に関する項を参照してください。

JRE

使用するJRE型。

プルダウン・メニューから使用するJREのタイプを選択するか、またはインストールされたJREのプリファレンスリンクをクリックして、新しいJREを作成します。

必ず、Java 6 JREを選択します。

注意: Oracle Event ProcessingサーバーJREは、サーバー・ドメイン・ディレクトリ内のsetDomainEnv.cmdまたはsetDomainEnv.shスクリプトのJAVA_HOME設定で設定されます。

4. ステップ6に進みます。

5. Oracle Event Processingサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。

この場合、図6-4に示すように、新しいサーバー: 新しいサーバーの定義ダイアログが表示されます。

図6-4 新しいサーバー: 新しいサーバーの定義(インストールされたランタイムあり)ダイアログ

「図6-4 新しいサーバー: 新しいサーバーの定義(インストールされたランタイムあり)ダイアログ」の説明

表6-4に示すように、ダイアログを構成します。

表6-4 新しいサーバー: 新しいサーバーの定義(インストールされたランタイムあり)ダイアログの属性

属性

説明

サーバーのホスト名

Oracle Event Processingサーバーをインストールしたコンピュータのホスト名。

開発の場合、通常、localhostとなります。

サーバー型の選択

Oracle Event Processingサーバーのタイプ。

この例では、Oracle Event Processing v11を選択します。

サーバー・ランタイム

プルダウン・メニューからサーバー・ランタイムを選択します。

サーバー・ランタイムを作成または編集するには、インストールされたランタイムをクリックします。詳細は、6.2.3項「Oracle Event Processingサーバー・ランタイムの作成方法」を参照してください。

6. 「次へ」をクリックします。

図6-5に示すように、新しいサーバー:新しいOracle Event Processing v11.1サーバーダイアログが表示されます。

図6-5 新しいサーバー:新しいOracle Event Processing v11.1サーバー

「図6-5 新しいサーバー:新しいOracle Event Processing v11.1サーバー」の説明

7. 「ローカル・サーバー」を選択します。

8. 「次へ」をクリックします。
図6-6に示すように、新しいサーバー:新しいOracle Event Processing v11サーバーダイアログが表示されます。

図6-6 ローカル・サーバー用の新しいサーバー:新しいOracle Event Processing v11サーバーダイアログ

「図6-6 ローカル・サーバー用の新しいサーバー:新しいOracle Event Processing v11サーバーダイアログ」の説明

9. 「詳細設定」をクリックして、表6-5に示すように、ダイアログを構成します。

表6-5 ローカル・サーバー用の新しいサーバー:新しいOracle Event Processing v11サーバーダイアログの属性

属性

説明

ドメイン・ディレクトリ

このサーバー用のドメインを含むディレクトリへの完全修飾パス。

「参照」をクリックして、ディレクトリを選択します。

デフォルト: MIDDLEWARE_HOME\user_projects\domains\ocep_domain\defaultserver

起動スクリプト

Oracle Event Processingサーバーを起動するためにOracle Event Processing IDE for Eclipseが使用するスクリプト。

UNIXのデフォルト: MIDDLEWARE_HOME/user_projects/domains/ocep_domain/defaultserver/startwlevs.sh

Windowsのデフォルト: MIDDLEWARE_HOME\user_projects\domains\ocep_domain\defaultserver\startwlevs.cmd

停止スクリプト

Oracle Event Processingサーバーを停止するためにOracle Event Processing IDE for Eclipseが使用するスクリプト。

UNIXのデフォルト: MIDDLEWARE_HOME/user_projects/domains/ocep_domain/defaultserver/startwlevs.sh

Windowsのデフォルト: MIDDLEWARE_HOME\user_projects\domains\ocep_domain\defaultserver\startwlevs.cmd

デバッグ・ポート

Oracle Event Processingサーバーをデバッグする場合にOracle Event Processing IDE for Eclipseが接続するOracle Event Processingサーバー・ポート。

デフォルト: 8453

ユーザー名

Oracle Event ProcessingサーバーにログインするためにOracle Event Processing IDE for Eclipseが使用するユーザー名。

デフォルト: wlevs。

ユーザー・パスワード

Oracle Event ProcessingサーバーにログインするためにOracle Event Processing IDE for Eclipseが使用するユーザー・パスワード。

デフォルト: wlevs。

自動パブリッシュ

デフォルトでは、アプリケーションを変更するときは、Oracle Event Processingサーバーに手動で変更をパブリッシュする必要があります。

「ワークスペースのデフォルトを使用」を選択してOracle Event Processing IDE for Eclipseを構成し、Oracle Event Processingサーバーの変更を自動的にパブリッシュします。

デフォルト: 無効

10. 「終了」をクリックします。

11. 「自動パブリッシュ」を「ワークスペースのデフォルトを使用」に構成した場合、「Windows」>「プリファレンス」を選択します。

12. 「サーバー」オプションを選択します。

13. 自動パブリッシュ・オプションを構成します。

- ローカル・サーバーに自動パブリッシュ: 必要に応じて、このオプションを有効または無効にします。
デフォルト: 有効。

- パブリッシュ間隔: Oracle Event Processing IDE for Eclipseがサーバーに変更をパブリッシュする頻度(秒)を構成します。
デフォルト: 60秒。

- リモート・サーバーに自動パブリッシュ: 必要に応じて、このオプションを有効または無効にします。
デフォルト: 有効。

- パブリッシュ間隔: Oracle Event Processing IDE for Eclipseがサーバーに変更をパブリッシュする頻度(秒)を構成します。
デフォルト: 60秒。

14. 「OK」をクリックします。

6.2.2 リモートOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法

この項では、リモート・サーバーおよびサーバー・ランタイムの両方を作成する方法について説明しています。初期サーバーおよびサーバー・ランタイムを作成した後、追加のサーバー・ランタイムを作成できます。

リモートOracle Event Processingサーバーでは、サーバーおよびサーバー・ランタイムが別々のホスト上にあります。サーバーはリモート・ホスト上にあり、サーバー・ランタイムはローカル・ホスト(Oracle Event Processing IDE for Eclipseを実行するホスト)にあります。

または、ローカル・サーバーおよびサーバー・ランタイムを作成できます。

詳細は、次を参照してください:

- 6.2.3項 「Oracle Event Processingサーバー・ランタイムの作成方法」

- 6.2.1項 「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

リモートOracle Event Processingサーバーおよびサーバー・ランタイムを作成するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図6-1に示すように、「サーバー」ビューが表示されます。

図6-7 Oracle Event Processing IDE for Eclipseのサーバー・ビュー

「図6-7 Oracle Event Processing IDE for Eclipseのサーバー・ビュー」の説明

2. 「サーバー」ビュー・ペインで右クリックして、「新規」>「サーバー」を選択します。

3. サーバー・ランタイムが作成されているかどうかを検討してください。

1. Oracle Event Processingサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。ステップ4に進みます。

2. Oracle Event Processingサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。ステップ5に進みます。

4. Oracle Event Processingサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。

この場合、図6-2に示すように、新しいサーバー: 新しいサーバーの定義ダイアログが表示されます。

図6-8 新しいサーバー: 新しいサーバーの定義ダイアログ(インストールされたランタイムなし)

「図6-8 新しいサーバー: 新しいサーバーの定義ダイアログ(インストールされたランタイムなし)」の説明

次の手順に従い、新しいサーバーを構成します。

1. 表6-2に示すように、ダイアログを構成します。

表6-6 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)の属性

属性

説明

サーバーのホスト名

Oracle Event Processingサーバーをインストールしたコンピュータのホスト名。

開発の場合、通常、localhostとなります。

サーバー型の選択

Oracle Event Processingサーバーのタイプ。

この例では、Oracle Event Processing v11を選択します。

サーバー名

Oracle Event Processingサーバーの名前。

デフォルト: HOSTNAMEのOracle Event Processing v11.1

ここでは、HOSTNAMEは、サーバーのホスト名フィールドに入力された値です。

2. 「次へ」をクリックします。
図6-3に示すように、新しいサーバー:新しいOracle Event Processing v11ランタイムダイアログが表示されます。

図6-9 新しいサーバー:新しいOracle Event Processing v11.1ランタイムダイアログ

「図6-9 新しいサーバー:新しいOracle Event Processing v11.1ランタイムダイアログ」の説明

3. 表6-3に示すように、ダイアログを構成します。

表6-7 新しいサーバー:新しいOracle Event Processing v11ランタイムダイアログの属性

属性

説明

Oracleミドルウェア・ホーム・ディレクトリ

Oracle Event Processingサーバー・インストール・ディレクトリへの完全修飾パス。これは、サーバーをインストールするとき選択した「ミドルウェア・ホーム」と同じです。

このディレクトリを選択する場合、Oracle Event Processingディレクトリ自体ではなくOracle Event Processingインストールを含むディレクトリを選択します。たとえば、次を選択します:

C:\OracleCEP

しかし、次は選択しません:

C:\OracleCEP\ocep_11.1

ランタイム・ウィザードでは、適切なOracle Event Processingインストール・ディレクトリを検索するために、インストールが使用されます。

詳細は、『Oracle Fusion Middleware Oracle Event Processingスタート・ガイド』のOracle Fusion Middlewareのディレクトリ構造および概念に関する項を参照してください。

JRE

使用するJRE型。

プルダウン・メニューから使用するJREのタイプを選択するか、またはインストールされたJREのプリファレンスリンクをクリックして、新しいJREを作成します。

必ず、Java 6 JREを選択します。

注意: Oracle Event ProcessingサーバーJREは、サーバー・ドメイン・ディレクトリ内のsetDomainEnv.cmdまたはsetDomainEnv.shスクリプトのJAVA_HOME設定で設定されます。

4. ステップ6に進みます。

5. Oracle Event Processingサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。

この場合、図6-4に示すように、新しいサーバー: 新しいサーバーの定義ダイアログが表示されます。

図6-10 新しいサーバー: 新しいサーバーの定義(インストールされたランタイムあり)ダイアログ

「図6-10 新しいサーバー: 新しいサーバーの定義(インストールされたランタイムあり)ダイアログ」の説明

次の手順に従い、新しいサーバーを構成します。

表6-8 新しいサーバー: 新しいサーバーの定義(インストールされたランタイムあり)ダイアログの属性

属性

説明

サーバーのホスト名

Oracle Event Processingサーバーをインストールしたコンピュータのホスト名。

開発の場合、通常、localhostとなります。

サーバー型の選択

Oracle Event Processingサーバーのタイプ。

この例では、Oracle Event Processing v11を選択します。

サーバー・ランタイム

プルダウン・メニューからサーバー・ランタイムを選択します。

サーバー・ランタイムを作成または編集するには、インストールされたランタイムをクリックします。詳細は、6.2.3項「Oracle Event Processingサーバー・ランタイムの作成方法」を参照してください。

6. 「次へ」をクリックします。

図6-5に示すように、新しいサーバー:新しいOracle Event Processing v11.1サーバーダイアログが表示されます。

図6-11 新しいサーバー:新しいOracle Event Processing v11.1サーバー

「図6-11 新しいサーバー:新しいOracle Event Processing v11.1サーバー」の説明

7. 「リモート・サーバー」を選択します。

8. 「次へ」をクリックします。
図6-12に示すように、新しいサーバー:新しいOracle Event Processing v11サーバーダイアログが表示されます。

図6-12 リモート・サーバー用の新しいサーバー:新しいOracle Event Processing v11サーバーダイアログ

「図6-12 リモート・サーバー用の新しいサーバー:新しいOracle Event Processing v11サーバーダイアログ」の説明

9. 表6-9に示すように、ダイアログを構成します。

表6-9 ローカル・サーバー用の新しいサーバー:Oracle Event Processing v11サーバーダイアログの属性

属性

説明

リモート・サーバーのIPアドレス

リモートOracle Event ProcessingサーバーのIPアドレス。

デフォルト: ローカルホストのIPアドレス

リモート・サーバーのポート

Oracle Event Processingドメインを示すリモートOracle Event ProcessingサーバーDOMAIN_DIR/config/config.xmlファイルで指定したポート。DOMAIN_DIRはドメイン・ディレクトリを示します。

ポート番号は、Netio要素のポート子要素の値です。

<Netio>
<Name>NetIO</Name>
<Port>9002</Port>
</Netio>

デフォルト: 9002

ユーザー名

Oracle Event Processing IDE for Eclipseで、リモート・サーバーにログインするために使用されるユーザー名。

デフォルト: wlevs

ユーザー・パスワード

Oracle Event Processing IDE for Eclipseで、リモート・サーバーにログインするために使用されるパスワード。

デフォルト: wlevs

10. 「終了」をクリックします。

6.2.3 Oracle Event Processingサーバー・ランタイムの作成方法

サーバーを作成する前に、ランタイム・ウィザードを使用してサーバー・ランタイムを作成し、Oracle Event Processingサーバー・インストールの場所とともにOracle Event Processing IDE for Eclipseを構成する必要があります。新しいサーバー・ウィザード、新しいプロジェクト・ウィザード、ワークスペース・プリファレンス・ダイアログなどの数箇所からランタイム・ウィザードにアクセスできます。

Oracle Event Processingサーバーがまだ作成されていない場合、ランタイムを明示的に作成することのみが必要です。

詳細は、次を参照してください:

- 6.2.1項 「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

- 6.2.2項 「リモートOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

Oracle Event Processingサーバー・ランタイムを作成するには:

1. 「Windows」>「プリファレンス」を選択します。
図6-13に示すように、「プリファレンス」ダイアログが表示されます。

図6-13 「プリファレンス」-「サーバー」(インストールされたランタイム)

「図6-13 「プリファレンス」-「サーバー」(インストールされたランタイム)」の説明

2. 「サーバー」オプションを展開して、ランタイム環境を選択します。

3. 「追加」をクリックします。
図6-14に示すように、新しいサーバー・ランタイム環境ダイアログが表示されます。

図6-14 新しいサーバー・ランタイム環境ダイアログ

「図6-14 新しいサーバー・ランタイム環境ダイアログ」の説明

4. 表6-10に示すように、ダイアログを構成します。

表6-10 新しいサーバー・ランタイムダイアログの属性

属性

説明

ランタイム環境のタイプの選択

Oracle Event Processingサーバーのタイプ。

この例では、Oracle Event Processing v11.1を選択します。

新しいローカル・サーバーの作成

オプションで、サーバーがまだ作成されていない場合、これをチェックして新しいローカル・サーバーを作成します。詳細は、6.2.1項「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

5. 「次へ」をクリックします。
図6-15に示すように、新しいサーバー・ランタイム環境ダイアログが表示されます。

図6-15 新しいサーバー・ランタイム環境:新しいOracle Event Processing v11.1ランタイムダイアログ

「図6-15 新しいサーバー・ランタイム環境:新しいOracle Event Processing v11.1ランタイムダイアログ」の説明

6. 表6-11に示すように、ダイアログを構成します。

表6-11 新しいサーバー・ランタイムダイアログの属性

属性

説明

Oracleミドルウェア・ホーム・ディレクトリ

Oracle Event Processingサーバー・インストール・ディレクトリへの完全修飾パス。これは、サーバーをインストールするとき選択した「ミドルウェア・ホーム」と同じです。

このディレクトリを選択する場合、Oracle Event Processingディレクトリ自体ではなくOracle Event Processingインストールを含むディレクトリを選択します。たとえば、次を選択します:

C:\OracleCEP

しかし、次は選択しません:

C:\OracleCEP\ocep_11.1

ランタイム・ウィザードでは、適切なOracle Event Processingインストール・ディレクトリを検索するために、インストールが使用されます。

詳細は、『Oracle Fusion Middleware Oracle Event Processingスタート・ガイド』のOracle Fusion Middlewareのディレクトリ構造および概念に関する項を参照してください。

JRE

使用するJRE型。

プルダウン・メニューから使用するJREのタイプを選択するか、またはインストールされたJREのプリファレンスリンクをクリックして、新しいJREを作成します。

Oracle Event ProcessingインストールとともにインストールされたJRockit JDKまたはJRockit Real Timeを必ず選択します。

7. 「終了」をクリックします。

6.3 Oracle Event Processingサーバーの管理

Oracle Event Processing IDE for EclipseおよびOracle Event Processing IDE for EclipseからアクセスできるOracle Event Processing Visualizerを使用して、開発中にOracle Event Processingサーバーの多くの側面を管理できます。

この項では、Oracle Event Processing IDE for Eclipseから実行できる次のOracle Event Processingサーバー管理タスクについて説明します。

- 6.3.1項「ローカルOracle Event Processingサーバーの起動方法」

- 6.3.2項「ローカルOracle Event Processingサーバーの停止方法」

- 6.3.3項「既存のローカルOracle Event Processingサーバー・インスタンスにアタッチする方法」

- 6.3.4項「既存のリモートOracle Event Processingサーバー・インスタンスにアタッチする方法」

- 6.3.5項「既存のOracle Event Processingサーバー・インスタンスからデタッチする方法」

- 6.3.6項「アプリケーションをOracle Event Processingサーバーにデプロイする方法」

- 6.3.7項「Oracle Event Processingサーバーの接続およびコントロール設定の構成方法」

- 6.3.8項「Oracle Event Processingサーバーのドメイン(ランタイム)設定の構成方法」

- 6.3.9項「Oracle Event Processing IDE for EclipseからOracle Event Processing Visualizerを起動する方法」

6.3.1 ローカルOracle Event Processingサーバーの起動方法

ローカル・サーバーを作成した後、Oracle Event Processing IDE for EclipseからOracle Event Processingサーバーを起動できます。

デバッグ・モードでローカルOracle Event Processingサーバーを起動することもできます。

または、コマンドラインからローカルOracle Event Processingサーバーを起動し、Oracle Event Processing IDE for Eclipseを使用してアタッチできます。

詳細は、次を参照してください:

- 6.2.1項 「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

- 6.4.1項「Oracle Event Processingサーバーで実行されるOracle Event Processingアプリケーションのデバッグ方法」

- 6.3.3項「既存のローカルOracle Event Processingサーバー・インスタンスにアタッチする方法」

ローカルOracle Event Processingサーバーを起動するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図6-16に示すように、「サーバー」ビューが表示されます。

図6-16 Oracle Event Processingサーバーの起動

「図6-16 Oracle Event Processingサーバーの起動」の説明

2. 次のいずれかを選択して、サーバーを起動します。

1. 「サーバー」ビュー・ツール・バーのサーバーの起動アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックし、「開始」を選択します。

サーバーを起動した後、「コンソール」ビューにサーバーからのログ・メッセージが表示されます。

6.3.2 ローカルOracle Event Processingサーバーの停止方法

Oracle Event Processing IDE for EclipseからローカルOracle Event Processingサーバーを起動した後、Oracle Event Processing IDE for EclipseからOracle Event Processingサーバーを停止できます。

Oracle Event Processing Visualizerの実行中にOracle Event Processingを停止すると、サーバー・プロキシが破棄されたことを示すコンソール・メッセージが生成される場合があるので注意してください。通常、これは通知メッセージです。

詳細は、6.3.1項「ローカルOracle Event Processingサーバーの起動方法」を参照してください。

ローカルOracle Event Processingサーバーを停止するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図6-17に示すように、「サーバー」ビューが表示されます。

図6-17 Oracle Event Processingサーバーの停止

「図6-17 Oracle Event Processingサーバーの停止」の説明

2. 次のいずれかを選択して、サーバーを停止します。

1. 「サーバー」ビュー・ツール・バーのサーバーの停止アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックし、「停止」を選択します。

6.3.3 既存のローカルOracle Event Processingサーバー・インスタンスにアタッチする方法

ローカル・サーバーを作成した後、コマンドラインからローカルOracle Event Processingサーバーを起動して、Oracle Event Processing IDE for Eclipseをすでに稼働しているこの既存ローカルOracle Event Processingサーバー・インスタンスにアタッチできます。

または、Oracle Event Processing IDE for Eclipse内から直接ローカルOracle Event Processingサーバーを起動できます。

詳細は、次を参照してください:

- 6.2.1項 「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

- 6.3.1項「ローカルOracle Event Processingサーバーの起動方法」

既存のローカルOracle Event Processingサーバー・インスタンスにアタッチするには:

1. コマンドラインからOracle Event Processingサーバーを起動します。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingサーバーの起動および停止に関する項を参照してください。

2. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図6-16に示すように、「サーバー」ビューが表示されます。

図6-18 既存のローカルOracle Event Processingサーバー・インスタンスへのアタッチ

「図6-18 既存のローカルOracle Event Processingサーバー・インスタンスへのアタッチ」の説明

3. 次のいずれかを選択して、すでに稼働しているローカル・サーバーにアタッチします。

1. 「サーバー」ビュー・ツール・バーのサーバーの起動アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックし、「開始」を選択します。

実行中のOEPサーバーへのアタッチダイアログが表示されます。

4. 「はい」をクリックします。
サーバーにアタッチした後、「コンソール」ビューにサーバーからのログ・メッセージは表示されません。

Oracle Event Processing Visualizerを使用して、サーバー・コンソールを表示できます。詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のコンソール出力の表示方法に関する項を参照してください。

6.3.4 既存のリモートOracle Event Processingサーバー・インスタンスにアタッチする方法

リモート・サーバーを作成した後、コマンドラインからリモートOracle Event Processingサーバーを起動して、Oracle Event Processing IDE for Eclipseをすでに稼働しているこの既存リモートOracle Event Processingサーバー・インスタンスにアタッチできます。

詳細は、6.2.2項「リモートOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

既存のリモートOracle Event Processingサーバー・インスタンスにアタッチするには:

1. コマンドラインからリモートOracle Event Processingサーバーを起動します。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingサーバーの起動および停止に関する項を参照してください。

2. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図6-16に示すように、「サーバー」ビューが表示されます。

図6-19 既存のリモートOracle Event Processingサーバー・インスタンスへのアタッチ

「図6-19 既存のリモートOracle Event Processingサーバー・インスタンスへのアタッチ」の説明

3. 次のいずれかを選択して、すでに稼働しているリモート・サーバーにアタッチします。

1. 「サーバー」ビュー・ツール・バーのサーバーの起動アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックし、「開始」を選択します。

リモート・サーバーにアタッチした後、Oracle Event Processing IDE for Eclipseから「コンソール」ビューに、次のような1つのステータス・メッセージが書き込まれます:

[3/23/10 12:32 PM] Attached to remote OEP server at address 10.11.12.13 and port 9002

「コンソール」ビューにはリモート・サーバーからのログ・メッセージは表示されません。

Oracle Event Processing Visualizerを使用して、サーバー・コンソールを表示できます。詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のコンソール出力の表示方法に関する項を参照してください。

6.3.5 既存のOracle Event Processingサーバー・インスタンスからデタッチする方法

既存の実行中のOracle Event Processingサーバー・インスタンスにアタッチした後、Oracle Event Processingサーバーからデタッチして実行を継続できます。

詳細は、次を参照してください:

- 6.3.3項「既存のローカルOracle Event Processingサーバー・インスタンスにアタッチする方法」

- 6.3.4項「既存のリモートOracle Event Processingサーバー・インスタンスにアタッチする方法」

既存のOracle Event Processingサーバー・インスタンスからデタッチするには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図6-17に示すように、「サーバー」ビューが表示されます。

図6-20 Oracle Event Processingサーバーの停止

「図6-20 Oracle Event Processingサーバーの停止」の説明

2. 次のいずれかを選択して、サーバーからデタッチします。

1. 「サーバー」ビュー・ツール・バーのサーバーの停止アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックし、「停止」を選択します。

Oracle Event Processing IDE for Eclipseは、Oracle Event Processingサーバー・インスタンスからデタッチします。Oracle Event Processingサーバー・インスタンスは稼働し続けます。

リモートOracle Event Processingサーバーからデタッチする場合、Oracle Event Processing IDE for Eclipseは「コンソール」ビューに次のログ・メッセージを書き込みます。

[3/23/10 12:47 PM] Server communication stopped

6.3.6 アプリケーションをOracle Event Processingサーバーにデプロイする方法

Oracle Event Processing IDE for Eclipseのプロジェクトは、Oracle Event Processingアプリケーションとして作成され、サーバーにデプロイされます。アプリケーションをデプロイするには、まず、サーバーを定義する必要があります。その後、サーバーにアプリケーションをデプロイするには、アプリケーションをサーバーに追加します。サーバーがすでに起動している場合、またはサーバーが停止していて後で起動する場合、アプリケーションがすぐにデプロイされます。

詳細は、次を参照してください:

- 6.2.1項 「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

- 6.2.2項 「リモートOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

アプリケーションをOracle Event Processingサーバーにデプロイするには:

1. Oracle Event Processingプロジェクトを作成します(5.2項「Oracle Event Processingプロジェクトの作成」を参照)。

2. サーバー(6.2.1項「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」を参照)を作成します。

3. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図6-21に示すように、「サーバー」ビューが表示されます。

図6-21 Oracle Event Processingサーバーへのプロジェクトの追加

「図6-21 Oracle Event Processingサーバーへのプロジェクトの追加」の説明

4. 「サーバー」ビューでサーバーを右クリックし、追加と削除を選択します。
図6-22に示すように、追加と削除ダイアログが表示されます。

図6-22 追加と削除

「図6-22 追加と削除ダイアログ」の説明

5. 表6-12に示すように、ダイアログを構成します。

表6-12 追加と削除ダイアログの属性

属性

説明

利用可能

リストから1つ以上のプロジェクトを選択し、「追加」または「すべて追加」をクリックして、プロジェクトを「構成済」リストに移動します。

構成済

リストから1つ以上のプロジェクトを選択し、「削除」またはすべて削除をクリックして、プロジェクトを「使用可能」リストに移動します。

サーバーが起動したら、すぐに変更をパブリッシュします。

このオプションを選択して、変更したプロジェクトをすぐにパブリッシュします。サーバーがすでに稼働している場合のみ適用できます。

6. 「終了」をクリックします。
アプリケーションが追加されると、図6-23に示すように、アプリケーションはサーバーの子として「サーバー」ビューに表示されます。

図6-23 プロジェクトを追加した後のサーバー・ビュー

「図6-23 プロジェクトを追加した後のサーバー・ビュー」の説明

7. Oracle Event Processingサーバーにアプリケーションをデプロイ(パブリッシュ)するには、追加されたアプリケーションを右クリックし、「強制パブリッシュ」を選択します。

1. Oracle Event Processingサーバーがスタンドアロン・サーバー・ドメインの一部である場合は、アプリケーションはデプロイされます。

2. Oracle Event Processingサーバーがマルチサーバー・ドメインの一部である場合、図6-24に示すように、「クラスタ・デプロイメント・グループ名の選択」ダイアログが表示されます。

図6-24 「クラスタ・デプロイメント・グループ名の選択」ダイアログ

「図6-24 「クラスタ・デプロイメント・グループ名の選択」ダイアログ」の説明

アプリケーションをデプロイするクラスタ・デプロイメント・グループを選択して、「OK」をクリックします。

クラスタリングの詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のマルチサーバー・ドメインの概要に関する項を参照してください。

アプリケーションがデプロイ(パブリッシュ)されると、図6-25に示すように、アプリケーションがサーバーの子として「サーバー」ビューに表示されます。

図6-25 プロジェクトをデプロイ(パブリッシュ)した後のサーバー・ビュー

「図6-25 プロジェクトをデプロイ(パブリッシュ)した後のサーバー・ビュー」の説明

6.3.7 Oracle Event Processingサーバーの接続およびコントロール設定の構成方法

サーバーを作成した後、サーバー概要エディタを使用して、Oracle Event Processingサーバーと通信するためにOracle Event Processing IDE for Eclipseで使用するすべての重要なサーバー接続およびコントロール設定を構成できます。

詳細は、次を参照してください:

- 6.2.1項 「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

- 6.3.8項「Oracle Event Processingサーバーのドメイン(ランタイム)設定の構成方法」

Oracle Event Processingサーバーの接続およびコントロール設定を構成するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。

2. 「サーバー」ビューで、サーバーをダブルクリックします。
図6-26に示すように、サーバー概要エディタが表示されます。

図6-26 サーバー概要エディタ

「図6-26 サーバー概要エディタ」の説明

3. 表6-13に示すように、サーバー概要エディタを構成します。

表6-13 サーバー概要エディタの属性

属性

説明

サーバー名

このサーバーの名前。有用な識別子としてOracle Event Processing IDE for Eclipse内でのみ使用されます。

詳細は、6.2.1項「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

ホスト名

サーバーがインストールされたホストの名前。

詳細は、6.2.1項「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

ランタイム環境

このサーバー用に選択した現在インストールされているランタイム。

プルダウン・メニューから、新しいランタイムを選択します。または、「編集」リンクをクリックして、選択したランタイムの構成を変更します。

詳細は、6.2.1項「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

ドメイン・ディレクトリ脚注 1

このサーバー用のドメインを含むディレクトリへの完全修飾パス。

「参照」をクリックして、ディレクトリを選択します。

デフォルト: MIDDLEWARE_HOME\user_projects\domains\ocep_domain\defaultserver

起動スクリプト脚注 1

Oracle Event Processingサーバーを起動するためにOracle Event Processing IDE for Eclipseが使用するスクリプト。

「参照」をクリックして、起動スクリプトを選択します。

UNIXのデフォルト: MIDDLEWARE_HOME\user_projects\domains\ocep_domain\defaultserver\stopwlevs.sh

Windowsのデフォルト: MIDDLEWARE_HOME\user_projects\domains\ocep_domain\defaultserver\startwlevs.cmd

停止スクリプト脚注 1

Oracle Event Processingサーバーを停止するためにOracle Event Processing IDE for Eclipseが使用するスクリプト。

「参照」をクリックして、停止スクリプトを選択します。

UNIXのデフォルト: MIDDLEWARE_HOME\user_projects\domains\ocep_domain\defaultserver\startwlevs.sh

Windowsのデフォルト: MIDDLEWARE_HOME\user_projects\domains\ocep_domain\defaultserver\startwlevs.cmd

デバッグ・ポート脚注 1

Oracle Event Processingサーバーをデバッグする場合にOracle Event Processing IDE for Eclipseが接続するOracle Event Processingサーバー・ポート。

デフォルト: 8453

リモート・サーバーIPアドレス脚注 2

リモートOracle Event ProcessingサーバーのIPアドレス。

デフォルト: ローカルホストのIPアドレス

リモート・サーバー・ポート脚注 2

Oracle Event Processingドメインを示すリモートOracle Event ProcessingサーバーDOMAIN_DIR/config/config.xmlファイルで指定したポート。DOMAIN_DIRはドメイン・ディレクトリを示します。

ポート番号は、Netio要素のポート子要素の値です。

<Netio>
<Name>NetIO</Name>
<Port>9002</Port>
</Netio>

デフォルト: 9002

ユーザー名脚注 2

Oracle Event Processing IDE for Eclipseで、リモート・サーバーにログインするために使用されるユーザー名。

デフォルト: wlevs

ユーザー・パスワード脚注 2

Oracle Event Processing IDE for Eclipseで、リモート・サーバーにログインするために使用されるパスワード。

デフォルト: wlevs

パブリッシュ

デフォルトでは、アプリケーションを変更するときは、Oracle Event Processingサーバーに手動で変更をパブリッシュする必要があります。

自動パブリッシュしないを選択して、自動パブリッシュを無効にします。

デフォルト設定のオーバーライドを選択して、デフォルト自動パブリッシュ間隔をオーバーライドします。新しいパブリッシュ間隔(秒)を入力します。

デフォルト: 自動パブリッシュしない

タイムアウト

起動(秒)フィールドに正の整数の秒数を入力して、Oracle Event Processingサーバーが起動すべき制限時間を指定します。

デフォルト: 150秒

停止(秒)フィールドに正の整数の秒数を入力して、Oracle Event Processingサーバーが起動すべき制限時間を指定します。

デフォルト: 60秒。

脚注 1  「ローカル・サーバー」をクリックして変更します。リモート・サーバーのランタイムおよびローカル・サーバー両方に適用します。

脚注 2  「リモート・サーバー」をクリックして変更します。リモート・サーバーのみに適用します。

4. 「ファイル」>「保存」を選択します。

5. サーバー概要エディタを閉じます。

6.3.8 Oracle Event Processingサーバーのドメイン(ランタイム)設定の構成方法

サーバーを作成した後、Oracle Event Processing IDE for Eclipseを使用して、Oracle Event Processingサーバーのconfig.xmlファイルのOracle Event Processingサーバー・ドメイン(ランタイム)設定を構成できます。

ローカルOracle Event Processingサーバーでは、サーバーおよびサーバー・ランタイム両方が同じホスト上にあり、リモートOracle Event Processingサーバーでは、サーバーおよびサーバー・ランタイムが別々のホスト上にあります。サーバーがリモート・ホスト上にあり、サーバー・ランタイムがローカル・ホスト(Oracle Event Processing IDE for Eclipseを実行するホスト)上にあります。

ローカルおよびリモートの両方のOracle Event Processingサーバーについて、ドメイン(ランタイム)設定を構成する場合、ローカル・ホストのOracle Event Processingサーバーのconfig.xmlのみを変更します。

Oracle Event Processing IDE for Eclipseを使用して、Oracle Event Processingサーバーと通信するためにOracle Event Processing IDE for Eclipseで使用するすべての重要なサーバー接続およびコントロール設定を構成することもできます。

実行中のOracle Event ProcessingサーバーのOracle Event Processingサーバーのconfig.xmlファイルへの変更は、再起動するまでOracle Event Processingサーバーで読み取られません。

Oracle Event Processing Visualizerを使用して実行中のOracle Event Processingサーバー用のOracle Event Processingサーバーのconfig.xmlファイルの変更を行う場合、保存した後すぐに実行中のOracle Event Processingサーバーに変更が適用されます。Oracle Event Processing Visualizerは、Oracle Event Processingサーバーのconfig.xmlファイルを更新し、このconfig.xmlファイルの現在のファイル・システム・バージョンを現在のメモリー内のバージョンで上書きします。

ファイルを手動で編集してOracle Event Processingサーバーのconfig.xmlファイルに変更を行い、Oracle Event Processing Visualizerを使用してさらに変更を行う場合、手動の編集がOracle Event Processing Visualizerによって上書きされます。

これを回避するには、Oracle Event Processingサーバーのconfig.xmlファイルを手動で編集する場合、Oracle Event Processingサーバーを常に停止および起動してランタイム構成にそれらの変更を読み込み、Oracle Event Processing Visualizerを使用してさらに変更を行います。

詳細は、次を参照してください:

- 6.2.1項 「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

- 6.2.2項 「リモートOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」

- 6.3.7項「Oracle Event Processingサーバーの接続およびコントロール設定の構成方法」

- 6.3.9項「Oracle Event Processing IDE for EclipseからOracle Event Processing Visualizerを起動する方法」

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingサーバー構成に関する項

Oracle Event Processingサーバーのドメイン(ランタイム)設定を構成するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。

2. 「サーバー」ビューで、サーバーを右クリックして、図6-27に示すように、「ドメイン構成ファイルを開く」を選択します。

図6-27 ドメイン構成ファイルの編集

「図6-27 ドメイン構成ファイルの編集」の説明

図6-28に示すように、Oracle Event Processingサーバー・ドメイン構成ファイルのconfig.xmlが開きます。

図6-28 Oracle Event Processingドメイン構成ファイルconfig.xml

「図6-28 Oracle Event Processingドメイン構成ファイルconfig.xml」の説明

3. 必要に応じて、ドメイン構成ファイルを編集します。

4. 「ファイル」>「保存」を選択します。

5. ドメイン構成ファイルを閉じます。

6.3.9 Oracle Event Processing IDE for EclipseからOracle Event Processing Visualizerを起動する方法

サーバーを作成した後、Oracle Event Processing IDE for EclipseからOracle Event Processing Visualizerを起動できます。

Oracle Event Processing Visualizerは、実行中のOracle Event Processingサーバーの管理コンソールです。詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』を参照してください。

詳細は、6.2.1項「ローカルOracle Event Processingサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

注意:

Oracle Event Processing Visualizerを使用してOracle Event Processingサーバーのconfig.xmlの変更を行う場合(たとえば、データ・ソースの編集など)、手動で行われたconfig.xmlファイルの変更を上書きする可能性があります。詳細は、6.3.8項「Oracle Event Processingサーバーのドメイン(ランタイム)設定の構成方法」を参照してください。

Oracle Event Processing IDE for EclipseからOracle Event Processing Visualizerを起動するには:

1. サーバー(6.3.1項「ローカルOracle Event Processingサーバーの起動方法」を参照)を起動します。
Oracle Event Processing Visualizerの実行中にサーバーを停止すると、サーバー・プロキシの通知メッセージが表示されることがあるので注意してください。通常エラーではありません。

2. 「サーバー」ビューで、稼働しているサーバーを右クリックして、図6-29に示すように、Oracle Event Processing Visualizerを開くを選択します。

図6-29 Oracle Event Processing Visualizerを開く

「図6-29 Oracle Event Processing Visualizerを開く」の説明

図6-30に示すように、Oracle Event Processing Visualizerが開きます。

図6-30 Oracle Event Processing Visualizer

「図6-30 Oracle Event Processing Visualizer」の説明

3. 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』の説明に従って、Oracle Event Processing Visualizerを使用します。

6.4 Oracle Event Processingサーバーで実行されるOracle Event Processingアプリケーションのデバッグ

Oracle Event ProcessingアプリケーションはJavaアプリケーションであるため、このアプリケーションでは、Eclipseで提供されるツールを含む標準のJavaデバッグ・ツールを使用できます。

この項では次について説明します:

- 6.4.1項「Oracle Event Processingサーバーで実行されるOracle Event Processingアプリケーションのデバッグ方法」

また、ロード・ジェネレータおよびcsvgenアダプタを使用して、テスト用のデータフィードをシミュレートできます。詳細は、第21章「ロード・ジェネレータおよびcsvgenアダプタによるアプリケーションのテスト」を参照してください。

6.4.1 Oracle Event Processingサーバーで実行されるOracle Event Processingアプリケーションのデバッグ方法

この項では、Oracle Event Processingサーバーで実行されるOracle Event Processingアプリケーションのデバッグ方法について説明します。

Oracle Event Processingサーバーで実行されるOracle Event Processingアプリケーションをデバッグするには:

1. デバッグするJavaコードにブレークポイントを設定します。
この場合、ブレークポイントを設定するには、エディタの余白で右クリックして、図6-31に示すように、ブレークポイントの切替えを選択します。

図6-31 ブレークポイントの設定

「図6-31 ブレークポイントを設定」の説明

2. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。

3. 図6-32に示すように、次のいずれかを選択して、サーバーをデバッグ・モードで起動します。

1. 「サーバー」ビュー・ツール・バーでデバッグ・モードでサーバーの起動アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックして、「デバッグ」を選択します。

図6-32 デバッグ・モードでのOracle Event Processingサーバーの起動

「図6-32 デバッグ・モードでのOracle Event Processingサーバーの起動」の説明

4. サーバーが起動し、ブレークポイントに到達するとスレッドが停止されます。
Oracle Event Processing IDE for Eclipseが自動的にデバッグ・パースペクティブに切り替わらない場合、パースペクティブに切り替えるには、「ウィンドウ」>パースペクティブを開く > 「その他」を選択して、パースペクティブのリストから「デバッグ」オプションを選択します。

5. デバッグ・パースペクティブを使用して、アプリケーションをデバッグします。

注意:

場合によっては、行番号の情報が欠落しているためにブレークポイントのインストールに失敗したことを示す警告のダイアログ・ボックスが表示される場合があります。このダイアログはコアEclipseデバッガから出され、通常Oracle Event Processingサービス・エンジン・アプリケーションにおいては問題ありません。再び確認しないチェック・ボックスを選択して、デバッグを続行します。

6. デバッグを完了したら、通常どおりにサーバーを停止できます(6.3.2項「ローカルOracle Event Processingサーバーの停止」を参照)。

7 Oracle Event Processing IDE for Eclipseおよびイベント処理ネットワーク

この章では、アプリケーション・コンポーネントを接続するイベント処理ネットワーク(EPN)を開発するためにOracle Event Processing IDE for Eclipseを使用する方法について説明します。EPNエディタでは、EPNのグラフィカル・ビューを提供し、Oracle Event Processingアプリケーションの作成に役立つ視覚化とナビゲーションの機能を提供します。

この章の内容は次のとおりです。

- 7.1項「EPNエディタを開く」

- 7.2項「EPNエディタの概要」

- 7.3項「EPNエディタのナビゲート」

- 7.4項「EPNエディタの使用」

7.1 EPNエディタを開く

Oracle Event Processingアプリケーションのプロジェクト・フォルダ、コンテキストまたは構成ファイルからEPNエディタを開くことができます。

7.1.1 プロジェクト・フォルダからEPNエディタを開く方法

Oracle Event ProcessingアプリケーションのEclipseプロジェクト・フォルダからEPNエディタを開くことができます。また、EPNエディタは、コンテキストまたは構成ファイルからも開くことができます(7.1.2項「コンテキストまたは構成ファイルからEPNエディタを開く方法」を参照)。

プロジェクトからEPNエディタを開くには:

1. Oracle Event Processing IDE for Eclipseを起動します。

2. プロジェクト・エクスプローラでOracle Event Processingプロジェクトを開きます。

3. 図7-1に示すように、プロジェクト・フォルダを右クリックして、「EPNエディタを開く」を選択します。

図7-1 プロジェクトからEPNエディタを開く

「図7-1 プロジェクトからEPNエディタを開く」の説明

図7-2に示すように、EPNエディタはEPN:PROJECT-NAMEというタブで開きます。PROJECT-NAMEは、Oracle Event Processingプロジェクトの名前です。

図7-2 EPNエディタ

「図7-2 EPNエディタ」の説明

7.1.2 コンテキストまたは構成ファイルからEPNエディタを開く方法

EPNエディタは、Oracle Event ProcessingアプリケーションのSpringコンテキスト・ファイルまたはOracle Event Processingサーバー構成ファイルから開くことができます。また、コンテキストまたは構成ファイルからEPNエディタを開くこともできます(詳細は、7.1.1項「プロジェクト・フォルダからEPNエディタを開く方法」を参照)。

コンテキストまたは構成ファイルからEPNエディタを開くには:

1. Oracle Event Processing IDE for Eclipseを起動します。

2. プロジェクト・エクスプローラでOracle Event Processingプロジェクトを開きます。

3. 図7-3に示すように、コンテキストまたは構成ファイルを右クリックして、「EPNエディタを開く」を選択します。

図7-3 コンテキストまたは構成ファイルからEPNエディタを開く

「図7-3コンテキストまたは構成ファイルからEPNエディタを開く」の説明

図7-4に示すように、EPNエディタはEPN:PROJECT-NAMEというタブで開きます。PROJECT-NAMEは、Oracle Event Processingプロジェクトの名前です。

図7-4 EPNエディタ

「図7-4 EPNエディタ」の説明

7.2 EPNエディタの概要

この項では、次を含むEPNビューの管理およびEPNエディタによるOracle Event Processingアプリケーション情報の表示方法に使用するメイン・コントロールについて説明します。

- 7.2.1項「フロー表現」

- 7.2.2項「フィルタ処理」

- 7.2.3項「ズーム」

- 7.2.4項「レイアウト」

- 7.2.5項「接続されていないBeanの表示と非表示」

- 7.2.6項「印刷およびイメージへのエクスポート」

- 7.2.7項「構成のバッジング」

- 7.2.8項「リンク指定場所のインジケータ」

- 7.2.9項「ネストされたステージ」

- 7.2.10項「イベント・タイプ・リポジトリ・エディタ」

7.2.1 フロー表現

図7-5に示すように、エディタのプライマリ表示ではアプリケーション内のフローが表示されます。

図7-5 EPNのフロー表現

「図7-5 EPNのフロー表現」の説明

EPNは、リンクおよびストリームで接続されたノードで構成されます。アダプタ、プロセッサ、データベース表、Bean、およびキャッシュなど様々なタイプのノードがあります。EPNエディタによってノード、リンク、およびストリムで使用されるグラフィック表記法の詳細は、次の項を参照してください。

- 7.2.7項「構成のバッジング」

- 7.2.8項「リンク指定場所のインジケータ」

7.2.2 フィルタ処理

通常、EPNは1つのアセンブリ・ファイルに指定しますが、複数のアセンブリ・ファイルにもEPNを指定できます。

デフォルトでは、EPNエディタは単一Oracle Event Processingアプリケーション・バンドルのEPNとともにすべてのファイルから収集した情報を表示します。

単一アセンブリ・ファイルのネットワークを表示するには、図7-6に示すように、「フィルタ」プルダウン・メニューからそのファイルを選択します。

図7-6 アセンブリ・ファイルによるEPNのフィルタ処理

「図7-6 アセンブリ・ファイルによるEPNのフィルタ処理」の説明

EPNを編集する場合、EPNエディタのフィルタに示されるアセンブリ・ファイルに新規ノードが追加されます。EPNエディタのフィルタが「EPN全体」に設定される場合、フィルタ・リストの最初のアセンブリ・ファイルに新規ノードが追加されます。既存のノードは、それが定義されているアセンブリ・ファイルで編集されるかまたは削除されます。

EPNエディタで編集するアセンブリ・ファイルがEclipseソース・エディタで開いている場合、その開いているファイルへの編集内容がエディタに編集されます。この場合は、ディスク上のファイルに変更が反映されるようにするには、開いているエディタの変更を保存する必要があります。

EPNエディタで編集するアセンブリ・ファイルがEclipseソース・エディタで開いていない場合は、編集内容がすぐにディスク上のファイルに反映されます。

詳細は、5.3項「EPNアセンブリ・ファイルの作成」を参照してください。

7.2.3 ズーム

「ズーム」フィールドにパーセント値を入力するか、または図7-7に示すように「ズーム」フィールドのプルダウン・メニューから値を選択して、EPNエディタのズーム・レベルを変更できます。EPNを現在のEPNエディタ・ウィンドウに合せるには、「ウィンドウに合せる」を選択します。

図7-7 ズーム・レベル

「図7-7 ズーム・レベル」の説明

7.2.4 レイアウト

図7-8に示すように、「EPNのレイアウト」をクリックしてEPNのレイアウトを最適化および単純化できます。

図7-8 レイアウトの最適化

「図7-8 レイアウトの最適化」の説明

7.2.5 接続されていないBeanの表示と非表示

EPNにおいて参照のない<bean>要素をフィルタ処理で除外できます。図7-9に示すように、「接続されていないBeanの表示/非表示」をクリックして、そのBeanの可視性を切り替えることができます。詳細は、7.4.3項「ノードのレイアウト」を参照してください。

図7-9 接続されていないBeanの表示/非表示

「図7-9 接続されていないBeanの表示/非表示」の説明

7.2.6 印刷およびイメージへのエクスポート

図7-10に示すように、「イメージとしてエクスポート」をクリックして、EPNエディタのビューをイメージ・ファイルにエクスポートできます。イメージを.bmp、.gif、.jpg、または.pngファイルとしてエクスポートできます。

図7-10 EPNをイメージ・ファイルとしてエクスポート

「図7-10 EPNをイメージ・ファイルとしてエクスポート」の説明

図7-11に示すように、「印刷」をクリックしてEPNエディタのビューを印刷できます。

図7-11 EPNの印刷

「図7-11 EPNの印刷」の説明

7.2.7 構成のバッジング

図7-12に示すように、META-INF/wlevsディレクトリの1つの構成ファイルに構成情報が格納されているノードの右下にそのことを示すインジケータ付きのバッジが付けられます。

図7-12 構成のバッジング

「図7-12 構成のバッジング」の説明

このバッジがついたノードには、「構成のソースに移動」コンテキスト・メニュー項目もあります。

7.2.8 リンク指定場所のインジケータ

ストリームを使用している場合、アセンブリ・ファイルにリンクを次として指定できます:

- ダウンストリーム・ノードのソース要素。

- アップストリーム・ノードのリスナー要素。

線上の円は、アセンブリ・ファイルで特定のリンクが指定される場所を表します。

図7-13に示す例では、ダウンストリーム・ノードoutStream上にソース要素としてリンクが指定されているので、outStreamノードの横に円が表示されます。図7-14は、対応するアセンブリ・ファイルを示します。

図7-13 リンク・ソース

「図7-13 リンク・ソース」の説明

図7-14 リンク・ソースのアセンブリ・ファイル

「図7-14 リンク・ソースのアセンブリ・ファイル」の説明

図7-15に示す例では、リンクがアップストリーム・ノードalgoTradingProcessorでリスナー要素として指定されているので、円がalgoTradingProcessorノードの横に表示されます。図7-16は、対応するアセンブリ・ファイルを示します。

図7-15 リンク・リスナー

「図7-15 リンク・リスナー」の説明

図7-16 リンク・リスナーのアセンブリ・ファイル

「図7-16 リンク・リスナーのアセンブリ・ファイル」の説明

7.2.9 ネストされたステージ

親ノード内に子ノードを定義している場合、その子ノードはネストされているノードと言われます。親ノードのみが子ノードをリスナーとして指定できます。ネストされる要素から参照をドラッグできますが、それらの要素へ参照をドラッグできません。詳細は、7.4.2項「ノードの接続」を参照してください。

図7-17に示したEPNを参照してください。例7-1には、このEPNのEPNアセンブリ・ソースを示します。HelloWorldBeanはhelloworldOutputChannel内でネストされていることに注意してください。その結果、これはEPNダイアグラムのボックス内に表示されます。親helloworldOutputChannelのみが、ネストされたBeanをリスナーとして指定できます。

図7-17 ネストされるBeanを含むEPN

「図7-17 ネストされるBeanを含むEPN」の説明

例7-1 ネストされるBeanを含むEPNのアセンブリ・ソース

<wlevs:adapter id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>

<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" advertise="true">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

または、図7-18に示すように、すべてのノードがネストされるようにこのEPNを定義できます。例7-2には、このEPNのEPNアセンブリ・ソースを示します。すべてのノードがネストされているので、EPNダイアグラムではすべてのノードがボックス内に表示されます。helloworldAdapterは、最外部の親ノードであり、EPNダイアグラムではボックス内に表示されません。

図7-18 すべてのノードがネストされたEPN

「図7-18 すべてのノードがネストされたEPN」の説明

例7-2 すべてのノードがネストされたEPNのアセンブリ・ソース

<wlevs:adapter id="helloworldAdapter" class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
<wlevs:listener>
<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener>
<wlevs:processor id="helloworldProcessor">
<wlevs:listener>
<wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
</wlevs:channel>
</wlevs:listener>
</wlevs:processor>
</wlevs:listener>
</wlevs:channel>
</wlevs:listener>
</wlevs:adapter>

7.2.10 イベント・タイプ・リポジトリ・エディタ

イベント・タイプ・リポジトリ・エディタを使用して、JavaBeanおよびタプル・イベント・タイプを作成および編集できます。

イベント・タイプ・リポジトリ・エディタを開くには、図7-19に示されているように、EPNエディタで「 イベント・タイプ」タブをクリックします。

図7-19 イベント・タイプ・リポジトリ・エディタ

「図7-19 イベント・タイプ・リポジトリ・エディタ」の説明

詳細は、次を参照してください:

- 9.3.1.1項「イベント・タイプ・リポジトリ・エディタを使用して、JavaBeanとしてOracle Event Processingイベント・タイプを作成する方法」

- 9.3.2.2項「イベント・タイプ・リポジトリ・エディタを使用して、タプルとしてOracle Event Processingイベント・タイプを作成する方法」

作成できるイベントの他のタイプの詳細は、9.1項「Oracle Event Processingイベント・タイプの概要」を参照してください。

7.3 EPNエディタのナビゲート

EPNエディタでは、プロジェクト全体が表示されるので、EPNエディタからOracle Event Processingアプリケーションを構成する様々なアーティファクトにナビゲートできます。Oracle Event Processing IDE for Eclipseでは、EPNエディタをナビゲートするのに役立つ次の機能が用意されています。

- 7.3.1項「キャンバスの移動」

- 7.3.2項「コンポーネント構成およびEPNアセンブリ・ファイルへのショートカット」

- 7.3.3項「ハイパーリンク」

- 7.3.4項「コンテキスト・メニュー」

- 7.3.5項「Oracle Event Processingタイプの参照」

7.3.1 キャンバスの移動

水平スクロール・バーおよび垂直スクロール・バーを使用しないでEPNキャンバスを移動するには、次のいずれかのオプションを使用できます。

- キャンバス上にカーソルを置いて、マウスの中ボタンを押しながらマウスをドラッグします。

- 「Space」キーを押しながらキャンバスをクリックしてドラッグします。

- 「概要」ビューで、強調表示されるボックスをクリックしてドラッグします。

7.3.2 コンポーネント構成およびEPNアセンブリ・ファイルへのショートカット

ノードに関連付けられた構成オブジェクトがある場合、その「ノード」ノードをダブルクリックすると、ノードの動作が定義されているコンポーネント構成ファイルが開きます。

または、「ノード」をダブルクリックすると、そのノードが定義されるEPNアセンブリ・ファイル(Springコンテキスト・ファイル)が開きます。

図7-20に示すように、関連付けられた構成オブジェクトがあるノードの上に構成バッジが表示されます。

図7-20 構成バッジがついたノード

「図7-20 構成バッジがついたノード」の説明

詳細は、次を参照してください:

- 7.2.7項「構成のバッジング」

- 7.3.3項「ハイパーリンク」

7.3.3 ハイパーリンク

コンポーネント構成ファイル、EPNアセンブリ・ファイル、またはOracle CQL文を編集するときに、「Ctrl」キーを押してハイパーリンクを有効にします。ハイパーリンクを使用すると、アセンブリ・ファイルと構成ファイルの間を移動し、参照IDに従ってBeanの実装クラスに簡単に移動できます。

この項では次について説明します:

- 7.3.3.1項「コンポーネント構成およびEPNアセンブリ・ファイルでのハイパーリンク」

- 7.3.3.2項「Oracle CQL文でのハイパーリンク」

7.3.3.1 コンポーネント構成およびEPNアセンブリ・ファイルでのハイパーリンク

図7-21では、「Ctrl」キーを押しながらprocessor要素のname子要素の値の上にカーソルが置いてある構成ファイルを示します。name値にある下線は、ハイパーリンクであることを示します。図7-22に示すように、このリンクをクリックしてEPNアセンブリ・ファイルの対応する要素に移動します。

図7-21 コンポーネント構成ファイル: EPNアセンブリ・ファイルへのハイパーリンク

「図7-21 コンポーネント構成ファイル: EPNアセンブリ・ファイルへのハイパーリンク」の説明

同様に、「Ctrl」キーを押しながらwlevs:processor要素のid子要素の値filterFanoutProcessorにカーソルを合せると、コンポーネント構成ファイルへハイパーリンクが表示されます。

図7-22 EPNアセンブリ・ファイル: コンポーネント構成ファイルへのハイパーリンク

「図7-22 EPNアセンブリ・ファイル: コンポーネント構成ファイルへのハイパーリンク」の説明

7.3.3.2 Oracle CQL文でのハイパーリンク

図7-23では、「Ctrl」キーを押しながらイベント属性の上にカーソルが置いてある構成ファイルを示します。fromRate属性にある下線は、ハイパーリンクであることを示します。図7-24に示すように、このリンクをクリックしてEPNアセンブリ・ファイルの対応するイベント定義に移動します。

注意:

Oracle SQL文でのハイパーリンクは単純な使用を想定していて、より複雑な実装では期待したとおりに動作しない場合があります。

図7-23 Oracle CQL文: イベント・スキーマ

「図7-23 Oracle CQL文: イベント・スキーマ」の説明

図7-24 EPNアセンブリ・ファイルの対応するイベント定義

「図7-24 EPNアセンブリ・ファイルの対応するイベント定義」の説明

同様に、図7-23に示されているように、Oracle CQL文で[Ctrl]キーを押しながらFxQuoteStreamチャネルをクリックしてチャネルの定義に移動できます。これは、外部オブジェクトへの参照がOracle CQL文に存在する場合に有効です。

7.3.4 コンテキスト・メニュー

EPNエディタの各ノードには、ノード固有の機能に簡便にアクセスできるようにするコンテキスト・メニュー項目のグループがあります。「ノード」を右クリックして、そのコンテキスト・メニューを表示します。

ノード・タイプによっては、EPNエディタのコンテキスト・メニューを使用して次のオプションから選択できます。

- 「構成のソースに移動」: 対応するコンポーネント構成ファイルを開いて適切な要素にカーソルを置きます。ハイパーリンクを使用すると、このファイルから対応するEPNアセンブリ・ファイルに素早く移動できます。詳細は、7.3.3項「ハイパーリンク」を参照してください。

- 「アセンブリのソースに移動」: 対応するEPNアセンブリ・ファイルを開いて適切な要素にカーソルを置きます。ハイパーリンクを使用すると、このファイルから対応するコンポーネント構成ファイルに素早く移動できます。詳細は、7.3.3項「ハイパーリンク」を参照してください。

- 「Javaのソースに移動」: このコンポーネントに対応するJavaソース・ファイルを開きます。

- 「削除」: EPNアセンブリ・ファイルとコンポーネント構成ファイル(該当する場合)の両方からコンポーネントを削除します。

- 「名前の変更」: コンポーネントの名前を変更できるようにします。名前がEPNアセンブリ・ファイルとコンポーネント構成ファイル(該当する場合)の両方で更新されます。

- 「ヘルプ」: コンポーネントの文脈に応じたヘルプを表示します。

これらのナビゲーション・オプションは、対応するソース・アーティファクトが見つからない場合は無効になります。たとえば、構成XMLファイルに対応するエントリがないアダプタの場合は、そのアダプタのメニューの「構成のソースに移動」項目がグレー表示になります。

7.3.5 Oracle Event Processingタイプの参照

一般的なOracle Event Processingプロジェクトには、アダプタ、チャネル、プロセッサ、イベントBeanなど、Oracle Event Processingタイプの多くのインスタンスが含まれます。大規模で複雑なOracle Event Processingプロジェクトでは、特定のインスタンスを見つけるのが困難な場合があります。Oracle Event Processing IDE for Eclipseは、Oracle Event Processingタイプのインスタンスを迅速に検出するために使用できるOracle Event Processingタイプ・ブラウザを提供します。

7.3.5.1 Oracle Event Processingタイプの参照方法

キーボード・ショートカットCtrl-Alt-Tを使用して、Oracle Event Processingタイプ・ブラウザを開きます。

Oracle Event Processingタイプを参照するには:

1. Oracle Event Processingプロジェクトを開きます。
次の手順では、図7-25に示すOracle Event Processingプロジェクトを利用します。これは、Oracle Event ProcessingのForeign Exchange (FX)の例に基づくものです。この例の詳細は、2.8項「外国為替取引(FX)サンプル」を参照してください。

図7-25 Oracle Event Processing EPNの例

「図7-25 Oracle Event Processing EPNの例」の説明

2. キーボード・ショートカットCtrl-Alt-Tを入力します。
図7-26に示すようにOracle Event Processingタイプ・ブラウザが表示されます。

図7-26 Oracle Event Processingタイプ・ブラウザ

「図7-26 Oracle Event Processingタイプ・ブラウザ」の説明

3. 表7-1に示すように、Oracle Event Processingタイプダイアログを構成します。

表7-1 Oracle Event Processingタイプダイアログ

属性

説明

開くアイテムの選択

検索するアイテムの名前と一致するフィルタを指定します。

任意の一文字にはワイルドカード?、2文字以上の任意の文字列にはワイルドカード*を使用します。

一致するアイテム

指定したフィルタと一致する名前を持つOracle Event Processingタイプ・インスタンスのリスト。

デフォルトでは、「一致するアイテム」リストの下のステータスに、「開くアイテムの選択」リストで選択したアイテムへの完全修飾パスが表示されます。ステータス行の表示/非表示を切り替えるには、右端の角にあるプルダウン・メニューをクリックして「Show Status Line」を選択します。

4. 「一致するアイテム」リストでタイプを選択し、「OK OK」をクリックします。
タイプは、そのタイプが定義されたソース・ファイルで開かれます。たとえば、「一致するアイテム」リストからFilterAsiaを選択して「OK OK」をクリックすると、図7-27に示すようにこのプロセッサが定義されたEPNアセンブリ・ファイルcom.oracle.cep.sample.fx.content.xmlが開かれます。

図7-27 EPNアセンブリ・ファイルFilterAsiaを開く

「図7-27 EPNアセンブリ・ファイルFilterAsiaを開く」の説明

図7-28に示されているように、対応するコンポーネント構成ファイルへ移動するには、[Ctrl]キーを押しならがFilterAsiaのid属性値をクリックします。

図7-28 FilterAsiaコンポーネント構成ファイルを開く

「図7-28 FilterAsiaコンポーネント構成ファイルを開く」の説明

詳細は、7.2.3項「ハイパーリンク」を参照してください。

7.4 EPNエディタの使用

EPNエディタを使用すると、エディタの表面でアクションを使用してアプリケーションのEPNを作成および編集できます。EPNエディタで実行したほとんどのアクションによって、そのアプリケーションのアセンブリ・ファイルが編集されます。単一EPNアセンブリ・ファイルを使用するか、または複数のEPNアセンブリ・ファイルを使用できます(詳細は、7.2.2項「フィルタ処理」を参照)。

次の項では、EPNエディタの編集タスクについて説明します。次のタスクが含まれます。

- 7.4.1項「ノードの作成」

- 7.4.2項「ノードの接続」

- 7.4.3項「ノードのレイアウト」

- 7.4.4項「ノード名の変更」

- 7.4.5項「ノードの削除」

詳細は、次を参照してください:

- 5.1項「Oracle Event Processingプロジェクトの概要」

- 7.2項「EPNエディタの概要」

- 7.1項「EPNエディタを開く」

- 7.3項「EPNエディタのナビゲート」

7.4.1 ノードの作成

EPNエディタを使用してEPNに新しいノードを追加する場合、新規ノードは、EPNエディタでコンテキスト・メニューを表示するためにクリックした場所に表示されます。表7-2にリストされるノードのいずれかを作成できます。

表7-2 EPNエディタのアイコン

ノード

説明

「アダプタ」: イベント・データ・ソースとEPNの間のインタフェースとなる、またイベント・データ・シンクとEPNの間のインタフェースとなるノード。

詳細は、次を参照してください:

- 7.4.1.2項「アダプタ・ノードの作成方法」

- 第11章「Java Message Serviceの統合」

- 第12章「HTTPパブリッシュ・サブスクライブ・サーバーの統合」

- 第15章「カスタム・アダプタを使用した外部コンポーネントの統合」

- 第21章「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト」

「チャネル」: イベント・データ・ソースとイベント・データ・シンクの間にイベントを伝達するノードです。

詳細は、次を参照してください:

- 7.4.1.1項「基本ノードの作成方法」

- 第10章「チャネルを使用したEPNステージの接続」

「プロセッサ」: 1つ以上のチャネルによって提供されるイベント・データでOracle CQLルールまたはEPLルールを実行するノード。

詳細は、次を参照してください:

- 7.4.1.3項「プロセッサ・ノードの作成方法」

- 第17章「Oracle CQLでのイベント・ストリームの問合せ」

- 第19章「Oracle EPLでのイベント・ストリームの問合せ」

「イベントBean」: Oracle Event Processing管理フレームワークによって管理でき、Oracle Event Processingサーバー・コンテナの能力を積極的に使用できることを除いて標準のSpring Beanのようなノード。

詳細は、次を参照してください:

- 7.4.1.1項「基本ノードの作成方法」

- 第16章「Javaでのイベントの処理」

「Spring Bean」: イベントを使用するPlain Old Java Object (POJO)ノードです。BeanはSpringフレームワークで管理されます。

詳細は、次を参照してください:

- 7.4.1.1項「基本ノードの作成方法」

- 第16章「Javaでのイベントの処理」

「キャッシュ」: イベントを格納する一時記憶域を提供するノード。このノードは、Oracle Event Processingアプリケーションの全体的なパフォーマンスを改善することを目的として作成されます。

詳細は、次を参照してください:

- 7.4.1.1項「基本ノードの作成方法」

- 第13章「キャッシュの統合」

「表」: リレーショナル・データベース表をイベント・データ・ソースとしてEPNに接続するノード。

詳細は、次を参照してください:

- 7.4.1.1項「基本ノードの作成方法」

- 17.3項「Oracle CQLプロセッサ表ソースの構成」

ユーザーは、EPNエディタでノードを再配置できない場合があります。EPNエディタのノードのレイアウトをリフレッシュするには、EPNエディタ・ツールバーの「EPNのレイアウト」ボタンをクリックします。詳細は、7.4.3項「ノードのレイアウト」を参照してください。

子ノードが親ノード内にネストされている場合、そのアイコンがボックス内に表示されます。詳細は、7.2.9項「ネストされたステージ」を参照してください。

7.4.1.1 基本ノードの作成方法

基本ノードには、Bean、キャッシュ、チャネル、イベントBeanおよび表が含まれます。

その他のノードの作成方法は、7.4.1項「ノードの作成」を参照してください。

基本ノードを作成するには:

1. EPNエディタを開きます(7.1項「EPNエディタを開く」を参照)。

2. 図7-29に示すように、EPNエディタの表面の空の部分を右クリックして、コンテキスト・メニューから「新規」を選択します。

図7-29 基本ノードの作成

「図7-29 基本ノードの作成」の説明

3. 作成するノードのタイプを選択します。
EPNエディタでは、EPNエディタのフィルタに示されるソース・ファイルを編集し、新規EPNノードを表示します。ほとんどのノードの場合は、図7-30に示すように、デフォルトのIDが使用され、名前を変更するように新規ノードがすぐに開かれます。

図7-30 新規基本ノード

「図7-30 新規基本ノード」の説明

ノード名を変更するには、7.4.4項「ノード名の変更」を参照してください。

ノードを再配置して、EPNエディタのレイアウトを更新するには、7.4.3項「ノードのレイアウト」を参照してください。

4. オプションで、追加のノード・オプションを構成します。
参照:

- 第10章「チャネルを使用したEPNステージの接続」

- 17.3項「Oracle CQLプロセッサ表ソースの構成」

- 第13章「キャッシュの統合」

- 第15章「カスタム・アダプタを使用した外部コンポーネントの統合」

- 第16章「Javaでのイベントの処理」

- 第21章「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト」

7.4.1.2 アダプタ・ノードの作成方法

この項では、次に示すEPNエディタを使用してアダプタを作成する方法について説明します。

- JMSアダプタ(インバウンドまたはアウトバウンド)

- HTTPパブリッシュ・サブスクライブ・サーバー・アダプタ(パブリッシュまたはサブスクライブ)

その他のノードの作成方法は、7.4.1項「ノードの作成」を参照してください。

アダプタ・ノードを作成する手順は次のとおりです。

1. EPNエディタを開きます(7.1項「EPNエディタを開く」を参照)。

2. 図7-31に示すように、EPNエディタの表面の空の部分を右クリックして、コンテキスト・メニューから「新規」を選択します。

図7-31 アダプタ・ノードの作成

「図7-31 アダプタ・ノードの作成」の説明

3. ノード・タイプ「アダプタ」を選択します。
図7-32に示すように、新規アダプタ・ウィザードが表示されます。

図7-32 新規アダプタ・ウィザード

「図7-32 新規アダプタ・ウィザード」の説明

4. 表7-3に示すように、新規アダプタ・ウィザードのページ1を構成します。

表7-3 新規アダプタ・ウィザードのページ1

属性

説明

アダプタID

アダプタのEPN要素のIDおよび関連付けられるアダプタ構成要素の名前を指定します。

プロバイダ

アダプタのプルダウン・メニューから、Oracle Event Processingコンポーネント構成スキーマですでに定義されているアダプタ・プロバイダ・タイプを選択します。

次の中から1つ選択します。

- jms-inbound: JMSインバウンド・アダプタ。

- jms-outbound: JMSアウトバウンド・アダプタ。

- httppub: パブリッシュ用のHTTPパブリッシュ・サブスクライブ・アダプタ。

- httpsub: サブスクライブ用のHTTPパブリッシュ・サブスクライブ・アダプタ。

クラス

カスタム・アダプタの完全修飾のJavaクラス名を指定します。

注意: カスタム・アダプタ・ファクトリを使用している場合は、手動でwlevs:factory要素を追加する必要があります。詳細は、第15章「カスタム・アダプタを使用した外部コンポーネントの統合」を参照してください。

新規ファイルの作成

新しいファイルにアダプタ・コンポーネント構成を作成します。

アプリケーションのMETA-INF/wlevsディレクトリにアダプタIDと同じ名前の新規ファイルが作成されます。

既存の構成ファイルの使用

既存の構成ファイルにアダプタ・コンポーネント構成を作成します。

新規アダプタ要素が選択したファイルの構成に追加されます。

5. 次に示すようにアダプタの実装をどのように構成したかに応じて進む先が異なります。

1. 「クラス」を選択した場合は、ステップ8に進みます。

2. 「プロバイダ」を選択した場合は、ステップ6に進みます。

6. 「次へ」をクリックします。

プロバイダ固有の新規アダプタ・ウィザードが表示されます。

7. 次の図に示すように、プロバイダ固有の新規アダプタ・ウィザードを構成します。

- 図7-33「新規アダプタ・ウィザード - jms-inbound」
11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」を参照してください。

- 図7-34「新規アダプタ・ウィザード - jms-outbound」
11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」を参照してください。

- 図7-35「新規アダプタ・ウィザード - httppub」
12.5.1項「パブリッシュ用のHTTP Pub-Subアダプタのコンポーネント構成」を参照してください。

- 図7-36「新規アダプタ・ウィザード - httpsub」
12.5.2項「サブスクライブ用のHTTP Pub-Subアダプタのコンポーネント構成」を参照してください。

図7-33 新規アダプタ・ウィザード - jms-inbound

「図7-33 新規アダプタ・ウィザード - jms-inbound」の説明

図7-34 新規アダプタ・ウィザード - jms-outbound

「図7-34 新規アダプタ・ウィザード - jms-outbound」の説明

図7-35 新規アダプタ・ウィザード - httppub

「図7-35 新規アダプタ・ウィザード - httppub」の説明

図7-36 新規アダプタ・ウィザード - httpsub

「図7-36 新規アダプタ・ウィザード - httpsub」の説明

8. 「終了」をクリックします。

9. EPNで新しいアダプタ・ノードを使用します。

EPNエディタでは、新規アダプタ・ウィザードで指定したファイルにアダプタ構成を作成し、エディタのフィルタで示されているソース・ファイルを編集して、図7-37に示すように新規EPNノードを表示します。

図7-37 新規アダプタ・ノード

「図7-37 新規アダプタ・ノード」の説明

ノード名を変更するには、7.4.4項「ノード名の変更」を参照してください。

ノードを再配置して、EPNエディタのレイアウトを更新するには、7.4.3項「ノードのレイアウト」を参照してください。

10. オプションで、追加のノード・オプションを構成します。

詳細は、次を参照してください:

- 第11章「Java Message Serviceの統合」

- 第12章「HTTPパブリッシュ・サブスクライブ・サーバーの統合」

7.4.1.3 プロセッサ・ノードの作成方法

この項では、EPNエディタを使用してプロセッサ・ノードを作成する方法について説明します。他のタイプのノードの作成の詳細は、7.4.1.1項「基本ノードの作成方法」を参照してください。

wlevs:processorノードを使用してOracle Event Processingアプリケーションをデプロイする場合、プロセッサ構成が存在する場合のみEPNの他のノードがそのプロセッサを参照できます。プロセッサ構成は、Oracle Event Processingアプリケーション構成ファイルで定義されます。Oracle Event Processing構成ファイルの詳細は、1.4.2項「コンポーネント構成ファイルの概要」を参照してください。

プロセッサ・ノードを作成するには:

1. EPNエディタを開きます(7.1項「EPNエディタを開く」を参照)。

2. 図7-38に示すように、EPNエディタの表面の空の部分を右クリックして、コンテキスト・メニューから「新規」を選択します。

図7-38 プロセッサ・ノードの作成

「図7-38 プロセッサ・ノードの作成」の説明

3. ノード・タイプとして「プロセッサ」を選択します。
図7-39に示すように、「新規プロセッサ」ダイアログが表示されます。

図7-39「新規プロセッサ」ダイアログ

「図7-39 「新規プロセッサ」ダイアログ」の説明

4. 表7-4の説明に従って、「新規プロセッサ」ダイアログを構成します。

表7-4 「新規プロセッサ」ダイアログ

属性

説明

プロセッサID

プロセッサのEPN要素のIDおよび関連付けられるプロセッサ構成要素の名前を指定します。

新規ファイルの作成

新規ファイルにプロセッサ構成を作成します。

アプリケーションのMETA-INF/wlevsディレクトリにプロセッサIDと同じ名前の新規ファイルが作成されます。

既存の構成ファイルの使用

既存の構成ファイルにプロセッサ構成を作成します。

新規プロセッサ要素が選択したファイルの構成に追加されます。

5. 「OK」をクリックします。
EPNエディタでは、「新規プロセッサ」ダイアログで指定したファイルにプロセッサ構成を作成し、エディタのフィルタで示されているソース・ファイルを編集して、図7-40に示すように新規EPNノードを表示します。

図7-40 新規プロセッサ・ノード

「図7-40 新規プロセッサ・ノード」の説明

ノード名を変更するには、7.4.4項「ノード名の変更」を参照してください。

ノードを再配置して、EPNエディタのレイアウトを更新するには、7.4.3項「ノードのレイアウト」を参照してください。

注意:

Oracle Event Processingでは、プッシュ・イベント・ソースをOracle CQLプロセッサに接続して、Oracle CQLプロセッサをイベント・シンクに接続するためにチャネルを使用する必要があります。詳細は、10.1.2項「ストリームおよびリレーションを表すチャネル」を参照してください。

6. オプションで、追加のプロセッサ・オプションを構成します。
参照:

- 第17章「Oracle CQLでのイベント・ストリームの問合せ」

- 第19章「Oracle EPLでのイベント・ストリームの問合せ」

7.4.2 ノードの接続

EPNのノードは、Oracle Event Processingアプリケーションのイベント処理ネットワークを介したイベントのフローを表します。ノードがEPNの他のノードにイベントを転送する可能性がある場合、EPNエディタではソース・ノードから宛先ノードへ線を引くことで、そのノードを視覚的に接続できます。

7.4.2.1 ノードを接続する方法

この項では、EPNエディタにおいてノードを接続する方法を説明します。

ノードを接続するには:

1. EPNエディタを開きます(7.1項「EPNエディタを開く」を参照)。

2. イベントのソースを選択して、イベント・フローのターゲットにドラッグします。

- 接続が許可されている場合、図7-41に示すように、ターゲットの最後にプラグ・アイコンが表示されます。

図7-41 ノードの接続: 接続可能

「図7-41 ノードの接続: 接続可能」の説明

- 接続が許可されていない場合、図7-42に示すように、ターゲットの最後に禁止アイコンが表示されます。

図7-42 ノードの接続: 接続禁止

「図7-42 ノードの接続: 接続禁止」の説明

すべてのノードがイベント・フローのターゲットになるとはかぎりません。たとえば、次の場合は接続が禁止されます:

- ノードが有効な識別子を定義していません。

- ノードがネストされています(詳細は、7.2.9項「ネストされたステージ」を参照)。

3. 接続を完了するには、マウスのボタンを解放します。
接続の作成時には、EPNエディタによってEPNアセンブリ・ファイルが更新されます。例:

- アダプタをチャネルに接続するか、またはチャネルをプロセッサやイベントBeanに接続する場合、EPNエディタでは、ターゲット・ノードのIDを参照してソース・ノードにwlevs:listener要素が追加されます。

- 表をプロセッサに接続する場合、EPNエディタでは、ソース表を参照するターゲット・プロセッサ・ノードにwlevs:table-source要素が追加されます。

たとえば、図7-43に示すように、アダプタをチャネルに接続して、チャネルをプロセッサに接続する場合を仮定します。

図7-43 有効な接続

「図7-43 有効な接続」の説明

図7-44では、接続前のEPNアセンブリ・ファイルを示します。

図7-44 EPNアセンブリ・ファイル: 接続前

「図7-44 EPNアセンブリ・ファイル: 接続前」の説明

図7-45では、接続後のEPNアセンブリ・ファイルを示します。

図7-45 EPNアセンブリ・ファイル: 接続後

「図7-45 EPNアセンブリ・ファイル: 接続後」の説明

7.4.3 ノードのレイアウト

EPNエディタのいくつかのアクションでは、アクションの同じ場所に結果が表示されます。たとえば、EPNエディタを使用してEPNに新規ノードを追加する場合、新規ノードは、EPNエディタでコンテキスト・メニューを表示するためにクリックした場所に表示されます。ユーザーは、EPNエディタでノードを再配置できない場合があります。EPNエディタで、ノードのレイアウトをリフレッシュするには、図7-46に示すように、EPNエディタ・ツールバーの「EPNのレイアウト」ボタンをクリックします。

図7-46 ノードのレイアウト

「図7-46 ノードのレイアウト」の説明

詳細は、7.2.4項「レイアウト」を参照してください。

7.4.4 ノード名の変更

ほとんどのノード・タイプでは、名前の変更操作がサポートされます。この操作では、アセンブリと構成XMLファイルの両方においてノードへの参照がすべて変更されます。図7-47に示すように、ノードのコンテキスト・メニューから「名前の変更」を選択します。

図7-47 ノード名の変更

「図7-47 ノード名の変更」の説明

7.4.5 ノードの削除

ノードのコンテキスト・メニューを使用するか、または「削除」キーを使用して、EPNエディタに表示されるほとんどのノードと接続を削除できます。

- キーボードを使用して削除するオブジェクトを選択して、「削除」キーを押します。

- コンテキスト・メニューを使用する場合は、図7-48に示すように、オブジェクトを右クリックしてコンテキスト・メニューを表示してから「削除」を選択します。

図7-48 ノードの削除

「図7-48 ノードの削除」の説明

ノードを削除すると、着信接続および送信接続も削除されます。たとえば、図7-49および図7-51は、それぞれstreamという名前のチャネル・ノードを削除する前のEPNおよびアセンブリ・ファイルを示します。

図7-49 チャネル・ノードの削除前のEPN

「図7-49 チャネル・ノードの削除前のEPN」の説明

図7-50 チャネル・ノードの削除前のアセンブリ・ファイル

「図7-50 チャネル・ノードの削除前のアセンブリ・ファイル」の説明

図7-51では、このチャネル・ノードの削除後のEPNを示し、図7-52では、チャネル・ノードの削除後のアセンブリ・ファイルを示します。

図7-51 チャネル・ノードの削除後のEPN

「図7-51 チャネル・ノードの削除後のEPN」の説明

図7-52 チャネル・ノードの削除後のアセンブリ・ファイル

「図7-52 チャネル・ノードの削除後のアセンブリ・ファイル」の説明

注意:

beanまたは他の匿名要素を削除すると、そのオブジェクトを含むオブジェクトも削除されます。たとえば、beanがwlevs:listener要素内にある場合、beanを削除すると、listener要素も削除されます。

第3部

Oracle Event Processingアプリケーションの開発

第3部の章の内容は次のとおりです。

- 第8章「ウォークスルー: 単純なアプリケーションのアセンブル」

- 第9章「イベント・タイプの定義および使用」

- 第10章「チャネルを使用したEPNステージの接続」

- 第11章「Java Message Serviceの統合」

- 第12章「HTTPパブリッシュ・サブスクライブ・サーバーの統合」

- 第13章「キャッシュの統合」

- 第14章「Webサービスの統合」

- 第15章「カスタム・アダプタを使用した外部コンポーネントの統合」

- 第16章「Javaでのイベントの処理」

- 第17章「Oracle CQLでのイベント・ストリームの問合せ」

- 第18章「データ・カートリッジでアプリケーションの構成」

- 第19章「Oracle EPLでのイベント・ストリームの問合せ」

- 第20章「イベント・レコードと再生の構成」

- 第21章「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト」

- 第22章「イベント・インスペクタでのアプリケーションのテスト」

8 ウォークスルー: 単純なアプリケーションのアセンブル

この章では、単純なアプリケーションを作成するウォークスルーを使用したOracle Event Processingアプリケーションの作成方法について説明します。途中で、主要な概念の概要を示します。

この章の内容は次のとおりです。

- 8.1項「単純なアプリケーションのウォークスルーの概要」

- 8.2項「ワークスペースおよびプロジェクトの作成」

- 8.3項「イベント・データを移動するイベント・タイプの作成」

- 8.4項「イベント・データを受信する入力アダプタの追加」

- 8.5項「イベントを伝達するチャネルの追加」

- 8.6項「イベントを受信およびレポートするリスナーの作成」

- 8.7項「ロード・ジェネレータの設定およびテスト」

- 8.8項「イベントをフィルタ処理するOracle CQLプロセッサの追加」

- 8.9項「サマリー: 単純なアプリケーションのウォークスルー」

8.1 単純なアプリケーションのウォークスルーの概要

このウォークスルーは、Eclipse IDEを使用してOracle Event Processingアプリケーションを作成する基本について説明します。主要なOracle Event Processing概念の調査を目的とし、それぞれ詳細に調査できる出発点となります。

このウォークスルーで作成するアプリケーションは、単純な株式取引アラート・システムをモデル化します。アプリケーションは、株式取引のデータのサンプルを受信し、特定の特性のデータを調査し、一部のデータをコンソールに出力します。次の図は、アプリケーションの終了したEPNダイアグラムを示します。

図tradereport_finishedepn.pngの説明

ここでは、次の内容について説明します。

- 8.1.1項「このウォークスルーの主要な概念」

- 8.1.2項「開始する前に」

このウォークスルーは、8.2項「ワークスペースおよびプロジェクトの作成」で開始します。

8.1.1 このウォークスルーの主要な概念

このウォークスルーでは、通常作成するOracle Event Processingアプリケーションの一部である次の概念について説明します。

- プロジェクト・タイプ、イベント処理ネットワークを設計するグラフィカル・エディタおよびプロジェクト固有の構成ファイルの検証サポートを含む、Oracle Event Processingアプリケーションの作成を容易にするよう設計されたIDE機能。

- イベント処理ネットワーク(EPN)としてのアプリケーションの作成、アプリケーションを通過する場合にストリーミング・データを受信し、そのデータを操作するアプリケーションの動作をモデル化するコア設計構築。

- イベントをモデル化するイベント・タイプの設計、アプリケーション内のコードとともに使用するイベント・データの正規化。

- アダプタを使用したストリーミング・データのソースを含む外部コンポーネントとのやり取りの管理。

- イベント処理ネットワーク内のイベントを送受信できるJavaクラスの実装。

- Oracle Continuous Query Language (Oracle CQL)を使用したイベント内の特定のプロパティに基づいたイベントのフィルタ処理。

8.1.2 開始する前に

Oracle Event ProcessingおよびEclipse IDEをインストールする必要があります。また、Oracle Event Processingに付属するプラグインとともにEclipse IDEを更新する必要があります。

Oracle Event Processingに固有の機能を説明しますが、このウォークスルーは基本的なJavaプログラミングを理解していることを前提とします。

詳細については、次のトピックを参照してください。

- 『Oracle Fusion Middleware Oracle Event Processingスタート・ガイド』のインストール概要に関する項

- 4.1項「Oracle Event Processing IDE for Eclipseの概要」

8.2 ワークスペースおよびプロジェクトの作成

この最初の手順では、IDEを使用してアプリケーションを開発するワークスペースおよびプロジェクトを作成します。Oracle Event Processingアプリケーションの開発を容易にするため、IDEはOracle Event Processingアプリケーション・プロジェクト・タイプを提供します。このプロジェクト・タイプには、アプリケーション固有のコードの書込みを容易にする通常のOracle Event Processingアプリケーションで必要なアーティファクトおよび依存性が含まれます。

Oracle Event Processingサーバーを実行するベスト・プラクティスの選択肢であるJRockit JREの場所を認識するためにIDEプリファレンスをすでに構成している必要があります。

ウォークスルー・ワークスペースおよびTradeReportプロジェクトの作成

1. Eclipse IDEを起動します。

2. ワークスペースを選択するプロンプトが表示されたら、walkthroughsと呼ばれるワークスペースを作成します。

3. 「ファイル」メニューから、「新規」>「プロジェクト」を選択して、新しいプロジェクトの作成を開始します。

4. 「新規プロジェクト」ダイアログで、Oracle Event Processingを展開し、Oracle Event Processingアプリケーション・プロジェクト、「次」の順にクリックします。
図newproject_oep.pngの説明

5. 新規Oracle Event Processingアプリケーション・プロジェクト・ダイアログの「プロジェクト名」ボックスで、TradeReportを入力します。
「デフォルトのロケーションを使用」チェック・ボックスを選択したままにして、作成したワークスペースの場所に新しいプロジェクトを作成します。

6. 「ターゲット・ランタイム」で、ランタイムがドロップダウンに表示されない場合は、次の手順を実行します。

1. 「新規」ボタンをクリックします。

2. 新しいサーバー・ランタイム環境ダイアログで、「Oracle」を展開し、Oracle Event Processing v11.1を選択して、「次」をクリックします。

3. 「次へ」をクリックします。

4. 新しいOracle Event Processing v11.1ランタイムで、「Oracle Middlewareホーム・ディレクトリ」ボックスの横にある「参照」をクリックします。

5. フォルダの参照ダイアログで、Middlewareホーム・ディレクトリを特定して、「OK」をクリックします。
デフォルトでは、Middlewareホーム・ディレクトリはORACLE_HOME/Middlewareにあります。

6. JREドロップダウンで、JRockit JREを選択します。
Oracle Event Processingサーバーは、JRockit JREとともに使用するために最適化されます。リストからJRockit JREを使用できない場合、次の手順を使用してOracle Event Processingに付属するJREを特定します。

1. インストールされているJREのプリファレンスリンクをクリックします。

2. 「プリファレンス」ダイアログで、インストールされているJREリストの横にある「追加」ボタンをクリックします。

3. JREの追加ダイアログで、インストールされたJREタイプの下の標準VMを選択して、「次」をクリックします。

4. JREホームボックスの横にある「ディレクトリ」ボタンをクリックして、JRockit JREの場所を参照します。

5. フォルダの参照ダイアログで、Middlewareホーム・ディレクトリ、jrockit_160_29ディレクトリの順に展開し、JREディレクトリ、「OK」の順にクリックします。

6. JREの追加ダイアログがJREホーム・ディレクトリ、名前およびシステム・ライブラリを表示した後、ダイアログの「終了」ボタンをクリックします。
図tradereport_jredef.pngの説明

7. 「プリファレンス」ダイアログで、追加したJREのチェック・ボックスを選択して、「OK」をクリックします。

8. JREドロップダウンから新しいサーバー・ランタイム環境ダイアログで、追加したJREを選択します。

7. 「終了」をクリックします。

7. 新規Oracle Event Processingアプリケーション・プロジェクトダイアログで、Oracle Event Processing v11.1ターゲット・ランタイムを選択したままにして、「次」をクリックします。

8. Oracle Event Processingアプリケーションのコンテンツで、作成するプロジェクトのプロパティを確認します。
図tradereport_bundleprop.pngの説明

9. 「終了」をクリックします。

プロジェクトを作成した後、IDEは、作成するイベント処理ネットワークの空のエディタとともにプロジェクトのアーティファクトの階層リストを含むプロジェクト・エクスプローラを表示します。

イベント処理ネットワーク(EPN)は、Oracle Event Processingアプリケーションの中心の設計上の概念です。EPNは、ステージ間でイベントを移動するパスとともに、アプリケーションを構成するステージと呼ばれるコンポーネントを表します。アプリケーションを開発する場合、EPNエディタは追加するステージおよびステージ間の接続を表示します。概念的に、イベント・データは左側からアプリケーションに届き、右側にステージ間を移動します。

EPNエディタで示す設計は、EPNの基礎となる構成のグラフィカル表現です。EPNエディタを介してステージまたは接続を追加する場合、IDEは、構成XMLを基礎となるアセンブリ・ファイルに書き込みます(XMLファイルを直接編集してEPNエディタのグラフィカル設計が更新されるのと同様)。EPNアセンブリ・ファイルには、各EPNステージのデフォルト構成が含まれます。これは、アプリケーションを再デプロイすることなく実行時にサーバーで変更できないデフォルト構成です。実行時に編集できる構成では、後で示すように別の種類の構成ファイルを使用できます。

注意:

EPNアセンブリ・ファイルのXMLスキーマは、Springフレームワーク構成ファイルの拡張です。Springの詳細は、Spring Webサイトを参照してください。

プロジェクト・エクスプローラを確認してください。次の図に示されているようなプロジェクト階層があります。

図tradereport_projexp.pngの説明

IDEを使用したことがある場合は、このほとんどの内容を理解できます。Javaソース・コード、JREシステム・ライブラリおよび作成出力の通常の場所以外に、次も確認します。

- Oracle Event Processingクラスパスを構成するJARファイル。これらは、イベント処理ネットワーク、Spring構成コンポーネントおよびロギングのステージを含むOracle Event Processingサーバーに必要な機能を提供します。

- Springフレームワークに準拠する構成ファイルのspringディレクトリ(Springの詳細は、Spring Webサイトを参照)。開始するファイルは、作成するイベント処理ネットワークの内容および構造を示すEPNアセンブリXMLファイルです。EPNを作成する場合、ステージを追加および接続して、IDEはこのファイルで処理を取得します。ファイルを手動で編集することもできます。この時点で、ファイルでは、追加されるXMLのネームスペースを宣言するだけです。

- 構成を実行時に編集できるコンポーネントを示すファイルのwlevsディレクトリ。ほとんどのコンポーネントは、wlevsディレクトリのコンポーネント構成ファイル内でオーバーライドできるデフォルト構成を持ちます。構成をこれらのファイルのいずれかに配置する必要があるコンポーネントはプロセッサのみです。プロセッサのOracle CQLコードは、Oracle Event Processing Visualizerを使用して実行時に編集できます。
複数のコンポーネントを構成する場合、1つまたは複数のコンポーネント構成ファイルを使用できます。たとえば、それぞれが異なるコンポーネントを管理する開発者のチームの場合、ソース制御の競合を回避するためにコンポーネントごとに構成ファイルを持つことができます。

プロジェクトを作成したので、8.3項「イベント・データを移動するイベント・タイプの作成」で、イベント処理ネットワークのアセンブルを開始します。アプリケーションのロジックの着信イベント・データを表すイベント・タイプの作成を開始します。

8.3 イベント・データを移動するイベント・タイプの作成

Oracle Event Processingアプリケーションは、イベントを受信、処理および送信します。イベントは、ほぼすべての構造化された形式になる可能性があるイベント・データとして開始します。イベント・データはraw形式でアプリケーションに到着し、定義するイベント・タイプにバインドされます。固有のイベント・タイプを使用すると、Oracle CQL問合せ、Javaコードなどを含むアプリケーションの残りのコードのデータの処理を予測できます。(変換はアダプタによって実行されます。詳細は後で説明します。)

そのため、イベント処理ネットワークを定義する早期タスクは、ソースからのデータの構造を明確にし、EPN内で使用するためにデータを変換する形式を定義します。この項では、株式取引データの例の構造から処理してデータがバインドされるイベント・タイプを定義します。

ここで作成するアプリケーションの場合、サンプルの着信イベント・データはカンマ区切り値の行として到着します。各行には、発生した特定の対象(ここでは株式取引)のデータが含まれます。値の構造は行ごとに一貫性があります。いくつかの行の例を次に示します。

IBM,15.5,3.333333333,3000,15
SUN,10.8,-1.818181818,5000,11
ORCL,14.1,0.714285714,6000,14
GOOG,30,-6.25,4000,32
YHOO,7.8,-2.5,1000,8

CSVファイルでラベル付けされていませんが、次のように値をラベル付けできます。

stock symbol, price, percentage change, volume of shares purchased, last price

着信取引イベント・データの構造です。アプリケーションのデータを処理する(問合せ、フィルタ処理、計算など)には、データをそれらの機能の実行をサポートする新しい構造に割り当てる必要があります。特に、新しい構造は、特定のタイプのプロパティを指定する機能を持ちます。タイプが予測される値と一致すると、コードの値の処理が容易になります。

データおよびラベルの例を確認すると、次のJavaタイプのプロパティにバインドされる各行の各値を想定できます。

String、Double、Double、Integer、Double

Oracle Event Processingは、新しいイベント・タイプのベースにできるいくつかの形式をサポートします。これらには、JavaBeanクラス、タプルおよびjava.util.Mapインスタンスが含まれます。JavaBeanクラスは新しいイベント・タイプのベスト・プラクティス・タイプなので、ここで取引イベントのために使用します。

使用したことがない場合、JavaBeansが予測できるように設計された特定の標準ルールに従うJavaクラスであることがわかります。通常、クラスに対して内部にデータ(取引イベントの銘柄記号など)を保持する変数およびデータをクラスの外側のコードで取得または設定できるメソッドを提供します。"setSymbol"や"getSymbol"などの予測できる名前でメソッドに名前を付けると、クラスの外側のコードにクラスの内側のデータを使用する予測可能な方法を提供します。たとえば、Oracle Event Processingで着信イベント・データをイベント・タイプにバインドする必要がある場合、イベント・タイプJavaBeanの新しいインスタンスを作成し、Beanの"set"メソッドを使用してクラスの内側の適切な場所のデータを設定します。書き込む予定のJavaコードやOracle CQLコードなどのアプリケーションの後のコードは、Beanの"get"メソッドを呼び出して再度データを抽出できます。

次の項では、イベント・タイプの背後にあるコードとしてJavaBeanを作成し、イベント・タイプを構成してJavaBeanを使用します。

TradeEvent JavaBeanの作成

この項では、着信取引イベント・データのイベント・タイプとして使用されるTradeEvent JavaBeanクラスを作成します。

1. IDEで、srcディレクトリを右クリックして、「新規」>「クラス」をクリックします。

2. 新規Javaクラスダイアログの「パッケージ」ボックスで、com.oracle.oep.example.tradereportを入力します。

3. 「名前」ボックスで、TradeEventを入力します。
図tradereport_tradeevt.pngの説明

4. 「終了」をクリックします。
TradeEventクラスの宣言とともにTradeEvent.javaソース・コード・ウィンドウが表示されます。

5. TradeEventクラスのTradeEventクラス宣言の下で、次の例に示すように必要な各プロパティのプライベート変数を追加します。

public class TradeEvent {
// One variable for each field in the event data.
private String symbol;
private Double price;
private Double lastPrice;
private Double percChange;
private Integer volume;
}

6. すべての変数のコードを選択して、「ソース」メニューをクリックして、ゲッターおよびセッターの生成をクリックします。
図tradereport_genaccess.pngの説明

7. ゲッターおよびセッターの生成ダイアログで、選択した各変数のチェック・ボックス(つまり、すべて)を選択します。

8. 挿入ポイントドロップダウンで、最後のメンバーを選択します。
図tradereport_gendialog.pngの説明

9. 「OK」をクリックします。
TradeEventソース・コード・ウィンドウで、追加した変数の値を取得または設定するメソッドのペアを作成したことを確認します。

10. TradeEvent.javaファイルを保存して、コード・ウィンドウを閉じます。

これで、JavaBeanの作成は完了です(少なくともこの場合)。次の手順は、JavaBeanをイベント・タイプとして使用することをアプリケーションに通知します。

TradeEventイベント・タイプの構成

この項では、TradeEvent JavaBeanをイベント・タイプとして使用することをTradeReportアプリケーションに通知します。

1. IDEで、空のTradeReport EPNエディタが開いていることを確認します。ウィンドウの上部にあるタブには、EPN: TradeReportが表示されます。

2. デザイナ・ウィンドウの下で、「イベント・タイプ」タブをクリックします。

3. 「イベント・タイプの定義」で、TradeReport.context.xmlを選択します。これがEPN設計の基礎となるEPNアセンブリ・ファイルです。
これは、プロジェクト・エクスプローラのMETA-INF/springディレクトリで確認したファイルでもあります。構成するイベント・タイプがそのファイルで定義されていることを確認するため、ここで選択します。

4. 「イベント・タイプの定義」で、プラス記号をクリックして新しいイベント定義を追加します。

5. 作成されたnewEventエントリをクリックします。

6. 「イベント・タイプの詳細」の「タイプ名」ボックスで、イベント・タイプ名をTradeEventに変更します。(JavaBeanクラスと同じにする必要はありませんが、同じ名前を使用するとわかりやすくなります。)

7. 「Java Beanで定義されたプロパティ」オプションを選択します。他のオプションは、タプルとしてイベントを定義するために使用されます。

8. 「クラス」ボックスで、作成したJavaBeanクラスの名前のcom.oracle.oep.example.tradereport.TradeEventを入力します。
図tradereport_eventdef.pngの説明

9. イベント・タイプ定義で更新されたイベント・タイプ名を持つファイルを保存します。

EPNアセンブリ・ファイルに追加した内容に関心がある場合は、ファイルを開きます。「TradeReport」>「META-INF」>「spring」>「TradeReport.context.xml」のプロジェクト・エクスプローラにあります。追加した部分は、次のように表示されます(エディタ・ウィンドウの下にある「ソース」タブをクリックする必要がある場合があります)。

<wlevs:event-type-repository>
<wlevs:event-type type-name="TradeEvent">
<wlevs:class>com.oracle.oep.example.tradereport.TradeEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

コードが示すように、Oracle Event Processingはイベント・タイプ・リポジトリでイベント・タイプを管理します。定義したTradeEventイベント・タイプは、作成したTradeEvent JavaBeanクラスにマップされます。

イベント・タイプを定義および構成したので、アプリケーションに着信イベント・データの監視方法を通知する必要があります。データを作成したTradeEventタイプに割り当てることを指定する必要もあります。8.4項「イベント・データを受信する入力アダプタの追加」で追加するアダプタを使用して、これらの処理を実行します。

8.4 イベント・データを受信する入力アダプタの追加

作成するイベント処理ネットワークを試行する前に、イベント・データが通過する方法を作成する必要があります。Oracle Event Processingアプリケーションで、アダプタは、外部コンポーネント間のトラフィックおよびイベント処理ネットワークの間隔を管理します。外部ソースから到着するイベント・データはアダプタを介してアプリケーションに届き、外部コンポーネントまたはアプリケーションに移動する途中でアプリケーションを離れるイベント・データはアダプタを介して終了します。デフォルトでは、Oracle Event Processingには、3つの異なる種類の外部コンポーネント(Java Message Service (JMS)宛先、HTTPパブリッシュ・サブスクライブ・サーバーおよびCSVファイル)のアダプタが含まれます。

csvgenと呼ばれるCSVファイルのアダプタは、開発段階のコードで試行する場合に役立ちます。より充実した実際のイベント・データ・ソース用のアダプタを定義するタスクの軽量の選択肢です。固有のアプリケーションで、EPNを開始してロジックの一部を定義するまで、csvgenアダプタが使いやすい場合があります。

csvgenアダプタのロジックは、CSVファイルから読み取られるイベント・データを定義したイベント・タイプに変換する方法を認識します。Oracle Event Processingに付属するロード・ジェネレータ・ユーティリティと組み合せてcsvgenアダプタを使用します(ロード・ジェネレータの詳細は、このウォークスルーの後半で説明します)。csvgenアダプタの実装コードはOracle Event Processingにデフォルトで含まれるため、実行する必要がある手順は、構成コードを追加してEPNのステージとしてアダプタを宣言し、いくつかのプロパティを設定するだけです。

コードを追加したCSVアダプタの構成

この項では、イベント処理ネットワークのCSVアダプタの場所を作成する構成コードを追加します。コードを使用して、アダプタのランタイム動作を構成するために必要ないくつかのアダプタ・プロパティも設定します。アダプタがEPNに含まれてステージとしてEPNデザイナに表示されるよう、コードをEPNアセンブリ・ファイルに追加します。

1. IDEで、EPNアセンブリ・ファイルを検索して開きます。プロジェクト・エクスプローラで、「TradeReport」>「META-INF」>「spring」>「TradeReport.context.xml」にあります。

2. event-type-repository XMLスタンザの下で、次のXMLを追加してアダプタを宣言します。

<wlevs:adapter id="StockTradeCSVAdapter" provider="csvgen">
<wlevs:instance-property name="port" value="9200" />
<wlevs:instance-property name="eventTypeName"
value="TradeEvent" />
<wlevs:instance-property name="eventPropertyNames"
value="symbol,price,percChange,volume,lastPrice" />
</wlevs:adapter>

このXMLスタンザは、csvgenアダプタのインスタンスを宣言し、EPNで使用するために構成する3つのプロパティを割り当てます。アダプタは、着信rawイベント・データから8.3項「イベント・データを移動するイベント・タイプの作成」で定義したイベント・タイプのプロパティにマップするプロパティを使用します。追加する値を次に示します。

- アダプタ宣言。id属性値はアダプタの一意の識別子です。Oracle Event Processingに付属するcsvgen実装を参照するため、プロバイダ属性値を"csvgen"にする必要があります。

- portインスタンス・プロパティは、アダプタ・インスタンスに着信イベント・データをリスニングするポートを通知します。ここでの値9200は、ロード・ジェネレータがイベント・データを送信するポート番号に対応します(詳細は後述)。

- eventTypeNameインスタンス・プロパティは、インスタンスに着信イベント・データを割り当てるイベント・タイプの名前を通知します。ここで、以前に定義したTradeEventタイプの名前を指定します。

- eventPropertyNamesインスタンス・プロパティは、インスタンスにデータを割り当てるイベント・タイプ・プロパティの名前を通知します。この場合、eventPropertyNames属性値がイベント・タイプのJavaBeanで定義した同じプロパティのカンマ区切りリストであることを確認します。csvgenアダプタで着信値からイベント・タイプ・プロパティにマップするため、ここの名前はイベント・タイプと同じである必要があり、CSVファイルの各行の対応する値と同じ順序にする必要があります。

3. 内部のアダプタXMLとともにEPNアセンブリ・ファイルを保存して閉じます。

4. まだ開いていない場合、EPNエディタを「概要」タブで開きます。

5. EPNエディタで、追加したcsvgenアダプタ・インスタンスを表すアイコンが表示されていることを確認します。アイコンは、構成コードで指定したアダプタid値でラベル付けされます。
図tradereport_csvadapter.pngの説明

次の手順の8.5項「イベントを伝達するチャネルの追加」では、アダプタから今すぐ追加するロジックにイベントを移動する方法を追加します。

8.5 イベントを伝達するチャネルの追加

この手順では、8.4項「イベント・データを受信する入力アダプタの追加」で追加したアダプタを次の手順で追加する少しのロジックに接続する方法を追加します。後で、アプリケーションをテストします。

Oracle Event Processingアプリケーションでは、チャネルを使用してEPNステージを接続します。チャネルは、EPNのある部分から別の部分にイベントを転送するパイプです。イベントの伝達はチャネルの主要な目的ですが、チャネル構成オプションによってアプリケーションをチューニングできる他のプロパティを指定する機会が提供されます。以下のものが含まれます。

- チャネルで非同期的にイベントを処理できるかどうか、およびこのためにバッファで取得できるサイズ。

- チャネルのイベントを処理するために使用されるスレッドの数(数が大きい場合、パフォーマンスを向上できます)。

- EPNの個別のダウンストリーム部分にイベントをディスパッチするため、プロパティに基づいてイベントをパーティション化するかどうか。

これらの種類のチャネル構成プロパティはデフォルト値があるため、作成するアプリケーション用に設定する必要がありません。このアプリケーションでは、チャネル構成を単純なままにします。

追加するチャネルの目的は、イベント・データを受信するアダプタから次の手順で追加するコードに新しく生成されたイベントを移動することです。

AdapterOutputChannelの追加

1. IDEで、EPNエディタが開いて作成するEPNが表示されることを確認します。

2. EPNエディタを右クリックして、「新規」>「チャネル」をクリックします。
チャネル・アイコンがEPNエディタに表示されます。

3. エディタに表示されるチャネル・アイコンをダブルクリックして、EPNアセンブリ・ファイルのチャネルの構成XMLを表示します。

4. アセンブリXMLファイルで、追加したチャネルのチャネルXMLスタンザを検索します。次のように表示されます。

<wlevs:channel id="channel">
</wlevs:channel>

「チャネルは''event-type''値を宣言する必要があります。」という警告が通知される場合があります。これを修正します。

5. 次と一致するようにデフォルトのXMLを編集します(または保有するコードに次のコードを貼り付けます)。

<wlevs:channel id="AdapterOutputChannel" event-type="TradeEvent">
</wlevs:channel>

チャネルを構成するために追加する値を次に示します。

- channel要素は、チャネルの構成を表し、EPNにチャネルを配置します。

- id属性の値は、このEPNのチャネルの一意の識別子です。(別のチャネルを追加します。)

- event-type属性の値は、チャネルを構成して伝達するイベント・タイプの名前です。この場合、実装が作成したTradeEvent JavaBeanである以前に追加したイベント・タイプの名前のTradeEventに設定します。ここで追加する値がアセンブリ・ファイルの他の場所のevent-type要素のtype-name属性値と同じであることに注意してください。

チャネル構成XMLの編集を終了した後、アセンブリ・ファイルを保存します。

6. EPNエディタに戻ります。EPN: TradeReportタブをクリックしてEPNエディタを表示する必要がある場合があります。

7. EPNエディタで、入力アダプタから追加したチャネルへの接続を作成します。これを行うには、「StockTradeCSVAdapter」アイコンをクリックして、「AdapterOutputChannel」アイコンにドラッグします。これにより、2つのアイコン間の接続線が作成されます。
図tradereport_csv_chan.pngの説明

8. 左から右に順番にアイコンを表示してEPNダイアグラムを整理するには、EPNエディタの右上の角にある「EPNのレイアウト」アイコンをクリックします。

9. 「StockTradeCSVAdapter」アイコンをダブルクリックして、アセンブリ・ファイルのアダプタの構成XMLを表示します。

10. アセンブリ・ファイルで、アダプタとチャネル間の接続の作成によってlistener要素がアダプタXMLスタンザに追加されたことを確認します。この要素のref属性値は、チャネル要素のid属性に設定されます。このXMLは、EPNエディタにグラフィカルに表示される接続を定義します。
結果となるEPNアセンブリXMLは次のように表示されます(コンポーネントを接続する側面は太字で表示されます)。

<?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"
xmlns:jdbc="http://www.oracle.com/ns/ocep/jdbc"
xmlns:spatial="http://www.oracle.com/ns/ocep/spatial"
xsi:schemaLocation="...">
<!-- Schema locations omitted for brevity. -->

<wlevs:event-type-repository>
<wlevs:event-type type-name="TradeEvent">
<wlevs:class>com.oracle.cep.example.tradereport.TradeEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="StockTradeCSVAdapter" provider="csvgen">
<wlevs:listener ref="AdapterOutputChannel" />
<wlevs:instance-property name="port" value="9200" />
<wlevs:instance-property name="eventTypeName"
value="TradeEvent" />
<wlevs:instance-property name="eventPropertyNames"
value="symbol,price,percChange,volume,lastPrice" />
</wlevs:adapter>

<wlevs:channel id="AdapterOutputChannel" event-type="TradeEvent">
</wlevs:channel>

</beans>

11. TradeReport.context.xmlを保存して、ファイルを閉じます。

この手順では、チャネルを追加して入力アダプタからイベントを伝達しました。次の手順の8.6項「イベントを受信およびレポートするリスナーの作成」では、イベントを移動するステージを追加します。

8.6 イベントを受信およびレポートするリスナーの作成

この手順では、イベント・データを使用してアプリケーションをテストできるよう、単純なイベント処理ネットワークを完了するステージを追加します。ステージは、EPNを通過する取引イベントを受信して取引の情報をレポートするよう設計されている「リスナー」Javaクラスです。

追加するリスナーは、イベント・シンクとしてOracle Event Processingで認識される特定の種類のJavaクラスです。イベント・シンクは、EPNを通過する場合にイベントを受信できるコードです。イベント・シンクを使用してイベントをインターセプトすることによって、クラスのロジックを使用してイベントの内部を確認し、クラスの他のロジックの実行中にデータを使用できます。イベント・シンクを書き込む以外に、イベントをEPNのステージ・ダウンストリームに送信できるイベント・ソースを書き込むこともできます。

そのため、イベントをインターセプトし、イベントの内容を変更するコードを実行(またはそれらから新しいイベントを作成)し、結果となるイベントを次のステージに送信する1つのJavaクラスなどを想定できます。そのようなコードにより、イベントの表示内容に基づいて(他のアプリケーションにある可能性がある)他のプロセスを開始することもできます。

イベント・シンクおよびイベント・ソースは、特定のOracle Event Processing Javaインタフェースを実装します。たとえば、イベント・シンクは、受信するイベントがストリームまたはリレーションの一部であるかどうかに応じて、2つのインタフェースcom.bea.wlevs.ede.api.StreamSinkおよびcom.bea.wlevs.ede.api.RelationSinkのいずれかを実装します。

ストリームとリレーションの違いは、ここで作成するアプリケーションで基本的に重要ではありません(コードが違いに依存しません)。ただし、Oracle Event Processingを使用したイベント処理の仕組みを理解する重要な部分であるため、簡潔に説明する価値があります。

ストリームは、時間に関して連続的である一連のイベントで、前のタイムスタンプのイベントが後のタイムスタンプのイベントの前に到着します。一方で、リレーションは、特定の基準を満たしているためにセットのイベントが選択された一連のイベントです。リレーションで実行するコードは、イベントの削除、挿入および更新になる可能性があります。

実例として、ここで作成するアプリケーションよりも関連性がある株式取引アプリケーションの暗喩を想定してください。アプリケーションで受信する取引イベントが確認できないパイプを通過することを考えてみてください。イベントは、受信した順序(イベントの発生した順序が重要であるために考慮する順序)でパイプから到着します。捕捉するには、コードである株式取引が別の特定の株式取引の前の15秒以内に発生したかどうかを確認できるように、一度に取引の15秒分を捕捉するよう設計されたパイプの最後にバケットを配置します。

パイプは、順序および隣接する品質が主要な特性であるストリームです。バケットは、特定の共有される特性がバケットの内容を定義するリレーションです。

次の項では、イベントをリスニングするインタフェースを実装するJavaクラスを作成し、イベントBeanとしてそのクラスを構成してEPNの一部にします。

リスナー・イベント・シンク・クラスの作成

この項では、ストリームからイベントを受信できるJavaクラスを作成します。

1. IDEのプロジェクト・エクスプローラで、srcディレクトリを右クリックして、「新規」>「クラス」をクリックします。

2. 新規Javaクラスダイアログの「パッケージ」ボックスで、com.oracle.oep.example.tradereportを入力します。

3. 「名前」ボックスで、TradeListenerを入力します。

4. 「インタフェース」ボックスの横にある「追加」ボタンをクリックして、リスナーでイベント・シンクとして実装する必要があるインタフェースを選択します。

5. 実装されているインタフェースの選択ダイアログのインタフェースの選択ボックスで、com.bea.wlevs.ede.api.StreamSinkを入力します。

6. 「一致するアイテム」ボックスでStreamSinkを選択して、「OK」をクリックします。

7. 新規Javaクラスダイアログの作成するメソッド・スタブで、継承された抽象メソッドチェック・ボックスが選択されている(その他の選択が解除されている)ことを確認します。
図tradereport_newlistener.pngの説明

8. 「終了」をクリックします。
TradeListener.javaソース・コード・ウィンドウが開き、TradeListenerクラスの宣言が表示されます。onInsertEventメソッドの宣言は、.javaファイルに存在する必要もあります。StreamSinkインタフェースを実装する場合、このメソッドが必要です。

9. TradeListenerクラスでは、次のコードと一致するようにonInsertEventメソッドを編集します。

@Override
public void onInsertEvent(Object event) throws EventRejectedException {

if (event instanceof TradeEvent){
String symbolProp = ((TradeEvent) event).getSymbol();
Integer volumeProp = ((TradeEvent) event).getVolume();
System.out.println(symbolProp + ":" + volumeProp);
}
}

コードで処理を実行できる場合、これはイベントをリスナーに渡すためにOracle Event Processingで使用するメソッドです。行う変更により、次を実行するメソッドを実装します。

- 着信イベントがTradeEvent JavaBeanのインスタンスであることを確認します。(その他は無視されます。)

- イベントがTradeEventである場合、コードは銘柄記号および含まれる取引量を出力します。

10. TradeListener.javaファイルを保存して閉じます。

イベントBeanとしてのリスナー・クラスの構成

前述の項では、イベント・シンクを実装して特定のタイプのイベントをリスニングするクラスを作成しました。この項では、EPNの他の部分に接続できるイベントBeanとしてリスナーをEPNに追加します。

イベントBeanは、JavaコードをEPNに追加する方法です。別の方法はSpring Beanです。異なる管理機能を提供しますが、両方のBeanモデルは実装が書き込むJavaコードであるEPNステージを構成する手段を提供します。ここで作成するイベントBeanは、Oracle Event Processingサーバー機能とより詳細に統合します。既存のSpringフレームワークと統合する必要がある場合、Spring Beanは適切な選択肢です。

1. EPNエディタで、空の領域を右クリックして、「新規」>「イベントBean」をクリックします。

2. 新しい「eventBean」アイコンをダブルクリックして、アセンブルXMLファイルの構成コードを表示します。

3. TradeReport.context.xmlソース・コードで、event-bean要素を検索し、次のように表示されるように編集します。

<wlevs:event-bean id="ListenerBean"
class="com.oracle.oep.example.tradereport.TradeListener" />

このコードを使用して、一意の識別子"ListenerBean"を使用したイベントBeanおよび以前に作成したクラスの実装クラスを構成します。

4. アセンブリXMLファイルを保存します。

5. EPNエディタに戻り、新しいイベントBean名などの基礎となるXMLの変更を反映している設計であることを確認します。

6. EPNエディタで、AdapterOutputChannelをクリックして選択します。

7. ここでも、AdapterOutputChannelをクリックして、ListenerBeanイベントBeanアイコンにドラッグします。これにより、イベントをチャネルからイベントBeanに渡すことができる接続が作成されます。

8. 「EPNのレイアウト」アイコンをクリックして、ダイアグラムを整理します。
図tradereport_eventbeanadded.pngの説明

9. AdapterOutputChannelをダブルクリックして、基礎となるXMLを表示します。
チャネルXMLスタンザには参照属性値が追加したイベントBeanのID値と同じであるリスナー要素が含まれることに注意してください。(ここでの両方の場所の用語「リスナー」は、便宜的な目的のみです。)

<wlevs:channel id="AdapterOutputChannel" event-type="TradeEvent">
<wlevs:listener ref="ListenerBean" />
</wlevs:channel>

<wlevs:event-bean id="ListenerBean"
class="com.oracle.oep.example.tradereport.TradeListener" />

10. TradeReport.context.xmlを保存します。

この手順では、イベント処理ネットワークを移動するイベントをリスニングするためにイベントBeanを追加しました。次の手順の8.7項「ロード・ジェネレータの設定およびテスト」では、作成するアプリケーションをテストします。

8.7 ロード・ジェネレータの設定およびテスト

この手順では、Oracle Event Processingサーバーのインスタンスのプロジェクトをデプロイし、Oracle Event Processingに付属するロード・ジェネレータ・ユーティリティを使用してサンプル・データを作成するアプリケーションにフィードします。

Oracle Event Processingとともにインストールされたロード・ジェネレータ・ユーティリティは、プロジェクトのテストを簡単に開始する方法を提供します。CSVファイルを読み取り、イベント・データとしてファイルの行を構成で指定するポートに送信するよう特に設計されています。プロジェクトで、そのポートでリスニングするCSVアダプタは、行を受信し、データを定義したイベント・タイプのインスタンスに変換します。プロパティ・ファイルを介して、使用するCSVファイルおよびターゲット・ポート、ロード・ジェネレータの実行時間、イベント・データの送信速度などを含むロード・ジェネレータの特定の側面を構成できます。

次の項では、Oracle Event Processingサーバーのインスタンスを作成し、プロジェクトをデプロイするために構成し、ロード・ジェネレータを設定し、プロジェクトをテストします。

プロジェクトを実行するサーバーの作成

この項では、Oracle Event Processingサーバー・インスタンスをTradeReportプロジェクトに追加します。サーバー・インスタンスの追加によって、IDEを使用してサーバーを起動および停止したり、変更および再テストを行うたびにプロジェクトを再デプロイする便利な方法が提供されます。

IDEは、プロジェクトを作成した場合に含まれるサーバー・ランタイム環境を介してOracle Event Processingサーバーを認識します。(個別の手順としてサーバー・ランタイム環境を追加する必要がある場合があります。)

1. IDEで、「サーバー」ビューが表示されることを確認します。表示されない場合、「ウィンドウ」>「ビューの表示」>「サーバー」をクリックして表示します。

2. 「サーバー」ビューで、右クリックしてコンテキスト・メニューを表示して、「新規」、「サーバー」の順にクリックします。

3. 新しいサーバーダイアログの「サーバー・タイプの選択」で、「Oracle」を展開し、Oracle Event Processing v11.1をクリックします。

4. ホスト名、サーバー名およびランタイム環境をそのままにし、「次」をクリックします。

5. 新しいOracle Event Processing v11.1サーバーで、「ローカル・サーバー」オプションが選択されていることを確認し、「次」をクリックします。

6. 次のウィンドウの新しいOracle Event Processing v11.1サーバーで、「ドメイン・ディレクトリ」をそのままにして、「次」をクリックします。

7. 追加と削除で、「使用可能」ボックスの「TradeReport」を選択して、「使用可能」および「構成済」ボックス間の「追加」ボタンをクリックします。
TradeReportプロジェクト名を「構成済」リストに移動すると、作成するTradeReportプロジェクトを構成して追加するサーバーで実行することが指定されます。この単純な手順により、デバッグする場合にプロジェクトをサーバーに簡単にデプロイ(および再デプロイ)できます。

図tradereport_newserv_conf.pngの説明

8. 「終了」をクリックします。

サーバーを追加した後、locahostのOracle Event Processing v11.1として「サーバー」ビューにリストされます(停止)。エントリを展開して、TradeReportプロジェクトが構成されたプロジェクトのいずれかであることを確認します。

テスト・データおよびロード・ジェネレータの設定

テスト・データおよびロード・ジェネレータを実際に設定する必要はありません。Oracle Event Processingをインストールすると設定されます。ただし、それらを使用してプロジェクトをデバッグするため、次の手順を使用して確認します。

1. 任意のテキスト・エディタで、Oracle Event Processingに付属するStockData.csvファイルを開きます。デフォルトでは、次のパスでこのファイルを確認します。
ORACLE_HOME/Middleware/ocep_11.1/utils/load-generator/StockData.csv

ファイルの内容が基本的にデータのイベント・タイプを定義した際に例で確認した内容であることに注意してください。CSVファイルと同様に含まれる値の順序に関して行が均一であることに注意してください。

2. テキスト・エディタで、StockData.propファイルを開きます。
これはロード・ジェネレータの処理を構成するプロパティ・ファイルです。2つのプロパティtest.csvDataFileおよびtest.portがロード・ジェネレータの処理に必要です。他のプロパティは表面上オプションですが、ロード・ジェネレータがCSV形式の入力を認識するためにもう1つ設定する必要があります。TradeReportプロジェクトをデバッグするには、次のプロパティを設定する必要があります。

- test.csvDataFile -- ロード・ジェネレータが読み取るCSVファイルの名前。ここでの値をStockData.csvにする必要があります。

- test.port -- ロード・ジェネレータがイベント・データを送信するポート番号。これは、CSVアダプタ・インスタンスを構成した場合に指定したポート値である必要があります(つまり、9200)。

- test.packetType -- ロード・ジェネレータが処理する形式。この値はCSVである必要があります。

プロジェクトのデバッグ

このプロジェクトを実際にデバッグする必要はありません(ここで示されているすべてを実行する場合)。ただし、デバッグ・モードのブレークポイントの設定およびOracle Event Processingサーバーの実行によって、処理の方法を確認する機会が提供されます。

1. IDEで、以前の手順で作成したTradeListener.javaファイルを開きます。プロジェクト・エクスプローラで、「TradeReport」>「src」>「com.oracle.cep.example.tradereport」を展開して、ファイルを表示できます。

2. TradeListener.javaで、次のコードの行にブレークポイントを設定します。

System.out.println(symbolProp + ":" + volumeProp);

3. 「サーバー」ビューで、追加したサーバーローカルホストのOracle Event Processing v11.1を選択します。

4. サーバーを選択したままにして、「サーバー」ビューの右上の角にあるデバッグ・モードでサーバーの起動ボタンをクリックします。
サーバーが起動し、IDEがプロジェクトをコンパイルし、アプリケーションとしてTradeReportプロジェクトを実行中のサーバーにデプロイする場合に多少の待機時間が必要になる場合があります。この実行中に、「コンソール」ビューは、サーバーの起動の進行状況に関連するステータス・メッセージを表示します。「コンソール」ビューの出力が<サーバーの起動>または<"TradeReport"のアプリケーション・コンテキストは正常に起動しました>で終了する場合、サーバーがデバッグ・モードで実行されています。

5. 「サーバー」ビューで、プロジェクトをサーバーに再パブリッシュする必要がないことを確認します。「TradeReport」エントリが(再パブリッシュ)を示す場合、「TradeReport」エントリを右クリックして、「強制パブリッシュ」をクリックします。正常にデプロイされた後、エントリは(同期化)を示します。
再パブリッシュ時にエラーが表示される場合、続行する前にプロジェクトを消去して再作成する必要があることがあります。

6. コマンド・プロンプトを開き、Oracle Event Processingとともにインストールされたロード・ジェネレータ・ディレクトリにディレクトリを変更します。デフォルトでは、次のパスになります。
ORACLE_HOME/Middleware/ocep_11.1/utils/load-generator

7. コマンド・プロンプトで、次を入力して、[Enter]を押してデプロイされたプロジェクトへのイベント・データの送信を開始します。

- Windowsの場合: runloadgen.cmd StockData.prop

- Linuxの場合: runloadgen.sh StockData.prop

8. ロード・ジェネレータがイベント・データの送信を開始すると、IDEはデバッグ・パースペクティブに切り替えて(IDEをそのように設定している場合)、リスナー・クラスで設定するブレークポイントで実行を一時停止します。

9. 実行がブレークポイントで一時停止している場合、「変数」ビューを参照して、リスナーが受信したイベントの内容を調査します。各イベントのプロパティをクリックして、CSVファイルからそれぞれに割り当てられた値を参照できます。

10. 「再開」ボタンを繰り返しクリックして、イベントからイベントに実行を進めて、それぞれの値を確認します。

11. 「コンソール」ウィンドウで、リスナー・コードが受信するイベントから銘柄記号および量を出力していることを確認します。
図tradereport_breakpoint.pngの説明

12. 「サーバー」ビューで、Oracle Event Processingサーバーを選択して、サーバーの停止ボタンをクリックします。

13. ロード・ジェネレータのコマンド・プロンプト・ウィンドウで、[CTRL]+[C]を押してロード・ジェネレータを停止します。

以上で完了です。単純なOracle Event Processingアプリケーションの作成およびテストが完了しました。最後の手順の8.8項「イベントをフィルタ処理するOracle CQLプロセッサの追加」では、Oracle CQLコードを追加してアプリケーションを少し詳細に検討します。

8.8 イベントをフィルタ処理するOracle CQLプロセッサの追加

この手順では、特定の基準に基づいてイベントをフィルタ処理するプロセッサを追加します。プロセッサは、着信イベントを問い合せるOracle Continuous Query Language (Oracle CQL)コードを追加するステージです。プロセッサおよびOracle CQL問合せは、Oracle Event Processingを使用して作成するイベント指向アプリケーションの実際のほとんどの機能を表します。Oracle CQLを使用すると、関心があるイベントのみのアプリケーションのロジックに集中して、イベントが到着する場合に複雑なロジックを実行できます。

Structured Query Language (SQL)を使用している場合、Oracle CQLの表示を理解しやすくなります。実際に、Oracle CQLは基本的にSQLと類似しています。同じキーワードおよび構文ルールを使用しますが、ストリーミング・データの一意の側面をサポートするために機能が追加されています。(SQLに慣れていない場合は、理解するとOracle CQLを最大限に活用するのに非常に役立ちます。)

イベント・データ(およびその結果のOracle Event Processingイベント)はEPNが順番に受信するデータのストリームであることに注意してください。SQLとOracle CQLの比較を続行すると、イベントはある意味でデータベース内の1行に相当すると言えます。ただし、重要な違いは、イベントではあるイベントは時間に関して常に別のイベントの前後であり、ストリームはほぼ無制限で常に変化することです。リレーショナル・データベースでは、データが比較的に静的である場合に行は有限集合であると言えます。リレーショナル・データベースでは、問合せによるデータの取得を待機します。イベント・データのストリームでは、到着時に調査する問合せの場合にデータは常にEPNに移動します。

連続的な時系列のストリーミング・データを最大限に活用するため、CQLには次の機能があります。

- イベントを問い合せる特定の期間または範囲を指定します。これは5秒分の各イベントなどの可能性があります。

- 問合せ対象に対して「行」と呼ばれる特定の数のイベントを指定します。これは、一連の10個のイベントである可能性があります。

- slideキーワードを使用して問合せをストリームに対して実行する頻度を指定します。問合せは次の5秒のイベントに5秒ごとに「スライド」できます。

- イベントの特定の特性に基づいて着信ストリームを複数のストリームに分割(パーティション化)します。問合せを使用して着信取引イベントの指定された銘柄記号ごとに新しいストリームを作成できます。

また、CQLは、ビューおよび結合などの既知と思われるSQLの一般的な側面をサポートします。たとえば、ストリーミング・イベント・データおよびリレーショナル・データベース表またはキャッシュのデータを含む結合を実行するCQLコードを書き込むことができます。CQLは、空間データ固有の計算およびJDBCデータ・ソースの問合せ用にJavaクラス内の機能を組み込む問合せのサポートを提供する付属のカートリッジを使用して、カートリッジを介して拡張できます。

プロセッサおよびCQLを理解するため、ここで追加するコードを単純なままにします。AdapterOutputChannelからフィードされる特定のイベントを取得する問合せを追加します。問合せは、4000より大きい量の取引のみを取得するよう設計されています。問合せの結果のイベントはリスナーに渡されます。

CQLコードの表示内容は次のとおりです。

例8-1 CQLコードを使用したGetHighVolume問合せ要素

<query id="GetHighVolume"><![CDATA[
select trade.symbol, trade.volume
from AdapterOutputChannel [now] as trade
where trade.volume > 4000
]]>
</query>

「取引量が4000株を超えるAdapterOutputChannelからの各イベントに対して、記号および量の値を取得する」のように、この問合せを言い換えることができます。SQLを使用したことがある場合は、select、fromおよびwhere文を理解できます。now演算子は基本的に即時の期間を表します。各イベントを含みます。他には、「5秒ごとに到着するすべてのイベントから選択」を意味する[range 5]がある場合があります。(特定の取引が相互に5秒以内に発生したことを確認する場合に役立つことがあります。)

この問合せの出力は、取引量が4000を超えるすべてのイベントを含むリレーション(シーケンスではなくセット)です。期間が[now]であるため、セットは常に1つのメンバーのみを持ちます。より大きい範囲のリレーションは、セットに複数のメンバーがある場合があります。

GetHighVolumeプロセッサおよび問合せの追加

1. IDEのEPNエディタで、ダイアグラムの空の領域を右クリックして、「新規」>「プロセッサ」をクリックします。

2. 「新規プロセッサ」ダイアログの「プロセッサID」ボックスで、GetHighVolumeProcessorを入力します。

3. 「既存の構成ファイルの使用」オプションを選択します。
各プロセッサの異なる構成ファイルを作成できることに注意してください。異なるユーザーがそれぞれ操作する場合に役立つことがあります。

4. ドロップダウンで、config.xmlを選択したままにして、「OK」をクリックします。

5. EPNエディタで、「GetHighVolumeProcessor」アイコンが作成されていることを確認します。

6. 「AdapterOutputChannel」アイコンから「ListenerBean」アイコンへのコネクタを右クリックして、「削除」をクリックします。

7. 「AdapterOutputChannel」アイコンをクリックして、「GetHighVolumeProcessor」アイコンにドラッグします。
この接続の作成により、プロセッサはチャネルを認識します。チャネルをプロセッサに接続した後、CQLコードのID値でチャネルを参照できます。

8. 「GetHighVolumeProcessor」アイコンをダブルクリックして、config.xmlファイルの構成コードを開きます。

9. config.xmlファイルで、問合せ要素を次の問合せXMLに置き換えます。

<query id="GetHighVolume"><![CDATA[
select trade.symbol, trade.volume
from AdapterOutputChannel [now] as trade
where trade.volume > 4000
]]>
</query>

コード・ウィンドウは、以下のようになります。

図tradereport_cqlcode.pngの説明

10. EPNエディタで、ダイアグラムの空の領域を右クリックして、「新規」>「チャネル」をクリックします。

11. 新しいチャネルのアイコンを右クリックして、「名前の変更」をクリックします。

12. ProcessorOutputChannelを入力して、[Enter]を押してチャネルの名前を変更します。

13. 「GetHighVolumeProcessor」アイコンをクリックし、新しいチャネル・アイコンにドラッグしてプロセッサおよびチャネルを接続します。

14. 「ProcessorOutputChannel」アイコンをクリックして、「ListenerBean」アイコンにドラッグしてチャネルをリスナーに接続します。

15. 順番に左から右にアイコンが連続して表示されるように、「EPNのレイアウト」ボタンをクリックしてダイアグラムを整理します。

16. 「ProcessorOutputChannel」アイコンをダブルクリックして、アセンブリXMLファイルのチャネルの構成を開きます。

17. TradeReport.context.xmlで、デフォルトのチャネル構成を次のXMLに置き換えます。特に、TradeEventがこのチャネルを通過するイベント・タイプであると指定していることに注意してください。

<wlevs:channel id="ProcessorOutputChannel" event-type="TradeEvent">
<wlevs:listener ref="ListenerBean" /></wlevs:channel>

18. プロジェクトのすべてのファイルを保存します。

この時点で、再度アプリケーションをデバッグする準備が整いました。

プロジェクトのデバッグ

この項では、CQLコードで意図する結果を生成していることを確認するために再度デバッグします。

1. IDEで、以前の手順で作成したTradeListener.javaファイルを開きます。プロジェクト・エクスプローラで、「TradeReport」>「src」>「com.oracle.cep.example.tradereport」を展開して、ファイルを表示できます。

2. TradeListener.javaで、コードSystem.out.println(symbolProp + ":" + volumeProp);の行にブレークポイントがあることを確認します。
正常にデバッグする前に、プロジェクトを再作成する必要がある場合があります。

3. 「サーバー」ビューで、追加したサーバーローカルホストのOracle Event Processing v11.1を選択します。

4. サーバーを選択したままにして、「サーバー」ビューの右上の角にあるデバッグ・モードでサーバーの起動ボタンをクリックします。
サーバーが起動し、IDEがプロジェクトをコンパイルし、アプリケーションとしてTradeReportプロジェクトを実行中のサーバーにデプロイする場合に多少の待機時間が必要になる場合があります。この実行中に、「コンソール」ビューは、サーバーの起動の進行状況に関連するステータス・メッセージを表示します。「コンソール」ビューの出力が<サーバーの起動>で終了する場合、サーバーはデバッグ・モードで実行されています。

5. 「サーバー」ビューで、プロジェクトをサーバーに再パブリッシュする必要がないことを確認します。TradeReportエントリが(再パブリッシュ)を示す場合、TradeReportエントリを右クリックして、「強制パブリッシュ」をクリックします。正常にデプロイされた後、エントリは(同期化)を示します。

6. まだ存在しない場合、コマンド・プロンプトを開き、Oracle Event Processingとともにインストールされたload-generatorディレクトリにディレクトリを変更します。デフォルトでは、次のパスになります。
ORACLE_HOME/Middleware/ocep_v11.1/utils/load-generator

7. コマンド・プロンプトで、次を入力して、[Enter]を押してデプロイされたプロジェクトへのイベント・データの送信を開始します。

- Windowsの場合: runloadgen.cmd StockData.prop

- Linuxの場合: runloadgen.sh StockData.prop

ロード・ジェネレータがイベント・データの送信を開始すると、IDEはデバッグ・パースペクティブに切り替えて(IDEをそのように設定している場合)、リスナー・クラスで設定するブレークポイントで実行を一時停止します。

8. 実行がブレークポイントで一時停止している場合、「変数」ビューを参照して、リスナーが受信したイベントの内容を調査します。
各イベントのプロパティをクリックして、CSVファイルからそれぞれに割り当てられた値を参照できます。イベントに2つの値(記号および量)が含まれていることに注意してください。そのため、問合せはプロセッサを通過するイベントから2つの値のみを選択しています。

9. 「再開」ボタンを繰り返しクリックして、イベントからイベントに実行を進めて、それぞれの値を確認します。

10. 「コンソール」ウィンドウで、リスナー・コードが受信するイベントから銘柄記号および量を出力していることを確認します。
問合せを正しくコード化した場合、すべての量の値は4000より大きくなります。

11. 「サーバー」ビューで、Oracle Event Processingサーバーを選択して、サーバーの停止ボタンをクリックします。

12. ロード・ジェネレータのコマンド・プロンプト・ウィンドウで、[CTRL]+[C]を押してロード・ジェネレータを停止します。

これで、このアプリケーションを終了します。詳細のリンクとともにこのウォークスルーに含まれる処理のリストは、8.9項「サマリー: 単純なアプリケーションのウォークスルー」を参照してください。

8.9 サマリー: 単純なアプリケーションのウォークスルー

この項では、8.1項「単純なアプリケーションのウォークスルーの概要」から開始される単純なアプリケーションのウォークスルーを要約します。このウォークスルーでは、単純なOracle Event Processingアプリケーションを作成します。イベント処理ネットワークをアセンブルしてイベントを受信し、特定の基準を満たすイベントをレポートしました。

他の概要は、第1章「Oracle Event Processingアプリケーションの作成の概要」を参照してください。

このウォークスルーでは、Oracle Event Processingアプリケーションの開発の最も基本的な側面を説明しました。次の概念が含まれます。

- Oracle Event Processingアプリケーションの作成を容易にするよう設計されたIDE機能。
IDEの詳細な学習を開始するには、4.1項「Oracle Event Processing IDE for Eclipseの概要」を参照してください。

- イベント処理ネットワーク(EPN)としてのアプリケーションの作成。
EPNの他の概要は、1.2項「Oracle Event Processingアプリケーションの仕組み」を参照してください。

- イベントをモデル化するイベント・タイプの設計。
詳細は、9.1項「Oracle Event Processingイベント・タイプの概要」を参照してください。

- アダプタを使用した外部コンポーネントとのやり取りの管理。
Oracle Event Processingには、アダプタが含まれます。独自のアダプタを作成することもできます。詳細は、次の項を参照してください。

- 第11章「Java Message Serviceの統合」

- 第12章「HTTPパブリッシュ・サブスクライブ・サーバーの統合」

- 第15章「カスタム・アダプタを使用した外部コンポーネントの統合」

- 第21章「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト」

- イベントを送受信できるJavaクラスの実装。
イベント・シンクおよびイベント・ソースの書込みの詳細は、第16章「ソースおよびシンクでのイベントの処理」を参照してください。

- イベント処理ネットワークを通過する場合のイベントを処理するモデルとしてのイベント・ストリームおよびリレーション。
ストリームおよびリレーションの概要は、1.3項「イベント、ストリームおよびリレーションの概要」を参照してください。

- Oracle Continuous Query Language (Oracle CQL)を使用したイベントの検出およびフィルタ処理。
Oracle CQLの詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

9 イベント・タイプの定義および使用

この章では、イベント・タイプの実装および構成方法とイベント・タイプ・リポジトリのアクセス方法を含むイベント処理ネットワークを介してイベント・データを移動する必要があるOracle Event Processingイベント・タイプの定義方法について説明します。

定義するイベント・タイプを介して、コードでイベント・データにアクセスします。この章の説明に従って、書き込むJavaBeanクラスなどのいくつかのデータ型のいずれかに基づくイベント・タイプを定義します。イベント・タイプ・リポジトリの一部として構成して、イベント・タイプをアプリケーションに追加します。イベント・タイプは構成XMLを介してリポジトリに通常追加されますが、プログラムとしてリポジトリにアクセスするコードを書き込むこともできます。

この章の内容は次のとおりです。

- 9.1項「Oracle Event Processingイベント・タイプの概要」

- 9.2項「イベント・タイプの設計」

- 9.3項「イベント・タイプの作成」

- 9.4項「イベント・タイプ・リポジトリへのアクセス」

- 9.5項「アプリケーション・バンドル間でのイベント・タイプの共有」

9.1 Oracle Event Processingイベント・タイプの概要

イベント・タイプは、Oracle Event Processingアプリケーションのイベント・データを表す方法です。イベントは、特定の時間に発生した事象に関連する構造化データです。たとえば、サーバー室の環境の変更に対応するようアプリケーションを設計している場合、イベント・データには、環境を監視するデバイスで収集されるスナップショット情報が含まれる可能性があります。または、アプリケーションで株式市場の取引に関連するトレンドおよびパターンに注目する場合、イベント・データは、取引された株、取引量、株価などを含む取引に対応する値である可能性があります。

アプリケーションへのイベント・データは、様々な形式で到着する可能性があります。イベント・タイプを作成してアプリケーション内のデータを表すことによって、アプリケーションのロジックの予測可能な方法を作成してデータを使用します。イベント・タイプはイベント・データの移動手段であるため、それらの定義はOracle Event Processingアプリケーションの作成に不可欠な部分です。

実際のイベント・タイプの作成および使用は、8.3項「イベント・データを移動するイベント・タイプの作成」を参照してください。

9.1.1 イベント・タイプ・インスタンスが使用される場所

作成するイベント・タイプのインスタンスは、アプリケーションのイベント処理ネットワーク(EPN)を介してイベント・データを移動します。イベント・タイプの設計および実装の適切な決定を行うため、どのようにコードでイベントを使用するかに留意してください。

イベント・タイプ・インスタンスは、Oracle Event Processingサーバーまたは独自のアプリケーション・ロジックによって使用されます。通常、Oracle Event Processingサーバーは、タイプのインスタンスを作成し、データをバインドします。ただし、イベント・タイプ・インスタンスの作成方法をより詳細に制御するには、イベント・タイプ・ビルダーを作成できます。詳細は、9.3.1.5項「イベント・タイプ・ビルダー・クラスでのイベント・タイプのインスタンス化の制御」を参照してください。

イベント・タイプ・インスタンスを使用する主な場所を次に示します。

- 着信イベント・データが外部ソースから到着する場合、イベント・タイプ・インスタンスにバインドされます。

- Oracle CQLプロセッサが問合せを実行し、結果を出力する場合、イベント・タイプのインスタンスは、EPNのダウンストリームのステージに結果イベント・データを移動するために作成されます。

- イベントを処理するJavaコードなどのアプリケーションのJavaロジックでは、新しいイベント・タイプ・インスタンスを作成して、EPNのダウンストリームのステージに送信できます。イベントを作成するJavaコードはイベント・ソースと呼ばれます。イベント・ソースの実装の詳細は、16.2.2項「イベント・ソースの実装」を参照してください。

9.1.2 イベント・タイプを作成する上位レベル・プロセス

上位レベルで、イベント・タイプを作成するプロセスでは、イベント・タイプで移動してOracle Event Processingでサポートされるデータ型のいずれかとしてタイプを実装する必要があるイベント・データを識別します。

手順の概要は次のとおりです。

1. イベント・タイプを設計します。基本的に、アプリケーションに関連するイベント・データのセットを識別し、データをイベント・タイプで表す方法を選択します。詳細は、9.2項「イベント・タイプの設計」を参照してください。

2. イベント・タイプを作成します。データをタイプで表す方法を認識すると、次の3つの方法のいずれかでタイプを作成できます: JavaBeanクラスとして実装、タプルとして構成、java.util.Mapとして構成。タイプのインスタンス化方法をより詳細に制御するには、イベント・タイプ・ビルダーを実装することもできます。詳細は、9.3項「イベント・タイプの作成」を参照してください。

9.2 イベント・タイプの設計

イベント・タイプを設計する場合、rawイベント・データをOracle Event Processingでサポートする実装オプションにマップします。

イベントの設計には、次のタスクが含まれます。

- イベント・タイプが表すイベント・データの構造を識別します。これは、サーバー室のモニターなどの外部ソースからのrawイベント・データの構造である可能性があります。コードでタイプのインスタンスを送信するダウンストリーム・ステージまたはコンポーネントで必要なデータ構造である可能性もあります。詳細は、9.2.1項「イベント・データの構造の識別」を参照してください。

- 作成するイベント・タイプの基本になるデータ型を選択します。イベント・タイプは、Oracle Event Processingでサポートされる次の3つのデータ型のいずれかに基づいています: JavaBeanクラス、タプルまたはjava.util.Mapインスタンス。詳細は、9.2.2項「イベント・タイプのデータ型の選択」を参照してください。

- イベント・タイプの計画された使用に留意し、それらの使用による潜在的な制約に注意してください。詳細は、9.2.3項「イベント・タイプの設計の制約」を参照してください。

最後に、アプリケーションのEPN XMLファイルのイベント・タイプを構成する場合にタイプを混合して使用できることに注意してください。詳細は、9.2.4項「イベント・タイプ・データ型の使用の混在」を参照してください。

9.2.1 イベント・データの構造の識別

イベント処理ネットワークを定義する早期タスク(通常は簡単なタスク)では、イベント・データの構造を明確にし、データをEPN内で処理する形式を定義します。作成するイベント・タイプには、アプリケーションで参照するイベント・データの各部分のプロパティが含まれます。これらの各プロパティには、固有のデータ型があります。

イベント・タイプを作成する前に、イベント・データのサンプルを使用して、タイプのプロパティおよびデータ型を定義します。たとえば、株式取引のイベント・データの非常に単純なセットを考慮します。カンマ区切り値の行として表され、取引イベント・データは次のようになります。

ORCL,14.1,6000

次の表は、イベント・データを個別の値に分割する方法を示し、それぞれにイベント・タイプ・プロパティを定義しています。

サンプル・データ値

ロール

データのタイプ

イベント・タイプ
プロパティ名

ORCL

銘柄記号

character

symbol

14.1

株価

number

price

6000

取引される株式数

number

volume

イベント・タイプの作成方法にかかわらず、プロパティおよびデータ型の意味がある必要があります。ただし、プロパティ・データ型の指定方法は、イベント・タイプをベースとするデータ型によって異なります。たとえば、イベント・タイプとしてJavaBeanクラスを実装する場合、表で指定された3つの値のデータ型は次のようになります。

イベント・タイプ
プロパティ名

Javaデータ型

symbol

String

price

Double

volume

Integer

タプルまたはjava.util.Mapとしてイベント・タイプを作成した場合、データ型が異なることがあります。詳細は、9.2.2項「イベント・タイプのデータ型の選択」を参照してください。

9.2.2 イベント・タイプのデータ型の選択

作成するイベント・タイプはOracle Event Processingでサポートされる次の3つのデータ型のいずれかに基づいています: JavaBeanクラス、タプルまたはjava.util.Map。

各データ型に固有の利点および制限がありますが、ベスト・プラクティスはJavaBeanクラスとしてイベント・タイプを作成し、アクセッサ・メソッドとしてイベント・タイプ・プロパティを実装することです。JavaBeanを使用すると、アプリケーション・ロジックの一部としてイベント・タイプがさらに柔軟に処理され、既存のシステムとの統合が簡略化されます。イベント・タイプをJavaBeanクラスとして実装した場合、イベント・タイプ・ビルダー・クラスを実装して、イベント・タイプのインスタンス化を(必要に応じて)厳密に制御することもできます。

タプルまたはjava.util.Mapとしてイベント・タイプを作成する場合、EPNアセンブリ・ファイルでイベントを定義してプロパティを宣言的に指定してこれを行います。java.util.Mapの使用を明示的に宣言しないかぎり、Oracle Event Processingはデフォルトとしてタプル型を使用します。

サポートされている各データ型の利点および制限は、表9-1「イベント・タイプのデータ型」を参照してください。

表9-1 イベント・タイプのデータ型

データ型

説明

利点および制限

JavaBean

JavaBean規則で書き込まれるJavaクラス。書き込むロジックで使用される以外に、タイプのアクセッサ("get"および"set")メソッドはOracle Event ProcessingサーバーおよびCQLプロセッサによって使用され、イベント・プロパティ値を取得および設定します。

詳細は、9.3.1項「JavaBeanとしてのOracle Event Processingイベント・タイプの作成」を参照してください。

利点: 最大の柔軟性およびイベントを処理するアプリケーション・ロジックの使いやすさを提供するため、このタイプはベスト・プラクティスです。アクセッサ・メソッドを介して、直接プロパティ値にアクセスします。JavaBeanクラスは、Oracle Event Processingアプリケーションと他のシステムを統合する場合により役立つ可能性があります。タイプのインスタンス化方法を制御する場合、イベント・タイプ・ビルダー・クラスを実装できます。

制限: 構成ファイルでイベント・タイプを単純に宣言するのではなく、JavaBeanクラスを書き込む必要があります。Oracle CQLビューを使用してこれを回避できますが、Oracle CQLはGROUP BY、PARTITION BYおよびORDER BYのJavaBeanプロパティをサポートしません。

タプル

EPNアセンブリ・ファイルで宣言的に作成して、登録する構造。

詳細は、9.3.2項「タプルとしてのOracle Event Processingイベント・タイプの作成」を参照してください。

利点: イベント・タイプを作成するJavaプログラミングは必要ありません。EPNアセンブリ・ファイルで宣言して、イベント・タイプを作成します。迅速なプロトタイピングに役立ちます。

制限: Javaアプリケーション・ロジックのこのタイプのインスタンスの使用では、イベント・タイプ・リポジトリにプログラムからアクセスしてインスタンスのプロパティ値を取得する必要があります。Oracle Event Processingと他のシステムを統合すると、タプルは有用にならない可能性もあります。

java.util.Map

java.util.Mapのインスタンスに基づいています。Mapインタフェースを実装または拡張しません。正確には、EPNアセンブリ・ファイルでイベント・タイプを構成する場合にインタフェースを使用することを指定します。Javaコードを書き込んでタイプ・インスタンスにアクセスする場合、Mapインスタンスとして処理します。

詳細は、9.3.3項「java.util.MapとしてのOracle Event Processingイベント・タイプの作成」を参照してください。

利点: タイプを作成するJavaプログラミングは必要ありません。EPNアセンブリ・ファイルで宣言して、イベント・タイプを作成します。迅速なプロトタイピングに役立ちます。

制限: 他のタイプと同じように実行しません。

Oracle CQLが様々なデータ型を処理およびサポートする方法の詳細は、次を参照してください。

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のデータ型に関する項

9.2.3 イベント・タイプの設計の制約

イベント・タイプの使用方法に応じて、特定の制約に留意する必要がある場合があります。たとえば、イベント・タイプを構成する場合のプロパティのデータ型または特定の属性の値の設定方法を制限する必要がある場合があります。

次の項は、イベント・タイプ設計の制約範囲を示します。

- 9.2.3.1項「csvgenアダプタとともに使用するイベント・タイプの制約」

- 9.2.3.2項「データベース表ソースとともに使用するイベント・タイプの制約」

9.2.3.1 csvgenアダプタとともに使用するイベント・タイプの制約

csvgenアダプタとともに使用するイベント・タイプのプロパティを宣言的に指定する場合、表9-2に示すデータ型のみ使用することがあります。

表9-2 csvgenアダプタ・タイプ

タイプ

使用方法

char

単一または複数の文字値。char値およびjava.lang.String値の両方に使用します。

オプションで、例9-6でプロパティ名idで指定しているように、char値の最大長を指定するには、length属性を使用できます。デフォルトの長さは256文字です。256文字を超える必要がある場合、適当な長さを指定する必要があります。

int

java.lang.Integerで指定される範囲内の数値

float

java.lang.Floatで指定される範囲内の数値

long

java.lang.Longで指定される範囲内の数値。

double

java.lang.Doubleで指定される範囲内の数値

詳細は、次を参照してください:

- 第21章「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト」

9.2.3.2 データベース表ソースとともに使用するイベント・タイプの制約

イベント・データのソースとしてリレーショナル・データベース表を使用して、実行時に表からイベント・タイプ・インスタンスにデータをバインドします。イベント・データ・ソースがデータベース表の場合、次の表で表されるガイドラインに従う必要があります。

イベント・タイプでデータベース表からデータを受信する場合、タイプに構成されたプロパティごとにデータベースの特定の列からデータを受信します。イベント・タイプを構成する場合、表9-3「EPNアセンブリ・ファイルevent-type要素プロパティ属性」に示されているように、プロパティの子要素に特定の意味および値制約を持つ属性があることに注意してください。

表9-3 EPNアセンブリ・ファイルevent-type要素プロパティ属性

属性

説明

name

SQL CREATE TABLE文で指定されている、アクセスする表の列の名前。すべての列を指定する必要はありません。

type

列のSQLデータ型に対応している表9-4内のOracle Event Processing Javaタイプ。

length

SQL CREATE TABLE文で指定されている列サイズ。

リレーショナル・データベース表とともに使用するイベント・タイプのプロパティを指定する場合、表9-4「SQL列タイプおよびOracle Event Processingタイプの対応するもの」に示す追加JDBCタイプの制限に従う必要があります。

表9-4 SQL列タイプおよびOracle Event Processing Typeタイプの対応するもの

SQLタイプ

Oracle Event Processing Javaタイプ

com.bea.wlevs.ede.api.Type

説明

ARRAY

[Ljava.lang.Object

java.lang.Objectの深度1の配列。

BIGINT

java.math.BigInteger

bigint

java.math.BigIntegerのインスタンス。

BINARY

byte[]

byteの深度1の配列。

BIT

java.lang.Boolean

boolean

java.lang.Booleanのインスタンス。

BLOB

byte[]

byteの深度1の配列。

BOOLEAN

java.lang.Boolean

boolean

java.lang.Booleanのインスタンス。

CHAR

java.lang.Character

char

java.lang.Characterのインスタンス。

CLOB

byte[]

byteの深度1の配列。

DATE

java.sql.Date

timestamp

java.sql.Dateのインスタンス。

DECIMAL

java.math.BigDecimal

java.math.BigDecimalのインスタンス。

BINARY_DOUBLEFoot 2

java.lang.Double

double

java.lang.Doubleのインスタンス。

BINARY_FLOATFootref 2

java.lang.Double

float

java.lang.Doubleのインスタンス。

INTEGER

java.lang.Integer

int

java.lang.Integerのインスタンス。

JAVA_OBJECT

java.lang.Object

object

java.lang.Objectのインスタンス。

LONGNVARCHAR

char[]

char

charの深度1の配列。

LONGVARBINARY

byte[]

byteの深度1の配列。

LONGVARCHAR

char[]

char

charの深度1の配列。

NCHAR

char[]

char

charの深度1の配列。

NCLOB

byte[]

byteの深度1の配列。

NUMERIC

java.math.BigDecimal

java.math.BigDecimalのインスタンス。

NVARCHAR

char[]

char

charの深度1の配列。

OTHER

java.lang.Object

object

java.lang.Objectのインスタンス。

REAL

java.lang.Float

float

java.lang.Floatのインスタンス。

SMALLINT

java.lang.Integer

int

java.lang.Integerのインスタンス。

SQLXML

xmltype

xmltype

Oracle CQLでのXMLTYPEデータの処理の詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のSQL/XML (SQLX)に関する項を参照してください。

TIME

java.sql.Time

java.sql.Timeのインスタンス。

TIMESTAMP

java.sql.Timestamp

timestamp

java.sql.Timestampのインスタンス。

TINYINT

java.lang.Integer

int

java.lang.Integerのインスタンス。

VARBINARY

byte[]

byteの深度1の配列。

VARCHAR

char[]

char

charの深度1の配列。

Footnote 1 Oracle SQL。

Footnote 2 Oracle以外のSQL。

詳細は、次を参照してください:

- 17.3項「Oracle CQLプロセッサ表ソースの構成」

9.2.4 イベント・タイプ・データ型の使用の混在

EPNアセンブリ・ファイルでイベント・タイプを定義する場合、別のイベント・タイプのプロパティ・データ型としてJavaBeanベースのイベント・タイプを使用できます。

例9-1は、アドレスプロパティをJavaBeanイベント・タイプAddressとして定義するタプル・イベント・タイプStudentを表しています。

例9-1 イベント・タイプ・リポジトリ

<event-type-repository>
<event-type name="Student">
<property name="name" type="char"/>
<property name="address" type="Address"/>
</event-type>

<event-type name="Address">
<class-name>test.Address</class-name>
</event-type>
<event-type-repository>

9.3 イベント・タイプの作成

イベント・タイプは、Oracle Event Processingアプリケーション内のイベント・データへのアクセスを提供するイベント・プロパティを定義します。このイベント・タイプが、アダプタおよびJavaコードとともにOracle CQLルールに使用されます。

イベント・タイプを作成する場合、作成するタイプのベースとして3つのサポートされているデータ型のいずれかを選択します。ベスト・プラクティスは、少しのJavaコードを書き込んでプロパティのイベント・データを処理してJavaBeanクラスとしてタイプを作成できることです。タプルまたはjava.util.Mapとしてタイプを宣言的に作成することもできます。

タイプを作成する前に、設計上の考慮事項について9.2項「イベント・タイプの設計」を参照できます。

この項では次について説明します:

- 9.3.1項「JavaBeanとしてのOracle Event Processingイベント・タイプの作成」

- 9.3.2項「タプルとしてのOracle Event Processingイベント・タイプの作成」

- 9.3.3項「java.util.MapとしてのOracle Event Processingイベント・タイプの作成」

9.3.1 JavaBeanとしてのOracle Event Processingイベント・タイプの作成

JavaBeanとしてイベント・タイプを作成すると、アプリケーション・ロジックでタイプのインスタンスを使用する場合に最大レベルの柔軟性が提供されます。そのため、JavaBeanクラスの使用はイベント・タイプを作成するベスト・プラクティスです。

注意:

Oracle CQLでは、GROUP BY、PARTITION BYおよびORDER BYにある式をサポートしていません。その結果、これらはJavaプロパティをサポートしておらず、失敗します。これらの機能が必要な場合、回避策としてOracle CQLビューを使用します。

JavaBeanイベント・タイプを使用する柔軟性の一部として、タイプをインスタンス化する2つの異なる方法があります: サーバーまたは提供するイベント・タイプ・ビルダー・クラスの使用。インスタンス・ファクトリとしてイベント・タイプ・ビルダー・クラスを提供することによって、自身でインスタンスを作成し、イベント・データ値がJavaBeanプロパティにバインドされる方法を含む作成方法を制御できます。詳細は、9.3.1.5項「イベント・タイプ・ビルダー・クラスでのイベント・タイプのインスタンス化の制御」を参照してください。

JavaBeanクラスとしてイベント・タイプを作成する場合、次のガイドラインを使用してOracle Event Processingシステムとの最適な統合を保証します。

- Oracle Event Processingサーバーがクラスをインスタンス化できる空の引数のパブリック・コンストラクタを作成します。

- イベント・プロパティごとに、JavaBean規則に従うパブリック・アクセッサ(getおよびsetメソッド)を実装します。これらはサーバーによって使用され、イベント・プロパティ値にアクセスします。JavaBeanとしてイベント・タイプを定義する場合、いずれかのJavaタイプをそのプロパティに使用できます。
JavaBean規則を理解していない場合、追加詳細はhttp://docs.oracle.com/javase/tutorial/javabeans/のJavaBeansチュートリアルを参照してください。

- hashCodeおよびequalsメソッドを実装します。これにより、複合キーがイベント・タイプ・インスタンスのハッシュ・コードから作成されるハッシュ索引を使用する可能性があるOracle Event Processingサーバーで使用するクラスが最適化されます。
Eclipse IDEを使用している場合、アクセッサを追加した後にクラスの「ソース」コンテキスト・メニューを介してhashCodeおよびequalsメソッドを簡単に実装できます。

- Oracle Coherenceでイベントをキャッシュする場合、クラスをシリアライズ可能にします。

このトピックでは、次の内容について説明します。

- 9.3.1.1項「イベント・タイプ・リポジトリ・エディタを使用して、JavaBeanとしてOracle Event Processingイベント・タイプを作成する方法」

- 9.3.1.2項「JavaBeanとしてOracle Event Processingイベント・タイプを手動で作成する方法」

9.3.1.1 イベント・タイプ・リポジトリ・エディタを使用して、JavaBeanとしてOracle Event Processingイベント・タイプを作成する方法

この手順では、Oracle Event Processing IDE for Eclipseイベント・タイプのリポジトリ・エディタを使用してJavaBeanとしてOracle Event Processingイベント・タイプを作成して登録する方法について説明しています。Oracle Event Processing IDE for Eclipseの詳細は、例4-0「Oracle Event Processing IDE for Eclipseの概要」を参照してください。

または、JavaBeanとしてイベント・タイプを手動で作成して登録することもできます(9.3.1.2項「JavaBeanとしてOracle Event Processingイベント・タイプを手動で作成する方法」を参照)。

イベント・タイプ・リポジトリ・エディタを使用してJava BeanとしてOracle Event Processingイベント・タイプを作成するには、次の手順を実行します。

1. イベント・タイプを表すためにJavaBeanクラスを作成します。
9.3.1項「JavaBeanとしてのOracle Event Processingイベント・タイプの作成」に記載されているガイドラインに必ず従ってください。

例9-2では、com.bea.wlevs.example.algotrading.event.MarketEventクラスで実施されたMarketEventを表します。

例9-2 MarketEventクラス

package com.bea.wlevs.example.algotrading.event;

public final class MarketEvent {
private final Long timestamp;
private final String symbol;
private final Double price;
private final Long volume;
private final Long latencyTimestamp;

public MarketEvent() {}

public Double getPrice() {
return this.price;
}
public void setPrice(Double price) {
this.price = price;
}

public String getSymbol() {
return this.symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}

public Long getTimestamp() {
return this.timestamp;
}
public void setTimestamp(Long timestamp) {
this.timestamp = timestamp;
}

public Long getLatencyTimestamp() {
return this.latencyTimestamp;
}
public void setLatencyTimestamp(Long latencyTimestamp) {
this.latencyTimestamp = latencyTimestamp;
}

public Long getVolume() {
return this.volume;
}
public void setVolume(Long volume) {
this.volume = volume;
}

// Implementation for hashCode and equals methods.
}

2. イベント・タイプを表すJavaBeanをコンパイルします。

3. IDEで、EPNエディタのEPNを開きます。
詳細は、 7.1項「EPNエディタを開く」を参照してください。

4. 「イベント・タイプ」タブをクリックします。

5. 「イベント・タイプの追加」(緑のプラス記号)をクリックします。
図9-1に示すように、デフォルト名newEventを持つ新しいイベントが「イベント・タイプの定義」リストに追加されます。

図9-1 イベント・タイプ・リポジトリ・エディタ - JavaBeanイベント

「図9-1 イベント・タイプ・リポジトリ・エディタ - JavaBeanイベント」の説明

6. 「イベント・タイプの定義」リストで、newEventを選択します。
このイベントのプロパティは、図9-1に示すように、「イベント・タイプの詳細」領域に表示されます。

7. このイベントの名前を「タイプ名」フィールドに入力します。

8. 「Java Beanで定義されたプロパティ」をクリックします。

9. JavaBeanクラスの完全修飾クラス名を「Class クラス」フィールドに入力します。
たとえば、com.bea.wlevs.example.algotrading.event.MarketEventです。

10. ツールバーの「保存」ボタンをクリックします(またはCTRL-Sを押します)。
これで、イベントがイベント・タイプ・リポジトリに表示されます。

イベント・タイプ・リポジトリ・エディタを使用して、次のことができます。

1. EPNアセンブリ・ファイルの対応するイベント・タイプ定義を表示するには、「イベント・タイプの定義」領域のイベント・タイプをダブルクリックします。

2. イベントを削除するには、「イベント・タイプの定義」領域でイベント・タイプを選択し、「イベント・タイプの削除」 (赤いx)をクリックします。

9.3.1.2 JavaBeanとしてOracle Event Processingイベント・タイプを手動で作成する方法

この手順では、JavaBeanとしてOracle Event Processingイベント・タイプを手動で作成して登録する方法について説明しています。

または、Oracle Event Processing IDE for Eclipseイベント・タイプ・リポジトリ・エディタを使用して、JavaBeanとしてイベント・タイプを作成および登録できます(9.3.1.1項「イベント・タイプ・リポジトリ・エディタを使用して、JavaBeanとしてOracle Event Processingイベント・タイプを作成する方法」を参照)。

Java BeanとしてOracle Event Processingイベント・タイプを手動で作成するには:

1. イベント・タイプを表すためにJavaBeanクラスを作成します。
標準のJavaBeanプログラミング・ガイドラインに準拠します。追加詳細は、http://java.sun.com/docs/books/tutorial/javabeans/のJavaBeansチュートリアルを参照してください。

イベントを設計する場合、設計を9.2.4項「イベント・タイプ・データ型の使用の混在」で説明されたイベント・データ型に制限する必要があります。

例9-3では、com.bea.wlevs.example.algotrading.event.MarketEventクラスで実施されたMarketEventを表します。

例9-3 MarketEventクラス

package com.bea.wlevs.example.algotrading.event;

public final class MarketEvent {
private final Long timestamp;
private final String symbol;
private final Double price;
private final Long volume;
private final Long latencyTimestamp;

public MarketEvent() {}

public Double getPrice() {
return this.price;
}
public void setPrice(Double price) {
this.price = price;
}

public String getSymbol() {
return this.symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}

public Long getTimestamp() {
return this.timestamp;
}
public void setTimestamp(Long timestamp) {
this.timestamp = timestamp;
}

public Long getLatencyTimestamp() {
return this.latencyTimestamp;
}
public void setLatencyTimestamp(Long latencyTimestamp) {
this.latencyTimestamp = latencyTimestamp;
}

public Long getVolume() {
return this.volume;
}
public void setVolume(Long volume) {
this.volume = volume;
}

// Implementation for hashCode and equals methods.
}

2. イベント・タイプを表すJavaBeanをコンパイルします。

3. Oracle Event Processingイベント・タイプ・リポジトリにJavaBeanイベント・タイプを登録します。

1. 宣言的に登録するには、例9-4に示すように、wlevs:event-type-repository要素wlevs:event-type子要素を使用して、EPNアセンブリ・ファイルを編集します。

例9-4 EPNアセンブリ・ファイルevent-type-repository

<wlevs:event-type-repository>
<wlevs:event-type type-name="MarketEvent">
<wlevs:class>
com.bea.wlevs.example.algotrading.event.MarketEvent
</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

2. プログラムとして登録するには、例9-5に示すように、EventTypeRepositoryクラスを使用します。

例9-5 プログラムとしてイベントの登録

EventTypeRepository rep = getEventTypeRepository();
rep.registerEventType(
"MarketEvent",
com.bea.wlevs.example.algotrading.event.MarketEvent.getClass()
);

詳細は、9.4項「イベント・タイプ・リポジトリにアクセス」を参照してください。

9.3.1.3 JavaコードのJavaBeanイベント・タイプ・インスタンスの使用

アプリケーションのビジネス・ロジックおよびアダプタのJavaコードの標準のJavaBeansとしてイベント・タイプを参照します。

次のコードは、イベント・シンク・クラスからonEventメソッドを実装します。イベント・シンクの詳細は、16.2.1項「イベント・シンクの実装」を参照してください。

public void onInsertEvent(Object event)
throws EventRejectedException {
if (event instanceof MarketEvent){
MarketEvent marketEvent = (MarketEvent) event;
System.out.println("Price: " + marketEvent.getPrice());
}
}

9.3.1.4 Oracle CQLコードのJavaBeanイベント・タイプ・インスタンスの使用

次のOracle CQLルールでは、SELECT文でMarketEventを参照するかを表します。イベント・タイプがMarketEventであるmarketEventChannelと呼ばれるアップストリーム・チャネルを前提とします。

<query id="helloworldRule">
<![CDATA[ SELECT MarketEvent.price FROM marketEventChannel [NOW] ]]>
</query>

また、プロパティ・データ型をJavaBeanとして実装すると、Oracle CQLコードでは、標準のJavaBeanスタイル・プロパティ・アクセスを使用してそれらのプロパティ内の値を取得できます。

たとえば、次の構成スニペットの抜粋では、JavaBeanクラスとして実装されるStudentTypeイベント・タイプを宣言しています。school.Studentクラスは、それ自体が Address JavaBeanクラスであるアドレス・プロパティを持つJavaBeanです。次の問合せは、アドレス・プロパティの基礎となるAddressオブジェクトの値にアクセスする方法を示します。この問合せでは、郵便番号が"97"で始まる生徒のアドレスを選択します。

<query id="studentAddresses">
SELECT
student.address
FROM
StudentType as student
WHERE
student.address.postalCode LIKE '^97'
</query>

9.3.1.5 イベント・タイプ・ビルダー・クラスでのイベント・タイプのインスタンス化の制御

イベント・タイプ・ビルダーを作成して、イベント・タイプ・インスタンスの作成方法をより詳細に制御できます。たとえば、イベント・タイプ・ビルダーを使用して、構成されたイベントのプロパティがJavaBeanとして実装したクラスなどのイベント・タイプ・クラスのプロパティに正しくバインドされていることを確認できます。CQLコードで仮定されるイベント・プロパティ名がクラスで宣言されているプロパティの名前と異なる場合などで、イベント・タイプ・ビルダーが必要になります。

たとえば、イベント・タイプにfirstnameプロパティが含まれている一方で、イベント・タイプで実行されるCQLルールではそのプロパティがfnameと呼ばれるとします。さらに、(たとえば、他のバンドルからの共有イベント・クラスを使用しているなどの理由から)、相互の互換性を実現するためにイベント・タイプ・クラスを変更することも、CQLルールを変更することもできないと想定します。この場合は、イベント・タイプ・ビルダー・ファクトリを使用して、プロパティ名をfirstnameのかわりに{fnameにするよう、イベント・タイプ・インスタンスの作成方法を変更できます。

実行時、イベント・タイプ・ビルダー・クラスはOracle Event Processingサーバーからプロパティ値を受信し、それらの値を使用して作成したイベント・タイプ・クラスのインスタンスを作成します。次に、イベント・タイプ・ビルダーはインスタンスをサーバーに戻します。このように、サーバーで構成されたプロパティをイベント・タイプ・プロパティにマップする方法を決定できない場合、ビルダー・クラスは実質的に中間のインスタンス化しているイベント・タイプです。

イベント・タイプ・ビルダーの作成および使用には、次の項に示されているように、ビルダーを使用するためのビルダー・クラスの実装およびJavaBeanイベント・タイプの構成が含まれます。

- 9.3.1.5.1項「イベント・タイプ・ビルダー・クラスの実装」

- 9.3.1.5.2項「イベント・タイプ・ビルダーを使用するイベント・タイプの構成」

9.3.1.5.1 イベント・タイプ・ビルダー・クラスの実装

イベント・タイプ・ビルダー・ファクトリをプログラミングする場合は、com.bea.wlevs.ede.api.EventBuilderインタフェースのEventBuilder.Factory内部インタフェースを実装する必要があります。createBuilderおよびcreateEventなどの実装する必要のあるメソッドの詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください。

次の例は、FXサンプルからのイベント・タイプ・ビルダー・ファクトリ・クラスの例です。

package com.bea.wlevs.example.fx;

import java.util.HashMap;
import java.util.Map;
import com.bea.wlevs.ede.api.EventBuilder;
import com.bea.wlevs.example.fx.OutputBean.ForeignExchangeEvent;

public class ForeignExchangeBuilderFactory implements EventBuilder.Factory {

// Called by the server to get an instance of this builder.
public EventBuilder createBuilder() {
return new ForeignExchangeBuilder();
}

// Inner interface implementation that is the builder.
static class ForeignExchangeBuilder implements EventBuilder {

// A Map instance to hold properties until the event type is instantiated.
private Map<String,Object> values = new HashMap<String,Object>(10);

// Called by the server to put an event type property. Values from the map
// will be used to instantiate the event type.
public void put(String property, Object value) throws IllegalStateException {
values.put(property, value);
}

// Called by the server to create the event type instance once property
// values have been received.
public Object createEvent() {
return new ForeignExchangeEvent(
(String) values.get("symbol"),
(Double) values.get("price"),
(String) values.get("fromRate"),
(String) values.get("toRate"));
}
}
}

9.3.1.5.2 イベント・タイプ・ビルダーを使用するイベント・タイプの構成

EPNアセンブリ・ファイルでイベント・タイプを登録する場合は、wlevs:event-type要素の<wlevs:property name="builderFactory">子要素を使用してイベント・タイプ・ビルダー・クラスの名前を指定します。name属性のハードコード化されたbuilderFactoryの値によって、このイベントのインスタンスを作成する際はデフォルト・ファクトリではなく指定されたファクトリ・クラスを使用する必要があることがOracle Event Processingに対してアラートされます。たとえば、FXサンプルでは、ビルダー・ファクトリは太字で示されたとおりに登録されています。

<wlevs:event-type-repository>
<wlevs:event-type type-name="ForeignExchangeEvent">
<wlevs:class>com.bea.wlevs.example.fx.OutputBean$ForeignExchangeEvent</wlevs:class>
<wlevs:property name="builderFactory">
<bean id="builderFactory"
class="com.bea.wlevs.example.fx.ForeignExchangeBuilderFactory"/>
</wlevs:property>
</wlevs:event-type>
</wlevs:event-type-repository>

9.3.2 タプルとしてのOracle Event Processingイベント・タイプの作成

タイプの構成XMLをEPN XMLファイルに追加して、タプルとしてOracle Event Processingイベント・タイプを簡単に作成できます。したがって、タプルはイベント・タイプを作成する最も簡単な方法であるため、迅速なプロトタイピングに役立ちます。ただし、タプルおよびjava.util.Mapデータ型は、JavaBeanクラスとしてイベント・タイプを作成するより柔軟性が低くなります。

タプルベースのイベント・タイプの場合、タイプのインスタンスを使用したJavaコードでは、EventTypeRepository APIを使用してプロパティ値を常に設定および取得する必要があります。

イベントを設計する場合、タイプのプロパティの設計を9.3.2.1項「タプルベースのイベント・タイプのプロパティのタイプ」に示されているデータ型に制限する必要があります。

開始する前に、9.2項「イベント・タイプの設計」のイベント・タイプの設計上の推奨事項を参照してください。

このトピックでは、次の内容について説明します。

- 9.3.2.2項「イベント・タイプ・リポジトリ・エディタを使用して、タプルとしてOracle Event Processingイベント・タイプを作成する方法」

- 9.3.2.3項「タプルとしてOracle Event Processingイベント・タイプを手動で作成する方法」

9.3.2.1 タプルベースのイベント・タイプのプロパティのタイプ

EPNアセンブリ・ファイルにタプルとしてイベント・タイプのプロパティを宣言的に指定する場合は、com.bea.wlevs.ede.api.Typeで指定されたタイプを使用できます。

サポートされているプロパティ・タイプの詳細は、C.23項「wlevs:property」を参照してください。

例9-6には、様々なタイプの使用方法を示します。

例9-6 タプル・イベント・タイプ・プロパティ用のcom.bea.welvs.ede.api.Typeデータ型の指定

<wlevs:event-type-repository>
<wlevs:event-type type-name="SimpleEvent">
<wlevs:properties>
<wlevs:property name="id" type="char" length="1000" />
<wlevs:property name="msg" type="char" />
<wlevs:property name="count" type="double" />
<wlevs:property name="time_stamp" type="timestamp" />
</wlevs:properties>
</wlevs:event-type>
...
</wlevs:event-type-repository>

詳細は、9.3.2項「タプルとしてのOracle Event Processingイベント・タイプの作成」を参照してください。

9.3.2.2 イベント・タイプ・リポジトリ・エディタを使用して、タプルとしてOracle Event Processingイベント・タイプを作成する方法

この手順は、Oracle Event Processing IDE for Eclipseイベント・タイプ・リポジトリ・エディタを使用してタプルとしてOracle Event Processingイベント・タイプを作成して登録する方法を説明します。Oracle Event Processing IDE for Eclipseの詳細は、第4章「Oracle Event Processing IDE for Eclipseの概要」を参照してください。

かわりに、タプルとしてイベント・タイプを手動で作成して登録することもできます(9.3.2.3項「タプルとしてOracle Event Processingイベント・タイプを手動で作成する方法」を参照)。

イベント・タイプ・リポジトリ・エディタを使用してタプルとしてOracle Event Processingイベント・タイプを作成するには、次の手順を実行します。

1. イベント・タイプに必要なプロパティを決定します。
イベントを設計する場合、設計を9.3.2.1項「タプルベースのイベント・タイプのプロパティのタイプ」で説明されたイベント・データ型に制限する必要があります。

2. IDEで、EPNエディタのEPNを開きます。
詳細は、 7.1項「EPNエディタを開く」を参照してください。

3. 「イベント・タイプ」タブをクリックします。

4. 「イベント・タイプの追加」(緑のプラス記号)をクリックします。
図9-2に示すように、デフォルト名newEventを持つ新しいイベントが「イベント・タイプの定義」リストに追加されます。

図9-2 イベント・タイプ・リポジトリ・エディタ - タプル・イベント

「図9-2 イベント・タイプ・リポジトリ・エディタ - タプル・イベント」の説明

5. 「イベント・タイプの定義」リストで、newEventを選択します。
このイベントのプロパティは、図9-2に示すように、「イベント・タイプの詳細」領域に表示されます。

6. このイベントの名前を「タイプ名」フィールドに入力します。

7. 「宣言で定義されたプロパティ」をクリックします。

8. 1つ以上のイベント・プロパティを追加します。

- 「イベント・プロパティの追加」(緑のプラス記号)をクリックします。
新しい行が「イベント・タイプの詳細」表に追加されます。

- この行の「名前」列をクリックしてプロパティ名を入力します。

- この行の「タイプ」列をクリックして、プルダウン・メニューからデータ型を選択します。
イベントを設計する場合、設計を9.3.2.1項「タプルベースのイベント・タイプのプロパティのタイプ」で説明されたイベント・データ型に制限する必要があります。

- charデータ型プロパティについてのみ、この行の「'char'の長さ」列をクリックして、このcharプロパティの最大長の値を入力します。
オプションで、char値の最大長を指定するために、length属性を使用できます。デフォルトの長さは256文字です。最大長はjava.lang.Integer.MAX_VALUEです。256文字を超える必要がある場合、適当な長さを指定する必要があります。

9. ツールバーの「保存」ボタンをクリックします(またはCTRL-Sを押します)。
これで、イベントがイベント・タイプ・リポジトリに表示されます。

イベント・タイプ・リポジトリ・エディタを使用して、次のことができます。

1. EPNアセンブリ・ファイルの対応するイベント・タイプ定義を表示するには、「イベント・タイプの定義」領域のイベント・タイプをダブルクリックします。

2. イベントを削除するには、「イベント・タイプの定義」領域でイベント・タイプを選択し、「イベント・タイプの削除」 (赤いx)をクリックします。

9.3.2.3 タプルとしてOracle Event Processingイベント・タイプを手動で作成する方法

この手順では、EPNアセンブリ・ファイルにタプルとしてOracle Event Processingイベント・タイプを宣言的に作成して登録する方法について説明しています。

ただし、イベント・タイプを作成するベスト・プラクティスはJavaBeanクラスとして作成することなので注意してください。詳細は、9.3.1項「JavaBeanとしてのOracle Event Processingイベント・タイプの作成」を参照してください。

有効なデータ型の詳細は、9.3.2.1項「タプルベースのイベント・タイプのプロパティのタイプ」を参照してください。

タプルとしてOracle Event Processingイベント・タイプを作成するには:

1. イベント・タイプに必要なプロパティを決定します。
イベントを設計する場合、設計を9.3.2.1項「タプルベースのイベント・タイプのプロパティのタイプ」で説明されたデータ型に制限する必要があります。

2. Oracle Event Processingイベント・タイプ・リポジトリにイベント・タイプを宣言的に登録します。
宣言的に登録するには、例9-7に示すように、wlevs:event-type-repository要素wlevs:event-type子要素を使用して、EPNアセンブリ・ファイルを編集します。

例9-7 EPNアセンブリ・ファイルevent-type-repository

<wlevs:event-type-repository>
<wlevs:event-type type-name="CrossRateEvent">
<wlevs:properties>
<wlevs:property name="price" type="double"/>
<wlevs:property name="fromRate" type="char"/>
<wlevs:property name="toRate" type="char"/>
</wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

ランタイム時に、Oracle Event Processingでは、CrossRateEventのBeanインスタンスが生成されます。CrossRateEventには、price、fromRateおよびtoRateの3つのプロパティがあります。

type属性の有効な値の詳細は、9.3.2.1項「タプルベースのイベント・タイプのプロパティのタイプ」を参照してください。

構成XMLの詳細なリファレンスは、C.13項「wlevs:event-type」、C.22項「wlevs:properties」およびC.23項「wlevs:property」を参照してください。

9.3.2.4 Javaコードのタプル・イベント・タイプ・インスタンスの使用

Javaコードのタプルベースのイベント・タイプを使用する場合、値を取得する前にcom.bea.wlevs.ede.api.EventTypeRepositoryインスタンスを使用してタイプのプロパティの名前を取得する必要があります。(EventTypeRepositoryインスタンスの取得の詳細は、9.4項「イベント・タイプ・リポジトリのアクセス」を参照してください)。

次の例では、イベント・シンクとして機能するクラスのリポジトリを使用します。

@Service
public void setEventTypeRepository(EventTypeRepository etr) {
etr_ = etr;
}
...
// Called by the server to pass in the event type instance.
public void onInsertEvent(Object event) throws EventRejectedException {

// Get the event type for the current event instance
EventType eventType = etr_.getEventType(event);

// Get the event type name
String eventTypeName = eventType.getTypeName();

// Get the event property names
String[] propNames = eventType.getPropertyNames();

// See if property you're looking for is present
if(eventType.isProperty("fromRate")) {
// Get property value
Object propValue =
eventType.getProperty("fromRate").getValue(event);
}
// Throw com.bea.wlevs.ede.api.EventRejectedException to have an
// exception propagated up to senders. Other errors will be
// logged and dropped.
}

9.3.2.5 Oracle CQLコードのタプル・イベント・タイプ・インスタンスの使用

次のOracle CQLルールでは、SELECT文でCrossRateEventをどのように参照するかを表しています。

<query id="FindCrossRatesRule"><![CDATA[
select ((a.price * b.price) + 0.05) as internalPrice,
a.fromRate as crossRate1,
b.toRate as crossRate2
from FxQuoteStream [range 1] as a, FxQuoteStream [range 1] as b
where
NOT (a.price IS NULL)
and
NOT (b.price IS NULL)
and
a.toRate = b.fromRate
]]></query>

9.3.3 java.util.MapとしてのOracle Event Processingイベント・タイプの作成

java.util.MapとしてOracle Event Processingイベント・タイプを作成して、登録できます。

タイプの構成XMLをEPN XMLファイルに追加して、java.util.MapとしてOracle Event Processingイベント・タイプを簡単に作成できます。したがって、これはイベント・タイプを作成する簡単な方法です。ただし、タプルおよびjava.util.Mapデータ型は、JavaBeanクラスとしてイベント・タイプを作成するより柔軟性が低くなります。

マップとしてイベント・タイプを作成および使用すると、タプル型およびJavaBeanクラスのプロセスの混在のようになります。タプルベースのイベント・タイプと同様に、EPN XMLファイルで構成して、宣言的にマップベース・タイプを作成します。JavaBeanベースのイベント・タイプと同様に、com.bea.wlevs.ede.api.EventTypeRepository APIを使用してインスタンス・プロパティ値にアクセスする必要はありません。

このトピックでは、次の内容について説明します。

- 9.3.3.2項「java.util.MapとしてOracle Event Processingイベント・タイプを作成する方法」

9.3.3.1 java.util.Mapベースのイベント・タイプのプロパティのタイプ

イベント・タイプのプロパティを、java.util.MapとしてEPNアセンブリ・ファイルで宣言的に指定する場合、いずれかのJavaタイプをそのプロパティに使用できます。ただし、次のいずれかとしてイベント・プロパティのタイプを指定します。

- Class.forName()と同じルールに準拠し、アプリケーションのクラス・ローダーで使用できる必要がするJavaクラスの完全修飾名。

- Javaプリミティブ(たとえば、intまたはfloat)。

イベント・タイプ名に文字[]を追加して配列を指定できます。

例9-8には、これらのタイプの使用方法を示します。

例9-8 java.util.Mapイベント・タイプ・プロパティ用のJavaデータ型の指定

<wlevs:event-type-repository>
<wlevs:event-type type-name="AnotherEvent">
<wlevs:properties type="map">
<wlevs:property>
<entry key="name" value="java.lang.String"/>
<entry key="employeeId" value="java.lang.Integer[]"/>
<entry key="salary" value="float"/>
<entry key="projectIds" value="short[]"/>
</wlevs:property>
<wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

詳細は、9.3.3.2項「java.util.MapとしてOracle Event Processingイベント・タイプを作成する方法」を参照してください。

9.3.3.2 java.util.MapとしてOracle Event Processingイベント・タイプを作成する方法

この手順では、java.util.MapとしてOracle Event Processingイベント・タイプを作成して登録する方法について説明しています。Oracle Event Processingイベント・タイプをJavaBean(9.3.1.2項「JavaBeanとしてOracle Event Processingイベント・タイプを手動で作成する方法」を参照)として作成することをお薦めします。

有効なイベント・タイプ・データ型の詳細は、9.3.3.1項「java.util.Mapベースのイベント・タイプのプロパティのタイプ」を参照してください。

java.util.MapとしてOracle Event Processingイベント・タイプを作成するには:

1. イベント・タイプに必要なプロパティを決定します。

2. Oracle Event Processingイベント・タイプ・リポジトリにイベント・タイプを登録します。

1. 宣言的に登録するには、例9-9に示すように、wlevs:event-type-repository要素wlevs:event-type子要素を使用して、EPNアセンブリ・ファイルを編集します。

例9-9 EPNアセンブリ・ファイルevent-type-repository

<wlevs:event-type-repository>
<wlevs:event-type type-name="AnotherEvent">
<wlevs:properties type="map">
<wlevs:property name="name" value="java.lang.String"/>
<wlevs:property name="age" value="java.lang.Integer"/>
<wlevs:property name="address" value="java.lang.String"/>
</wlevs:properties >
</wlevs:event-type>
</wlevs:event-type-repository>

ランタイム時に、Oracle Event Processingでは、AnotherEventのBeanインスタンスが生成されます。AnotherEventには、name、ageおよびaddressの3つのプロパティがあります。

2. プログラムとして登録するには、例9-10に示すように、EventTypeRepositoryクラスを使用します。

例9-10 プログラムとしてイベントの登録

EventTypeRepository rep = getEventTypeRepository();
java.util.Map map = new Map({name, java.lang.String},
{age, java.lang.Integer}, {address, java.lang.String});
rep.registerEventType("AnotherEvent", map);

詳細は、9.4項「イベント・タイプ・リポジトリにアクセス」を参照してください。

9.3.3.3 Javaコードのマップ・イベント・タイプ・インスタンスの使用

Javaコードでマップベースのイベント・タイプ・インスタンスを使用する場合、java.util.Mapインスタンスのようにプロパティにアクセスします。

public void onInsertEvent(Object event)
throws EventRejectedException {

java.util.Map anEvent = (java.util.Map) event;
System.out.println("Age: " + anEvent.get("age"));
}

9.3.3.4 Oracle CQLコードのマップ・イベント・タイプ・インスタンスの使用

EPLルールおよびOracle CQLからイベント・タイプにアクセスします。

次のOracle CQLルールでは、SELECT文でMarketEventを参照するかを表します。

<query id="helloworldRule">
<![CDATA[ select age from eventChannel [now] ]]>
</query>

9.4 イベント・タイプ・リポジトリへのアクセス

Oracle Event Processingイベント・タイプ・リポジトリは、アプリケーションに定義されたイベント・タイプを追跡します。イベント・タイプを作成する場合、アプリケーションで使用可能にするには、イベント・タイプ・リポジトリで構成します。場合によっては、リポジトリに明示的にアクセスするコードを書き込む必要がある場合があります。

たとえば、イベント・タイプをタプルとして作成する場合、タイプのインスタンスにアクセスするJavaロジックでは、リポジトリAPIを使用してタイプ定義を最初に取得し、このAPIを使用してインスタンス・プロパティ値にアクセスする必要があります。

EventTypeRepositoryは、単一のOSGiサービスです。これは単一であるため、これを識別するためにインタフェース名のみを指定する必要があります。次のいずれかの方法でOSGiからサービスを取得できます。

- 9.4.1項「EPNアセンブリ・ファイルの使用」

- 9.4.2項「Spring-DM @ServiceReference注釈の使用」

- 9.4.3項「Oracle Event Processing @Service注釈の使用」

詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください。

9.4.1 EPNアセンブリ・ファイルの使用

例9-11に示すように、EPNアセンブリ・ファイルのosgi:referenceを指定してEventTypeRepositoryにアクセスできます。

例9-11 EPN EventTypeRepositoryのOSGi参照によるEPNアセンブリ・ファイル

<osgi:reference id="etr" interface="com.bea.wlevs.ede.api.EventTypeRepository" />
<bean id="outputBean" class="com.acme.MyBean" >
<property name="eventTypeRepository" ref="etr" />
</bean>

その後、MyBeanクラスでは、例9-12に示すように、Springにより初期化されたeventTypeRepositoryプロパティを使用して、EventTypeRepositoryにアクセスできます。

例9-12 MyBean実施でのEventTypeRepositoryへのアクセス

package com.acme;

import com.bea.wlevs.ede.api.EventTypeRepository;
import com.bea.wlevs.ede.api.EventType;

public class MyBean {
private EventTypeRepository eventTypeRepository;

public void setEventTypeRepository(EventTypeRepository eventTypeRepository) {
this.eventTypeRepository = eventTypeRepository;
}

public void onInsertEvent(Object event) throws EventRejectedException {
// get the event type for the current event instance
EventType eventType = eventTypeRepository.getEventType(event);
// Throw com.bea.wlevs.ede.api.EventRejectedException to have an
// exception propagated up to senders. Other errors will be
// logged and dropped.
}
}

9.4.2 Spring-DM @ServiceReference注釈の使用

例9-13に示すように、Javaソースのプロパティを初期化するために、Spring-DM @ServiceReference注釈を使用してEventTypeRepositoryにアクセスできます。

例9-13 @ServiceReference注釈を使用するJavaソース・ファイル

import org.springframework.osgi.extensions.annotation.ServiceReference;
import com.bea.wlevs.ede.api.EventTypeRepository;
...
@ServiceReference
setEventTypeRepository(EventTypeRepository etr) {
...
}

9.4.3 Oracle Event Processing @Service注釈の使用

例9-14に示すように、Javaソースのプロパティを初期化するために、Oracle Event Processing @Service注釈を使用して、EventTypeRepositoryにアクセスできます。

例9-14 @Service注釈を使用するJavaソース・ファイル

import com.bea.wlevs.util.Service;
import com.bea.wlevs.ede.api.EventTypeRepository;
...
@Service
setEventTypeRepository(EventTypeRepository etr) {
...
}

詳細は、I.5項「com.bea.wlevs.util.Service」を参照してください。

9.5 アプリケーション・バンドル間でのイベント・タイプの共有

それぞれのOracle Event Processingアプリケーションは、固有のJavaクラス・ローダーを取得し、そのクラス・ローダーを使用してアプリケーションのクラスをロードします。このため、デフォルトでは、あるアプリケーションから別のアプリケーションのクラスにアクセスすることはできません。ただし、イベント・タイプ・リポジトリはシングルトン・サービスであるため、あるバンドルでリポジトリを構成し、イベント・タイプ・クラスを明示的にエクスポートすることによって、(同一のOracle Event Processingサーバーにデプロイされた)別のバンドル内のアプリケーションでそれらの共有されたイベント・タイプを使用できるようになります。

この場合、イベント・タイプ名のスコープはOracle Event Processingサーバー・インスタンス全体になります。このため、他のバンドルからの共有イベント・タイプと同名のイベント・タイプを作成しようとすると例外が送出されますが、これらのイベント・タイプのクラスは異なります。

イベント・タイプ・クラスを共有するには、共有するイベント・タイプ・リポジトリが含まれているバンドルのMANIFEST.MFファイルのExport-Packageヘッダーにパッケージ名を追加します。

共有イベント・タイプを使用するアプリケーションが含まれているすべてのバンドルよりも前に、イベント・タイプ・リポジトリが含まれているバンドルを必ずデプロイするようにします。そうしないと、デプロイメント例外が送出されます。

詳細は、次を参照してください:

- 9.2.4項「イベント・タイプ・データ型の使用の混在」

- 23.2.3項「外部ステージによるアプリケーションのアセンブル」

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のOracle Java Data Cartridgeに関する項

10 チャネルを使用したEPNステージの接続

この章では、イベント処理ネットワークを介してOracle Event Processingのチャネルおよびイベントのパイプを構成する方法について説明します。

この章の内容は次のとおりです。

- 10.1項「チャネル構成の概要」

- 10.2項「チャネルの構成」

- 10.3項「チャネル構成ファイルの例」

10.1 チャネル構成の概要

Oracle Event Processingアプリケーションは、1つ以上のチャネル・コンポーネントを含みます。チャネルは、アダプタとプロセッサ間やプロセッサとイベントBean(ビジネス・ロジックPOJO)間のような、他のコンポーネント同士をイベントが往来する物理的なパイプを表します。

チャネルはストリームとリレーションの両方に使用できます。詳細は、10.1.2項「ストリームおよびリレーションを表すチャネル」を参照してください。

イベント処理ネットワーク(EPN)でチャネルを作成する場合、デフォルト構成があります。完全な詳細は、C.10項「wlevs:channel」を参照してください。

デフォルトのチャネル構成は、通常、大半のアプリケーションに適しています。

ただし、この構成を変更する場合は、コンポーネント構成ファイル内にchannel要素を作成する必要があります。このchannel要素では、デフォルト構成をオーバーライドするチャネル構成を指定できます。

コンポーネント構成ファイルのchannel要素のname要素は、EPNアセンブリ・ファイルのchannel要素のid属性に一致する必要があります。たとえば、例10-1に示すようにEPNアセンブリ・ファイルのchannel要素の場合、対応するコンポーネント構成ファイルのchannel要素は例10-2で示されます。

例10-1 EPNアセンブリ・ファイルのチャネルID: priceStream

<wlevs:channel id="priceStream" event-type="PriceEvent">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>

例10-2 コンポーネント構成ファイルのチャネル名: priceStream

<channel>
<name>priceStream</name>
<max-size>10000</max-size>
<max-threads>4</max-threads>
</channel>

次のコンポーネント構成ファイルのいずれかでchannel要素を作成できます。

- デフォルトのOracle Event Processingアプリケーション構成ファイル(デフォルトでは、META-INF/wlevs/config.xml)。

- 個別の構成ファイル。

アプリケーションが1つ以上のチャネルを持つ場合、デフォルトのconfig.xmlファイル内でそれぞれのチャネルのchannel要素を作成したり、それぞれのMETA-INF/wlevsで個別のXMLファイルを作成したり、すべてのチャネルの構成またはアプリケーションのすべてのコンポーネント(アダプタ、プロセッサ、およびチャネル)さえも含むMETA-INF/wlevsで単一のXMLファイルを作成したりできます。開発環境に最も適した方法を選択します。

デフォルトでは、Oracle Event Processing IDE for Eclipseは、1つのコンポーネント構成ファイルおよび1つのEPNアセンブリ・ファイルを作成します。

コンポーネント構成ファイルは、Oracle Event Processingアプリケーション・バンドルの一部としてデプロイされます。Oracle Event Processing Visualizer、wlevs.Adminユーティリティを使用するか、または適切なJMX Mbeanを直接操作して、後で実行時にこの構成を更新できます。

この項では次について説明します:

- 10.1.1項「チャネルを使用するタイミング」

- 10.1.2項「ストリームおよびリレーションを表すチャネル」

- 10.1.3項「システム・タイムスタンプ・チャネル」

- 10.1.4項「アプリケーション・タイムスタンプ・チャネル」

- 10.1.5項「ダウンストリーム・チャネルに対する問合せ出力の制御: selector」

- 10.1.6項「バッチ処理チャネル」

- 10.1.7項「EventPartitionerチャネル」

詳細は、次を参照してください:

- 1.4.2項「コンポーネント構成ファイルの概要」

- 5.3項「EPNアセンブリ・ファイルの作成」

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のwlevs.Adminコマンドライン・リファレンスに関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event ProcessingのJMXの構成に関する項

10.1.1 チャネルを使用するタイミング

EPNを構成するとき、次のルールを考慮してください。

- Oracle CQLプロセッサをダウンストリーム・ステージに接続するとき、チャネルは必須です。

- プッシュ・ソース・ストリームまたはリレーションをプロセッサに接続するとき、チャネルは必須です。
チャネルは、Oracle CQLプロセッサがその形状を認識される必要があり(つまり、DDLが必須)、チャネルも仲介者として機能する必要があるため、プッシュ・ソースに必須です。

- 外部リレーション、またはキャッシュや表のソースのようなプル・ソースをプロセッサに接続するとき、チャネルはオプションです。
チャネルは、キャッシュや表などのプル・ソースとプロセッサの間では、プル・ソースが外部リレーションを示すため必要ありません。外部リレーションでは、有効な操作はストリームとNOWウィンドウ演算子間の結合のみとなるため、プル・ソースとみなされます。つまり、結合は実際には、Oracle CQLプロセッサの外部で発生します。これはプルであるため、Oracle CQLプロセッサはその形状を認識される必要はありません(つまり、DDLは必要ありません)。そのため、チャネルを仲介者として機能させる必要もありません。

通常、コンポーネント間のチャネルは次の場合に使用します。

- バッファリングは、発行するコンポーネントと受信側の間で必要です。

- 受信側のコンポーネントにはキューイングまたは同時実行性が必要です。

- カスタム・アダプタが使用される場合は、スレッド制御が必要です。

EPNにチャネルを含めることは、今後の設計ライフサイクルでパフォーマンス・チューニング(バッファリング、キューイング、および同時実行性のオプションを使用)の柔軟性を提供するため、設計上よく行われます。チャネルの属性max-threadsを0に設定すると、パススルー・モードでチャネルを設置し、パフォーマンス・ペナルティを起こしません。

詳細は、次を参照してください:

- 10.1.7項「EventPartitionerチャネル」

- 表C-9「wlevs:channelアプリケーション・アセンブリ要素の属性」

10.1.2 ストリームおよびリレーションを表すチャネル

チャネルは、ストリームまたはリレーションのいずれかを示します。

詳細は、次を参照してください:

- 16.2.2.2項「RelationSourceの実装」

- 10.1項「チャネル構成の概要」

- 1.3項「イベント、ストリームおよびリレーションの概要」

10.1.2.1 ストリームとしてのチャネル

ストリームは追加のみサポートします。EPNアセンブリ要素のwlevs:channel属性のis-relationをfalse(デフォルト)に設定することによって、チャネルをストリームとして指定できます。

10.1.2.2 リレーションとしてのチャネル

リレーションは、挿入、削除、および更新をサポートします。EPNアセンブリ要素のwlevs:channel属性のis-relationをtrueに設定することによって、チャネルをリレーションとして指定できます。

チャネルがリレーションである場合は、例10-3に示すように、wlevs:channel属性primary-keyを使用してイベント・アイデンティティを定義する、1つ以上のイベント・プロパティを指定する必要があります。

例10-3 リレーションとしてのチャネル: primary-key属性

...
<wlevs:channel id="priceStream" event-type="PriceEvent" primary-key="stock,broker">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>
...

例10-4 PriceEvent

<wlevs:event-type-repository>
<wlevs:event-type type-name="PriceEvent">
<wlevs:property>
<entry key="stock" value="java.lang.String"/>
<entry key="broker" value="java.lang.String"/>
<entry key="high" value="float"/>
<entry key="low" value="float"/>
</wlevs:property>
</wlevs:event-type>
</wlevs:event-type-repository>

詳細は、表C-9「wlevs:channelアプリケーション・アセンブリ要素の属性」のprimary-keyを参照してください。

10.1.3 システム・タイムスタンプ・チャネル

デフォルトでは、チャネルはシステムにタイムスタンプを付けられます。この場合、Oracle Event Processingは2つの条件下でCPUクロックから新しい時間を割り当てます。新規イベントの到着時、および構成可能なハートビートのタイムアウトが期限切れになったとき。

詳細は、次を参照してください:

- 10.2.1項「Oracle Event Processing IDE for Eclipseを使用してシステム・タイムスタンプ・チャネルを構成する方法」

- D.52項「heartbeat」

10.1.4 アプリケーション・タイムスタンプ・チャネル

オプションで、チャネルをアプリケーションがタイムスタンプを付けるように構成できます。この場合、イベントのタイムスタンプは、構成可能なwlevs:expression要素によって判定されます。式のよくある例は、イベントでのプロパティへの参照です。式が指定されていない場合、タイムスタンプは前のイベントから伝播されます。たとえば、別のダウンストリームOracle CQLプロセッサのアプリケーション・タイムスタンプ・チャネルにイベントを送信する1つのOracle CQLプロセッサからのシステム・タイムスタンプ・チャネルを持つ場合などです。

また、アプリケーションはStreamSender.sendHeartbeatメソッドを使用して、イベント型heart-beatダウンストリームをEPNのStreamSinkリスナーに送信することが可能です。

詳細は、次を参照してください:

- 10.2.2項「Oracle Event Processing IDE for Eclipseを使用してアプリケーション・タイムスタンプ・チャネルを構成する方法」

- C.3項「wlevs:application-timestamped」

- C.15項「wlevs:expression」

10.1.5 ダウンストリーム・チャネルに対する問合せ出力の制御: selector

1つ以上の問合せを使用してOracle CQLプロセッサを構成する場合、デフォルトではすべての問合せの結果がダウンストリーム・チャネルに出力されます。

どの問合せの結果をダウンストリーム・チャネルに出力するかは、チャネルselector子要素を使用して制御できます。プロセッサのダウンストリーム側に接続される複数のチャネルがある場合、セレクタを使用する必要があります。これは、プロセッサの問合せの出力に特定のタイプがあるからです。特定の問合せの選択によって、問合せ出力がチャネルで受け入れられることを確認します。

図10-1はアップストリームOracle CQLプロセッサfilteredFanoutProcessorに接続されたチャネルfilteredStreamを備えたEPNを示します。

図10-1 Oracle CQLプロセッサおよびダウンストリーム・チャネルを備えたEPN

「図10-1 Oracle CQLプロセッサおよびダウンストリーム・チャネルを備えたEPN」の説明

例10-5は、Oracle CQLプロセッサに構成された問合せを示します。

例10-5 filterFanoutProcessor Oracle CQL問合せ

<processor>
<name>filterFanoutProcessor</name>
<rules>
<query id="Yr3Sector"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from priceStream where sector="3_YEAR"
]]></query>
<query id="Yr2Sector"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from priceStream where sector="2_YEAR"
]]></query>
<query id="Yr1Sector"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from priceStream where sector="1_YEAR"
]]></query>
</rules>
</processor>

例10-5に示すように、Oracle CQLプロセッサに1つ以上の問合せを指定する場合、デフォルトでは、すべての問合せ結果がプロセッサのアウトバウンド・チャネルに出力されます(図10-1のfilteredStream)。オプションで、コンポーネント構成ソースでchannel要素のselector子要素を使用し、例10-6が示すようにチャネルに結果を出力する1つ以上のOracle CQL問合せ名のスペース区切りのリストを指定できます。この例では、問合せYr3SectorおよびYr2Sectorの問合せ結果はfilteredStreamに出力されますが、問合せYr1Sectorの問合せ結果は出力されません。

例10-6 どの問合せ結果を出力するか制御するためのselectorの使用

<channel>
<name>filteredStream</name>
<selector>Yr3Sector Yr2Sector</selector>
</channel>

アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

注意:

selector子要素は、アップストリーム・ノードがOracle CQLプロセッサである場合のだけ適用できます。詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

詳細は、付録D「selector」を参照してください。

10.1.6 バッチ処理チャネル

デフォルトでは、チャネルはイベントが到達した時点でイベントを処理します。あるいは、例10-7に示すように、wlevs:channel属性batchingをtrueに設定することで、同じタイムスタンプを持ち、同じ問合せからの出力のイベントをまとめてバッチ処理するように構成できます。

例10-7 バッチ処理チャネル

...
<wlevs:channel id="priceStream" event-type="PriceEvent" batching="true">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>
...

詳細は、次を参照してください:

- 16.2.2.2項「RelationSourceの実装」

- 表C-9「wlevs:channelアプリケーション・アセンブリ要素の属性」のbatching

10.1.7 EventPartitionerチャネル

デフォルトでは、チャネルは各リスナーに各イベントをブロードキャストします。

EventPartitionerを使用するようにチャネルを構成した場合、受信イベントが到着するたびにチャネルはリスナーを選択し、各リスナーに各イベントをブロードキャストするかわりに、そのリスナーにイベントをディスパッチします。

チャネルでEventPartitionerを使用してスケーラビリティを向上できます。

詳細は、25.1.2.1項「EventPartitioner」を参照してください。

10.1.8 チャネルのフォルトの処理

チャネルのダウンストリームでチャネルにスローされるステージで発生する例外を処理するコードを書き込むことができます。デフォルトでは、チャネルのフォルト処理動作は次のとおりです。

- チャネルのmax-threads設定が0である場合(パススルー・チャネルとも呼ばれます)、例外がEPNの次のアップストリーム・ステージに再スローされます。

- チャネルのmax-threads設定が0より大きい場合、フォルトに関連付けられているイベントとともに例外がログに記録および削除されます。

フォルト処理クラスを書き込み、ハンドラとmax-threads値が0より大きいチャネルを関連付けることができます。フォルト・ハンドラをチャネルに関連付けると、チャネルにスローされる例外は、コードでフォルトを処理したり再スローできるハンドラで受信されます。フォルト処理コードが例外を再スローする場合、例外はログに記録されますが例外に関連するイベントは失われることに留意してください。これらの例外に含まれるイベントを追跡する場合、イベント・データをEPNに接続されるデータ・ソースに書き込むことなどによって、コードを使用して永続化する必要があります。

フォルト・ハンドラの書込みの詳細は、17.6項「フォルトの処理」を参照してください。

10.2 チャネルの構成

チャネルを手動で構成するか、またはOracle Event Processing IDE for Eclipseを使用して構成できます。

チャネル・コンポート構成ファイルを記述する完全なXSDスキーマについては、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

チャネル構成ファイルの完全な例については、10.3項「チャネル構成ファイルの例」を参照してください。

この節では、次のトピックについて説明します。

- 10.2.1項「Oracle Event Processing IDE for Eclipseを使用してシステム・タイムスタンプ・チャネルを構成する方法」

- 10.2.2項「Oracle Event Processing IDE for Eclipseを使用してアプリケーション・タイムスタンプ・チャネルを構成する方法」

- 10.2.3項「手動によるチャネル・コンポーネント構成ファイルの作成方法」

10.2.1 Oracle Event Processing IDE for Eclipseを使用してシステム・タイムスタンプ・チャネルを構成する方法

この項では、システム・タイムスタンプ・チャネルの作成方法を説明します。

デフォルトのコンポーネント構成ファイルでチャネル構成を作成・編集するための最も効率的でエラーの発生が少ない方法は、Oracle Event Processing IDE for Eclipseを使用することです。オプションで、チャネル構成ファイルを手動で作成できます(10.2.3項「手動によるチャネル・コンポーネント構成ファイルの作成方法」を参照)。

詳細は、次を参照してください:

- 10.1.3項「システム・タイムスタンプ・チャネル」

- 第7章「Oracle Event Processing IDE for Eclipseおよびイベント処理ネットワーク」

Oracle Event Processing IDE for Eclipseを使用してチャネルを構成するには:

1. Oracle Event Processing IDE for Eclipseを使用してチャネルを作成します。
7.4.1.1項「基本ノードの作成方法」を参照してください。

2. オプションで、wlevs:channel属性や子要素を追加することによって、デフォルトのチャネル・アセンブリ・ファイルの構成をオーバーライドします。

1. チャネル・ノードを右クリックし、「アセンブリのソースに移動」を選択します。

2. 適切なwlevs:channel属性を追加します。
必須の属性には次のものがあります。

- id

- event-type

特に、is-relation属性を構成することによって、このチャネルがストリームまたはリレーションかどうかを指定します。

- このチャネルをストリームに指定するには、is-relationをfalse(デフォルト)に設定します。

- このチャネルをリレーションに指定するには、is-relationをtrueに設定します。
このチャネルをリレーションとして指定する場合は、チャネル属性primary-keyも指定する必要があります。

表C-9「wlevs:channelアプリケーション・アセンブリ要素の属性」を参照してください。

3. 適切なwlevs:channel子要素を追加します。

- 付録C「wlevs:instance-property」

- 付録C「wlevs:listener」

- 付録C「wlevs:property」

- 付録C「wlevs:source」

3. プロジェクト・エクスプローラで、META-INF/wlevsディレクトリを展開します。

4. 使用するコンポーネント構成ファイルを選択します。

1. デフォルトのコンポーネント構成ファイルを使用するには、META-INF/wlevs/config.xmlファイルを右クリックし、次で開く>XMLエディタを選択します。
ファイルがXMLエディタで開きます。

2. 新しいコンポーネント構成ファイルを作成するには:

- wlevsディレクトリを右クリックし、「新規」>「ファイル」を選択します。
新規ファイルダイアログが表示されます。

- ファイル名を入力します。
名前は任意で付けることができますが、ファイル名の最後は.xmlにする必要がります。

- 「終了」をクリックします。
Oracle Event Processing IDE for Eclipseは、コンポーネント構成ファイルをwlevsディレクトリに追加します。

5. 使用するように選択したコンポーネント構成ファイルを右クリックし、次で開く>XMLエディタを選択します。
ファイルがXMLエディタで開きます。

6. 新しいコンポーネント構成ファイルを作成した場合、例10-8で示されているヘッダーおよびconfig要素を追加します。それ以外の場合は、ステップ7に進みます。

例10-8 コンポーネント構成ファイルのヘッダーおよびconfig要素

<?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">

</config>

7. チャネルのchannel要素を例10-9で示されるように追加します。

例10-9 コンポーネント構成ファイルのチャネル要素

<?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>
...
<channel>
</channel>
</config>

8. name子要素をchannel要素に追加します。
name要素の値は、対応するEPNアセンブリ・ファイルのchannel要素のid属性に一致する必要があります。

たとえば、例10-10に示すようにEPNアセンブリ・ファイルのchannel要素の場合、対応するコンポーネント構成ファイルのchannel要素は例10-11で示されます。

例10-10 EPNアセンブリ・ファイルのチャネルID: priceStream

<wlevs:channel id="priceStream" event-type="PriceEvent">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>

例10-11 コンポーネント構成ファイルのチャネル名: priceStream

<channel>
<name>priceStream</name>
</channel>

注意:

XMLファイルの識別子および名前は大/小文字が区別されます。EPNアセンブリ・ファイル内のコンポーネントの識別子を参照するときは、必ず大/小文字を同じにして指定します。

9. オプションで、channel子要素を追加することによって、デフォルトのチャネル構成をオーバーライドします。

- max-threads子要素を追加すると、Oracle Event Processingサーバーがこのチャネルのイベントを処理するために使用するスレッドの最大数を指定できます。
max-sizeが0の場合は、この値の設定に影響はありません。デフォルト値は0です。

<channel>
<name>priceStream</name>
<max-threads>2</size>
</channel>

0に指定する場合、チャネルは受渡しのように機能します。max-threads > 0の場合、チャネルは従来のブロッキング・キューのように機能し、アップストリーム・コンポーネントがイベントのプロデューサ、ダウンストリーム・コンポーネントがイベントのコンシューマになります。キューのサイズはmax-sizeの構成によって定義されます。キューからイベントを消費するスレッドは、最大でmax-threadsの数までとなります。

複数のスレッドが有効な場合、チャネルに関連付けられたフォルト・ハンドラがないかぎり、EPNのダウンストリーム・コンポーネントからスローされるcom.bea.wlevs.ede.api.EventRejectedExceptionインスタンスは、チャネルがイベントを受信しているアダプタに伝播されません。詳細は、10.1.8項「チャネルのフォルトの処理」を参照してください。

- max-size子要素を追加すると、チャネルの最大サイズを指定できます。
サイズがゼロのチャネルは、同期的にイベントを受け渡します。

サイズがゼロでないチャネルはイベントを非同期的に処理し、リクエストされたサイズに従ってイベントをバッファリングします。デフォルト値は0です。

<channel>
<name>priceStream</name>
<max-size>10000</size>
</channel>

キューに入れられたチャネルがいっぱいの場合、デフォルトの動作によってキューがいっぱいのためにキューに挿入できなかったイベントが破棄されます。かわりにアップストリーム・ステージにEventProcessingExceptionを呼び出すよう、チャネルを構成できます。例外は、キューに挿入できなかったイベントを含みます。この動作をサポートするには、fail-when-rejected設定をtrueに設定します。イベントが削除されるか、例外が呼び出されるまでのタイムアウト値も指定できます。構成の詳細なリファレンスは、0「fail-when-rejected」および0「offer-timeout」を参照してください。

- heartbeat子要素を追加すると、Oracle Event Processingが時間を進めるためにハートビート・イベントを生成する前にチャネルが待機できる時間をナノ秒数で指定できます。デフォルトは100,000,000ナノ秒です。
heartbeatの子要素は、プロセッサに送信を行うイベント・チャネルにイベントが到着しない場合のみ、システムがタイムスタンプを付けた関係またはストリームに適用されます。プロセッサは、時間ベースのウィンドウや期間のパターン照合などの、一時的な演算子をいくつか含む文を用いて構成されています。

<channel>
<name>MatchOutputChannel</name>
<heartbeat>10000</heartbeat>
</channel>

- selector子要素を追加すると、どのアップストリームOracle CQLプロセッサの問合せがチャネルに結果を出力することを許可されるかを指定できます。
アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

詳細は、10.1.5項「ダウンストリーム・チャネルに対する問合せ出力の制御: selector」を参照してください。

注意:

selector属性はアップストリーム・ノードがOracle CQLプロセッサの場合のみ該当します。詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

10. 「ファイル」>「保存」を選択します。
EPNエディタは、図10-2で示すように構成バッジをチャネルに追加します。詳細は、7.2.7項「バッジの構成」を参照してください。

図10-2 構成バッジを備えたチャネル

「図10-2 構成バッジを備えたチャネル」の説明

10.2.2 Oracle Event Processing IDE for Eclipseを使用してアプリケーション・タイムスタンプ・チャネルを構成する方法

この項では、アプリケーション・タイムスタンプ・チャネルの作成方法を説明します。

デフォルトのコンポーネント構成ファイルでチャネル構成を作成・編集するための最も効率的でエラーの発生が少ない方法は、Oracle Event Processing IDE for Eclipseを使用することです。オプションで、チャネル構成ファイルを手動で作成できます(10.2.3項「手動によるチャネル・コンポーネント構成ファイルの作成方法」を参照)。

詳細は、次を参照してください:

- 10.1.4項「アプリケーション・タイムスタンプ・チャネル」

- 第7章「Oracle Event Processing IDE for Eclipseおよびイベント処理ネットワーク」

Oracle Event Processing IDE for Eclipseを使用してチャネルを構成するには:

1. Oracle Event Processing IDE for Eclipseを使用してチャネルを作成します。
7.4.1.1項「基本ノードの作成方法」を参照してください。

2. オプションで、wlevs:channel属性や子要素を追加することによって、デフォルトのチャネル・アセンブリ・ファイルの構成をオーバーライドします。

1. チャネル・ノードを右クリックし、「アセンブリのソースに移動」を選択します。

2. 適切なwlevs:channel属性を追加します。
特に、is-relation属性を構成することによって、このチャネルがストリームまたはリレーションかどうかを指定します。

- このチャネルをストリームに指定するには、is-relationをfalse(デフォルト)に設定します。

- このチャネルをリレーションに指定するには、is-relationをtrueに設定します。

表C-9「wlevs:channelアプリケーション・アセンブリ要素の属性」を参照してください。

3. wlevs:application-timestamped子要素を追加します。
この要素を使用すると、Oracle Event Processingがタイムスタンプ値を出力するために使用するwlevs:expression子要素を指定できます。

オプションで、wlevs:application-timestamped属性を構成します。

- is-total-order: パブリッシュされたアプリケーション時間が常に前回使用された値よりも大きくなる場合に指定します。
有効な値は、trueまたはfalseです。デフォルト: false。

詳細は、付録C「wlevs:application-timestamped」を参照してください。

4. 他の適切なwlevs:channel子要素を追加します。

- 付録C「wlevs:instance-property」

- 付録C「wlevs:listener」

- 付録C「wlevs:property」

- 付録C「wlevs:source」

3. プロジェクト・エクスプローラで、META-INF/wlevsディレクトリを展開します。

4. 使用するコンポーネント構成ファイルを選択します。

1. デフォルトのコンポーネント構成ファイルを使用するには、META-INF/wlevs/config.xmlファイルを右クリックし、次で開く>XMLエディタを選択します。
ファイルがXMLエディタで開きます。

2. 新しいコンポーネント構成ファイルを作成するには:

- wlevsディレクトリを右クリックし、「新規」>「ファイル」を選択します。
新規ファイルダイアログが表示されます。

- ファイル名を入力します。
名前は任意で付けることができますが、ファイル名の最後は.xmlにする必要がります。

- 「終了」をクリックします。
Oracle Event Processing IDE for Eclipseは、コンポーネント構成ファイルをwlevsディレクトリに追加します。

5. 使用するように選択したコンポーネント構成ファイルを右クリックし、次で開く>XMLエディタを選択します。
ファイルがXMLエディタで開きます。

6. 新しいコンポーネント構成ファイルを作成した場合、例10-8で示されているヘッダーおよびconfig要素を追加します。それ以外の場合は、ステップ7に進みます。

例10-12 コンポーネント構成ファイルのヘッダーおよびconfig要素

<?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">

</config>

7. チャネルのchannel要素を例10-9で示されるように追加します。

例10-13 コンポーネント構成ファイルのチャネル要素

<?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>
...
<channel>
</channel>
</config>

8. name子要素をchannel要素に追加します。
name要素の値は、対応するEPNアセンブリ・ファイルのchannel要素のid属性に一致する必要があります。

たとえば、例10-10に示すようにEPNアセンブリ・ファイルのchannel要素の場合、対応するコンポーネント構成ファイルのchannel要素は例10-11で示されます。

例10-14 EPNアセンブリ・ファイルのチャネルID: priceStream

<wlevs:channel id="priceStream" event-type="PriceEvent">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>

例10-15 コンポーネント構成ファイルのチャネル名: priceStream

<channel>
<name>priceStream</name>
</channel>

注意:

XMLファイルの識別子および名前は大/小文字が区別されます。EPNアセンブリ・ファイル内のコンポーネントの識別子を参照するときは、必ず大/小文字を同じにして指定します。

9. オプションで、channel子要素を追加することによって、デフォルトのチャネル構成をオーバーライドします。

- max-threads子要素を追加すると、Oracle Event Processingサーバーがこのチャネルのイベントを処理するために使用するスレッドの最大数を指定できます。
max-sizeが0の場合は、この値の設定に影響はありません。デフォルト値は0です。

<channel>
<name>priceStream</name>
<max-threads>2</size>
</channel>

0に指定する場合、チャネルは受渡しのように機能します。max-threads > 0の場合、チャネルは従来のブロッキング・キューのように機能し、アップストリーム・コンポーネントがイベントのプロデューサ、ダウンストリーム・コンポーネントがイベントのコンシューマになります。キューのサイズはmax-sizeの構成によって定義されます。キューからイベントを消費するスレッドは、最大でmax-threadsの数までとなります。

複数のスレッドが有効な場合、EPNのダウンストリーム・コンポーネントからスローされるcom.bea.wlevs.ede.api.EventRejectedExceptionインスタンスは、チャネルがイベントを受信しているアダプタに伝播されないことに注意してください。

- max-size子要素を追加すると、チャネルの最大サイズを指定できます。
サイズがゼロのチャネルは、同期的にイベントを受け渡します。

サイズがゼロでないチャネルはイベントを非同期的に処理し、リクエストされたサイズに従ってイベントをバッファリングします。デフォルト値は0です。

<channel>
<name>priceStream</name>
<max-size>10000</size>
</channel>

キューに入れられたチャネルがいっぱいの場合、デフォルトの動作によってキューがいっぱいのためにキューに挿入できなかったイベントが破棄されます。かわりにアップストリーム・ステージにEventProcessingExceptionを呼び出すよう、チャネルを構成できます。例外は、キューに挿入できなかったイベントを含みます。この動作をサポートするには、fail-when-rejected設定をtrueに設定します。イベントが削除されるか、例外が呼び出されるまでのタイムアウト値も指定できます。構成の詳細なリファレンスは、0「fail-when-rejected」および0「offer-timeout」を参照してください。

- selector子要素を追加すると、どのアップストリームOracle CQLプロセッサの問合せがチャネルに結果を出力することを許可されるかを指定できます。
アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

詳細は、10.1.5項「ダウンストリーム・チャネルに対する問合せ出力の制御: selector」を参照してください。

注意:

selector属性はアップストリーム・ノードがOracle CQLプロセッサの場合のみ該当します。詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

詳細は、D.87項「selector」を参照してください。

10. 「ファイル」>「保存」を選択します。
EPNエディタは、図10-3で示すように構成バッジをチャネルに追加します。詳細は、7.2.7項「バッジの構成」を参照してください。

図10-3 構成バッジを備えたチャネル

「図10-3 構成バッジを備えたチャネル」の説明

10.2.3 手動によるチャネル・コンポーネント構成ファイルの作成方法

Oracle Event Processing IDE for Eclipseは、チャネル構成ファイルを作成するのに最も効率的でエラーの発生が少ない方法ですが(10.2.1項「Oracle Event Processing IDE for Eclipseを使用してシステム・タイムスタンプ・チャネルを構成する方法」を参照)、別の方法として、チャネル構成ファイルを手動で作成・維持することもできます。

簡略化するために、次の手順では、単一のXMLファイルでアプリケーションのすべてのコンポーネントを構成すると仮定しています。

手動でチャネル・コンポーネント構成ファイルを作成するには:

1. EPNアセンブリ・ファイルを作成し、アプリケーションの各チャネルのwlevs:channel要素を追加します。
id属性を持つそれぞれのwlevs:channelを一意で識別します。

詳細は、5.3項「EPNアセンブリ・ファイルの作成」を参照してください。

2. オプションで、wlevs:channel属性や子要素を追加することによって、デフォルトのチャネル・アセンブリ・ファイルの構成をオーバーライドします。

1. 適切なwlevs:channel属性を追加します。
表C-9「wlevs:channelアプリケーション・アセンブリ要素の属性」を参照してください。

2. 適切なwlevs:channel子要素を追加します。

- 付録C「wlevs:application-timestamped」

- 付録C「wlevs:instance-property」

- 付録C「wlevs:listener」

- 付録C「wlevs:property」

- 付録C「wlevs:source」

3. お気に入りのXMLエディタを使用してXMLファイルを作成します。
このXMLファイルの名前は自分で決定しますが、その拡張は.xmlで終了することが必要です。

構成ファイルのルート要素はconfigであり、次のステップに示すネームスペース定義を使用します。

4. アプリケーション内の各チャネルでは、configのchannel子要素を追加します。
name子要素を持つ各チャネルを一意で識別します。このnameは、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルのchannel要素のid属性の値と同一にする必要があります。これが、このチャネル構成が適用される対象の、EPNアセンブリ・ファイル内の特定のチャネル・コンポーネントをOracle Event Processingが認識する仕組みです。詳細は、5.3項「EPNアセンブリ・ファイルの作成」を参照してください。

たとえば、アプリケーションに2つのストリームがある場合、構成ファイルは最初に以下のようになります。

<?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">
<helloworld:config
xmlns:helloworld="http://www.bea.com/xml/ns/wlevs/example/helloworld">
<processor>
...
</processor>
<channel>
<name>firstStream</name>
...
</channel>
<channel>
<name>secondStream</name>
...
</channel>
</helloworld:config>

この例では、構成ファイルにfirstStreamおよびsecondStreamと呼ばれる2つのチャネルが含まれます。つまり、EPNアセンブリ・ファイルには同一の識別子を持つ2つ以上のチャネル登録が含まれることになります。

<wlevs:channel id="firstStream" ...>
...
</wlevs:channel>
<wlevs:channel id="secondStream" ...>
...
</wlevs:channel>

注意:

XMLファイルの識別子と名前は大/小文字が区別されるため、EPNアセンブリ・ファイルでコンポーネントの識別子を参照するときは、必ず大/小文字を同一にします。

5. オプションで、channel子要素を追加することによって、デフォルトのチャネル構成をオーバーライドします。

- max-threads子要素を追加すると、Oracle Event Processingサーバーがこのチャネルのイベントを処理するために使用するスレッドの最大数を指定できます。
max-sizeが0の場合は、この値の設定に影響はありません。デフォルト値は0です。

<channel>
<name>priceStream</name>
<max-threads>2</size>
</channel>

0に指定する場合、チャネルは受渡しのように機能します。max-threads > 0の場合、チャネルは従来のブロッキング・キューのように機能し、アップストリーム・コンポーネントがイベントのプロデューサ、ダウンストリーム・コンポーネントがイベントのコンシューマになります。キューのサイズはmax-sizeの構成によって定義されます。キューからイベントを消費するスレッドは、最大でmax-threadsの数までとなります。

複数のスレッドが有効な場合、EPNのダウンストリーム・コンポーネントからスローされるcom.bea.wlevs.ede.api.EventRejectedExceptionインスタンスは、チャネルがイベントを受信しているアダプタに伝播されないことに注意してください。

- max-size子要素を追加すると、チャネルの最大サイズを指定できます。
サイズがゼロのチャネルは、同期的にイベントを受け渡します。

サイズがゼロでないチャネルはイベントを非同期的に処理し、リクエストされたサイズに従ってイベントをバッファリングします。デフォルト値は0です。

<channel>
<name>priceStream</name>
<max-size>10000</size>
</channel>

キューに入れられたチャネルがいっぱいの場合、デフォルトの動作によってキューがいっぱいのためにキューに挿入できなかったイベントが破棄されます。かわりにアップストリーム・ステージにEventProcessingExceptionを呼び出すよう、チャネルを構成できます。例外は、キューに挿入できなかったイベントを含みます。この動作をサポートするには、fail-when-rejected設定をtrueに設定します。イベントが削除されるか、例外が呼び出されるまでのタイムアウト値も指定できます。構成の詳細なリファレンスは、0「fail-when-rejected」および0「offer-timeout」を参照してください。

- heartbeat子要素を追加すると、Oracle Event Processingが時間を進めるためにハートビート・イベントを生成する前にチャネルが待機できる時間を新しいナノ秒数で指定できます。デフォルトは100,000,000ナノ秒です。
heartbeatの子要素は、プロセッサに送信を行うイベント・チャネルにイベントが到着しない場合のみ、システムがタイムスタンプを付けた関係またはストリームに適用されます。プロセッサは、時間ベースのウィンドウや期間のパターン照合などの、一時的な演算子をいくつか含む文を用いて構成されています。

<channel>
<name>MatchOutputChannel</name>
<heartbeat>10000</heartbeat>
</channel>

- selector子要素を追加すると、どのアップストリームOracle CQLプロセッサの問合せがチャネルに結果を出力することを許可されるかを指定できます。
アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

詳細は、10.1.5項「ダウンストリーム・チャネルに対する問合せ出力の制御: selector」を参照してください。

注意:

selector属性はアップストリーム・ノードがOracle CQLプロセッサの場合のみ該当します。詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

詳細は、D.87項「selector」を参照してください。

6. 構成ファイルを保存して閉じます。

10.3 チャネル構成ファイルの例

図10-4は、2つのチャネルを含むEPNの一部を示します: priceStreamおよびfilteredStream。priceStreamチャネルは、PriceAdapterイベント・ソースとそのPriceEventイベントをOracle CQLプロセッサのfilterFanoutProcessorに接続するインバウンド・チャネルです。filteredStreamチャネルは、Oracle CQLプロセッサの問合せ結果(FilteredPriceEventイベント)をダウンストリーム・コンポーネント(図10-4では示されていません)に接続するアウトバウンド・チャネルです。

図10-4 2つのチャネルを持つEPN

「図10-4 2つのチャネルを持つEPN」の説明

この項では、次を含むチャネル構成ファイルの例を提供します。

- 10.3.1項「チャネル・コンポーネント構成ファイル」

- 10.3.2項「チャネルEPNアセンブリ・ファイル」

10.3.1 チャネル・コンポーネント構成ファイル

例10-16は、図10-4で示されるように2つのチャネルを構成するサンプルのコンポーネント構成ファイルを示します。

例10-16 サンプルのチャネル・コンポーネント構成ファイル

<?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">
<processor>
<name>filterFanoutProcessor</name>
<rules>
<query id="Yr3Sector"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from priceStream where sector="3_YEAR"
]]></query>
</rules>
</processor>
<channel>
<name>priceStream</name>
<max-size>10000</max-size>
<max-threads>4</max-threads>
</channel>
<channel>
<name>filteredStream</name>
<max-size>5000</max-size>
<max-threads>2</max-threads>
</channel>
</n1:config>

10.3.2 チャネルEPNアセンブリ・ファイル

例10-17は、図10-4で示されるように2つのチャネルを構成するEPNアセンブリ・ファイルを示します。

例10-17 チャネルEPNアセンブリ・ファイル

<?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"
xmlns:cqlx="http://www.oracle.com/schema/cqlx"
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-v11_1_1_6.xsd">

<wlevs:event-type-repository>
<wlevs:event-type type-name="PriceEvent">
<wlevs:properties>
<wlevs:property name="cusip" type="java.lang.String" />
<wlevs:property name="bid" type="java.lang.Double" />
<wlevs:property name="srcId" type="java.lang.String" />
<wlevs:property name="bidQty" type="java.lang.Integer" />
<wlevs:property name="ask" type="java.lang.Double" />
<wlevs:property name="askQty" type="java.lang.Integer" />
<wlevs:property name="seq" type="java.lang.Long" />
<wlevs:property name="sector" type="java.lang.String" />
</wlevs:properties>
</wlevs:event-type>
<wlevs:event-type type-name="FilteredPriceEvent">
<wlevs:properties>
<wlevs:property name="cusip" type="java.lang.String" />
<wlevs:property name="bid" type="java.lang.Double" />
<wlevs:property name="srcId" type="java.lang.String" />
<wlevs:property name="bidQty" type="java.lang.Integer" />
<wlevs:property name="ask" type="java.lang.Double" />
<wlevs:property name="askQty" type="java.lang.Integer" />
<wlevs:property name="seq" type="java.lang.Long" />
</wlevs:properties>
</wlevs:event-type>
<wlevs:event-type type-name="BidAskEvent">
<wlevs:properties>
<wlevs:property name="cusip" type="java.lang.String" />
<wlevs:property name="bidseq" type="java.lang.Long" />
<wlevs:property name="bidSrcId" type="java.lang.String" />
<wlevs:property name="bid" type="java.lang.Double" />
<wlevs:property name="askseq" type="java.lang.Long" />
<wlevs:property name="askSrcId" type="java.lang.String" />
<wlevs:property name="ask" type="java.lang.Double" />
<wlevs:property name="bidQty" type="java.lang.Integer" />
<wlevs:property name="askQty" type="java.lang.Integer" />
<wlevs:property name="intermediateStrategy" type="java.lang.String" />
<wlevs:property name="correlationId" type="java.lang.Long" />
<wlevs:property name="priority" type="java.lang.Integer" />
</wlevs:properties>
</wlevs:event-type>
<wlevs:event-type type-name="FinalOrderEvent">
<wlevs:properties>
<wlevs:property name="cusip" type="java.lang.String" />
<wlevs:property name="bidseq" type="java.lang.Long" />
<wlevs:property name="bidSrcId" type="java.lang.String" />
<wlevs:property name="bid" type="java.lang.Double" />
<wlevs:property name="bidQty" type="java.lang.Integer" />
<wlevs:property name="bidSourceStrategy" type="java.lang.String" />
<wlevs:property name="askseq" type="java.lang.Long" />
<wlevs:property name="askSrcId" type="java.lang.String" />
<wlevs:property name="ask" type="java.lang.Double" />
<wlevs:property name="askQty" type="java.lang.Integer" />
<wlevs:property name="askSourceStrategy" type="java.lang.String" />
<wlevs:property name="correlationId" type="java.lang.Long" />
</wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

<!-- Assemble EPN (event processing network) -->
<wlevs:adapter advertise="true" id="PriceAdapter"
provider="csvgen">
<wlevs:instance-property name="port" value="9008" />
<wlevs:instance-property name="eventTypeName"
value="PriceEvent" />
<wlevs:instance-property name="eventPropertyNames"
value="srcId,sector,cusip,bid,ask,bidQty,askQty,seq" />
</wlevs:adapter>

<wlevs:channel id="priceStream" event-type="PriceEvent">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>

<!-- By default, CQL is used for OCEP 11.0 -->
<wlevs:processor id="filterFanoutProcessor" >
</wlevs:processor>

<wlevs:channel id="filteredStream"
event-type="FilteredPriceEvent">
<wlevs:listener ref="bbaProcessor" />
<wlevs:listener ref="analyticsProcessor" />
<wlevs:source ref="filterFanoutProcessor" />
</wlevs:channel>

<!-- Explicitly specify provider CQL -->
<wlevs:processor id="bbaProcessor" provider="cql">
<wlevs:listener ref="bidAskBBAStream" />
</wlevs:processor>

<wlevs:processor id="analyticsProcessor">
<wlevs:listener ref="bidAskAnalyticsStream" />
</wlevs:processor>

<wlevs:channel id="bidAskBBAStream" event-type="BidAskEvent">
<wlevs:listener ref="selectorProcessor" />
</wlevs:channel>

<wlevs:channel id="bidAskAnalyticsStream" event-type="BidAskEvent">
<wlevs:listener ref="selectorProcessor" />
</wlevs:channel>

<wlevs:processor id="selectorProcessor">
<wlevs:listener ref="citipocOut" />
</wlevs:processor>

<wlevs:channel id="citipocOut" event-type="FinalOrderEvent" advertise="true">
<wlevs:listener>
<!-- Create business object -->
<bean id="outputBean"
class="com.bea.wlevs.POC.citi.OutputBean"
autowire="byName" />
</wlevs:listener>
</wlevs:channel>
</beans>

11 Java Message Serviceの統合

この章では、JMSアダプタを使用して、JMSメッセージを送受信するOracle Event Processingイベント処理ネットワークにJava Message Serviceを接続する方法について説明します。

この章の内容は次のとおりです。

- 11.1項「JMSアダプタ構成の概要」

- 11.2項「JMSサービス・プロバイダのJMSアダプタの構成」

- 11.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」

- 11.4項「JMSアダプタのコンポーネント構成ファイル内のパスワードの暗号化」

- 11.5項「JMSアダプタのEPNアセンブリ・ファイルの構成」

- 11.6項「JMSアダプタのコンポーネント構成ファイルの構成」

11.1 JMSアダプタ構成の概要

Oracle Event Processing JMSアダプタは、Javaクライアントを提供するJava EE準拠のJMSサービス・プロバイダをサポートします。詳細は、11.1.1項「JMSサービス・プロバイダ」を参照してください。

Oracle Event Processingでは、Javaコードを記述することなくJMS宛先との間でメッセージを送受信するためにイベント・アプリケーションで使用できる、次のJava Message Service (JMS)アダプタが提供されます。

- 11.1.2項「インバウンドJMSアダプタ」

- 11.1.3項「アウトバウンドJMSアダプタ」

JMSに関する一般情報については、http://java.sun.com/products/jms/でSun Developer NetworkのJava Message Serviceを参照してください。

11.1.1 JMSサービス・プロバイダ

Oracle Event Processing JMSアダプタは、Javaクライアントを提供するJava EE準拠のJMSサービス・プロバイダをサポートします。

この章では、次のJMSサービス・プロバイダとともに使用するOracle Event Processing JMSインバウンドおよびアウトバウンド・アダプタの構成方法について説明します。

- 11.2.3項「Oracle WebLogic Server JMS用にJMSアダプタを手動で構成する方法」

- 11.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」

ご使用のJMSサービス・プロバイダがこのリストにない場合でも、JMSサービス・プロバイダで使用するOracle Event Processing JMSアダプタを構成できます。構成モデルとして11.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」の手順を確認し、JMSサービス・プロバイダのドキュメントを参照して、この手順をご使用のJMSサービス・プロバイダに適合するように変更してください。

詳細は、11.2項「JMSサービス・プロバイダのJMSアダプタの構成」を参照してください。

11.1.2 インバウンドJMSアダプタ

インバウンドJMSアダプタは、JMS宛先からメッセージを受信し、イベントに変換します。

EPNアセンブリ・ファイルで次のようにインバウンドJMSアダプタを指定します。

...
<wlevs:adapter id="myJmsInbound" provider="jms-inbound">
...
</wlevs:adapter>
...

インバウンドJMSアダプタをコンポーネント構成ファイルで次のように構成します。

...
<jms-adapter>
<name>myJmsInbound</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Queue1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>
...

この項では次について説明します:

- 11.1.2.1項「JMSメッセージとイベント・タイプの間の変換」

- 11.1.2.2項「シングルおよびマルチスレッド・インバウンドJMSアダプタ」

- 11.1.2.3項「恒久サブスクリプション用のJMSアダプタの構成」

詳細は、次を参照してください:

- 11.5.1項「JMSインバウンド・アダプタのEPNアセンブリ・ファイルの構成」

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

11.1.2.1 JMSメッセージとイベント・タイプの間の変換

デフォルトでは、インバウンドJMSアダプタは、次の条件に当てはまる場合にプロパティ名を指定のイベント・タイプと一致させることで、JMSメッセージをイベントに自動的に変換します。

- JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用して、イベント・タイプを指定する必要があります。
JMSアダプタは、着信JMSメッセージをこの要素が指定するOracle Event Processingイベント・タイプに変換します。

- JMSメッセージは、MapMessageタイプである必要があります。
各着信メッセージについて、指定のイベント・タイプを持つイベントが作成されます。着信メッセージの各マップ要素については、アダプタによってイベント・タイプのプロパティが検索され、見つかった場合は対応する値が設定されます。

オプションで、着信JMSメッセージを1つ以上のイベント・タイプに変換する方法を厳密に指定する独自のJavaクラスを作成することで、JMSメッセージのイベント・タイプへの変換をカスタマイズできます。この場合、JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用して、イベント・タイプを指定しません。

詳細は、11.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

11.1.2.2 シングルおよびマルチスレッド・インバウンドJMSアダプタ

デフォルトでは、インバウンドJMSアダプタはシングルスレッドです。つまり、インバウンドJMSアダプタは、シングルスレッドを使用してJMS宛先からメッセージを読み取ります。

インバウンドJMSアダプタがシングルスレッドであると、イベント順序が保証されます。

スケーラビリティを向上させるために、インバウンドJMSアダプタでマルチスレッドを使用してJMS宛先からメッセージを読み取るように構成できます。このように構成する場合、最も簡単な方法はワーク・マネージャを使用してアダプタを構成することです。アダプタだけが使用する専用のワーク・マネージャを指定するか、他のアダプタやJettyなどのいくつかのコンポーネントでワーク・マネージャを共有できます。

インバウンドJMSアダプタがマルチスレッドであると、イベント順序は保証されません。

詳細は、次を参照してください:

- 表11-1「jms-adapterインバウンド子要素」のwork-managerおよびconcurrent-consumers

- 25.1.2.1項「EventPartitioner」

11.1.2.3 恒久サブスクリプション用のJMSアダプタの構成

JMSトピックへの恒久サブスクリプション内のクライアントになるように、インバウンドJMSアダプタを構成できます。恒久サブスクリプションでは、アダプタが非アクティブになった場合も、アダプタはパブリッシュされたメッセージを受信することが保証されます。インバウンド・アダプタがJMSサーバーに接続すると、恒久サブスクリプションが登録されます。それ以降にトピックに送信されるメッセージは、サブスクライバが切断されている間も保持され(期限切れではない場合)、再接続すると配信されます。

恒久サブスクリプションは、JMSメッセージをトピックにパブリッシュしているパブリッシャが永続配信モードを使用していることを前提とします。パブリッシャはOracle Event ProcessingのアウトバウンドJMSアダプタである(つまりdelivery-modeの値は、デフォルト値のpersistentである必要がある)ことに注意してください。

アダプタに恒久サブスクリプションを作成するには、次を実行します。

- JMSメッセージ・パブリッシャが永続モードでメッセージを配信していることを確認します。

- 接続ファクトリのクライアントIDを指定します。Oracle WebLogic Serverで、管理上、コンソールを使用して接続ファクトリにクライアントIDを設定できます。これは、恒久サブスクライバを使用している各アダプタ・インスタンスに構成された専用の接続ファクトリがあることを意味していることに注意してください。

- jms-adapterの次の3つのプロパティを設定します。

- destination-typeはTOPICに設定する必要があります。

- durable-subscriptionはtrueに設定する必要があります。

- durable-subscription-nameは、サブスクリプション用に一意の識別子に設定します。

これらのプロパティの詳細は、11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」を参照してください。

11.1.3 アウトバウンドJMSアダプタ

アウトバウンドJMSアダプタは、イベントをJMS宛先に送信します。プロパティ名とイベント・タイプを一致させることで、イベントはJMSマップ・メッセージに自動的に変換されます。

通常は、独自のJavaクラスを作成してイベント・タイプを送信JMSメッセージに変換する方法を正確に指定することで、この変換もカスタマイズします。

独自のコンバータ・クラスを指定せずに、メッセージとイベント・タイプの間の変換処理がOracle Event Processingによって実行されるようにする場合は、次のことが当てはまります。

- JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用して、イベント・タイプを指定する必要があります。
JMSアダプタは、着信JMSメッセージをこの要素が指定するOracle Event Processingイベント・タイプに変換します。

- デフォルトでは、アウトバウンドJMSアダプタのデフォルト・コンバータでは、MapMessageタイプのJMSメッセージが作成されます。イベントのプロパティごとに、出力のMapMessageに対応する要素が作成されます。

EPNアセンブリ・ファイルで次のようにアウトバウンドJMSアダプタを指定します。

...
<wlevs:adapter id="myJmsOutbound" provider="jms-outbound">
...
</wlevs:adapter>
...

アウトバウンドJMSアダプタをコンポーネント構成ファイルで次のように構成します。

...
<jms-adapter>
<name>myJmsOutbound</name>
<event-type>JMSEvent</event-type>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Topic1</destination-jndi-name>
<delivery-mode>nonpersistent</delivery-mode>
</jms-adapter>
...

詳細は、次を参照してください:

- 11.5.2項「JMSアウトバウンド・アダプタのEPNアセンブリ・ファイルの構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

- 11.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」

11.2 JMSサービス・プロバイダのJMSアダプタの構成

この項では、Oracle Event Processing JMSインバウンドおよびアウトバウンド・アダプタの構成方法を次のような内容で説明します。

- 11.2.1項「Oracle Event Processing IDE for Eclipseを使用したJMSアダプタの構成方法」

- 11.2.2項「JMSアダプタを手動で構成する方法」

この項では、次のJMSサービス・プロバイダに固有の例を示します。

- 11.2.3項「Oracle WebLogic Server JMS用にJMSアダプタを手動で構成する方法」

- 11.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」

ご使用のJMSサービス・プロバイダがこのリストにないが、Javaクライアントを提供している場合は、そのプロバイダで使用するOracle Event Processing JMSアダプタを構成できます。構成モデルとして11.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」の手順を確認し、JMSサービス・プロバイダのドキュメントを参照して、この手順をご使用のJMSサービス・プロバイダに適合するように変更してください。

詳細は、11.1.1項「JMSサービス・プロバイダ」を参照してください。

11.2.1 Oracle Event Processing IDE for Eclipseを使用したJMSアダプタの構成方法

JMSアダプタを作成および構成する最も簡単な方法は、Oracle Event Processing IDE for Eclipseアダプタ・ウィザードを使用することです。

詳細は、7.4.1.2項「アダプタ・ノードの作成方法」を参照してください。

このアダプタ・ウィザードを使用して基本JMSアダプタ構成を作成および指定したら、11.2.2項「JMSアダプタを手動で構成する方法」を確認して構成を完了します。

11.2.2 JMSアダプタを手動で構成する方法

この項では、JMSアダプタを手動で作成および構成する方法について説明します。ご使用のアプリケーションに応じて必要とされる詳細な手順を説明します。

11.2.1項「Oracle Event Processing IDE for Eclipseを使用したJMSアダプタの構成方法」で説明しているとおり、JMSアダプタを作成および構成する最も簡単な方法はOracle Event Processing IDE for Eclipseアダプタ・ウィザードを使用することです。このアダプタ・ウィザードを使用して基本JMSアダプタ構成を作成および指定したら、この手順を確認して構成を完了します。

JMSアダプタを手動で構成するには、次の手順を実行します。

1. アプリケーションのEPNアセンブリ・ファイルで、アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにwlevs:adapter要素を追加します。
例11-1は、JMSインバウンド・アダプタのwlevs:adapter要素を示しています。

例11-1 インバウンド・アダプタのwlevs:adapter要素

<wlevs:adapter id="inboundJmsAdapter1" provider="jms-inbound">
...
</wlevs:adapter>

参照:

- 11.5.1項「JMSインバウンド・アダプタのEPNアセンブリ・ファイルの構成」

- 11.5.2項「JMSアウトバウンド・アダプタのEPNアセンブリ・ファイルの構成」

2. アプリケーションのコンポーネント構成ファイルで、アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにjms-adapter要素を追加します。
例11-2は、例11-1のJMSインバウンド・アダプタのjms-adapter要素を示しています。

例11-2 インバウンド・アダプタのjms-adapter要素

<jms-adapter>
<name>inboundJmsAdapter1</name>
...
</jms-adapter>

各jms-adapter要素について、name子要素を、対応するwlevs:adapter要素のid子要素に設定する必要があります。

参照:

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

3. JMSメッセージおよびOracle Event Processingイベント・タイプの間の変換方法を決定します。

1. JMSアダプタで自動変換を行う場合は、JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用してイベント・タイプを指定します。
参照:

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

2. JMSアダプタでカスタム変換を行う場合は、カスタム・コンバータJavaクラスを作成してEPNアセンブリ・ファイルに登録します。
11.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

4. 例11-3のように、JMSプロバイダのjms-adapter要素を構成します。

例11-3 Tibco EMS JMSのjms-adapter要素の構成

<jms-adapter>
<name>inboundJmsAdapter1</name>
...
<jndi-provider-url> ... </jndi-provider-url>
<jndi-factory> ... </jndi-factory>
<connection-jndi-name> ... </connection-jndi-name>
<destination-jndi-name> ... </destination-jndi-name>
...
</jms-adapter>

Oracle Event Processing JMSアダプタがサポートするすべてのオプションについては、以下を参照してください。

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

特定のJMSプロバイダのサンプルについては、以下を参照してください。

- 11.2.3項「Oracle WebLogic Server JMS用にJMSアダプタを手動で構成する方法」

- 11.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」

詳細は、ご使用のJMSサービス・プロバイダのドキュメントを参照してください。

5. コンポーネント構成ファイルにJMSプロバイダのクライアント・パスワードを指定する場合は、パスワードの暗号化を検討してください。
11.4項「JMSアダプタのコンポーネント構成ファイル内のパスワードの暗号化」を参照してください。

6. 以下の項目を含む、JMSクライアント・アプリケーション・ライブラリを作成します。

- ご使用のJMSサービス・プロバイダが指定するJMSクライアントJARファイル。

- Java Objectメッセージを使用している場合は、メッセージングに使用するJavaクラスをライブラリ・バンドルにパッケージ化する必要があります。
これらのJavaクラスは、このJMSクライアントJARアプリケーション・ライブラリに入れる場合があります。

注意:

このJMSクライアントJARアプリケーション・ライブラリは、次の条件を満たす必要があります。

- すべてのプロバイダ固有のパッケージをエクスポートします。

- (可能な場合)メッセージングに使用するJavaクラスをエクスポートします。

- javax.jmsおよびjavax.namingをインポートします。

アプリケーション・バンドルは、プロバイダ固有のパッケージをエクスポートする必要はありません。

アプリケーション・バンドルは、適用可能な場合、メッセージに使用するJavaクラスをインポートする必要があります。

詳細は、23.1.3.3項「アプリケーション・ライブラリの作成」を参照してください。

特定のJMSプロバイダのサンプルについては、11.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」を参照してください。

7. JMSクライアントJARアプリケーション・ライブラリを該当するOracle Event Processingサーバー・アプリケーション・ライブラリのディレクトリにコピーします。

1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置く必要があります。
23.1.3.2項「ライブラリ拡張ディレクトリ」を参照してください。

2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。
23.1.3.1項「ライブラリ・ディレクトリ」を参照してください。

詳細は、23.3.4項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの更新方法」を参照してください。

8. ステップ3でカスタム・コンバータ・クラスを作成した場合は、アプリケーションのMANIFEST.MFファイルを更新して、次のパッケージをImport-Packageヘッダーに追加します。

Import-Package: javax.jms,javax.naming, ...
...

5.7.5項「パッケージのインポート方法」を参照してください。

11.2.3 Oracle WebLogic Server JMS用にJMSアダプタを手動で構成する方法

Oracle Event Processingには、WebLogic JMSクライアントが含まれます。

Oracle WebLogicサーバーへの接続とき、Oracle Event ProcessingではデフォルトでT3クライアントが使用されます。

Oracle WebLogic Serverを-useIIOPコマンドライン引数を使用して起動することで、IIOP WebLogicクライアントを使用できます。これは、使用されるJMSコードとは独立した(提供されるアダプタの1つであるか、カスタムJMSコードであるに関係なく)サーバー全体の設定です。

実行中のOracle Event ProcessingサーバーでT3とIIOPを混合して使用できません。

詳細は、11.2項「JMSサービス・プロバイダのJMSアダプタの構成」を参照してください。

Oracle WebLogic Server JMSプロバイダを使用するように、組込みJMSインバウンドおよびアウトバウンド・アダプタを手動で構成できます。

11.2.1項「Oracle Event Processing IDE for Eclipseを使用したJMSアダプタの構成方法」で説明しているとおり、JMSアダプタを作成および構成する最も簡単な方法はOracle Event Processing IDE for Eclipseアダプタ・ウィザードを使用することです。このアダプタ・ウィザードを使用して基本JMSアダプタ構成を作成および指定したら、この手順を確認して構成を完了します。

Oracle WebLogic Server JMSのJMSアダプタを手動で構成するには、次の手順を実行します。

1. アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにwlevs:adapter要素を追加して、アプリケーションのEPNアセンブリ・ファイルを更新します。
例11-4は、JMSインバウンド・アダプタのwlevs:adapter要素を示しています。

例11-4 インバウンド・アダプタのwlevs:adapter要素

<wlevs:adapter id="inboundJmsAdapter1" provider="jms-inbound">
...
</wlevs:adapter>

参照:

- 11.5.1項「JMSインバウンド・アダプタのEPNアセンブリ・ファイルの構成」

- 11.5.2項「JMSアウトバウンド・アダプタのEPNアセンブリ・ファイルの構成」

2. アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにjms-adapter要素を追加することで、アプリケーションのコンポーネント構成ファイルを更新します。
例11-5は、例11-4のJMSインバウンド・アダプタのjms-adapter要素を示しています。

例11-5 インバウンド・アダプタのjms-adapter要素

<jms-adapter>
<name>inboundJmsAdapter1</name>
...
</jms-adapter>

各jms-adapter要素について、name子要素を、対応するwlevs:adapter要素のid子要素に設定する必要があります。

参照:

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

3. JMSメッセージおよびOracle Event Processingイベント・タイプの間の変換方法を決定します。

1. JMSアダプタで自動変換を行う場合は、JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用してイベント・タイプを指定します。
参照:

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

2. JMSアダプタでカスタム変換を行う場合は、カスタム・コンバータJavaクラスを作成してEPNアセンブリ・ファイルに登録します。
11.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

4. Oracle WebLogic Server JMSプロバイダのjms-adapter要素を構成します。
例11-6は、JMSインバウンドおよびアウトバウンド・アダプタのjms-adapter要素を示しています。

例11-6 Oracle WebLogic Server JMSプロバイダのjms-adapter要素

...
<jms-adapter>
<name>JmsInbound</name>
<event-type>SimpleMapEvent</event-type>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>QueueIn</destination-jndi-name>
<user>weblogic</user>
<password>welcome1</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
<delivery-mode>nonpersistent</delivery-mode>
</jms-adapter>

<jms-adapter>
<name>JmsOutbound</name>
<event-type>SimpleMapEvent</event-type>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>QueueIn</destination-jndi-name>
<user>weblogic</user>
<password>welcome1</password>
<message-selector></message-selector>
<session-transacted>false</session-transacted>
<delivery-mode>nonpersistent</delivery-mode>
</jms-adapter>
...

参照:

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

5. コンポーネント構成ファイルにJMSプロバイダのクライアント・パスワードを指定する場合は、パスワードの暗号化を検討してください。
11.4項「JMSアダプタのコンポーネント構成ファイル内のパスワードの暗号化」を参照してください。

6. Java Objectメッセージを使用している場合は、ライブラリ・バンドルにパッケージ化する必要がある、メッセージングに使用するJavaクラスを含んだJMSクライアント・アプリケーション・ライブラリを作成する必要があります。
詳細は、23.1.3.3項「アプリケーション・ライブラリの作成」を参照してください。

注意:

このJMSクライアントJARアプリケーション・ライブラリは、次の条件を満たす必要があります。

- メッセージングに使用するJavaクラスをエクスポートします。

- javax.jmsおよびjavax.namingをインポートします。

アプリケーション・バンドルは、プロバイダ固有のパッケージをエクスポートする必要はありません。

アプリケーション・バンドルは、適用可能な場合、メッセージに使用するJavaクラスをインポートする必要があります。

7. Java Objectメッセージを使用している場合は、メッセージ・アプリケーション・ライブラリのJavaクラスを、該当するOracle Event Processingサーバー・アプリケーションのディレクトリにコピーします。

1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置く必要があります。
23.1.3.2項「ライブラリ拡張ディレクトリ」を参照してください。

2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。
23.1.3.1項「ライブラリ・ディレクトリ」を参照してください。

詳細は、23.3.4項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの更新方法」を参照してください。

8. ステップ3でカスタム・コンバータ・クラスを作成した場合は、アプリケーションのMANIFEST.MFファイルを更新して、次のパッケージをImport-Packageヘッダーに追加します。

Import-Package: javax.jms,javax.naming, ...
...

5.7.5項「パッケージのインポート方法」を参照してください。

11.2.4 Tibco EMS JMS用にJMSアダプタを手動で構成する方法

Oracle Event Processingでは、TIBCOエンタープライズ・メッセージ・サービス(EMS)バージョン4.2.0以上をサポートします。

Tibco EMS JMSプロバイダを使用するには、次のTibco EMSクライアントJARファイルをOracle Event Processingサーバー・ライブラリ・ディレクトリに追加する必要があります。

- tibjms.jar

詳細は、次を参照してください:

- 11.2項「JMSサービス・プロバイダのJMSアダプタの構成」

- 23.1.3.1項「ライブラリ・ディレクトリ」

Tibco EMS JMSプロバイダを使用するように、組込みJMSインバウンドおよびアウトバウンド・アダプタを手動で構成できます。

11.2.1項「Oracle Event Processing IDE for Eclipseを使用したJMSアダプタの構成方法」で説明しているとおり、JMSアダプタを作成および構成する最も簡単な方法はOracle Event Processing IDE for Eclipseアダプタ・ウィザードを使用することです。このアダプタ・ウィザードを使用して基本JMSアダプタ構成を作成および指定したら、この手順を確認して構成を完了します。

Tibco EMS JMS用にJMSアダプタを手動で構成するには、次の手順を実行します。

1. アプリケーションのEPNアセンブリ・ファイルで、アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにwlevs:adapter要素を追加します。
例11-7は、JMSインバウンド・アダプタのwlevs:adapter要素を示しています。

例11-7 インバウンド・アダプタのwlevs:adapter要素

<wlevs:adapter id="inboundJmsAdapter1" provider="jms-inbound">
...
</wlevs:adapter>

参照:

- 11.5.1項「JMSインバウンド・アダプタのEPNアセンブリ・ファイルの構成」

- 11.5.2項「JMSアウトバウンド・アダプタのEPNアセンブリ・ファイルの構成」

2. アプリケーションのコンポーネント構成ファイルで、アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにjms-adapter要素を追加します。
例11-8は、例11-7のJMSインバウンド・アダプタのjms-adapter要素を示しています。

例11-8 インバウンド・アダプタのjms-adapter要素

<jms-adapter>
<name>inboundJmsAdapter1</name>
...
</jms-adapter>

各jms-adapter要素について、name子要素を、対応するwlevs:adapter要素のid子要素に設定する必要があります。

参照:

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

3. JMSメッセージおよびOracle Event Processingイベント・タイプの間の変換方法を決定します。

1. JMSアダプタで自動変換を行う場合は、JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用してイベント・タイプを指定します。
参照:

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

2. JMSアダプタでカスタム変換を行う場合は、カスタム・コンバータJavaクラスを作成してEPNアセンブリ・ファイルに登録します。
11.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

4. 例11-9のように、Tibco EMS JMSプロバイダのjms-adapter要素を構成します。

例11-9 Tibco EMS JMSのjms-adapter要素の構成

<jms-adapter>
<name>inboundJmsAdapter1</name>
...
<jndi-provider-url>tcp://TIBCOHOST:PORT</jndi-provider-url>
<jndi-factory>com.tibco.tibjms.naming.TibjmsInitialContextFactory</jndi-factory>
<connection-jndi-name>CONNECTION_NAME</connection-jndi-name>
<destination-jndi-name>DESTINATION_NAME</destination-jndi-name>
...
</jms-adapter>

説明:

- TIBCOHOST: Tibco EMS JMSプロバイダ・ホストのホスト名。

- PORT: Tibco EMS JMSプロバイダのポート。

- DESTINATION_NAME: Tibco EMS JMS宛先の送り先JNDI名(TibcoRequestQueue1など)。

- CONNECTION_NAME: Tibco EMS JMSサーバーで定義したTibco EMS JMS接続ファクトリの接続JNDI名(TibcoQueueConnectionFactoryなど)。

参照:

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

5. コンポーネント構成ファイルにJMSプロバイダのクライアント・パスワードを指定する場合は、パスワードの暗号化を検討してください。
11.4項「JMSアダプタのコンポーネント構成ファイル内のパスワードの暗号化」を参照してください。

6. 以下の項目を含む、JMSクライアント・アプリケーション・ライブラリを作成します。

- tibjms.jar

- Java Objectメッセージを使用している場合は、メッセージングに使用するJavaクラスをライブラリ・バンドルにパッケージ化する必要があります。
これらのJavaクラスは、このJMSクライアント・アプリケーション・ライブラリに入れる場合があります。

注意:

JMSクライアント・アプリケーション・ライブラリは、次の条件を満たす必要があります。

- すべてのプロバイダ固有のパッケージをエクスポートします。

- (可能な場合)メッセージングに使用するJavaクラスをエクスポートします。

- javax.jmsおよびjavax.namingをインポートします。

アプリケーション・バンドルは、プロバイダ固有のパッケージをエクスポートする必要はありません。

アプリケーション・バンドルは、適用可能な場合、メッセージに使用するJavaクラスをインポートする必要があります。

詳細は、23.1.3.3項「アプリケーション・ライブラリの作成」を参照してください。

特定のJMSプロバイダのサンプルについては、11.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」を参照してください。

7. アプリケーション・ライブラリを該当するOracle Event Processingサーバー・アプリケーション・ライブラリのディレクトリにコピーします。

1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置く必要があります。
23.1.3.2項「ライブラリ拡張ディレクトリ」を参照してください。

2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。
23.1.3.1項「ライブラリ・ディレクトリ」を参照してください。

詳細は、23.3.4項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの更新方法」を参照してください。

8. ステップ3でカスタム・コンバータ・クラスを作成した場合は、アプリケーションのMANIFEST.MFファイルを更新して、次のパッケージをImport-Packageヘッダーに追加します。

Import-Package: javax.jms,javax.naming, ...
...

5.7.5項「パッケージのインポート方法」を参照してください。

11.3 JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成

JMSメッセージとイベント・タイプ間の変換をカスタマイズする場合は、独自のコンバータBeanを作成する必要があります。

この項では次について説明します:

- 11.3.1項「インバウンドJMSアダプタ用のカスタム・コンバータの作成方法」

- 11.3.2項「アウトバウンドJMSアダプタ用のカスタム・コンバータの作成方法」

11.3.1 インバウンドJMSアダプタ用のカスタム・コンバータの作成方法

インバウンドJMSのカスタム・コンバータBeanでは、com.bea.wlevs.adapters.jms.api.InboundMessageConverterインタフェースを実装する必要があります。このインタフェースには単一のメソッドが含まれています:

public List convert(Message message) throws MessageConverterException, JMSException;

messageパラメータは着信JMSメッセージに対応します。戻り値は、イベント処理ネットワークの次のステージに渡されるイベントのListです。

これらのAPIの詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください。

インバウンドJMSアダプタ用のカスタム・コンバータを作成するには、次の手順を実行します。

1. Oracle Event Processing IDE for Eclipse (または希望するIDE)を使用して、Javaクラスをアプリケーション・プロジェクトに追加します。

2. com.bea.wlevs.adapters.jms.api.InboundMessageConverterインタフェースを実装します。
例11-10は、実装例を示しています。

例11-10 インバウンドJMSアダプタ用のカスタム・コンバータ

package com.customer;
import com.bea.wlevs.adapters.jms.api.InboundMessageConverter;
import com.bea.wlevs.adapters.jms.api.MessageConverterException;
import com.bea.wlevs.adapters.jms.api.OutboundMessageConverter;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import java.util.ArrayList;
import java.util.List;
public class MessageConverter implements InboundMessageConverter,
OutboundMessageConverter {
public List convert(Message message) throws MessageConverterException, JMSException {
TestEvent event = new TestEvent();
TextMessage textMessage = (TextMessage) message;
event.setString_1(textMessage.getText());
List events = new ArrayList(1);
events.add(event);
return events;
}
public List<Message> convert(Session session, Object inputEvent)
throws MessageConverterException, JMSException {
TestEvent event = (TestEvent) inputEvent;
TextMessage message = session.createTextMessage(
"Text message: " + event.getString_1()
);
List<Message> messages = new ArrayList<Message>();
messages.add(message);
return messages;
}
}

3. 例11-11に示すように、アプリケーションEPNアセンブリ・ファイルにコンバータを指定します。

- bean要素を使用してコンバータ・クラスを登録します。

- nameをconverterBeanに設定し、refをbeanのidに設定したwlevs:instance-propertyを追加することで、コンバータ・クラスとJMSアダプタを関連付けます。

例11-11 EPNアセンブリ・ファイルでのインバウンドJMSアダプタ用のコンバータ・クラスの指定

...
<bean id="myConverter" class="com.customer.MessageConverter"/>
<wlevs:adapter id="jmsInbound" provider="jms-inbound">
<wlevs:instance-property name="converterBean" ref="myConverter"/>
<wlevs:listener ref="mySink"/>
</wlevs:adapter>
...

4. Javaクラスをアプリケーションにパッケージ化します。
詳細は、第23章「Oracle Event Processingアプリケーションのアセンブルとデプロイ」を参照してください。

11.3.2 アウトバウンドJMSアダプタ用のカスタム・コンバータの作成方法

アウトバウンドJMSのカスタム・コンバータBeanでは、com.bea.wlevs.adapters.jms.api.OutboundMessageConverterインタフェースを実装する必要があります。このインタフェースには単一のメソッドが含まれています:

public List<Message> convert(Session session, Object event)
throws MessageConverterException, JMSException;

パラメータはEPNのソース・ノードから送信され、発信JMSアダプタで受信されたイベントに対応します。戻り値は、JMSメッセージのListです。

これらのAPIの詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください。

アウトバウンドJMSアダプタ用のカスタム・コンバータを作成するには、次の手順を実行します。

1. Oracle Event Processing IDE for Eclipse (または希望するIDE)を使用して、Javaクラスをアプリケーション・プロジェクトに追加します。

2. com.bea.wlevs.adapters.jms.api.OutboundMessageConverterインタフェースを実装します。
例11-10は、実装例を示しています。

例11-12 アウトバウンドJMSアダプタ用のカスタム・コンバータ

package com.customer;
import com.bea.wlevs.adapters.jms.api.InboundMessageConverter;
import com.bea.wlevs.adapters.jms.api.MessageConverterException;
import com.bea.wlevs.adapters.jms.api.OutboundMessageConverter;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import java.util.ArrayList;
import java.util.List;
public class MessageConverter implements InboundMessageConverter,
OutboundMessageConverter {
public List convert(Message message) throws MessageConverterException, JMSException {
TestEvent event = new TestEvent();
TextMessage textMessage = (TextMessage) message;
event.setString_1(textMessage.getText());
List events = new ArrayList(1);
events.add(event);
return events;
}
public List<Message> convert(Session session, Object inputEvent)
throws MessageConverterException, JMSException {
TestEvent event = (TestEvent) inputEvent;
TextMessage message = session.createTextMessage(
"Text message: " + event.getString_1()
);
List<Message> messages = new ArrayList<Message>();
messages.add(message);
return messages;
}
}

3. 例11-11に示すように、アプリケーションEPNアセンブリ・ファイルにコンバータを指定します。

- bean要素を使用して変換クラスを登録します。

- nameをconverterBeanに設定し、refをbeanのidに設定したwlevs:instance-propertyを追加することで、コンバータ・クラスとJMSアダプタを関連付けます。

例11-13 EPNアセンブリ・ファイルでのアウトバウンドJMSアダプタ用のコンバータ・クラスの指定

...
<bean id="myConverter" class="com.customer.MessageConverter"/>
<wlevs:adapter id="jmsOutbound" provider="jms-outbound">
<wlevs:instance-property name="converterBean" ref="myConverter"/>
</wlevs:adapter>
...

4. Javaクラスをアプリケーションにパッケージ化します。
詳細は、第23章「Oracle Event Processingアプリケーションのアセンブルとデプロイ」を参照してください。

11.4 JMSアダプタ・コンポーネント構成ファイル内のパスワードの暗号化

JMSアダプタ構成ファイル内のパスワードを暗号化できます。

注意:

この手順では、現在構成ファイルのpassword要素でクリア・テキストのパスワード値を使用していて、パスワードを暗号化するためにencrypted-password要素の使用を開始する必要があると想定しています。

11.4.1 JMSアダプタ・コンポーネント構成ファイル内のパスワードの暗号化方法

JMSアダプタ構成ファイル内のパスワードを暗号化できます。

JMSアダプタ・コンポーネント構成ファイル内のパスワードを暗号化するには、次の手順を実行します。

1. コマンド・ウィンドウを開き、3.2項「開発環境の設定」の説明に従って、環境を設定します。

2. JMSアダプタの構成ファイルがあるディレクトリに移動します。

3. 構成ファイルの<password>要素の値を暗号化するには、次のencryptMSAConfigコマンドを実行します。

prompt> ORACLE_CEP_HOME/ocep_11.1/bin/encryptMSAConfig . config_file aesinternal.dat_file

ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Event ProcessingをインストールしたメインBEAディレクトリです。2番目の引数は、JMSアダプタ構成ファイルが含まれているディレクトリです。この手順では実際にそのディレクトリに移動するため、例では"."と示されています。config_fileパラメータは、JMSアダプタ構成ファイルの名前です。最後に、aesinternal.dat_fileパラメータは、ドメインに関連付けられている.aesinternal.datファイルの場所です。デフォルトでは、このファイルはDOMAIN_DIR/servernameディレクトリにあります。DOMAIN_DIRは、/oracle_cep/user_projects/domains/mydomainなどのドメイン・ディレクトリであり、servernameはサーバー・インスタンスです。

encryptMSAConfigコマンドには、encryptMSAConfig.cmd (Windows)およびencryptMSAConfig.sh (UNIX)の2種類があります。

コマンドを実行した後、次の例の太字部分のように、<password>要素の値が暗号化されます。

<jms-adapter>
<name>jmsInbound</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Queue1</destination-jndi-name>
<user>weblogic</user>
<password>{Salted-3DES}B7L6nehu7dgPtJJTnTJWRA==</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

4. 任意のXMLエディタを使用して、JMSアダプタ構成ファイルを編集します。次の例の太字部分のように、(値が現在暗号化されている)<password>要素を<encrypted-password>に変更します。

<jms-adapter>
<name>jmsInbound</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Queue1</destination-jndi-name>
<user>weblogic</user>
<encrypted-password>{Salted-3DES}B7L6nehu7dgPtJJTnTJWRA==</encrypted-password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

11.5 JMSアダプタのEPNアセンブリ・ファイルの構成

イベント処理ネットワークのJMSアダプタごとに、対応するwlevs:adapter要素をアプリケーションのEPNアセンブリ・ファイルに追加する必要があります。provider属性を使用して、JMSアダプタがインバウンドまたはアウトバウンドのどちらであるかを指定します。

EPNの他のステージと同様に、wlevs:adapter要素にリスナーを追加してJMSアダプタをイベント処理ネットワークに統合します。通常、インバウンドJMSアダプタは(メッセージを受信するため)EPNの最初のステージであり、アウトバウンドJMSアダプタは(メッセージを送信するため)より後方のステージです。ただし、JMSアダプタがネットワーク内に配置される場所は、独自のOracle Event Processingアプリケーションの要件に応じて定義されます。

JMSのインバウンドおよびアウトバウンドの両方のアダプタで、JMSメッセージとイベント・タイプの間の変換をカスタマイズするカスタム・コンバータBeanを作成した場合は、まず標準のbean Spring要素を使用して、EPNアセンブリ・ファイル内でこれを宣言します。その後、次のように、wlevs:instance-property要素でidを指定することでBeanの参照をJMSアダプタに渡し、name属性にconverterBeanを設定します。

<bean id="myConverter"
class="com.customer.MessageConverter"/>

<wlevs:adapter id="jmsOutbound" provider="jms-outbound">
<wlevs:instance-property name="converterBean" ref="myConverter"/>
</wlevs:adapter>

この場合は、コンポーネント構成ファイルにイベント・タイプを指定しないでください。これは、カスタム・コンバータBeanでイベント・タイプが指定されることが想定されるためです。

この項では次について説明します:

- 11.5.1項「JMSインバウンド・アダプタのEPNアセンブリ・ファイルの構成」

- 11.5.2項「JMSアウトバウンド・アダプタのEPNアセンブリ・ファイルの構成」

詳細は、次を参照してください:

- 1.4.2項「コンポーネント構成ファイルの概要」

- B.2項「コンポーネント構成スキーマ wlevs_application_config.xsd」

11.5.1 JMSインバウンド・アダプタのEPNアセンブリ・ファイルの構成

インバウンドJMSアダプタを指定する場合は、次のようにprovider属性をjms-inboundに設定します。

<wlevs:adapter id="jmsInbound" provider="jms-inbound"/>

id属性の値(この場合はjmsInbound)は、構成ファイルのこのJMSアダプタに指定した名前と一致している必要があります。構成ファイルでは、このインバウンドJMSアダプタがメッセージを取得するJMS宛先を構成します。

コンバータBeanが指定されていないため、Oracle Event Processingではプロパティ名のマップによって、着信メッセージがコンポーネント構成ファイルで指定されているイベント・タイプに自動的に変換されます。

次のEPNアセンブリ・ファイルの例は、インバウンドJMSアダプタの構成方法を示しています。ネットワークは単純です。インバウンドJMSアダプタjmsInboundはコンポーネント構成ファイルで構成されているJMS宛先からメッセージを受信します。Spring bean myConverterによって着信JMSメッセージがイベント・タイプに変換され、これらのイベントはmySinkイベントBeanに渡されます。

<?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-v11_1_1_6.xsd">
<wlevs:event-type-repository>
<wlevs:event-type type-name="JMSEvent">
<wlevs:class>com.customer.JMSEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>
<!-- Event bean that is an event sink -->
<wlevs:event-bean id="mySink"
class="com.customer.MySink"/>
<!-- Inbound JMS adapter with custom converter class; adapter sends events to mySink event bean-->
<bean id="myConverter" class="com.customer.MessageConverter"/>
<wlevs:adapter id="jmsInbound" provider="jms-inbound">
<wlevs:instance-property name="converterBean" ref="myConverter"/>
<wlevs:listener ref="mySink"/>
</wlevs:adapter>
</beans>

11.5.2 JMSアウトバウンド・アダプタのEPNアセンブリ・ファイルの構成

アウトバウンドJMSアダプタを指定する場合は、次のようにprovider属性をjms-outboundに設定します。

<wlevs:adapter id="jmsOutbound" provider="jms-outbound"/>

id属性の値(この場合はjmsOutbound)は、構成ファイルのこのJMSアダプタに指定した名前と一致している必要があります。構成ファイルでは、このアウトバウンドJMSアダプタがメッセージを送信するJMS宛先を構成します。

コンバータBeanが指定されていないため、Oracle Event Processingではプロパティ名のマップによって、着信イベント・タイプが発信JMSメッセージに自動的に変換されます。

次のEPNアセンブリ・ファイルの例は、アウトバウンドJMSアダプタの構成方法を示しています。ネットワークは単純です。カスタム・アダプタgetDataがフィードから受信したデータはイベント・タイプに変換されてmyProcessorに渡されます。イベントはstreamOneチャネルを通じてjmsOutboundJMSアダプタに送信されます。Oracle Event Processingではこれらのイベントが自動的にJMSメッセージに変換され、メッセージは、jmsOutboundアダプタに関連付けられているコンポーネント構成ファイルで構成されているJMS宛先に送信されます。

<?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-v11_1_1_6.xsd">
<wlevs:event-type-repository>
<wlevs:event-type type-name="JMSEvent">
<wlevs:class>com.customer.JMSEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>
<!-- Custom adapter that gets data from somewhere and sends it to myProcessor -->
<wlevs:adapter id="getData"
class="com.customer.GetData">
<wlevs:listener ref="myProcessor"/>
</wlevs:adapter>
<wlevs:processor id="myProcessor" />
<wlevs:adapter id="jmsOutbound" provider="jms-outbound"/>
<!-- Channel for events flowing from myProcessor to outbound JMS adapter -->
<wlevs:channel id="streamOne">
<wlevs:listener ref="jmsOutbound"/>
<wlevs:source ref="myProcessor"/>
</wlevs:channel>
</beans>

11.6 JMSアダプタのコンポーネント構成ファイルの構成

JMSアダプタの構成は、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントを構成する場合と同様に、それぞれの構成ファイルで行います。

JMSアダプタを構成する場合のルート要素はjms-adapterです。特定のアダプタのname子要素は、このアダプタが宣言されているEPNアセンブリ・ファイル内の対応するwlevs:adapter要素のid属性と一致している必要があります。

この項では次について説明します:

- 11.6.1項「JMSインバウンド・アダプタのコンポーネント構成」

- 11.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

詳細は、次を参照してください:

- 1.4.2項「コンポーネント構成ファイルの概要」

- B.2項「コンポーネント構成スキーマ wlevs_application_config.xsd」

11.6.1 JMSインバウンド・アダプタ・コンポーネントの構成

表11-1には、JMSインバウンド・アダプタに適用できる、jms-adapter要素の子要素がリストされます。

表11-1 jms-adapterインバウンド子要素

子要素

説明

bindings

バインドは水平的なスケールアウトを構成する場合に使用する高度な機能です。com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanを使用して、ActiveActiveGroupBeanで作成された通知グループによって、Oracle Event Processingアプリケーションの受信JMSストリームをパーティション化できます。この要素を使用して、通知グループを特定のmessage-selector値と関連付けます。

詳細は、25.1.2.2項「ActiveActiveGroupBean」を参照してください。

concurrent-consumers

作成するコンシューマ数。デフォルト値は1です。

この値に1より大きい数を設定した場合:

- work-manager構成の使用を検討してください。

- コンバータBeanはコンシューマ間で共有されるため、コンバータBeanがスレッド・セーフであることを確認してください。詳細は、11.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

connection-jndi-name

オプション。JMS接続ファクトリのJNDI名。デフォルト値は、Oracle Event ProcessingサーバーJMS用のweblogic.jms.ConnectionFactoryです。

connection-password

connection-encrypted-password

オプション。connection-userのパスワード(または暗号化されたパスワード)。

注意: connection-passwordまたはconnection-encrypted-passwordの両方ではなく、どちらか1つを指定します。

パスワードの暗号化の詳細は、11.4項「JMSアダプタ・コンポーネント構成ファイルでのパスワードの暗号化」を参照してください。

connection-user

オプション。Oracle Event Processingが、JMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドを呼び出すとき、構成されている場合は、connection-userおよびconnection-password (またはconnection-encrypted-password)設定を使用します。それ以外の場合は、Oracle Event Processingはuserおよびpassword(またはencrypted-password)設定を使用します。

アプリケーションでconnection-userおよびconnection-password(またはconnection-encrypted-password)の設定を使用できます。その場合、一方のセキュリティ・プロバイダはJNDIアクセスに使用され、JMSアクセスには別のセキュリティ・プロバイダが使用されます。

destination-jndi-name

必須。JMS宛先のJNDI名。

注意: destination-jndi-nameまたはdestination-nameの両方ではなく、どちらか1つを指定します。

destination-name

必須。JMS宛先の実際の名前。

注意: destination-jndi-nameまたはdestination-nameの両方ではなく、どちらか1つを指定します。

destination-type

JMSアダプタのJMS宛先タイプを定義します。有効な値はTOPICまたはQUEUEです。durable-subscriptionプロパティがtrueに設定されている場合は常に、このプロパティをTOPICに設定する必要があります。

注意: 恒久サブスクリプションをサポートするには、これをTOPICに設定し、durable-subscriptionをtrueに設定して、これを使用します。サブスクリプションにdurable-subscription-nameの一意の識別子を指定します。

durable-subscription

JMSアダプタのJMSトピック・サブスクリプションが恒久的であるかどうか、つまりサブスクライバが非アクティブになった場合も永続化できるかどうかを指定します。有効な値は、trueまたはfalseです。このプロパティは、destination-typeがTOPICに設定されている場合にのみ有効です。

注意: 恒久サブスクリプションをサポートするには、destination-typeをTOPICに設定し、durable-subscription-nameを一意の識別子に設定して、これを使用します。

durable-subscription-name

JMSアダプタの恒久サブスクリプションを一意に識別するための名前。恒久サブスクリプションは、サブスクライバが非アクティブになった場合も永続化できます。

注意: 恒久サブスクリプションをサポートするには、durable-subscriptionをtrueに設定し、destination-typeをTOPICに設定して、これを使用します。

event-type

プロパティ名がインバウンドJMSマップ・メッセージ・プロパティ名と一致するイベント・タイプ。このプロパティは、Oracle Event ProcessingでJMSメッセージとイベント間の変換を自動的に実行する場合にのみ指定します。独自のコンバータBeanを作成した場合は、このプロパティを指定しないでください。

詳細は、11.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

jndi-factory

オプション。JNDIファクトリ名。デフォルト値は、Oracle Event ProcessingサーバーJMS用のweblogic.jndi.WLInitialContextFactoryです。

jndi-provider-url

必須。JNDIプロバイダのURL。

message-selector

メッセージのフィルタ処理に使用されるJMSメッセージ・セレクタ。セレクタと一致するメッセージだけがイベントを生成します。

デフォルト: セレクタなしです。すべてのメッセージがイベントを生成します。

password

encrypted-password

必須。userのパスワード(または暗号化されたパスワード)。

注意: passwordまたはencrypted-passwordの両方ではなく、どちらか1つを指定します。

パスワードの暗号化の詳細は、11.4項「JMSアダプタ・コンポーネント構成ファイルでのパスワードの暗号化」を参照してください。

session-ack-mode-name

メッセージの確認方法を決定します。メッセージが一度正常に確認されると、失敗の後でも再送信されません。

javax.jms.Sessionからの有効な値。

- AUTO_ACKNOWLEDGE: この確認モードを使用して、メッセージを正常に受信した場合にセッションが自動的にクライアントによるメッセージの受信を確認応答します。ダウンストリーム・メッセージ処理中に障害に応じてメッセージを再送信する必要があるアプリケーションでは、session-transactedプロパティを使用して、これを実行する必要があります。

- CLIENT_ACKNOWLEDG: この確認モードを使用するとメッセージの確認メソッドをコールすることによって、クライアントは消費されたメッセージを確認します。

- DUPS_OK_ACKNOWLEDGE: この確認モードはセッションにメッセージ送信の確認を遅延するように命令します。

デフォルト: AUTO_ACKNOWLEDGE

session-transacted

セッションがトランザクションであるかとうかを指定するブール値。

セッションがトランザクションである場合は、session-ack-mode-nameを指定しないでください。

デフォルト: False。

user

必須。Oracle Event ProcessingがJNDI InitialContextを取得する際、ユーザーおよびpassword (またはencrypted-password)設定が使用されます。

work-manager

Oracle Event Processingサーバーのconfig.xmlファイルで構成されたワーク・マネージャの名前。この名前は、config.xml内のwork-manager要素のname子要素の値に対応します。

concurrent-consumersが1より大きく、すべてのコンシューマの同時実行を希望する場合は、このJMSインバウンド・アダプタと関連付けるwork-managerの構成を検討してください。

- work-managerが他のコンポーネント(その他のアダプタおよびJetty)と共有されている場合、work-manager属性max-threads-constraintをconcurrent-consumersの設定以上に設定します。

- work-managerが共有されていない場合(つまり、この受信JMSアダプタ専用の場合)、work-manager属性max-threads-constraintをconcurrent-consumersと同じ設定にします。

デフォルト値は、アプリケーション自身に構成されているワーク・マネージャです。

詳細は、F.45項「work-manager」を参照してください。

次の構成ファイルは、インバウンドJMSアダプタを構成する場合の完全な例を示しています。

<?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">
<jms-adapter>
<name>jmsInbound</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Queue1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>MyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>
<jms-adapter>
<name>jmsOutbound</name>
<event-type>JMSEvent</event-type>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Topic1</destination-jndi-name>
<delivery-mode>nonpersistent</delivery-mode>
</jms-adapter>
</n1:config>

11.6.2 JMSアウトバウンド・アダプタ・コンポーネントの構成

表11-2には、JMSアウトバウンド・アダプタに適用できる、jms-adapter要素の子要素がリストされます。

表11-2 jms-adapterアウトバウンド・コンポーネント構成の子要素

子要素

説明

connection-jndi-name

オプション。JMS接続ファクトリのJNDI名。デフォルト値は、Oracle Event ProcessingサーバーJMS用のweblogic.jms.ConnectionFactoryです。

connection-password

connection-encrypted-password

オプション。connection-userのパスワード(または暗号化されたパスワード)。

注意: connection-passwordまたはconnection-encrypted-passwordの両方ではなく、どちらか1つを指定します。

パスワードの暗号化の詳細は、11.4項「JMSアダプタ・コンポーネント構成ファイルでのパスワードの暗号化」を参照してください。

connection-user

オプション。Oracle Event Processingが、JMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドを呼び出すとき、構成されている場合は、connection-userおよびconnection-password (またはconnection-encrypted-password)設定を使用します。それ以外の場合は、Oracle Event Processingはuserおよびpassword(またはencrypted-password)設定を使用します。

アプリケーションでconnection-userおよびconnection-password(またはconnection-encrypted-password)の設定を使用できます。その場合、一方のセキュリティ・プロバイダはJNDIアクセスに使用され、JMSアクセスには別のセキュリティ・プロバイダが使用されます。

delivery-mode

配信モードをpersistent(デフォルト値)またはnonpersistentで指定します。

destination-jndi-name

必須。JMS宛先のJNDI名。

注意: destination-jndi-nameまたはdestination-nameの両方ではなく、どちらか1つを指定します。

destination-name

必須。JMS宛先の実際の名前。

注意: destination-jndi-nameまたはdestination-nameの両方ではなく、どちらか1つを指定します。

event-type

プロパティ名がインバウンドJMSマップ・メッセージ・プロパティ名と一致するイベント・タイプ。このプロパティは、Oracle Event ProcessingでJMSメッセージとイベント間の変換を自動的に実行する場合にのみ指定します。独自のコンバータBeanを作成した場合は、このプロパティを指定しないでください。

詳細は、11.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

jndi-factory

オプション。JNDIファクトリ名。デフォルト値は、Oracle Event ProcessingサーバーJMS用のweblogic.jndi.WLInitialContextFactoryです。

jndi-provider-url

必須。JNDIプロバイダのURL。

password

encrypted-password

必須。userのパスワード(または暗号化されたパスワード)。

注意: passwordまたはencrypted-passwordの両方ではなく、どちらか1つを指定します。

パスワードの暗号化の詳細は、11.4項「JMSアダプタ・コンポーネント構成ファイルでのパスワードの暗号化」を参照してください。

session-transacted

セッションがトランザクションであるかとうかを指定するブール値。

セッションがトランザクションである場合は、session-ack-mode-nameを指定しないでください。

デフォルト: False。

user

必須。Oracle Event ProcessingがJNDI InitialContextを取得する際、ユーザーおよびpassword (またはencrypted-password)設定が使用されます。

次の構成ファイルは、アウトバウンドJMSアダプタを構成する場合の完全な例を示しています。

<?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">
<jms-adapter>
<name>jmsInbound</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Queue1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>
<jms-adapter>
<name>jmsOutbound</name>
<event-type>JMSEvent</event-type>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Topic1</destination-jndi-name>
<delivery-mode>nonpersistent</delivery-mode>
</jms-adapter>
</n1:config>

12 HTTPパブリッシュ・サブスクライブ・サーバーの統合

この章では、HTTPパブリッシュ・サブスクライブ・サーバー・アダプタを使用してOracle Event Processingイベント処理ネットワークをHTTP pub-subサーバーと接続する方法について説明します。

この章の内容は次のとおりです。

- 12.1項「HTTPパブリッシュ・サブスクライブ・サーバー・アダプタ構成の概要」

- 12.2項「HTTP Pub-Subアダプタの構成」

- 12.3項「HTTP Pub-Subメッセージとイベント・タイプの間でのカスタム・コンバータの作成」

- 12.4項「HTTP Pub-SubアダプタのEPNアセンブリ・ファイルの構成」

- 12.5項「HTTP Pub-Subアダプタのコンポーネント構成ファイルの構成」

12.1 HTTPパブリッシュ・サブスクライブ・サーバー・アダプタ構成の概要

HTTPパブリッシュ・サブスクライブ・サーバー(pub-subサーバー)は、ブラウザ・ベースのクライアントなどのWebクライアントが、すべてHTTP上での非同期メッセージを使用して、チャネルにサブスクライブし、利用可能なメッセージを受信し、これらのチャネルにメッセージをパブリッシュするためのメカニズムです。チャネルはJMSトピックと同じです。

Oracle Event Processingの各インスタンスには、アプリケーションに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 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パブリッシュ・サブスクライブ・サーバー・チャネル・セキュリティの構成に関する項を参照してください。

12.1.1 パブリッシュ用の組込みPub-Subアダプタの概要

組込みのpub-subアダプタを使用してチャネルにイベントをパブリッシュできます。組込みのpub-subアダプタでは、次のパブリッシュ・モードがサポートされています。

- 12.1.1.1項「ローカル・パブリッシュ」

- 12.1.1.2項「リモート・パブリッシュ」

詳細は、12.1項「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要」を参照してください。

12.1.1.1 ローカル・パブリッシュ

図12-1に、ローカル・パブリッシュ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。任意のアダプタおよびプロセッサは必須ではなく、これらは単にpub-subアダプタの他にアプリケーションで使用可能なコンポーネントの例として示されています。

図12-1 ローカル・パブリッシュ用の組込みPub-Subアダプタ

「図12-1 ローカル・パブリッシュ用の組込みPub-Subアダプタ」の説明

図12-1では、次の点に注意してください。

- あるソースからのイベントが、Oracle Event Processingで実行中のアプリケーションのアダプタに到着します。このアダプタは必須ではなく、単に例として示されています。

- アダプタからのイベントが任意のプロセッサに到着します。ここでも、このプロセッサは必須ではありません。

- プロセッサからローカル・パブリッシュ用の組込みpub-subアダプタにイベントが送信されます。アダプタは、アプリケーションがデプロイされるOracle Event Processingインスタンスに構成されたローカルHTTP pub-subサーバーにイベントを送信します。pub-subアダプタでは構成されているチャネルにメッセージが送信されます。

- Oracle Event Processingに構成されているローカルHTTP pub-subサーバーによって、ローカル・チャネルのすべてのサブスクライバにイベントがメッセージとして送信されます。

12.1.1.2 リモート・パブリッシュ

図12-2に、リモート・パブリッシュ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。

図12-2 リモート・パブリッシュ用の組込み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.1.2 サブスクライブ用の組込みPub-Subアダプタの概要

図12-3に、サブスクライブ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。任意のプロセッサおよびビジネスPOJOは必須ではなく、これらは単にpub-subアダプタの他にアプリケーションで使用可能なコンポーネントの例として示されています。

図12-3 サブスクライブ用の組込みPub-Subアダプタ

「図12-3 サブスクライブ用の組込み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パブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要」を参照してください。

12.1.3 JSONメッセージとイベント・タイプの間の変換

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/を参照してください。

12.2 HTTP Pub-Subアダプタの構成

この項では、パブリッシュ用とサブスクライブ用の両方のOracle Event Processing HTTP Pub-Subアダプタを構成する方法について説明します。

- 12.2.1項「Oracle Event Processing IDE for Eclipseを使用したHTTP Pub-Subアダプタの構成方法」

- 12.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」

12.2.1 Oracle Event Processing IDE for Eclipseを使用した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アダプタを手動で構成する方法」を確認して構成を完了します。

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アダプタを手動で構成するには:

1. 任意のXMLエディタを使用して構成XMLファイルを開きます。

2. 構成する必要のある各組込み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>

3. (パブリッシュおよびサブスクライブ用の)各リモート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 となります。

4. パブリッシュ用の各ローカル 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>

5. ローカルまたはリモート、パブリッシュまたはサブスクライブにかかわらず、すべての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を用いてローカル・チャネルにパブリッシュします。

6. サブスクライブ用のすべての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アセンブリ・ファイルに登録されていることを必ず確認してください。

7. 最後に、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>

8. 着信または発信メッセージがイベント・タイプに変換される方法をカスタマイズする必要がある場合は、必要に応じてコンバータJavaクラスを作成します。メッセージと特定のイベント・タイプの間のマップ・プロパティ名に基づいてOracle Event Processingで変換が行われるよう指定できるため、この手順は省略できます。
12.3項「HTTP Pub-Subメッセージとイベント・タイプの間のカスタム・コンバータの作成」を参照してください。

9. ローカル・パブリッシュ用のOracle Event Processingインスタンスに関連付けられているローカルHTTP pub-subサーバーを使用する場合、VisualizerのOracle Event Processing管理ツールを使用して、アプリケーションで必要なチャネル・パターンとともに新しいチャネルを追加します。
詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のHTTPパブリッシュ・サブスクライブ・チャネルのセキュリティの構成方法に関する項を参照してください。

10. アプリケーションに追加される各組込みpub-subアダプタの宣言を追加して、EPNアセンブリ・ファイルを更新します。
12.4項「HTTP Pub-SubアダプタのEPNアセンブリ・ファイルの構成」を参照してください。

11. 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ファイルの作成」を参照してください。

12.3 HTTP Pub-Subメッセージとイベント・タイプの間のカスタム・コンバータの作成

メッセージ(サブスクライブでの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://www.json.org/

- http://code.google.com/p/google-gson

12.4 HTTP Pub-SubアダプタのEPNアセンブリ・ファイルの構成

イベント処理ネットワークの各HTTP Pub-Subアダプタについて、アプリケーションのEPNアセンブリ・ファイルに対応するwlevs:adapter要素を追加する必要があります。provider属性を使用して、HTTP Pub-Subアダプタがパブリッシュ用かサブスクライブ用かを指定します。

EPNの他の段階と同様に、リスナーをwlevs:adapter要素に追加して、HTTP Pub-Subアダプタをイベント処理ネットワークに統合します。ご使用のOracle Event Processingアプリケーションの要件によって、EPNでHTTP Pub-Subアダプタが適合する場所が決まります。

この項では次について説明します:

- 12.4.1項「パブリッシュ用のHTTP Pub-SubアダプタのEPNアセンブリ・ファイル構成」

- 12.4.2項「サブスクライブ用のHTTP Pub-SubアダプタのEPNアセンブリ・ファイル構成」

詳細は、次を参照してください:

- 1.4.2項「コンポーネント構成ファイルの概要」

- B.2項「コンポーネント構成スキーマ wlevs_application_config.xsd」

12.4.1 パブリッシュ用のHTTP Pub-SubアダプタのEPNアセンブリ・ファイル構成

パブリッシュ(ローカルまたはリモートのいずれか)用の組込み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アダプタのトピックと関係がないため、この項では取り上げません。

12.4.2 サブスクライブ用のHTTP Pub-SubアダプタのEPNアセンブリ・ファイル構成

サブスクライブ用の組込み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>

12.5 HTTP Pub-Subアダプタのコンポーネント構成ファイルの構成

HTTP Pub-Subアダプタの構成は、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントを構成する場合と同様に、それぞれの構成ファイルで行います。

HTTP Pub-Subアダプタを構成する場合のルート要素はhttp-pub-sub-adapterです。特定のアダプタのname子要素は、このアダプタが宣言されているEPNアセンブリ・ファイル内の対応するwlevs:adapter要素のid属性と一致している必要があります。

この項では次について説明します:

- 12.5.1項「パブリッシュ用のHTTP Pub-Subアダプタのコンポーネント構成」

- 12.5.2項「サブスクライブ用のHTTP Pub-Subアダプタのコンポーネント構成」

詳細は、次を参照してください:

- 1.4.2項「コンポーネント構成ファイルの概要」

- B.2項「コンポーネント構成スキーマ wlevs_application_config.xsd」

12.5.1 パブリッシュ用のHTTP Pub-Subアダプタのコンポーネント構成

表12-1には、パブリッシュ用のHTTP Pub-Subアダプタに適用できる、http-pub-sub-adapter要素の子要素がリストされます。

表12-1 パブリッシュ用コンポーネント構成のhttp-pub-sub-adapterの子要素

子要素

説明

server-context-path

必須。パブリッシュ用の各ローカル HTTP pub-subアダプタについて、現在のOracle Event ProcessingアプリケーションをホストするOracle Event Processingインスタンスに関連付けられたローカルHTTP pub-subサーバーのOracle Event Processingサーバーconfig.xmlファイル要素http-pubsub子要素pathの値を指定します。

デフォルト: /pubsub

新たにローカルHTTPパブリッシュ・サブスクライブ・サーバーを作成、またはデフォルトの構成を変更した場合は、該当するpath子要素の値を指定します。

注意: リモートHTTP Pub-Subアダプタにはこのオプションを指定しないでください。

server-url

必須。パブリッシュ用の各リモート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アダプタにはこのオプションを指定しないでください。

channel

必須。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、HTTP Pub-Subアダプタがパブリッシュする先のチャネルを指定します。

event-type

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、パブリッシュされるイベントのタイプを制限するために、JavaBeanイベントの完全修飾クラス名を指定します。指定しない場合、HTTP pub-subアダプタに送信されたすべてのイベントがパブリッシュされます。

このクラスをEPNアセンブリ・ファイルにwlevs:event-type-repository要素、wlevs:class子要素として登録する必要があります。詳細は、9.3.1項「JavaBeanとしてのOracle Event Processingイベント・タイプの作成」を参照してください。

user

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、ユーザー名を指定します。

password

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、パスワードを指定します。

passwordまたはencrypted-passwordのどちらかを選択します。両方は選択できません。

encrypted-password

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証とパスワードの暗号化が必要な場合は、 暗号化されたパスワードを指定します。

passwordまたはencrypted-passwordのどちらかを選択します。両方は選択できません。

次の構成ファイルは、パブリッシュ用の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.5.2 サブスクライブ用のHTTP Pub-Subアダプタのコンポーネント構成

表12-2には、サブスクライブ用のHTTP Pub-Subアダプタに適用できる、http-pub-sub-adapter要素の子要素がリストされます。

表12-2 サブスクライブ用コンポーネント構成のhttp-pub-sub-adapterの子要素

子要素

説明

server-url

必須。サブスクライブ用の各リモートHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のリモートHTTP Pub-SubサーバーのURLを指定します。リモートHTTP pub-subサーバーには、Oracle Event Processingの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP pub-subサーバーを指定できます。

注意: ローカルHTTP Pub-Subアダプタにはこのオプションを指定しないでください。

channel

必須。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、HTTP Pub-Subアダプタがサブスクライブする先のチャネルを指定します。

event-type

必須。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、着信メッセージがマップされるJavaBeanの完全修飾クラス名を指定します。実行時、Oracle Event Processingはメッセージ内の受信キー/値のペアを使用し、メッセージ・データを指定されたイベント型にマップします。

このクラスをEPNアセンブリ・ファイルにwlevs:event-type-repository要素、wlevs:class子要素として登録する必要があります。詳細は、9.3.1項「JavaBeanとしてのOracle Event Processingイベント・タイプの作成」を参照してください。

user

オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、ユーザー名を指定します。

password

オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、パスワードを指定します。

passwordまたはencrypted-passwordのどちらかを選択します。両方は選択できません。

encrypted-password

オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle Event Processingアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証とパスワードの暗号化が必要な場合は、 暗号化されたパスワードを指定します。

passwordまたはencrypted-passwordのどちらかを選択します。両方は選択できません。

次の構成ファイルは、サブスクライブ用の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>

13 キャッシュの統合

この章では、Oracle Event Processingイベント処理ネットワークで使用するためのキャッシュ・システムの構成方法について説明します。これには、Oracle Coherence、Oracle Event Processingおよびサードパーティのキャッシング・プロバイダに基づくキャッシュの構成方法およびOracle Continuous Query Language、Javaクラスおよび他のコードからのアクセス方法に関する情報も含まれます。

この章の内容は次のとおりです。

- 13.1項「キャッシュの統合の概要」

- 13.2項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」

- 13.3項「Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュの構成」

- 13.4項「サードパーティのキャッシュ・システムおよびキャッシュの構成」

- 13.5項「イベント処理ネットワークへのキャッシュの追加」

- 13.6項「アプリケーション・コードからキャッシュへのアクセス」

13.1 キャッシュの統合の概要

イベント・データを含むアプリケーションで使用するデータのソースまたは宛先としてキャッシュを使用できるよう、キャッシュ・システムとOracle Event Processingアプリケーションを統合できます。キャッシュを統合すると、ストリーミング・データを処理するアプリケーションに適切な速度で比較的に静的なデータにアクセスできます。

キャッシュとはイベントの一時保存領域で、Oracle Event Processingアプリケーションの全体のパフォーマンスを向上するために作成されます(キャッシュは、アプリケーションが正常に機能するためには必要ありません)。イベントの可用性を高め、アプリケーションのパフォーマンスを向上するために、Oracle Event Processingアプリケーションでは、イベントをキャッシュにパブリッシュしたり、キャッシュにあるイベントを使用したりできます。

キャッシュ・システムとは、キャッシュ実装の構成されたインスタンスです。キャッシュ・システムは構成されたキャッシュの名前付きセットを定義すると共に任意のキャッシュが複数のマシンに渡って配信される場合、リモート通信用の構成を定義します。

キャッシュを統合して、次を実行できます。

- アプリケーション・コードからのアクセスに頻繁に使用するデータをキャッシュにロードして、アプリケーションのパフォーマンスを向上します。

- 別のアプリケーションで使用する処理されたイベント・データをキャッシュに書き込みます。

完全なキャッシュ統合ユース・ケースの詳細は、第13.1.3項「キャッシュのユース・ケース」を参照してください。

キャッシュが実際にネットワークのステージである必要はありません。他のコンポーネントまたはSpring BeanではプログラムからキャッシングAPIを使用してキャッシュにアクセスできます。

Oracle Event Processingキャッシュには、次の機能があります。

- アプリケーションのデプロイ前にキャッシュにデータをあらかじめロードします。

- キャッシュのデータを定期的にリフレッシュ、無効化、およびフラッシュします。これらのタスクはすべてインクリメンタルに行われ、アプリケーションの停止や待機時間スパイクは発生しません。

- 動的にキャッシュの構成を更新します。

構成手順は各キャッシュ実装ごとに異なりますが、上位レベルの手順は次のとおりです。

キャッシュを統合するには:

1. キャッシュ・システムおよびキャッシュを構成します。この実行方法は、使用しているキャッシュ実装によって異なります。
詳細は、13.1.2項「キャッシュ構成の概要」を参照してください。

2. コンポーネント構成ファイルを更新して、キャッシュ・システムおよびキャッシュを宣言します。
詳細は、13.1.2項「キャッシュ構成の概要」を参照してください。

3. EPNアセンブリ・ファイルを編集して、キャッシュ・システムおよびキャッシュをイベント処理ネットワークに追加します。IDEのEPNエディタを使用してキャッシュを追加できることに注意してください。
詳細は、13.5項「イベント処理ネットワークへのキャッシュの追加」を参照してください。

4. Oracle Event Processingアプリケーションのキャッシュにアクセスするコードを書き込みます。
詳細は、13.6項「アプリケーション・コードからキャッシュへのアクセス」を参照してください。

13.1.1 Oracle Event Processingでサポートされるキャッシュ実装

Oracle Event Processingは、次のキャッシュ実装をサポートします。

- Oracle Event Processingローカル・キャッシュ: メモリー内のローカル・シングルJVMキャッシュ。この実装はローカルの使用に最適です(クラスタで使用できません)。設定が比較的簡単なため、早期の開発にも役立つ場合があります。

- Oracle Coherence: クラスタリングされたアプリケーションおよびアプリケーション・サーバーのJCacheに準拠したメモリー内の分散型データ・グリッドソリューション。クラスタ全体の同時実行性制御を使用してデータへの更新を調整し、利用可能な最高性能のクラスタ・プロトコルを使用してクラスタ全体のデータ変更をレプリケートして、データ修正の通知をリクエストする任意のサーバーへの通知を分散化します。標準Java collections APIを使用してOracle Coherenceの機能を利用してデータへのアクセスおよびデータ変更を行い、標準JavaBeanイベント・モデルを使用してデータ変更通知を受信します。

注意:

Oracle Coherenceと共にOracle Event Processingを使用する前に、Coherence Enterprise Edition、Coherence Grid Edition、またはOracle WebLogic Application Grid用ライセンスなどの有効なOracle Coherenceライセンスを取得する必要があります。Oracle Coherenceに関する詳細は、http://www.oracle.com/technology/products/coherence/index.htmlを参照してください。

- サードパーティのキャッシュ: Oracle Event Processingをサードパーティの他のキャッシュ実装で機能することを可能にするプラグインを作成できます。

13.1.2 キャッシュ構成の概要

イベント処理ネットワーク(EPN)に追加する前に、キャッシュ・システムおよびキャッシュを構成します。構成の追加方法は、使用するキャッシュ実装に依存します。

次の構成ファイルを更新して、キャッシュ・システムおよびキャッシュを統合します。

- キャッシュ処理にOracle Coherenceを使用している場合、coherence-cache-config.xmlファイルを使用して構成します。これは、他のコンテキストでCoherenceを構成するために使用する同じ種類のファイルです。
詳細は、13.2.1項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」を参照してください。

- Oracle Coherenceを使用している場合、Oracle Coherenceでキャッシュする際にオプションでtangosol-coherence-override.xmlファイルを使用して、サーバー全体のグローバルな構成変更を行うことができます。
詳細は、13.2.1項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」を参照してください。

- キャッシュ・システムおよびキャッシュの基本構成にコンポーネント構成ファイルを使用します。このファイルでは、キャッシュの存在を基本的に宣言して、その構成を提供します。キャッシュがOracle Coherenceキャッシュの場合、このファイルを使用してcoherence-cache-config.xmlファイルのCoherence固有の構成を参照できます。
アプリケーションで使用する各キャッシュ・システムの場合、コンポーネント構成ファイル内で個別のcaching-system要素を追加します。各キャッシュのcache要素も追加します。

詳細は、13.2.1項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」または13.3.1項「Oracle Event Processingキャッシュ・システムの構成」を参照してください。

- アプリケーションのEPNアセンブリ・ファイルを使用して、構成されたキャッシュ・システムおよびキャッシュをイベント処理ネットワークに追加し、キャッシュをEPNの他のコンポーネントに接続します。
詳細は、13.5項「イベント処理ネットワークへのキャッシュの追加」を参照してください。

ただし、基本的に、コンポーネント構成ファイルおよびEPNアセンブリ・ファイルを使用して、キャッシュ・システムおよびキャッシュを作成、構成および接続します。デフォルトでは、プロジェクトを作成する場合、IDEは、1つのコンポーネント構成ファイルおよび1つのEPNアセンブリ・ファイルを作成します。IDEを使用してEPNにキャッシュを追加するとき、キャッシュ要素をEPNアセンブリ・ファイルに追加します。手動でcaching-system要素をEPNアセンブリ・ファイルおよびコンポーネント構成ファイルに追加する必要があります。

構成されたキャッシュ・システムおよびキャッシュをアプリケーションのイベント処理ネットワークに追加する場合、構成された名前を参照して、コンポーネント構成ファイルのエントリとともにEPNアセンブリ・ファイルのエントリを指定します。

例13-1(コンポーネント構成ファイルの引用)および例13-2(EPNアセンブリ・ファイルの引用)で、EPN id属性値は、構成name属性値と同じ値を持つ必要があります。

例13-1 コンポーネント構成ファイル名値

<caching-system>
<name>cacheSystem</name>
<cache>
<name>cache1</name>
...
</cache>
</caching-system>

例13-2 EPNアセンブリ・ファイルIDおよび参照値

<wlevs:caching-system id="cacheSystem">
...
</wlevs:caching-system>

<wlevs:cache id="cache1">
<wlevs:caching-system ref="cacheSystem"/>
</wlevs:cache>

アプリケーションに複数のキャッシュ・システムがある場合、config.xmlファイルで個別にcaching-system要素を作成できます。META-INF/wlevsディレクトリに配置される単一または複数のXMLファイルを使用できます。開発環境に最も適した方法を選択します。

詳細は、次を参照してください:

- 1.4.2項「コンポーネント構成ファイルの概要」

- 1.4.1項「EPNアセンブリ・ファイルの概要」

- 5.3項「EPNアセンブリ・ファイルの作成」

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のwlevs.Adminコマンドライン・リファレンスに関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event ProcessingのJMXの構成に関する項

キャッシュの構成に関する詳細は、次を参照してください。

- 13.1.3項「キャッシュのユース・ケース」

- 13.1.4項「キャッシュAPI」

13.1.3 キャッシュのユース・ケース

高いスループットが特に重要になる可能性がある場合、キャッシュ技術はストリーミング・データのユース・ケースに非常に役立ちます。通常、キャッシュからのデータの取得は、リレーショナル・データベースからの同じデータの取得よりはるかに高速になります。

Oracle Event Processingアプリケーションでキャッシュする共通のユース・ケースは次のとおりです。

- キャッシュへのイベントのパブリッシュ
このユース・ケースは、金融市場が開いている間はイベントをキャッシュにパブリッシュし、マーケット終了後にキャッシュのデータを処理する金融アプリケーションです。

イベントをキャッシュにパブリッシュすると、イベントを高可用性にしたり、サーバー上で稼働する他のOracle Event Processingアプリケーションで使用可能になったりします。イベントをキャッシュにパブリッシュすると、キャッシュの実装によってセカンダリ・ストレージへの非同期的書込みも可能になります。イベント(入力アダプタ、チャネル、ビジネスPOJO、またはプロセッサ)を生成し、そのイベントをキャッシュにパブリッシュするOracle Event Processingアプリケーション内の任意のステージを構成できます。

- キャッシュ内のデータの使用
Oracle Event Processingアプリケーションでは、ときには処理を実行するためストリーミング以外のデータにアクセスする必要があります。このようなデータをキャッシュすることで、アプリケーションのパフォーマンスが向上します。

プログラムによりキャッシュに直接アクセスできるOracle Event Processingアプリケーションの標準のコンポーネントは、入力および出力アダプタ、およびビジネスPOJOです。

また、アプリケーションは、ユーザー定義関数またはOracle CQL/EPL文から直接のいずれの方法でも、Oracle CQL/EPLからキャッシュにアクセスできます。

ユーザー定義関数の場合、プログラマはSpringを使用してキャッシュ・リソースを関数の実装に組み込みます。詳細は、1.4.3項「Oracle Event Processingリソース・アクセスの構成」を参照してください。

アプリケーションは、プロセッサ内で実行されるOracle CQL/EPL文から直接キャッシュに問い合せることもできます。この場合、データがキャッシュから抽出される場合を除いて、キャッシュへの問合せがチャネルへの問合せに酷似するように、キャッシュは必然的にプロセッサへの別の種類のデータ・ソースとして機能します。

キャッシュに問い合せるためにOracle CQLを使用する例は、注文や注文をキャッシュに実行するために使用される取引をパブリッシュする金融アプリケーションにみられます。一日の最後のマーケット終了時に、アプリケーションは、特定の注文に関連したすべての取引を検索するためにキャッシュに問い合せます。

- キャッシュのデータの更新と削除
Oracle Event Processingアプリケーションでは、必要に応じてキャッシュのデータを更新および削除できます。

たとえば、金融アプリケーションでは注文を実現する個々の取引が実行されるたびにキャッシュ内の注文を更新し、注文が取り消された場合はこれを削除する必要があります。キャッシュ内のデータの使用が許可されたアプリケーションのコンポーネントには、データの更新も許可されます。

- マルチサーバー・ドメインにおけるキャッシュの使用
キャッシュを使用するOracle Event Processingアプリケーションを構築する場合、そのアプリケーションをマルチサーバー・ドメインでデプロイし、分散型キャッシュをサポートするキャッシュ・システムを使用する必要があります。

この場合、Oracle Coherenceまたは分散型キャッシュをサポートするサードパーティのキャッシュ・システムのいずれかを使用する必要があります。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingネイティブ・クラスタリングを使用したマルチサーバー・ドメインの管理に関する項

- 13.2項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」

- 13.4項「サードパーティのキャッシュ・システムおよびキャッシュの構成」

13.1.4 キャッシュAPI

Oracle Event Processingには、アプリケーションで特定のタスクを実行するために使用できるキャッシングAPIが用意されています。APIは、キャッシュへのアクセス、およびキャッシュ・ローダー、リスナー、ストアの作成に使用されるAPIを含むcom.bea.cache.jcacheパッケージ内にあります。また、この機能を使用する場合、com.tangosol.netおよびcom.tangosol.net.cacheパッケージをインポートする必要があります。

EPNアセンブリ・ファイルおよびコンポーネント構成ファイルを使用して、キャッシュ・システムおよびキャッシュを作成、構成および接続します。つまり、通常は、アプリケーションでCacheおよびCachingSystemインタフェースを明示的に使用しないことになります。それらを使用する唯一の理由は、標準の構成に追加する要件がある場合のみです。たとえば、サードパーティのキャッシュ・プロバイダに統合する場合、CachingSystemインタフェースを使用する必要があります。java.util.Mapインタフェースの一部ではないキャッシュ上の操作を行う場合、Cacheインタフェースを使用できます。

Oracle Event Processingのローカル・キャッシュ用のキャッシュ・リスナー、キャッシュ・ローダー、またはキャッシュ・ストアを作成する場合、書き込むBeanはCacheListener、CacheLoader、またはCacheStoreインタフェースを実装する必要があります。

Oracle Coherenceキャッシュ用のキャッシュ・リスナー、キャッシュ・ローダー、またはキャッシュ・ストアを作成する場合、書き込むBeanは適切なOracle Coherenceインタフェースを実装する必要があります。

サードパーティのキャッシュ用のキャッシュ・リスナー、キャッシュ・ローダー、またはキャッシュ・ストアを作成する場合、書き込むBeanは適切なサードパーティのキャッシュ・インタフェースを実装する必要があります。

詳細は、次を参照してください:

- 13.2項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」

- 13.3項「Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュの構成」

- 13.4項「サードパーティのキャッシュ・システムおよびキャッシュの構成」

- Oracle Fusion Middleware Oracle Event Processing Java APIリファレンス

13.2 Oracle Coherenceキャッシュ・システムおよびキャッシュの構成

Oracle Coherenceキャッシュ・システムおよびキャッシュを使用するようにアプリケーションを構成できます。アプリケーションをマルチサーバー・ドメインにデプロイしようとする場合は、このキャッシュ・システムを使用します。

Oracle Coherenceを使用すると、第1キャッシュ・システムのみがサーバー内に構成されます。Oracle Event Processingは、構成する可能性がある他のキャッシュ・システムは無視します。

注意:

Oracle Coherenceと共にOracle Event Processingを正式に使用する前に、Coherence Enterprise Edition、Coherence Grid Edition、またはOracle WebLogic Application Grid用ライセンスなどの有効なCoherenceライセンスを取得する必要があります。Oracle Coherenceに関する詳細は、http://www.oracle.com/technology/products/coherence/index.htmlを参照してください。

Oracle Coherenceキャッシュ・システムおよびキャッシュを構成するには:

1. Oracle Coherenceキャッシュをこのアプリケーションだけが使用するか、2つ以上のアプリケーションで共有するかを決定します。
詳細は、13.2.2項「共有Oracle Coherenceキャッシュの構成」を参照してください。

2. coherence-cache-config.xmlファイル(およびtangosol-coherence-override.xmlファイル)を使用してキャッシュおよびキャッシュ・システムを構成し、アプリケーションのMETA-INF/wlevs/coherenceディレクトリにファイルを配置します。

3. アプリケーションのキャッシュ構成ファイルを更新することによって、キャッシュ・システムおよびそのキャッシュを構成します。
詳細は、13.2.1項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」を参照してください。

4. 1つ以上のcache要素の子要素でEPNアセンブリ・ファイルを更新して、キャッシュ・システムおよびキャッシュを構成します。

5. アプリケーションをアセンブルおよびデプロイする前に、META-INF/MANIFEST.MFを編集して実装で必要になる可能性があるパッケージをインポートします。アプリケーションがキャッシュ・リスナー、ローダーまたはストアを実装する場合、マニフェストはcom.tangosol.net.cacheパッケージをインポートする必要があります。
詳細は、5.7.5項「パッケージのインポート方法」を参照してください。

13.2.1 Oracle Coherenceキャッシュ・システムおよびキャッシュの構成

Oracle Event Processingアプリケーションと統合するためにOracle Coherenceキャッシュを構成する場合、Coherence構成ファイルを使用し、Oracle Event Processingコンポーネント構成でそれらのファイルを参照します。

Oracle Event Processingは、Oracle Coherenceにより提供されるネイティブ構成を利用します。Oracle Coherenceキャッシュを使用するアプリケーション・バンドル内で、次のリストで示されるファイル名を使用して次の2つのOracle Coherence構成ファイルをパッケージ化することによって、これを行います。

- coherence-cache-config.xml: Oracle Coherenceキャッシュの構成情報です。各キャッシュはcache-name要素で識別され、この要素の値は、EPNアセンブリ・ファイル内のwlevs:cache要素のid属性にマップします。このファイルとマッピング例の詳細は、13.2.1.1項「coherence-cache-config.xmlファイル」を参照してください。
これはアプリケーションごとの構成ファイルで、このファイルをバンドルJARのMETA-INF/wlevs/coherenceディレクトリに配置してください。このディレクトリは、メモリー内のローカルOracle Event Processingキャッシュ・プロバイダのコンポーネント構成ファイルを保存するディレクトリ(META-INF/wlevs)とは異なることに注意してください。

- tangosol-coherence-override.xml: Oracle Coherenceクラスタ構成です。このファイルおよび例の詳細は、13.2.1.2項「tangosol-coherence-override.xmlファイル」を参照してください。
これは、サーバーごとのグローバル・ファイル(Oracle Coherenceドキュメント内では「操作構成」と呼ばれます)で、このファイルはOracle Event Processingサーバーのconfigディレクトリに配置します。

前述のリストのファイルを使用してOracle Coherenceを構成した後、例13-3で示されるように、コンポーネント構成ファイルを更新します。ここで、キャッシュを構成したcoherence-cache-config.xmlファイルを参照して、アプリケーションで使用するCoherenceキャッシュ・システムを宣言します。

例13-3 コンポーネント構成ファイル: Coherenceキャッシュ

<coherence-caching-system>
<name>caching-system-id</name>
<coherence-cache-config>
../wlevs/coherence/coherence-cache-config.xml
</coherence-cache-config>
</coherence-caching-system>

キャッシュ・システムがOracle Coherenceプロバイダを使用することを宣言するとき、このキャッシュ・システムのすべてのキャッシュは、Oracle Event Processingローカル構成ではなく、必ずOracle Coherence構成にマップします。そうしない場合、Oracle Event Processingが例外をスローします。このファイルの詳細なリファレンスは、D.23項「coherence-caching-system」およびD.22項「coherence-cache-config」を参照してください。

13.2.1.1 coherence-cache-config.xmlファイル

coherence-cache-config.xmlファイルは基本的なOracle Coherence構成ファイルで、任意のOracle Coherenceアプリケーションでtrueとなるように、Oracle Coherence DTDに準拠する必要があります。

次の例は単純な構成を示します。太字部分に関する説明は例の後にあります。

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">
<cache-config>
<caching-scheme-mapping>
<cache-mapping>
<cache-name>myCoherenceCache</cache-name>
<scheme-name>new-replicated</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>myLoaderCache</cache-name>
<scheme-name>test-loader-scheme</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>myStoreCache</cache-name>
<scheme-name>test-store-scheme</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<caching-schemes>
<replicated-scheme>
<scheme-name>new-replicated</scheme-name>
<service-name>ReplicatedCache</service-name>
<backing-map-scheme>
<local-scheme>
<scheme-ref>my-local-scheme</scheme-ref>
</local-scheme>
</backing-map-scheme>
</replicated-scheme>
<local-scheme>
<scheme-name>my-local-scheme</scheme-name>
<eviction-policy>LRU</eviction-policy>
<high-units>100</high-units>
<low-units>50</low-units>
</local-scheme>
<local-scheme>
<scheme-name>test-loader-scheme</scheme-name>
<eviction-policy>LRU</eviction-policy>
<high-units>100</high-units>
<low-units>50</low-units>
<cachestore-scheme>
<class-scheme>
<class-factory-name>
com.bea.wlevs.cache.coherence.configuration.SpringFactory
</class-factory-name>
<method-name>getLoader</method-name>
<init-params>
<init-param>
<param-type>java.lang.String</param-type>
<param-value>{cache-name}</param-value>
</init-param>
</init-params>
</class-scheme>
</cachestore-scheme>
</local-scheme>
<local-scheme>
<scheme-name>test-store-scheme</scheme-name>
<eviction-policy>LRU</eviction-policy>
<high-units>100</high-units>
<low-units>50</low-units>
<cachestore-scheme>
<class-scheme>
<class-factory-name>
com.bea.wlevs.cache.coherence.configuration.SpringFactory
</class-factory-name>
<method-name>getStore</method-name>
<init-params>
<init-param>
<param-type>java.lang.String</param-type>
<param-value>{cache-name}</param-value>
</init-param>
</init-params>
</class-scheme>
</cachestore-scheme>
</local-scheme>
</caching-schemes>
</cache-config>

Oracle Coherence構成ファイルでは、cache-mappingの子要素であるcache-name要素が、Oracle Coherenceキャッシュ名を識別します。この要素の値は、EPNアセンブリ・ファイル内のwlevs:cache要素のid属性値と完全に一致する必要があります。たとえば、次のEPNアセンブリ・ファイルのスニペットは、Oracle Coherence構成ファイル内のmyCoherenceCacheキャッシュを参照します。

<wlevs:cache id="myCoherenceCache" advertise="false">
<wlevs:caching-system ref="coherence-cache"/>
<wlevs:cache-loader ref="localLoader"/>
<wlevs:cache-listener ref="localListener"/>
</wlevs:cache>

Oracle Coherence構成ファイルは、Oracle Event Processingと共にOracle Coherenceを使用する場合、別の要件例示します。Oracle Coherenceファクトリは、キャッシュのローダーまたはストアを構成するためにSpringを使用するときに宣言される必要があります。これは、ファクトリ・クラスを指定するためにOracle Coherence構成ファイル内でcachestore-scheme要素を使用することによって行います。このファクトリ・クラスによって、Oracle CoherenceはOracle Event Processingにコールして、キャッシュに構成されるローダーまたはストアへの参照を取得できるようになります。ローダーまたはストアの構成における唯一の差異は、method-name要素が、ローダーが使用されるときはgetLoaderの値を持ち、ストアが使用されているときはgetStoreの値を持つことです。ファクトリへの入力パラメータとしてキャッシュ名を渡します。

coherence-cache-config.xmlファイルの詳細は、Oracle Coherenceドキュメント(http://www.oracle.com/technology/products/coherence/index.html)を参照してください。

13.2.1.2 tangosol-coherence-override.xmlファイル

tangosol-coherence-override.xmlファイルは、Oracle Coherenceのキャッシュ処理を構成します。Oracle Coherenceをキャッシュ処理のみに使用している場合、このファイルを含めます。Oracle Coherenceをクラスタリングに使用している場合は、このファイルを含めないでください。

次の例は単純な構成を示します。太字部分に関する説明は例の後にあります。

<?xml version='1.0'?>
<coherence xml-override="/tangosol-coherence-override.xml">
<cluster-config>
<member-identity>
<cluster-name>com.bea.wlevs.example.provider</cluster-name>
</member-identity>
...
</coherence>

この構成ファイルは完全に標準のファイルです。Oracle Event Processingの起動時にOracle Coherenceが既存のOracle Coherenceクラスタに結合しようとするのを防ぐために、cluster-name要素を指定する必要がある点に注意してください。結合すると、問題の原因になり、Oracle Event Processingが起動できなくなる場合があります。

tangosol-coherence-override.xmlファイルの詳細は、Oracle Coherenceドキュメント(http://www.oracle.com/technology/products/coherence/index.html)を参照してください。

Oracle Event Processingクラスタの詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingネイティブ・クラスタリングによるマルチサーバー・ドメインの管理に関する項を参照してください。

13.2.2 共有Oracle Coherenceキャッシュの構成

同一のOracle Event Processingサーバーにデプロイされる1つ以上のアプリケーションのEPNアセンブリ・ファイルのOracle Coherenceキャッシュを宣言する場合、ローダーまたはストアを使用して同一のキャッシュの複数のインスタンスを構成しないでください。各EPNアセンブリ・ファイル内でローダーまたはストアを使用して同一のOracle Coherenceキャッシュをそれぞれ構成する、複数のアプリケーションを使用することによって、これを不注意で行う可能性があります。複数のインスタンスを構成した場合、Oracle Event Processingは例外をスローします。

複数のアプリケーション・バンドルがOracle Coherenceキャッシュを共有する必要がある場合、個別のバンドル内で適切なwlevs:cacheおよびwlevs:caching-systemを含むEPNアセンブリ・ファイルを配置し、それらのadvertise属性をtrueに設定する必要があります。

キャッシュ・システムおよびキャッシュをOSGiサービスとしてエクスポートするには、advertise属性をtrueに設定します。

<wlevs:caching-system id="caching-system-id" provider="coherence" advertise="true"/>
...
<wlevs:cache id="cache-id" name="alternative-cache-name" advertise="true" >
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

キャッシュが通知される場合、個別のバンドル内のアプリケーションのEPN内のコンポーネントはキャッシュを参照できます。次の例では、1つのバンドル内のプロセッサが、cacheproviderと呼ばれる個別のバンドル内に配置されたcache-idというIDを持つキャッシュをキャッシュ・ソースとして使用できる仕組みを示しています。

<wlevs:processor id="myProcessor2">
<wlevs:cache-source ref="cacheprovider:cache-id"/>
</wlevs:processor>

13.3 Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュの構成

Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュを使用するようにアプリケーションを構成できます。Oracle Event Processingローカル・キャッシュ・システムは、アプリケーションをマルチサーバー・ドメインにデプロイしようと計画しない場合に適切です。アプリケーションをマルチサーバー・ドメインにデプロイしようと計画する場合、Oracle Coherenceのキャッシュを使用することを考慮してください(詳細は、13.2項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」を参照)。

Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュを構成するには:

1. caching-systemおよびキャッシュ要素を追加してコンポーネント構成ファイルを更新し、キャッシュ・システムおよびキャッシュを宣言します。
詳細は、13.3.1項「Oracle Event Processingキャッシュ・システムの構成」を参照してください。

2. オプションで、1つ以上の追加cache要素の子要素を持つEPNアセンブリ・ファイルを更新することによって、デフォルトのキャッシュ構成をオーバーライドします。
詳細は、13.5項「イベント処理ネットワークへのキャッシュの追加」を参照してください。

3. アプリケーションをアセンブルおよびデプロイする前に、META-INF/MANIFEST.MFファイルに次のインポートが含まれていることを確認してください。

com.bea.wlevs.cache.spi; version ="11.1.0.0"

詳細は、5.7.5項「パッケージのインポート方法」を参照してください。

13.3.1 Oracle Event Processingキャッシュ・システムの構成

アプリケーションでOracle Event Processingキャッシュ・システムのキャッシュを使用するには、最初にキャッシュを構成する必要があります。後で、イベント処理ネットワークなどの他の場所でキャッシュを参照できます。この項では、コンポーネント構成ファイルで行うことができる設定について説明します。ファイルの詳細なリファレンスは、D.18項「caching-system」およびD.17項「cache」を参照してください。

コンポーネント構成ファイル(config.xmlファイルなど)で、configルート要素に対して、caching-system子要素を追加し、そのname子要素を使用してキャッシュ・システムを一意に識別します。この名前は、EPNアセンブリ・ファイルのwlevs:caching-system要素のid属性と一致します。これが、このキャッシュ構成が適用される対象の、EPNアセンブリ・ファイル内の特定のキャッシュ・システムをOracle Event Processingが認識する仕組みです。

たとえば、構成ファイルにはすでにプロセッサとアダプタが含まれているとします(簡略化のためこの例から内容は省略します)。更新されたファイルは、次のようになります。

<?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">
<processor>
...
</processor>
<adapter>
...
</adapter
<caching-system>
<name>caching-system-id</name>
</caching-system>
</n1:config>

作成する各キャッシュでは、caching-system要素を更新し、cache子要素を追加します。name子要素を使用すると、それぞれ一意に識別できます。

このnameは、EPNアセンブリ・ファイルで指定するwlevs:cache要素のid属性と一致します。これが、この構成が適用される対象の、EPNアセンブリ・ファイル内の特定のキャッシュをOracle Event Processingが認識する仕組みです。

各キャッシュについて、必要に応じて次の単純データ型の要素を追加して、キャッシュを構成します。

- max-size: 削除/ページングの発生後のメモリー内のキャッシュ要素の数です。最大キャッシュサイズは2^31-1エントリで、デフォルトは64です。

- eviction-policy: max-sizeに達したときに使用する削除ポリシーです。サポートされる値: FIFO、LRU、LFU、およびNRUで、デフォルト値はLFUです。

- 存続時間: エントリがキャッシュされる最大時間数で、単位はミリ秒です。デフォルト値は無限大です。

- idle-time: キャッシュされたエントリが実際にキャッシュから削除された後の時間数で、単位はミリ秒です。デフォルト値は無限大です。

- work-manager-name: ワーク・マネージャは、すべての非同期操作に使用されます。この要素の値は、サーバーのconfig.xml構成ファイル内のwork-manager要素のname子要素に対応します。
詳細は、F.45項「work-manager」を参照してください。

例:

<caching-system>
<name>caching-system-id</name>
<cache>
<name>cache-id</name>
<max-size>100000</max-size>
<eviction-policy>LRU</eviction-policy
<time-to-live>3600</time-to-live>
</cache>
</caching-system>

オプションで、write-throughまたはwrite-behindのいずれかをcacheの子要素として追加し、それぞれのキャッシュ・ストアへの同期/非同期書込みを指定します。デフォルトでは、ストアへの同期書込みが行われ(<write-through)、エントリが作成または更新されるとすぐに書込みが発生します。

write-behind要素を指定する場合、キャッシュ・ストアは、キャッシュ・エントリの作成または更新後に個別のスレッドから起動されます。次のオプションの子要素を使用すると、ストアへの非同期書込みを構成することもできます。

- work-manager-name: キャッシュ・ストアへの非同期書込みを処理するワーク・マネージャです。ワーク・マネージャがキャッシュそのものに指定されている場合、この値はストア操作のみのためにオーバーライドします。この要素の値は、サーバーのconfig.xml構成ファイル内のwork-manager要素のname子要素に対応します。
詳細は、F.45項「work-manager」を参照してください。

- batch-size: バッキング・ストアに書込みを戻すためにストア・バッファからピック・アップされる更新の数です。デフォルト値は1です。

- buffer-size: ストアに書き込まれる必要がある非同期更新を一時的に保存する内部ストア・バッファのサイズです。デフォルト値は100です。

- buffer-write-attempts: ユーザー・スレッドがストア・バッファへの書込みを試行する回数です。ユーザー・スレッドとは、キャッシュ・エントリの作成または更新を行うスレッドです。ユーザー・スレッドによるストア・バッファへの書込み試行がすべて失敗した場合、同期的にストアを起動します。デフォルト値は1です。

- buffer-write-timeout: ユーザー・スレッドがストア・バッファへの書込み試行を中断する前に待機する時間で、単位はミリ秒です。ストア・バッファへの書き込み試行が失敗するのは、バッファがいっぱいの場合のみです。タイムアウト後は、以降のバッファへの書き込み試行は、buffer-write-attemptsの値に基づいて行われます。デフォルト値は100です。

例:

<caching-system>
<name>caching-system-id</name>
<cache>
<name>cache-id</name>
<max-size>100000</max-size>
<eviction-policy>LRU</eviction-policy
<time-to-live>3600</time-to-live>
<write-behind>
<buffer-size>200</buffer-size>
<buffer-write-attempts>2</buffer-write-attempts>
<buffer-write-timeout>200</buffer-write-timeout>
</write-behind>
</cache>
</caching-system>

オプションで、cache要素のlisteners子要素を追加し、キャッシュをリスニングするコンポーネントの動作を構成できます。

asynchronousのブール属性を使用すると、リスナーを起動するかどうかを指定できます。

- 非同期: true。

- 同期: falseで、リスナーは同期的に起動されることになります(デフォルト)。

listeners要素には、work-manager-nameという単一の子要素があり、これが非同期的なリスナーの起動に使用されるワーク・マネージャを指定します。この値は、同期的起動が有効化されている場合は無視されます。ワーク・マネージャがキャッシュそのものに指定されている場合、この値はリスナーのみを起動するためにオーバーライドします。この要素の値は、Oracle Event Processingサーバーのconfig.xml構成ファイル内のwork-manager要素のname子要素に対応します。

例:

<caching-system>
<name>caching-system-id</name>
<cache>
<name>cache-id</name>
<max-size>100000</max-size>
<eviction-policy>LRU</eviction-policy
<time-to-live>3600</time-to-live>
<write-behind>
<buffer-size>200</buffer-size>
<buffer-write-attempts>2</buffer-write-attempts>
<buffer-write-timeout>200</buffer-write-timeout>
</write-behind>
<listeners asynchronous="true">
<work-manager-name>cachingWM</work-manager-name>
</listeners>
</cache>
</caching-system>

詳細は、F.45項「work-manager」を参照してください。

13.4 サードパーティのキャッシュ・システムおよびキャッシュの構成

サードパーティのキャッシュ・システムおよびキャッシュを使用するようにアプリケーションを構成できます。

サードパーティのキャッシュ・システムおよびキャッシュを構成するには:

1. サードパーティのキャッシュ・システムをOracle Event Processingキャッシュ・システム・プロバイダとして定義するためのプラグインを作成します。
構成:

- com.bea.wlevs.cache.spi.CachingSystemインタフェースの実装

- この種類のキャッシュ・システムを作成するファクトリの作成。

- プロバイダ・タイプを識別する属性を持つファクトリの登録。

2. EPNアセンブリ・ファイルでキャッシング・システムを宣言します。
wlevs:caching-system要素を使用すると、サードパーティの実装を宣言できます。classまたはprovider属性を使用すると、追加情報を指定できます。

簡略化するために、Oracle Event Processingアプリケーション・バンドル自体の内部にサードパーティの実装を組み込み、パッケージのインポート/エクスポート、サードパーティの実装を含む個別のバンドルのライフサイクル管理を避けることができます。この場合、wlevs:caching-system要素は、次の例で示すようにEPNアセンブリ・ファイル内で表示されます。

<wlevs:caching-system id="caching-system-id"
class="third-party-implementation-class"/>

class属性は、com.bea.wlevs.cache.spi.CachingSystemインタフェースを実装する必要があるJavaクラスを指定します。このインタフェースの詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスに関する項を参照してください。

ただし、サードパーティのキャッシュ処理実装を、それを使用しているOracle Event Processingアプリケーションとして同一のバンドル内に組み込むことができないか、または組み込みたくない場合があります。この場合、Springアプリケーション・コンテキストが必ずadvertise属性を持つwlevs:caching-system要素を含む、個別のバンドルを作成する必要があります。

<wlevs:caching-system id ="caching-system-id"
class="third-party-implementation-class"
advertise="true"/>

または、実装のバンドルを参照元のバンドルから切り離す必要がある場合や、Javaプロセスを通じて複数のキャッシング・システムがサポートされるキャッシング実装を接続している場合は、プロバイダとしてファクトリを指定できます。

<wlevs:caching-system id ="caching-system-id" provider="caching-provider"/>
<factory id="factory-id" provider-name="caching-provider">
<class>the.factory.class.name</class>
</factory>

ファクトリ・クラス(この例ではthe.factory.class.name)は、com.bea.wlevs.cache.spi.CachingSystemFactoryインタフェースを実装する必要があります。このインタフェースはcreateという単一のメソッドを持ち、このメソッドはcom.bea.wlevs.cache.spi.CachingSystemインスタンスを戻します。

アプリケーション・バンドルが実装の使用を開始できるよう、アプリケーション・バンドルと共にこのバンドルをデプロイする必要があります。

3. EPNアセンブリ・ファイルでキャッシュ・システムに1つ以上のキャッシュを宣言します。
アプリケーションのキャッシュ・システムを宣言した後、wlevs:cache要素を使用して1つ以上のキャッシュを構成します。

<wlevs:caching-system id ="caching-system-id" provider="caching-provider"/>
...
<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

name属性はオプションです。キャッシュ・システムでキャッシュ名がそのIDと異なる場合のみ指定します。wlevs:caching-systemの子要素は、キャッシュを含む宣言済のキャッシュ・システムを参照します。この子要素はキャッシング・システムがあいまいな場合にのみ指定する必要があります。複数のキャッシング・システムが(暗黙的または明示的に)宣言されている場合や、キャッシング・システムが異なるアプリケーションまたはバンドルに含まれている場合などです。

advertise属性を使用して、キャッシュ・システムおよびキャッシュをOSGIサービスとしてエクスポートできます。

<wlevs:caching-system id="caching-system-id" advertise="true"/>
...
<wlevs:cache id="cache-id" name="alternative-cache-name" advertise="true" >
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

キャッシュが通知される場合、個別のバンドル内のアプリケーションのEPN内のコンポーネントはキャッシュを参照できます。次の例では、1つのバンドル内のプロセッサが、個別のバンドル(cacheproviderと呼ばれます)内に配置されたcache-idというIDを持つキャッシュをキャッシュ・ソースとして使用できる仕組みを示しています。

<wlevs:processor id="myProcessor2">
<wlevs:cache-source ref="cacheprovider:cache-id"/>
</wlevs:processor>

キャッシュ・システムは、特定の名前に関連付けられたキャッシュの作成およびキャッシュへの参照の戻しに関する処理を行います。その結果となるキャッシュBeanは、java.util.Mapインタフェースを実装します。

4. サードパーティのキャッシュ構成ファイルまたはアプリケーションのファイルを更新することによって、サードパーティのキャッシュ・システムおよびそのキャッシュを構成します。
サードパーティのキャッシュのドキュメントを参照してください。

5. オプションで、1つ以上の追加cache要素の子要素を持つ適切な構成ファイルを更新することによって、デフォルトのサードパーティのキャッシュ構成をオーバーライドします。

- イベント・シンクをイベント処理ネットワーク内で別のコンポーネントへのリスナーとして構成することによって、キャッシュがイベント・シンクであると指定します。
サードパーティのキャッシュのドキュメントを参照してください。

- キャッシュが、イベント処理ネットワーク内の別のコンポーネントがリスニングする対象のイベント・ソースであると指定します。
サードパーティのキャッシュのドキュメントを参照してください。

- キャッシュ・ローダーまたはストアを構成します。
サードパーティのキャッシュのドキュメントを参照してください。

6. アプリケーションをアセンブルするとき、META-INF/MANIFEST.MFファイルが次のインポートを含むことを確認します。

com.bea.wlevs.cache.spi; version ="11.1.0.0"

MANIFEST.MFファイルがこのインポートを含まない場合、MANIFEST.MFファイルを更新し、アプリケーションをデプロイする前にこのインポートを追加します。

13.5 イベント処理ネットワークへのキャッシュの追加

アプリケーションで使用するキャッシュ・プロバイダを構成した後、アプリケーションのイベント処理ネットワーク(EPN)に追加できます。

EPNへのキャッシュの追加および再利用の構成の詳細は、次の項を参照してください。

- 13.5.1項「EPNへのキャッシュ・システムおよびキャッシュの追加」

- 13.5.2項「アプリケーション間で再利用するためのキャッシュの構成」

キャッシュをEPNに追加する場合、次の項の説明に従って、他の機能を指定できます。

- 13.5.3項「イベント・リスナーとしてのキャッシュの構成」

- 13.5.4項「イベント・ソースとしてのキャッシュの構成」

- 13.5.5項「キャッシュおよび他のデータ・ソース間のデータの交換」

13.5.1 EPNへのキャッシュ・システムおよびキャッシュの追加

EPNアセンブリ・ファイルで宣言的にOracle Coherence実装を使用するキャッシュ・システムを宣言するには、id属性がアプリケーションのコンポーネント構成ファイルのキャッシュ・システムに指定した名前と一致する必要があるwlevs:caching-system要素を使用します。

アプリケーションのキャッシュ・システムを宣言した後、wlevs:cache要素を使用して1つ以上のキャッシュを構成します。要素のid必須属性は、構成ファイル内のキャッシュ名にマップします。

次の例では、EPNアセンブリ・ファイルで宣言されたキャッシュ・システムおよびキャッシュを示します。

<wlevs:caching-system id="caching-system-id" provider="coherence" advertise="false"/>
...
<wlevs:cache id="myCache" advertise="false">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

name属性はオプションです。キャッシュ・システムでキャッシュ名がそのIDと異なる場合のみ指定します。wlevs:caching-systemの子要素は、キャッシュを含む宣言済のキャッシュ・システムを参照します。この子要素はキャッシング・システムがあいまいな場合にのみ指定する必要があります。複数のキャッシング・システムが(暗黙的または明示的に)宣言されている場合や、キャッシング・システムが異なるアプリケーションまたはバンドルに含まれている場合などです。

13.5.2 アプリケーション間で再利用するためのキャッシュの構成

advertise属性を使用して、キャッシュ・システムおよびキャッシュをOSGIサービスとしてエクスポートできます。キャッシュが通知される場合、個別のバンドル内のアプリケーションのEPN内のコンポーネントはキャッシュを参照できます。

次の例では、advertise属性を示します。

<wlevs:caching-system id="caching-system-id" advertise="true"/>
...
<wlevs:cache id="cache-id" name="alternative-cache-name" advertise="true" >
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

次の例では、1つのバンドル内のプロセッサが、個別のバンドル(cacheproviderと呼ばれます)内に配置されたcache-idというIDを持つキャッシュをキャッシュ・ソースとして使用できる仕組みを示しています。

<wlevs:processor id="myProcessor2">
<wlevs:cache-source ref="cacheprovider:cache-id"/>
</wlevs:processor>

詳細は、13.2.2項「共有Oracle Coherenceキャッシュの構成」を参照してください。

13.5.3 イベント・リスナーとしてのキャッシュの構成

EPNのキャッシュを構成してネットワークを通過するイベントを受信できます。

たとえば、キャッシュがチャネルをリスニングすることを指定するには、次の例に示すようにキャッシュへの参照を持つwlevs:listener要素とともにチャネルを構成します。

<wlevs:caching-system id="caching-system-id"/>

<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

<wlevs:channel id="tradeStream">
<wlevs:listener ref="cache-id"/>
</wlevs:channel>

チャネルが新しいイベントをキャッシュに送信するとき、新しいイベントはキャッシュに挿入されます。チャネルでremove event(出力ウィンドウに存在する古いイベント)を送信する場合、そのイベントはキャッシュから削除されます。

13.5.3.1 キャッシュのインデックスに使用されるキーの指定

キャッシュをリスナーとして構成した場合は、イベントがキャッシュに挿入されます。この項では、このインスタンスでキャッシュの作成に使用されるキーを指定するために利用可能な各種オプションを説明します。

明示的にキーを指定しない場合、イベントがキャッシュに挿入されるときにイベント・オブジェクト自体はキーおよび値の両方として提供されます。この場合、イベント・クラスには、キー・プロパティ値を考慮するequalsおよびhashcodeメソッドの有効な実装が含まれる必要があります。

キーの明示的な指定方法については、次を参照してください。

- 13.5.3.1.1項「EPNアセンブリ・ファイルにおけるキー・プロパティの指定」

- 13.5.3.1.2項「キーを指定するためのメタデータ注釈の使用」

- 13.5.3.1.3項「複合キーの指定」

13.5.3.1.1 EPNアセンブリ・ファイルにおけるキー・プロパティの指定

第1オプションは、次の例で示されるように、key-properties属性を使用してEPNアセンブリ・ファイル内でキャッシュが宣言されるときにキー・プロパティのプロパティ名を指定することです。

<wlevs:cache id="myCache" key-properties="key-property-name">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

この場合、キャッシュに挿入されるすべてのイベントで実行時にこの名前のプロパティを保持することが要求され、それ以外の場合はOracle Event Processingで例外がスローされます。

たとえば、キャッシュに挿入されているイベント型は次のように見えると仮定します。ここで、keyプロパティに注意します(関連するJavaソースのみが示されます)。

public class MyEvent {
private String key;
public MyEvent() {
}
public MyEvent(String key) {
this.key = key;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}

EPNアセンブリ・ファイルの対応する宣言は、次のようになります。

<wlevs:cache id="myCache" key-properties="key">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

13.5.3.1.2 キーを指定するためのメタデータ注釈の使用

第2オプションは、イベント型を実装するJavaクラスにおけるイベント・プロパティに注釈を付けるためのメタデータ注釈com.bea.wlevs.ede.api.Keyを使用することです。この注釈には属性がありません。

メタデータ注釈を使用してキーを指定するには、次のステップを実行します。

1. com.bea.wlevs.ede.api.Keyパッケージをインポートします。
詳細は、5.7.5項「パッケージのインポート方法」を参照してください。

2. @Key注釈をメソッドに適用します。
次の例は、MyEventイベント型のkeyプロパティがキーであることを指定する方法を示します。関連コードのみを次に示します。

import com.bea.wlevs.ede.api.Key;
public class MyEvent {
private String key;
public MyEvent() {
}
public MyEvent(String key) {
this.key = key;
}
public String getKey() {
return key;
}
@Key
public void setKey(String key) {
this.key = key;
}
}

13.5.3.1.3 複合キーの指定

最後のオプションは、複数のプロパティがキーを形成する複合キーを指定するためのwlevs:cache要素のkey-class属性を使用することです。key-class属性値は、パブリック・フィールドがイベント・クラスのフィールドに一致するJavaBeanとなる必要があります。照合はフィールド名に従って実行されます。例:

<wlevs:cache id="myCache" key-class="key-class-name">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

13.5.4 イベント・ソースとしてのキャッシュの構成

キャッシュは、イベント処理ネットワーク内の別のコンポーネントがリスニングする対象のイベント・ソースとして構成可能です。リスニングするコンポーネントは、アダプタまたはBeanです。

キャッシュをリスニングするクラスは、次のようなイベントを受信する方法を提供するインタフェースを実装する必要があります。

- Coherenceキャッシュをリスニングするクラスは、com.tangosol.util.MapListenerインタフェースを実装する必要があります。

- Oracle Event Processingローカル・キャッシュをリスニングするクラスは、com.bea.cache.jcache.CacheListenerインタフェースを実装する必要があります。

<wlevs:caching-system id="caching-system-id"/>
...
<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
<wlevs:cache-listener ref="cache-listener-id" />
</wlevs:cache>
...
<bean id="cacheListenerId" class="wlevs.example.LocalListener"/>

例で、cacheListenerId Spring Beanは、キャッシュからのイベントをリスニングします。この場合、このコンポーネントを実装するクラスcom.bea.wlevs.example.MyCacheListenerは、Oracle Coherenceキャッシュをリスニングしています。com.tangosol.util.MapListenerを含む適切なOracle Coherence固有のJavaインタフェースを実装する必要があります。例13-4は、この実装を示します。

例13-4 Oracle CoherenceキャッシュのLocalListenerの実装

package com.bea.wlevs.example.provider.coherence;

import com.tangosol.util.MapEvent;
import com.tangosol.util.MapListener;

public class LocalListener implements MapListener {
public static int deleted = 0;
public static int inserted = 0;
public static int updated = 0;

public void entryDeleted(MapEvent event) {
deleted++;
}
public void entryInserted(MapEvent event) {
inserted++;
}
public void entryUpdated(MapEvent event) {
updated++;
}
}

13.5.5 キャッシュおよび他のデータ・ソース間のデータの交換

EPNのキャッシュとデータベースを含む他のデータ・ソースのデータを交換できます。たとえば、アプリケーションの起動時にデータを使用してキャッシュをロードしたり、キャッシュとデータベース間の読取り/書込み関係を作成できます。

バッキング・ストアが読取り専用である場合を含めてキャッシュがデータを読み取るだけの場合、キャッシュ・ローダーを使用する必要があります。キャッシュでデータを読み取るまたは書き込む場合、キャッシュ・ストアを使用します。どちらの場合も、関係の作成には、特定の構成およびデータ・ソースとの通信方法を認識するJavaクラスが含まれます。

詳細については、次のトピックを参照してください。

- 13.5.5.1項「読取り専用データ・ソースからのキャッシュ・データのロード」

- 13.5.5.2項「読取り/書込みデータ・ソースでのデータの交換」

13.5.5.1 読取り専用データ・ソースからのキャッシュ・データのロード

キャッシュ・ローダーを使用して、EPNのキャッシュに読取り専用データ・ソースからデータをロードできます。キャッシュ・ローダーはキャッシュにキャッシュ・オブジェクトをロードするJavaクラスです。適切なインタフェースを実装してキャッシュと通信するローダー・クラスを有効にするJavaクラスを書き込むことによって、キャッシュ・ローダーを作成します。wlevs:cache要素のwlevs:cache-loader子要素を使用してロード処理を行うBeanを指定することによって、キャッシュ・ローダーを構成します。

バッキング・ストアが読取り/書込みである場合は、かわりにキャッシュ・ストアを使用します(13.5.5.2項「読取り/書込みデータ・ソースでのデータの交換」を参照)。

キャッシュ・ローダーを作成する場合、次のようにインタフェースを実装します。

- キャッシュ・データをOracle Coherenceキャッシュにロードするには、com.tangosol.net.cache.CacheLoaderを含む適切なOracle Coherence固有のJavaインタフェースを実装するクラスを作成します。例13-6を参照してください。

- キャッシュ・データをOracle Event Processingローカル・キャッシュにロードするには、com.bea.cache.jcache.CacheLoaderインタフェースを実装するクラスを作成します。このインタフェースには、単一のオブジェクトのキャッシュへのロードをカスタマイズするためのloadメソッドが含まれます。Oracle Event Processingは、リクエストされたオブジェクトがキャッシュ内にないときにこのメソッドをコールします。このインタフェースには、キャッシュ全体のロードをカスタマイズするために実装するloadAllメソッドも含まれます。

例13-5では、localLoaderのBeanは、バッキング・ストアが読取り専用のときにイベントをOracle Coherenceキャッシュにロードします。

Coherenceキャッシュを使用していて構成ファイルでキャッシュ・ローダーを指定した場合、Coherenceキャッシュ構成ファイルで対応するクラス・ファクトリ・メソッド名も指定する必要があることに注意してください。キャッシュ・ローダーには、com.bea.wlevs.cache.coherence.configuration.SpringFactoryのgetLoaderメソッドを指定します。サンプル・コードは、13.2.1.1項「coherence-cache-config.xmlファイル」を参照してください。

例13-5 キャッシュ・ローダー用Oracle CoherenceキャッシュのEPNアセンブリ・ファイル

<wlevs:caching-system id="caching-system-id"/>
<wlevs:cache id="myCache" advertise="false">
<wlevs:caching-system ref="caching-system-id"/>
<wlevs:cache-loader ref="localLoader"/>
</wlevs:cache>
<bean id="localLoader"
class="com.bea.wlevs.example.provider.coherence.LocalLoader"/>

例13-6 Oracle CoherenceキャッシュのLocalLoaderの実装

package com.bea.wlevs.example.provider.coherence;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import com.bea.wlevs.example.provider.event.ProviderData;
import com.tangosol.net.cache.CacheLoader;

public class LocalLoader implements CacheLoader {
public static int loadCount = 0;
public static Set keys = new HashSet();

public LocalLoader() {
}
public Object load(Object key) {
loadCount++;
keys.add(key);
return new ProviderData((String) key);
}
public Map loadAll(Collection keys) {
Map result = new HashMap();

for (Object key : keys) {
result.put(key, load(key));
}
return result;
}
}

13.5.5.2 読取り/書込みデータ・ソースでのデータの交換

キャッシュ・ストアを使用すると、EPNのキャッシュで読取り/書込みデータ・ソースとデータを交換できます。キャッシュ・ストアはキャッシュとキャッシュ・オブジェクトを交換するJavaクラスです。適切なインタフェースを実装してデータ・ソースと通信するために有効にするJavaクラスを書き込むことによって、キャッシュ・ストアを作成します。次に、wlevs:cache要素のwlevs:cache-loader子要素を使用してデータ・ソースと通信するBeanを指定することによって、キャッシュ・ストアをEPNに追加します。

バッキング・ストアが読取り専用である場合は、かわりにキャッシュ・ローダーを使用します(13.5.5.1項「読取り専用データ・ソースからのキャッシュ・データのロード」を参照)。

キャッシュ・ストアを作成する場合、次のようにインタフェースを実装します。

- キャッシュ・データとOracle Coherenceキャッシュを交換するには、com.tangosol.net.cache.CacheStoreを含む適切なOracle Coherence固有のJavaインタフェースを実装するクラスを作成します。例13-8を参照してください。

- キャッシュ・データとOracle Event Processingローカル・キャッシュを交換するには、com.bea.cache.jcache.CacheStoreインタフェースを実装するクラスを作成します。このインタフェースには、受け渡されたキーを使用してバッキング・ストアにデータを保存するstoreメソッドが含まれます。Oracle Event Processingは、データをキャッシュに挿入するときにこのメソッドをコールします。このインタフェースは、write-behind構成要素を使用してキャッシュに非同期書込みを構成した場合に、バッキング・ストアへのデータの一括保存に使用するstoreAllメソッドも含みます。

例13-7では、localStoreのBeanは、バッキング・ストアが読取り/書込みのときにイベントをキャッシュにロードします。

Spring構成ファイルでキャッシュ・ストアを指定した場合、Coherenceキャッシュ構成ファイルで対応するクラス・ファクトリ・メソッド名も指定する必要があることに注意してください。キャッシュ・ストアには、com.bea.wlevs.cache.coherence.configuration.SpringFactoryのgetStoreメソッドを指定します。サンプル・コードは、13.2.1.1項「coherence-cache-config.xmlファイル」を参照してください。

例13-7 キャッシュ・ストア用Oracle CoherenceキャッシュのEPNアセンブリ・ファイル

<wlevs:caching-system id="caching-system-id"/>
<wlevs:cache id="myCache" advertise="false">
<wlevs:caching-system ref="caching-system-id"/>
<wlevs:cache-store ref="localStore"/>
</wlevs:cache>
<bean id="localStore"
class="com.bea.wlevs.example.provider.coherence.LocalStore"/>

例13-8 Oracle CoherenceキャッシュのLocalStoreの実装

package com.bea.wlevs.example.provider.coherence;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import com.bea.wlevs.example.provider.event.ProviderData;
import com.tangosol.net.cache.CacheStore;

public class LocalStore implements CacheStore {
public static int eraseCount = 0;
public static int storeCount = 0;
public static int loadCount = 0;

public void erase(Object key) {
eraseCount++;
}
public void eraseAll(Collection keys) {
for (Object key : keys) {
erase(key);
}
}
public void store(Object key, Object value) {
//
// Do the store operation here.
//
}
public void storeAll(Map entries) {
for (Map.Entry entry : (Set <Map.Entry>)entries.entrySet()) {
store(entry.getKey(), entry.getValue());
}
}
public Object load(Object key) {
loadCount++;
return new ProviderData((String) key);
}
public Map loadAll(Collection keys) {
Map result = new HashMap();
for (Object key : keys) {
result.put(key, load(key));
}
return result;
}
}

13.6 アプリケーション・コードからキャッシュへのアクセス

キャッシュを構成すると、Oracle Event Processingアプリケーションのいくつかのコンポーネントからキャッシュにアクセスできます。この項では、その実行方法について説明します。

詳細は、次の項を参照してください。

- 13.6.1項「Oracle CQL文からキャッシュへのアクセス」

- 13.6.2項「EPL文からキャッシュへのアクセス」

- 13.6.3項「アダプタからキャッシュへのアクセス」

- 13.6.4項「ビジネスPOJOからキャッシュへのアクセス」

- 13.6.5項「Oracle CQLユーザー定義関数からキャッシュへのアクセス」

- 13.6.6項「EPLユーザー定義関数からキャッシュへのアクセス」

- 13.6.7項「JMXの使用によるキャッシュへのアクセス」

13.6.1 Oracle CQL文からキャッシュへのアクセス

チャネルなどのイベント・ソースを参照するのとまったく同じ方法でOracle CQL文からキャッシュを参照できます。この機能によって、標準ストリーミング・データを個別ソースからのデータを使用して質を高めることができます。例13-9は、S1という標準チャネルからの取引イベントとstockCacheというキャッシュからのストック・シンボル・データを結合する、有効なOracle CQL問合せを示します。

例13-9 キャッシュに対して有効なOracle CQL問合せ

SELECT  S1.symbol, S1.lastPrice, stockCache.description
FROM    S1 [Now], stockCache
WHERE   S1.symbol = stockCache.symbol

Oracle CQL問合せにおいてキャッシュを使用するとき、次の制約を遵守する必要があります。

- キャッシュに問い合せる場合は、常に[Now]ウィンドウに対して結合する必要があります。
これによって、問合せはキャッシュのスナップショットに対して実行されることが保証されます。他のウィンドウ・タイプに対して結合する場合、ウィンドウの有効期限が切れる前にキャッシュが変更されると、問合せは正しくなりません。

次の例は、キャッシュに対してRangeウィンドウを結合する無効なOracle CQL問合せを示します。このウィンドウの有効期限が切れる前にキャッシュが変更される場合、問合せは正しくなりません。その結果、この問合せはOracle Event Processingサーバー・エラー「外部リレーションはs[now]と結合している必要があります」を表示します。

SELECT trade.symbol, trade.price, trade.numberOfShares, company.name
FROM TradeStream [Range 8 hours] as trade, CompanyCache as company
WHERE trade.symbol = company.id

Oracle CQL問合せでキャッシュからのデータを使用する場合、チャネルの場合と同様に、データが押し出されるのではなく、Oracle Event Processingがデータを抽出します。つまり、例13-9のケースを継続し、問合せはチャネルがtradeイベントを問合せに押し出すときのみ実行されます。キャッシュ内のストック・シンボル・データは問合せを実行せず、必要に応じて問合せによって抽出されるのみです。

- キャッシュ・キーに基づいて参照を行うには、必要なキー・プロパティを指定する必要があります。
スキーマ(id、group、value)を持つ(キャッシュ・キーはid)、2つのストリームSおよびCを検討してください。有効な問合せは次のとおりです。

select count(*) as n from S [now], C
where S.id = C.id

キャッシュ・キーの指定に関する命令は、次を参照してください。

- 13.5.3.1項「キャッシュのインデックスに使用されるキーの指定」

- 結合はキャッシュのキーを参照することでのみ実行される必要があります。

- ビューでキャッシュは使用できません。かわりに、結合を使用します。

- キャッシュ・データ・ソースを結合するOracle CQL文のFROM句では、1つのチャネル・ソースのみが発生できます。

- キャッシュがプロセッサ・ソースである場合は、図13-1に示すように、キャッシュをEPNのプロセッサに直接接続します。

- キャッシュがプロセッサ・シンクである場合は、図13-2に示すように、チャネルを使用してプロセッサをキャッシュに接続します。

13.6.1.1 Oracle CQL文からキャッシュへのアクセス方法

この項では、Oracle CQL問合せ文でキャッシュを参照する方法を説明します。

この手順では、キャッシュ・システムおよびキャッシュを構成済と仮定します。詳細は、次を参照してください:

- 13.3項「Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュの構成」

- 13.2項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」

- 13.4項「サードパーティのキャッシュ・システムおよびキャッシュの構成」

Oracle CQL文からキャッシュへのアクセス:

1. まだ構成済でない場合、キャッシュ・データに対応するイベント型を作成し、イベント・リポジトリに登録します。
9.3項「イベント・タイプの作成」を参照してください。

2. キャッシュ内のデータからキー・プロパティを指定します。
キャッシュ・キーの指定に関する命令は、次を参照してください。

- 13.5.3.1項「キャッシュのインデックスに使用されるキーの指定」

3. EPNアセンブリ・ファイルで、キャッシュの構成を更新してその値のイベント型を宣言します。wlevs:cache要素のvalue-type属性を使用します。例:

<wlevs:caching-system id="caching-system-id"/>
...
<wlevs:cache id="cache-id"
name="alternative-cache-name"
value-type="CompanyEvent">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

value-type属性は、キャッシュに含まれる値のタイプを指定します。これは、イベント型リポジトリで有効なタイプ名にする必要があります。

この属性は、Oracle CQL問合せでキャッシュが参照される場合に必要です。これは、問合せプロセッサはキャッシュ内のイベントのタイプを意識している必要があるからです。

4. EPNアセンブル・ファイルで、キャッシュを参照するOracle CQL問合せを実行するプロセッサの構成を更新します。

1. キャッシュがプロセッサ・ソースである場合は、図13-1に示すように、キャッシュをEPNのプロセッサに直接接続します。

図13-1 プロセッサ・ソースとしてキャッシュ

「図13-1 プロセッサ・ソースとしてキャッシュ」の説明

キャッシュを参照するwlevs:processor要素のwlevs:cache-source子要素を更新します。例:

<wlevs:channel id="S1"/>

<wlevs:processor id="cacheProcessor">
<wlevs:source ref="S1">
<wlevs:cache-source ref="cache-id">
</wlevs:processor>

この例では、プロセッサは従来どおりにS1チャネルから押し出されるデータを持ちます。ただし、プロセッサで実行するOracle CQL問合せは、cache-idキャッシュからデータを抽出することもできます。問合せプロセッサが、FROM句のイベント型をCompanyEventなどのキャッシュによって提供されるイベント型に一致するとき、プロセッサはキャッシュからそのイベント型のインスタンスを抽出します。

2. キャッシュがプロセッサ・シンクである場合は、図13-2に示すように、EPNのチャネルを使用してプロセッサをキャッシュに接続します(つまり、プロセッサとキャッシュ・シンクの間にチャネルが必要です)。

図13-2 プロセッサ・シンクとしてキャッシュ

「図13-2 プロセッサ・シンクとしてキャッシュ」の説明

この場合、アプリケーション・アセンブリ・ファイルは次のようになります。

<wlevs:channel id="channel1" event-type="StockTick">
<wlevs:listener ref="processor" />
</wlevs:channel>
<wlevs:processor id="processor">
<wlevs:listener ref="channel2" />
</wlevs:processor>
<wlevs:channel id="channel2" event-type="StockTick">
<wlevs:listener ref="cache-id" />
</wlevs:channel>

13.6.2 EPL文からキャッシュへのアクセス

チャネルを参照するのとまったく同じ方法でEvent Processing Language (EPL)文からキャッシュを参照できます。この機能によって、標準ストリーミング・データを個別ソースからのデータを使用して質を高めることができます。

注意:

EPL言語は非推奨です。新しい開発では、Oracle CQLを使用します。CQLからキャッシュへのアクセスの詳細は、13.6.1項「Oracle CQL文からキャッシュへのアクセス」を参照してください。

たとえば、次のEPL問合せは標準チャネルからの取引データをキャッシュからの会社データに結合します。

INSERT INTO EnrichedTradeEvent
SELECT trade.symbol, trade.price, trade.numberOfShares, company.name
FROM TradeEvent trade RETAIN 8 hours, Company company
WHERE trade.symbol = company.id

この例では、TradeEventおよびCompanyはリポジトリに登録されるイベント型ですが、TradeEventsがイベントの標準ストリームから抽出するように構成されており、Companyはイベント処理ネットワーク内のキャッシュにマップします。この構成はEPL問合せの外で発生し、データのソースが問合せ自体においては透明であることを意味します。

EPL問合せでキャッシュからのデータを使用する場合、チャネルの場合と同様に、データが押し出されるのではなく、Oracle Event Processingがデータを抽出します。つまり、前述の例を継続し、問合せはチャネルが取引イベントを問合せに押し出すときのみ実行されます。キャッシュ内の会社データは問合せを実行せず、必要に応じて問合せによって抽出されるのみです。

EPL問合せでキャッシュを使用する場合は、以下の制限に従う必要があります。

- キャッシュ内のデータのキー・プロパティを指定する必要があります。
キャッシュ・キーの指定に関する命令は、次を参照してください。

- 13.5.3.1項「キャッシュのインデックスに使用されるキーの指定」

- 結合はキャッシュのキーを参照することでのみ実行される必要があります。

- RETAIN句をキャッシュから抽出したデータに指定することはできません。キャッシュからデータを取得するイベント型がRETAIN句に含まれる場合、Oracle Event Processingはそれを無視します。

- 相関サブ問合せではキャッシュを使用できません。かわりに、結合を使用します。

- キャッシュ・データ・ソースを結合するEPL文のFROM句では、1つのチャネル・ソースのみが発生できます。1つ以上のキャッシュ・ソースおよびパラメータ化したSQL問合せの使用がサポートされています。

13.6.2.1 EPL文からキャッシュへのアクセス方法

この項では、EPL問合せ文でキャッシュを参照する方法を説明します。

この手順では、キャッシュ・システムおよびキャッシュを構成済と仮定します。詳細は、次を参照してください:

- 13.3項「Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュの構成」

- 13.2項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」

- 13.4項「サードパーティのキャッシュ・システムおよびキャッシュの構成」

EPL文からキャッシュへのアクセス:

1. まだ構成済でない場合、前述の例におけるCompanyなどのキャッシュ・データに対応するイベント・タイプを作成し、イベント・リポジトリに登録します。9.3項「イベント・タイプの作成」を参照してください。

2. キャッシュ内のデータからキー・プロパティを指定します。これを行う方法は各種あります。次を参照してください。

- 13.5.3.1項「キャッシュのインデックスに使用されるキーの指定」

3. EPNアセンブリ・ファイルで、EPNアセンブリ・ファイル内のキャッシュの構成を更新してその値のイベント型を宣言します。wlevs:cache要素のvalue-type属性を使用します。例:

<wlevs:caching-system id="caching-system-id"/>
...
<wlevs:cache id="cache-id"
name="alternative-cache-name"
value-type="Company">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

value-type属性は、キャッシュに含まれる値のタイプを指定します。これは、イベント型リポジトリで有効なタイプ名にする必要があります。

この属性は、キャッシュがEPL問合せで参照されている場合にのみ必須です。これは、問合せプロセッサはキャッシュ内のイベントのタイプを意識している必要があるからです。

4. EPNアセンブリ・ファイルで、キャッシュを参照するEPL問合せを実行するプロセッサの構成を更新して、キャッシュを参照するwlevs:cache-source子要素を追加します。例:

<wlevs:channel id="stream-id"/>
<wlevs:processor id="processor-id">
<wlevs:cache-source ref="cache-id">
<wlevs:source ref="stream-id">
</wlevs:processor>

この例では、プロセッサは従来とおりにstream-idから押し出されるデータを持ちます。ただし、プロセッサで実行するEPL問合せは、cache-idキャッシュからデータを抽出することもできます。問合せプロセッサが、FROM句のイベント型をCompanyなどのキャッシュによって提供されるイベント型に一致するとき、プロセッサはキャッシュからそのイベント型のインスタンスを抽出します。

13.6.3 アダプタからキャッシュへのアクセス

アダプタも、他のBeanを参照するための標準Springメカニズムを使用してキャッシュに組み込むことができます。キャッシュBeanは、java.util.Mapインタフェースを実装します。このインタフェースは、組み込まれたキャッシュにアクセスするためにアダプタが使用します。

まず、EPNアセンブリ・ファイル内のアダプタの構成は、次の例で示すように、wlevs:instance-property子要素を使用して更新する必要があります。

<wlevs:caching-system id="caching-system-id"/>
...
<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>
...
<wlevs:adapter id="myAdapter" provider="myProvider">
<wlevs:instance-property name="map" ref="cache-id"/>
</wlevs:adapter>

この例では、wlevs:instance-propertyのref属性はwlevs:cache要素のid値を参照します。Oracle Event Processingは、自動的にアダプタにキャッシュ(java.util.Mapとして実装)を組み込みます。

アダプタのJavaソースでは、アダプタによるキャッシュ処理の機能を実装するコードを持つsetMap (Map)メソッドを追加します。

package com.bea.wlevs.example;
…
import java.util.Map;
public class MyAdapter implements Runnable, Adapter, EventSource, SuspendableBean  {
...
public void setMap (Map map) {...}
}

13.6.4 ビジネスPOJOからキャッシュへのアクセス

EPNアセンブリ・ファイルで標準のSpring Beanとして構成されたビジネスPOJOでは、他のBeanを参照するための標準のSpringメカニズムを使用して、キャッシュを挿入することができます。この方法によって、POJOではキャッシュを表示および操作できます。キャッシュBeanでは、ビジネスPOJOが挿入されたキャッシュにアクセスするために使用するjava.util.Mapインタフェースが実装されます。キャッシュBeanではjava.util.Mapのベンダー固有のサブインタフェースを実装することもできますが、移植性のためにMapを実装することをお薦めします。

まず、FXサンプルのOutput Beanに基づいた以下の例のように、EPNアセンブリ・ファイルのビジネスPOJOの構成をproperty子要素を使用して更新する必要があります(2.5項「HelloWorldのサンプル」を参照)。

<wlevs:caching-system id="caching-system-id"/>
...
<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>
...
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean">
<property name="map" ref="cache-id"/>
</bean>

この例では、property要素のref属性はwlevs:cache要素のid値を参照します。Oracle Event Processingは、自動的にビジネスPOJO Beanにキャッシュ(java.util.Mapとして実装)を組み込みます。

ビジネスPOJO BeanのJavaソースでは、POJOによるキャッシュ処理の機能を実装するコードを持つsetMap (Map)メソッドを追加します。

package com.bea.wlevs.example.helloworld;
…
import java.util.Map;
public class HelloWorldBean implements EventSink {
...
public void setMap (Map map) {...}
}

13.6.5 Oracle CQLユーザー定義関数からキャッシュへのアクセス

標準イベント・ストリームに加えて、Oracle CQLルールはユーザー定義関数のメンバー・メソッドも起動できます。

これらのユーザー定義関数は標準Javaクラスとして実装され、次の例で示すように、Oracle CQLプロセッサのコンポーネント構成ファイル内で宣言されます。

<bean id="orderFunction" class="orderFunction-impl-class"/>

関連するOracle CQLルールが実行されるプロセッサは、ref属性を持つSpring Beanを参照し、wlevs:function子要素を使用してユーザー定義関数に組み込まれる必要があります。

<wlevs:processor id= "tradeProcessor">
<wlevs:function ref="orderFunction"/>
</wlevs:processor>

また、wlevs:function要素でBeanクラスを指定できます。

<wlevs:processor id="testProcessor">
<wlevs:listener ref="providerCache"/>
<wlevs:listener ref="outputCache"/>
<wlevs:cache-source ref="testCache"/>
<wlevs:function function-name="mymod" exec-method=”execute” />
<bean class="com.bea.wlevs.example.function.MyMod"/>
</wlevs:function>
</wlevs:processor>

次のOracle CQLルールは、tradeProcessorプロセッサに構成されると仮定され、orderFunctionユーザー定義関数のexistsOrderメソッドを起動する方法を示します。

INSERT INTO InstitutionalOrder
SELECT er.orderKey AS key, er.symbol AS symbol, er.shares as cumulativeShares
FROM ExecutionRequest er [Range 8 hours]
WHERE NOT orderFunction.existsOrder(er.orderKey)

別のBeanを参照する標準Springメカニズムを使用してキャッシュを持つ関数を組み込むことによって、キャッシュにアクセスするためのユーザー定義関数を構成することもできます。キャッシュBeanは、java.util.Mapインタフェースを実装します。このインタフェースは、組み込まれたキャッシュにアクセスするためにユーザー定義関数が使用します。

まず、EPNアセンブリ・ファイル内のユーザー定義関数の構成は、次の例で示すように、wlevs:property子要素を使用して更新する必要があります。

<wlevs:caching-system id="caching-system-id"/>
...
<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>
...
<bean id="orderFunction" class="orderFunction-impl-class">
<wlevs:property name="cache" ref="cache-id"/>
</bean>

この例では、wlevs:property要素のref属性はwlevs:cache要素のid値を参照します。Oracle Event Processingは、自動的にユーザー定義関数にキャッシュ(java.util.Mapとして実装)を組み込みます。

ユーザー定義関数のJavaソースでは、関数によるキャッシュ処理の機能を実装するコードを持つsetMap (Map)メソッドを追加します。

package com.bea.wlevs.example;
…
import java.util.Map;
public class OrderFunction {
...
public void setMap (Map map) {...}
}

ユーザー定義関数の詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』の関数: ユーザー定義に関する項を参照してください。

13.6.6 EPLユーザー定義関数からキャッシュへのアクセス

標準のイベント・ストリームのほか、EPLルールでもユーザー定義関数のメンバー・メソッドを呼び出すことができます。

これらのユーザー定義関数は、標準のJavaクラスとして実装され、次の例のようにEPNアセンブリ・ファイルで標準のSpring Beanタグを使用して宣言されています。

<bean id="orderFunction" class="orderFunction-impl-class"/>

関連するEPLルールが実行されるプロセッサは、ref属性を持つSpringを参照し、wlevs:function子要素を使用してユーザー定義関数に組み込まれる必要があります。

<wlevs:processor id= "tradeProcessor">
<wlevs:function ref="orderFunction"/>
</wlevs:processor>

次のEPLルールは、tradeProcessorプロセッサに構成されると仮定され、orderFunctionユーザー定義関数のexistsOrderメソッドを起動する方法を示します。

INSERT INTO InstitutionalOrder
SELECT er.orderKey AS key, er.symbol AS symbol, er.shares as cumulativeShares
FROM ExecutionRequest er RETAIN 8 HOURS WITH UNIQUE KEY
WHERE NOT orderFunction.existsOrder(er.orderKey)

別のBeanを参照する標準Springメカニズムを使用してキャッシュを持つ関数を組み込むことによって、キャッシュにアクセスするためのユーザー定義関数を構成することもできます。キャッシュBeanは、java.util.Mapインタフェースを実装します。このインタフェースは、組み込まれたキャッシュにアクセスするためにユーザー定義関数が使用します。

まず、EPNアセンブリ・ファイル内のユーザー定義関数の構成は、次の例で示すように、wlevs:property子要素を使用して更新する必要があります。

<wlevs:caching-system id="caching-system-id"/>
...
<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>
...
<bean id="orderFunction" class="orderFunction-impl-class">
<wlevs:property name="cache" ref="cache-id"/>
</bean>

この例では、wlevs:property要素のref属性はwlevs:cache要素のid値を参照します。Oracle Event Processingは、自動的にユーザー定義関数にキャッシュ(java.util.Mapとして実装)を組み込みます。

ユーザー定義関数のJavaソースでは、関数によるキャッシュ処理の機能を実装するコードを持つsetMap (Map)メソッドを追加します。

package com.bea.wlevs.example;
…
import java.util.Map;
public class OrderFunction {
...
public void setMap (Map map) {...}
}

ユーザー定義関数の詳細は、『Oracle Fusion Middleware Oracle Event Processing EPL言語リファレンス』のユーザー定義関数に関する項を参照してください。

13.6.7 JMXの使用によるキャッシュへのアクセス

実行時、Oracle Event Processingがキャッシュ・システムと定義するキャッシュにデプロイするMBeansおよびJMXを使用して、キャッシュにプログラムからアクセスできます。

この項では次について説明します:

- 13.6.7.1項「Oracle Event Processing Visualizerを使用したJMXによるキャッシュへのアクセス方法」

- 13.6.7.2項「Javaを使用したJMXによるキャッシュへのアクセス方法」

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event ProcessingのJMXの構成に関する項を参照してください。

13.6.7.1 Oracle Event Processing Visualizerを使用したJMXによるキャッシュへのアクセス方法

JMXを使用してキャッシュ・システムまたはキャッシュにアクセスする最も単純かつエラーの少ない方法は、Oracle Event Processing Visualizerを使用することです。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のサーバーおよびドメインのタスクに関する項を参照してください。

13.6.7.2 Javaを使用したJMXによるキャッシュへのアクセス方法

JMXを使用してキャッシュ・システムまたはキャッシュにアクセスする最も単純かつエラーの少ない方法は、Oracle Event Processing Visualizerを使用することです(13.6.7.1項「Oracle Event Processing Visualizerを使用したJMXによるキャッシュへのアクセス方法」を参照)。あるいは、書き込まれるJavaコードを使用したJMXによるキャッシュ・システムまたはキャッシュにアクセスできます。

Oracle Event Processingは、アプリケーションがステージとして使用する各キャッシュのStageMBeanを作成します。このMBeanのTypeはStageです。

Javaを使用したJMXでキャッシュにアクセスするには:

1. Oracle Event Processingサーバーが提供するJMXサービスに接続します。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event ProcessingのJMXの構成に関する項を参照してください。

2. 次のいずれかを使用してキャッシュStageMbeanのリストを取得します。

- CachingSystemMBean.getCacheMBeans()

- ApplicationMBean.getStageMBeans()

3. キャッシュ・システム内でキャッシュを表す所定のStageMBeanのObjectNameを取得します。

ObjectName cacheName = ObjectName.getInstance (
'com.bea.wlevs:Name = newCache,Type=Stage,CachingSystem=newCachingSystem,Application=provider'
);

4. このObjectNameを持つStageMBeanのプロキシ・インスタンスを取得します。

StageMBean cache = (StageMBean) MBeanServerInvocationHandler.newProxyInstance(
server, cacheName, StageMBean.class, false
);

5. StageMBeanのメソッドを使用してキャッシュにアクセスします。

14 Webサービスの統合

この章では、Oracle Event Processingアプリケーションからサービスを起動してOracle Event ProcessingアプリケーションをWebサービスとして公開する方法など、Oracle Event Processingで使用するためにWebサービスを構成する方法について説明します。

この章の内容は次のとおりです。

- 14.1項「Oracle Event ProcessingとWebサービスについて」

- 14.2項「Oracle Event ProcessingアプリケーションからのWebサービスの起動方法」

- 14.3項「Oracle Event ProcessingアプリケーションをWebサービスとして公開する方法」

14.1 Oracle Event ProcessingとWebサービスについて

Webサービスを使用して、Oracle Event Processingアプリケーションと他のシステムを統合できます。

Oracle Event ProcessingはJAX-WS 2.0のGlassfish参照実装を使用して、JAX-WS API標準のバージョン2.0をサポートします。次のものが含まれます。

- JAX-WS 2.0 (Java API for XML Web Services、JSR 224で定義)

- WS-I Basic Profile 1.1

- WS-I Attachments Profile 1.0 (SOAP Messages with Attachments)

- WS-I Simple SOAP Binding Profile 1.0

- SOAP 1.1および1.2 (Simple Object Access Protocol)

- MTOM (Message Transmission Optimization Mechanism)

- WSDL 1.1 (Web Services Definition Language)

- JAXB 2.0 (Java API for XML Binding、個別のJAXBモジュールを介した参照)

- SAAJ 1.3 (SOAP with Attachments API for Java)

14.2 Oracle Event ProcessingアプリケーションからのWebサービスの起動方法

このプロシージャがWebサービスを起動するOracle Event Processingアプリケーションの作成方法を説明します。このシナリオでは、Oracle Event ProcessingアプリケーションはWebサービス・クライアントです。

Oracle Event ProcessingアプリケーションからWebサービスを起動するには:

1. WebサービスのためにWSDLを作成または取得します。
この例ではEchoService.WSDLというWSDLの使用を想定します。

2. Webサービスの起動に使用するコンパイル済の.classファイルを生成します(実際のコマンドは1行になります)。

java -cp OCEP_HOME_DIR/modules/com.bea.core.ws.glassfish.jaxws.tools_9.0.0.0.jar
com.sun.tools.ws.WsImport EchoService.WSDL

ORACLE_CEP_HOMEは、Oracle Event Processingがインストールされているディレクトリ(/oracle_homeなど)です。

3. Oracle Event ProcessingアプリケーションのJARファイル内の生成された.classファイルをアーカイブします。
詳細は、5.7項「Oracle Event Processingプロジェクトにおけるライブラリと他の非クラス・ファイルの管理」を参照してください。

4. Export-Packageヘッダーを使用して、MANIFEST.MFファイルのクライアントコード用のWebサービスJavaパッケージをエクスポートします。

Export-Package: com.oracle.ocep.sample.echoService;

詳細は、5.7.4項「パッケージのエクスポート方法」を参照してください。

5. Import-Packageヘッダーを使用して、MANIFEST.MFファイルのOracle Event Processingアプリケーションに次のパッケージをインポートします。

Import-Package: com.ctc.wstx.stax,
com.sun.xml.bind.v2,
com.sun.xml.messaging.saaj.soap,
com.sun.xml.messaging.saaj.soap.ver1_1,
com.sun.xml.ws,
javax.jws,
javax.xml.bind,
javax.xml.bind.annotation,
javax.xml.namespace,
javax.xml.soap,
javax.xml.transform,
javax.xml.transform.stream,
javax.xml.ws,
javax.xml.ws.spi,
org.xml.sax,
weblogic.xml.stax;

詳細は、5.7項「Oracle Event Processingプロジェクトにおけるライブラリと他の非クラス・ファイルの管理」を参照してください。

6. 他のJavaアップリケーションと同様に、クライアントコードを使用して、Webサービスを起動します。

EchoService service = new EchoService();
EchoPort port = service.getEchoServicePort();
String echo = port.echo("foo");

14.3 Oracle Event ProcessingアプリケーションをWebサービスとして公開する方法

このプロシージャは、Oracle Event ProcessingアプリケーションをWebサービスとして公開する方法を説明します。このシナリオでは、Oracle Event ProcessingアプリケーションはWebサービス・プロバイダです。

Oracle Event ProcessingアプリケーションをWebサービスとして公開するには:

1. WebサービスのためにWSDLを作成または取得します。
この例ではEchoService.WSDLというWSDLの使用を想定します。

2. サービスを実装します。
java.jws注釈の@WebServiceおよび@WebMethodの使用を考慮してください。

3. 例14-1のように、アプリケーション・バンドルにbea-jaxws.xmlファイルを追加します。表14-1では、このファイル内の属性について説明します。

例14-1 bea-jaxws.xmlファイル

<endpoints>
<endpoint>
<name>EchoService</name>
<implementation-class>
com.bea.wlevs.test.echo.impl.EchoServiceImpl
</implementation-class>
<url-pattern>/echo</url-pattern>
<wsdl-location>
/META-INF/wsdl/echo.wsdl
</wsdl-location>
<service-name>
{http://wsdl.oracle.com/examples/cep/echo}EchoService
</service-name>
<port-name>
{http://wsdl.oracle.com/examples/cep/echo}EchoServicePort
</port-name>
</endpoint>
</endpoints>

表14-1 bea-jaxws.xmlファイルの属性

属性

説明

name

webサービスの名前

implementation-class

サービスを実行するクラス

url-pattern

WebサービスにアクセスするためのURLパターン

wsdl-location

バンドル内のwsdlへの相対パス

service-name

サービスのQName

port-name

ポートのQName

詳細は、5.7項「Oracle Event Processingプロジェクトにおけるライブラリと他の非クラス・ファイルの管理」を参照してください。

4. BEA-JAXWS-Descriptorヘッダーを使用して、MANIFEST.MFファイルにあるbea-jaxws.xmlファイルを参照します。

BEA-JAXWS-Descriptor: META-INF/bea-jaxws.xml;

詳細は、5.7項「Oracle Event Processingプロジェクトにおけるライブラリと他の非クラス・ファイルの管理」を参照してください。

5. Import-Packageヘッダーを使用して、MANIFEST.MFファイルのOracle Event Processingアプリケーションに次のパッケージをインポートします。

Import-Package: com.ctc.wstx.stax,
com.sun.xml.bind.v2,
com.sun.xml.messaging.saaj.soap,
com.sun.xml.ws,
javax.jws,
javax.xml.bind,
javax.xml.bind.annotation,
javax.xml.namespace,
javax.xml.soap,
javax.xml.transform,
javax.xml.transform.stream,
javax.xml.ws,
javax.xml.ws.spi,
org.xml.sax,
weblogic.xml.stax;

詳細は、5.7項「Oracle Event Processingプロジェクトにおけるライブラリと他の非クラス・ファイルの管理」を参照してください。

6. Oracle Event Processingドメインを示すOracle Event ProcessingサーバーのDOMAIN_DIR/config/config.xmlファイルにglassfish-ws要素を追加します。DOMAIN_DIRはドメイン・ディレクトリを示します。

<glassfish-ws>
<name>JAXWS</name>
<http-service-name>JettyServer</http-service-name>
</glassfish-ws>

15 カスタム・アダプタを使用した外部コンポーネントの統合

この章では、アダプタからログイン資格証明を渡す方法を含むアプリケーションと外部コンポーネント間のイベント・データを送受信するための独自のOracle Event Processingアダプタの実装および構成方法について説明します。

イベント・データをOracle Event Processingに付属のアダプタでサポートされない外部コンポーネントと交換するアダプタを開発できます。付属のアダプタの詳細は、第11章「Java Message Serviceの統合」、第12章「HTTPパブリッシュ・サブスクライブ・サーバーの統合」および第21章「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト」を参照してください。

この章の内容は次のとおりです。

- 15.1項「カスタム・アダプタの概要」

- 15.2項「カスタム・アダプタの実装」

- 15.3項「スレッドおよび作業管理のサポートの実装」

- 15.4項「アダプタからデータ・フィード・プロバイダへのログイン資格証明の受け渡し」

- 15.5項「カスタム・アダプタの構成」

- 15.6項「カスタム・アダプタ・ファクトリの作成」

15.1 カスタム・アダプタの概要

イベント・データをOracle Event Processingに付属のアダプタでサポートされない外部コンポーネントと交換するカスタム・アダプタを開発できます。

着信データの形式およびアダプタ・コードで変換に使用される技術に応じて、様々なタイプのアダプタを作成できます。最も一般的なタイプのアダプタは、以下のとおりです。

- Reuters、Wombat、またはBloombergなどのデータ・ベンダーAPIを使用します。

- TIBCO Rendezvousなどのメッセージング・システムを使用します。

- 顧客独自のデータ・プロトコルへのソケット接続を使用します。

作成するアダプタは、データを受信するEPNの先頭か、または他の場所でイベント・データを送信するEPNの最後に配置されます。

カスタム・アダプタを使用して、次を実行できます。

- 外部コンポーネントからrawイベント・データを受信し、アプリケーションでイベントを処理するために使用できるイベント・タイプ・インスタンスにデータを変換します。必要に応じて、実装によって外部コンポーネントで自身を認証できます。
アダプタの主な役割の1つには、マーケット・データ・フィードなどの着信データをOracle Event Processingイベントに変換する作業があります。これらのイベントはその後、EPNの他のコンポーネントに渡されます。

- イベント処理ネットワーク内からイベント・タイプ・インスタンスを受信し、データを外部コンポーネントで使用できる形式に変換します。アプリケーションの出口ポイントとして、アダプタはEPNの別のステージからイベントを受信し、外部アプリケーションで読取り可能な形式にイベントのデータを変換し、それらのデータを送信します。

Javaでアダプタ・クラスを作成して、アダプタを実装します。アダプタ・クラスは、イベントを作成、送信または受信するOracle Event Processingインタフェースを実装します。詳細は、15.2項「カスタム・アダプタの実装」を参照してください。

EPNアセンブリ・ファイルで構成して、アダプタをEPNに追加します。コンポーネント構成ファイルでアダプタを構成して、実行時に編集可能な構成設定をさらに指定できます。詳細は、15.5項「カスタム・アダプタの構成」を参照してください。

次のリストのサンプルには、ソースおよびシンク・サンプル・コードが含まれます。

- 外国為替取引(FX)サンプルには、通貨データ・フィードからデータを読み込み、ネットワークの次のコンポーネントであるプロセッサに特定のイベント・タイプの形式でデータを渡す3つのアダプタが含まれています。詳細は、2.8項「外国為替取引(FX)サンプル」を参照してください。

- Oracle Spatialサンプルには、ファイルからデータを読み取り、データからイベント・タイプ・インスタンスを作成するアダプタが含まれます。詳細は、2.7項「Oracle Spatialサンプル」を参照してください。

15.2 カスタム・アダプタの実装

統合する外部コンポーネントと通信できるJavaコードを書き込み、カスタム・アダプタを実装します。アダプタ・クラス実装には、EPNのアダプタが配置される場所に応じて、イベント・タイプ・インスタンスを受信または送信するコードも含まれます。

実装では、Oracle Event Processing APIからいくつかのクラスを使用する可能性があります。それらのJavadocリファレンスは、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスに関する項を参照してください。サンプル・コードは、例15-1「入力アダプタ・クラスの上位レベル・ビュー」を参照してください。

カスタム・アダプタを作成する場合に通常実行する上位レベルの手順を次に示します。

1. アダプタで使用する外部コンポーネントと通信できるJavaクラスを実装します。コードの詳細は、外部コンポーネントがアダプタで処理するデータを送信または受信する方法に大きく依存します。

2. アダプタで一時停止および再開をサポートする場合(アンデプロイおよびデプロイする場合など)、これらのイベントを処理するインタフェースを実装できます。詳細は、15.3.2項「アダプタ・イベント処理の一時停止および再開」を参照してください。

3. アダプタのスレッドを微調整して、アプリケーションのスケーラビリティを向上できます。詳細は、15.3.1項「マルチスレッド・アダプタでのスケーラビリティの向上」を参照してください。

4. Javaコードで、イベント・タイプ・インスタンスの送信または受信をサポートするために必要なインタフェースを実装します。

- アダプタが入力アダプタのように着信rawイベント・データから作成したイベントなどのイベントを送信する場合、イベント・ソースとして実装できます。詳細は、16.2.2項「イベント・ソースの実装」を参照してください。

- アダプタがEPNの他のステージからイベントを受信する場合、イベント・シンクとして実装します。詳細は、16.2.1項「イベント・シンクの実装」を参照してください。

5. 入力アダプタのようにカスタム・アダプタがデータ・フィード・プロバイダで自身を認証する必要がある場合、ログイン資格証明をイベント・データを提供するコンポーネントに渡すJavaロジックを書き込みます。詳細は、15.4項「アダプタからデータ・フィード・プロバイダへのログイン資格証明の受け渡し」を参照してください。

6. オプションとして、ファクトリ・クラスを作成します。複数のアプリケーションがカスタム・アダプタのインスタンスを使用する場合のみ、この手順を実行する必要があります。詳細は、15.6項「カスタム・アダプタ・ファクトリの作成」を参照してください。
複数のアプリケーションで共有できるようにカスタム・アダプタを固有のJARファイルにバンドルする必要がある場合は、23.2.4.1項「カスタム・アダプタの固有のバンドルでのアセンブリ方法」を参照してください。

7. EPNアセンブリ・ファイルで構成して、アダプタをイベント処理ネットワークに追加します。詳細は、15.5項「カスタム・アダプタの構成」を参照してください。

15.2.1 例: 入力アダプタの実装

この項では、ファイルからrawイベント・データを取得し、データをイベントに変換し、イベントをEPNのダウンストリーム・ステージに送信する入力アダプタの上位レベルの説明について説明します。

ここのコードは、Oracle Spatialサンプル・アプリケーションから引用しています。完全な実装は、ソース・コードを必ず参照してください。詳細は、2.7項「Oracle Spatialサンプル」を参照してください。

例15-1「入力アダプタ・クラスの上位レベル・ビュー」は実世界のシナリオではありませんが、入力アダプタの基本フローを示しています。このクラスで実行される処理の概要を次に示します。

- 依存関係インジェクションを介して、このクラスは、次を含む処理の一部を実行するクラスのインスタンスにインジェクトされます。

- アダプタの構成で指定されたイベント・タイプのインスタンスを取得するために使用するEventTypeRepositoryインスタンス(setEventTypeRepositoryメソッドに組み込まれています)。

- 生成するイベントを送信するために使用するStreamSenderインスタンス(setEventSenderメソッドに組み込まれています)。

- setPathおよびsetEventTypeメソッドを介して、クラスはアダプタのEPNアセンブリ・ファイル構成で指定されたプロパティ値に組み込まれます。

- RunnableBeanインタフェースを実装する場合、このクラスは、アダプタの実際の処理(rawイベント・データの取得、イベント・タイプ・インスタンスへのデータの解析およびダウンストリームEPNステージへの新しいイベントの送信)を実行するrun()メソッド実装を提供します。

例15-1 入力アダプタ・クラスの上位レベル・ビュー

package com.oracle.cep.sample.spatial;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.bea.wlevs.ede.api.EventProperty;
import com.bea.wlevs.ede.api.EventRejectedException;
import com.bea.wlevs.ede.api.EventType;
import com.bea.wlevs.ede.api.EventTypeRepository;
import com.bea.wlevs.ede.api.RunnableBean;
import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSink;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.util.Service;
import java.lang.RuntimeException;

public class BusStopAdapter implements RunnableBean, StreamSource, StreamSink
{
static final Log s_logger =
LogFactory.getLog("BusStopAdapter");

private String m_filePath;
private String m_eventTypeName;
private EventType m_eventType;
private StreamSender m_eventSender;
private boolean m_stopped;

private int m_repeat = 1;
private EventTypeRepository m_etr = null;

public BusStopAdapter()
{
super();
}

/**
* Called by the server to pass in the path
* to the file with bus stop data.
*
* @param path The value specified for the path
* property in the adapter's configuration
* in the EPN assembly file.
*/
public void setPath(String path) throws RuntimeException
{
// Code to create a File instance from the path. This
// File object will be used to retrieve event data
// from the file.
}

/**
* Called by the server to pass in the name of the event
* type to which event data should be bound.
*
* @param path The value specified for the path
* property in the adapter's configuration
* in the EPN assembly file.
*/
public void setEventType(String typ)
{
m_eventTypeName = typ;
}

/**
* Called by the server to set an event type
* repository instance that knows about event
* types configured for this application.
*
* This repository instance will be used to retrieve an
* event type instance that will be populated
* with event data retrieved from the event data file.
*
* @param etr The event repository.
*/
@Service(filter = EventTypeRepository.SERVICE_FILTER)
public void setEventTypeRepository(EventTypeRepository etr)
{
m_etr = etr;
}

/**
* Executes to retrieve raw event data and
* create event type instances from it, then
* sends the events to the next stage in the
* EPN.
*
* This method, implemented from the RunnableBean
* interface, executes when this adapter instance
* is active.
*/
public void run()
{
if (m_etr == null)
{
throw new RuntimeException("EventTypeRepository is not set");
}

// Get the event type from the repository by using
// the event type name specified as a property of
// this adapter in the EPN assembly file.
m_eventType = m_etr.getEventType(m_eventTypeName);
if (m_eventType == null)
{
throw new RuntimeException("EventType(" +
m_eventType + ") is not found.");
}

BufferedReader reader = null;

System.out.println("Sending " + m_eventType +
" from " + m_filePath);
while ((m_repeat != 0) && (!m_stopped))
{
try
{
reader = new BufferedReader(new FileReader(m_filePath));
} catch (Exception e)
{
m_stopped = true;
break;
}
while (!isStopped())
{
try
{
// Create an object and assign to it
// an event type instance generated
// from event data retrieved by the
// reader.
Object ev = null;
ev = readLine(reader);
if (ev == null)
{
reader.close();
break;
}

// Send the newly created event type instance
// to a downstream stage that is
// listening to this adapter.
m_eventSender.sendInsertEvent(ev);

} catch (Exception e)
{
m_stopped = true;
break;
}
}
}
}

/**
* Called by the server to pass in a
* sender instance that will be used to
* send generated events to a downstream
* stage.
*
* @param sender A sender instance.
*/
public void setEventSender(StreamSender sender)
{
m_eventSender = sender;
}

/**
* Returns true if this adapter instance has
* been suspended, such as because an exception
* occurred.
*/
private synchronized boolean isStopped()
{
return m_stopped;
}

/**
* Reads data from reader, creating event type
* instances from that data. This method is
* called from the run() method.
*
* @param reader Raw event data from a file.
* @return An instance of the event type specified
* as a property of this adapter.
*/
protected Object readLine(BufferedReader reader) throws Exception
{
// Code to read raw event data and return an event type
// instance from it.
}

/**
* Called by the server to pass in an
* insert event received from an
* upstream stage in the EPN.
*/
@Override
public void onInsertEvent(Object event) throws EventRejectedException
{
// Code to begin executing the logic needed to
// convert incoming event data to event type instances.
}
}

15.3 スレッドおよび作業管理のサポートの実装

特定のスレッドおよび処理の特性を実装または構成してアダプタの処理を管理する方法を向上できます。

スケーラビリティを向上するには、たとえば、アダプタのマルチスレッドを構成できます。EPNが一時停止または再開する場合によく応答するロジックを実行するには、Oracle Event Processing APIで使用できるインタフェースを実装できます。

詳細は、次の項を参照してください。

- 15.3.1項「マルチスレッド・アダプタでのスケーラビリティの向上」

- 15.3.2項「アダプタ・イベント処理の一時停止および再開」

15.3.1 マルチスレッド・アダプタでのスケーラビリティの向上

1つ以上のスレッドを使用してデータ・ソースから読み取るためにアダプタを実装または構成できます。たとえば、イベント処理の負荷が高い場合、マルチスレッド・アダプタによってパフォーマンスが向上する可能性があります。

アダプタがシングルスレッドであると、イベント順序が保証されることに注意してください。イベント順序はマルチスレッド・アダプタで保証されません。

スレッドを管理する最も簡単な方法はワーク・マネージャを使用してアダプタを構成することです。ワーク・マネージャは、アプリケーションで処理の実行に優先順位を付けることができるサーバー機能です。アダプタだけが使用する専用のワーク・マネージャを指定するか、他のアダプタなどのいくつかのコンポーネントでワーク・マネージャを共有できます。

詳細は、次を参照してください:

- F.45項「work-manager」

- 25.1.2.1項「EventPartitioner」

com.bea.wlevs.ede.api.RunnableBeanインタフェースを実装して、シングルスレッド・アダプタも作成できます。run()メソッドを実装する場合、着信データを読み取るコードを配置し、Oracle Event Processingイベント・タイプ・インスタンスに変換して、イベントをEPNの次のステージに送信します。このインタフェースの詳細なリファレンスは、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスに関する項を参照してください。

15.3.2 アダプタ・イベント処理の一時停止および再開

アダプタでサーバーによる処理の一時停止または再開をサポートするよう、アダプタのJavaクラスを実装できます。たとえば、アダプタが含まれるイベント処理ネットワークが一時停止する場合、アダプタのイベントの処理を停止できます。EPNの処理を再開すると、アダプタの他のコードはイベントの処理を再開できます。これらの状況のサポートは、処理を実行するためにアダプタで取得するリソースの管理を意味する場合もあります。

一時停止または再開をサポートするには、アダプタはOracle Event Processing APIのインタフェースを実装します。これらには、表15-1「アダプタの一時停止および再開をサポートするインタフェース」に示されているインタフェースが含まれます。

表15-1 アダプタの一時停止および再開をサポートするインタフェース

インタフェース

説明

com.bea.wlevs.ede.api.SuspendableBean

これを実装して、EPNを一時停止する場合に実行するロジックを提供します。インタフェースの一時停止メソッド、リソースを一時停止したり、イベントの処理を停止する場合があります。

com.bea.wlevs.ede.api.ResumeableBean

これを実装して、EPNが処理を再開する場合に実行するロジックを提供します。beforeResumeメソッドを実装する場合、アダプタの処理を再開する前に実行する必要があるコードを提供できます。

これらのインタフェースの詳細なリファレンスは、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスに関する項を参照してください。

15.4 アダプタからデータ・フィード・プロバイダへのログイン資格証明の受け渡し

外部データ・フィードにアクセスする場合、アダプタはユーザー認証のためユーザー名とパスワードなどのログイン資格をデータ・フィードに渡す必要がある場合があります。

最も簡単で安全性の低い方法は、アダプタのJavaコード内に暗号化されていないログイン資格証明をハード・コード化することです。ただし、この方法ではパスワードを暗号化することができず、コードを再コンパイルせずに後からログイン資格証明を変更することもできません。

次の手順では、これらの問題が考慮された異なる方法について説明します。この手順では、データ・フィードにアクセスするユーザー名にjuliet、パスワードにsuperSecretを想定しています。

ログイン資格証明をEPNアセンブリ・ファイルで静的に構成するか、アダプタの構成を拡張して動的に構成するかを最初に指定する必要があります。EPNアセンブリ・ファイルで資格証明を静的に構成する方が簡単ですが、後から資格証明が変更された場合は、EPNアセンブリ・ファイルへの更新が反映されるようにアプリケーションを再起動する必要があります。アダプタの構成を拡張する方法では、アプリケーションを再起動せずに資格証明を動的に変更できますが、構成の拡張には、XSDファイルの作成や、JAXBオブジェクトへのコンパイルなどの追加の手順が必要になります。

この項では次について説明します:

- 15.4.1項「データ・フィード・プロバイダへの静的ログイン資格証明の受け渡し」

- 15.4.2項「データ・フィード・プロバイダへの動的ログイン資格証明の受け渡し」

- 15.4.3項「実行時のログイン資格証明へのアクセス方法」

詳細は、第26章「コンポーネント構成の拡張」を参照してください。

15.4.1 データ・フィード・プロバイダへの静的ログイン資格証明の受け渡し

この項では、EPNアセンブリ・ファイルで静的に構成したログイン資格証明を渡す方法について説明します。

データ・フィード・プロバイダへ静的ログイン資格証明を受け渡すには、次の手順を実行します。

1. コマンド・ウィンドウを開き、3.2項「開発環境の設定」の説明に従って、環境を設定します。

2. アプリケーションのEPNアセンブリ・ファイルがあるディレクトリに移動します。

3. EPNアセンブリXMLファイルを編集して、アダプタを宣言しているwlevs:adapter要素を更新します。
特に、ログイン資格証明のユーザー名とパスワードに対応する2つのインスタンス・プロパティを追加します。ここで、cleartextのパスワード値を指定します。後からこの値は暗号化されます。また、一時password要素を追加し、その値はcleartextパスワードにします。例:

<wlevs:adapter id="myAdapter" provider="myProvider">
<wlevs:instance-property name="user" value="juliet"/>
<wlevs:instance-property name="password" value="superSecret"/>
<password>superSecret</password>
</wlevs:adapter>

4. EPNアセンブリ・ファイルを保存します。

5. コマンド・プロンプトで、EPNアセンブリ・ファイルのpassword要素の値を暗号化するためにencryptMSAConfigコマンドを実行します。

prompt> ORACLE_CEP_HOME/ocep_11.1/bin/encryptMSAConfig . epn_assembly_file aesinternal.dat_file

このコマンドの内容は以下のとおりです。

- ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Event Processingのインストール先のメイン・ディレクトリです。

- 2番目の引数はEPNアセンブリ・ファイルが含まれているディレクトリです。この手順では実際にそのディレクトリに移動しているため、例では「.」と示されています。

- epn_assembly_fileパラメータはEPNアセンブリ・ファイルの名前です。

- 最後に、aesinternal.dat_fileパラメータは、ドメインに関連付けられている.aesinternal.datファイルの場所です。デフォルトでは、このファイルはDOMAIN_DIR/servernameディレクトリにあります。DOMAIN_DIRは、/oracle_cep/user_projects/domains/mydomainなどのドメイン・ディレクトリであり、servernameはサーバー・インスタンスです。

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のencryptMSAConfigコマンドライン・ユーティリティに関する項を参照してください。

コマンドを実行すると、EPNアセンブリ・ファイルのpassword要素の値が暗号化されます。

6. 構成されたログイン資格証明のプロパティにアクセスしてパスワードを復号化するよう、アダプタのJavaコードを更新します。
15.4.3項「実行時のログイン資格証明へのアクセス方法」を参照してください。

7. アプリケーションのMANIFEST.MFファイルを編集し、Import-Packageヘッダーにcom.bea.core.encryptionパッケージを追加します。23.2.2.1項「MANIFEST.MFファイルの作成」を参照してください。

8. アプリケーションを通常通り再アセンブルしてデプロイします。第23章「Oracle Event Processingアプリケーションのアセンブルおよびデプロイ」を参照してください。

15.4.2 データ・フィード・プロバイダへの動的ログイン資格証明の受け渡し

この項では、アダプタの構成を拡張して動的に構成したログイン資格証明を渡す方法について説明します。

データ・フィード・プロバイダへ動的ログイン資格証明を受け渡すには、次の手順を実行します。

1. String型の2つの新しい要素userおよびpasswordを追加してアダプタの構成を拡張します。
たとえば、HelloWorldのサンプルのアダプタを拡張した場合、XSDファイルは次のようになります。

<xs:complexType name="HelloWorldAdapterConfig">
<xs:complexContent>
<xs:extension base="wlevs:AdapterConfig">
<xs:sequence>
<xs:element name="message" type="xs:string"/>
<xs:element name="user" type="xs:string"/>
<xs:element name="password" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

詳細は、第26章「コンポーネント構成の拡張」を参照してください。

2. コマンド・ウィンドウを開き、3.2項「開発環境の設定」の説明に従って、環境を設定します。

3. アダプタのコンポーネント構成XMLファイルがあるディレクトリに移動します。

4. 構成拡張で定義した<user>および<password>要素を使用して必要なログイン資格証明を追加して、このコンポーネント構成XMLファイルを更新します。ここで、cleartextのパスワード値を指定します。後からこの値は暗号化されます。例:

<?xml version="1.0" encoding="UTF-8"?>
<myExample:config
xmlns:myExample="http://www.bea.com/xml/ns/wlevs/example/myExample">
<adapter>
<name>myAdapter</name>
<user>juliet</user>
<password>superSecret</password>
</adapter>
</myExample:config>

5. アダプタの構成ファイルを保存します。

6. アダプタ構成ファイルのpassword要素の値を暗号化するためにencryptMSAConfigコマンドを実行します。

prompt> ORACLE_CEP_HOME/ocep_11.1/bin/encryptMSAConfig . adapter_config_file aesinternal.dat_file

このコマンドの内容は以下のとおりです。

- ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Event Processingのインストール先のメイン・ディレクトリです。

- 2番目の引数はアダプタの構成ファイルが含まれているディレクトリです。この手順では実際にそのディレクトリに移動しているため、例では「.」と示されています。

- adapter_config_fileパラメータは、アダプタ構成ファイルの名前です。

- 最後に、aesinternal.dat_fileパラメータは、ドメインに関連付けられている.aesinternal.datファイルの場所です。デフォルトでは、このファイルはDOMAIN_DIR/servernameディレクトリにあります。DOMAIN_DIRは、/oracle_cep/user_projects/domains/mydomainなどのドメイン・ディレクトリであり、servernameはサーバー・インスタンスです。

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のencryptMSAConfigコマンドライン・ユーティリティに関する項を参照してください。

コマンドを実行すると、password要素の値が暗号化されます。

7. 構成されたログイン資格証明のプロパティにアクセスしてパスワードを復号化するよう、アダプタのJavaコードを更新します。
15.4.3項「実行時のログイン資格証明へのアクセス方法」を参照してください。

8. アプリケーションのMANIFEST.MFファイルを編集し、Import-Packageヘッダーにcom.bea.core.encryptionパッケージを追加します。23.2.2.1項「MANIFEST.MFファイルの作成」を参照してください。

9. アプリケーションを通常通り再アセンブルしてデプロイします。第23章「Oracle Event Processingアプリケーションのアセンブルおよびデプロイ」を参照してください。

15.4.3 実行時のログイン資格証明へのアクセス方法

この項では、拡張されたアダプタ構成から動的にユーザーとパスワードの値を取得し、com.bea.core.encryption.EncryptionService APIを使用して暗号化されたパスワードを復号化するようにカスタム・アダプタのJavaコードを更新する方法について説明します。

実行時にログイン資格証明プロパティにアクセスするには、次の手順を実行します。

1. 暗号化されたパスワードの復号化に必要な追加のAPIをインポートします。

import com.bea.core.encryption.EncryptionService;
import com.bea.core.encryption.EncryptionServiceException;
import com.bea.wlevs.util.Service;

2. @Service注釈を使用してEncryptionServiceへの参照を取得します。

private EncryptionService encryptionService;

@Service
public void setEncryptionService(EncryptionService encryptionService) {
this.encryptionService = encryptionService;
}

3. @Prepareコールバック・メソッドで、拡張されたアダプタ構成のuserおよびpasswordプロパティの値を通常どおり取得します(password値のコードのみ示しています)。

private String password;

public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;

@Prepare
public void checkConfiguration(HelloWorldAdapterConfig adapterConfig) {
if (adapterConfig.getMessage() == null
|| adapterConfig.getMessage().length() == 0) {
throw new RuntimeException("invalid message: " + message);
}
this.password= adapterConfig.getPassword();
}

拡張されたアダプタ構成へのアクセスに関する情報は、26.3項「カスタム・アダプタまたはイベントBeanの構成へのプログラムからのアクセス」を参照してください。

4. @Prepareコールバック・メソッドでEncryptionService.decryptStringAsCharArrayメソッドを使用して暗号化されたパスワードを複合化します。

@Prepare
public void checkConfiguration(HelloWorldAdapterConfig adapterConfig) {
if (adapterConfig.getMessage() == null
|| adapterConfig.getMessage().length() == 0) {
throw new RuntimeException("invalid message: " + message);
}
this.password = adapterConfig.getPassword();
try {
char[] decrypted =             encryptionService.decryptStringAsCharArray(password);
System.out.println("DECRYPTED PASSWORD is "+ new String(decrypted));
} catch (EncryptionServiceException e) {
throw new RuntimeException(e);
}
}

decryptStringAsCharArrayメソッドのシグネチャは次のとおりです。

char[] decryptStringAsCharArray(String encryptedString)
throws EncryptionServiceException

5. ベンダーAPIを使用してこれらの資格証明をデータ・フィード・プロバイダに渡します。

15.5 カスタム・アダプタの構成

カスタム・アダプタを作成する場合、EPNアセンブリ・ファイルで構成して、EPNに追加できます。特定の機能のランタイム構成変更をサポートするため、アダプタ構成をコンポーネント構成ファイルに追加することもできます。

詳細は、次の項を参照してください。

- 15.5.1項「EPNアセンブリ・ファイルのカスタム・アダプタの構成」

- 15.5.2項「コンポーネント構成ファイルのカスタム・アダプタの構成」

アプリケーションの他のコンポーネントの登録を含む、構成ファイルの完全な説明は、5.3項「EPNアセンブリ・ファイルの作成」を参照してください。

15.5.1 EPNアセンブリ・ファイルのカスタム・アダプタの構成

EPNアセンブリ・ファイルでは、wlevs:adapter要素を使用してアダプタをイベント・プロセッサ・ネットワークのコンポーネントとして宣言します。構成コードはファクトリから作成されるイベントBeanによって異なるので注意してください。詳細は、15.6項「カスタム・アダプタ・ファクトリの作成」を参照してください。

注意:

カスタム・アダプタを作成および構成する最も簡単な方法は、Oracle Event Processing IDE for Eclipseアダプタ・ウィザードを使用することです。詳細は、7.4.1.2項「アダプタ・ノードの作成方法」を参照してください。

wlevs:adapterのwlevs:instance-property子要素を使用して、アダプタの静的プロパティを設定することもできます。静的プロパティはアダプタのデプロイ後に動的に変更されないプロパティです。

次の例では、BusStopAdapterクラスはアダプタとして構成され、クラスのメソッドとして実装されるプロパティ(setPath、setEventTypeおよびsetBuffer)を設定します。

<wlevs:adapter id="BusStopAdapter"
class="com.oracle.cep.sample.spatial.BusStopAdapter" >
<wlevs:instance-property name="path" value="bus_stops.csv"/>
<wlevs:instance-property name="eventType" value="BusStop"/>
<wlevs:instance-property name="buffer" value="30.0"/>
</wlevs:adapter>

wlevs:listener要素を使用して、イベント・シンクであるアダプタを参照します。次の例では、BusPositionGen CSVアダプタは、イベントをBusStopAdapterに送信します。

<wlevs:adapter id="BusPositionGen" provider="csvgen">
<!-- Code omitted -->
<wlevs:listener ref="BusStopAdapter"/>
</wlevs:adapter>

15.5.2 コンポーネント構成ファイルのカスタム・アダプタの構成

コンポーネント構成ファイルのアダプタの構成を追加できます。ここで追加する構成は、実行時に更新するために使用できます。コンポーネント構成ファイルの構成の追加では、EPNアセンブリ・ファイルで構成してアダプタをEPNに追加済と仮定します(詳細は、15.5.1項「EPNアセンブリ・ファイルのカスタム・アダプタの構成」を参照)。

開発環境の必要に応じて、個別のコンポーネント構成XMLファイルも作成することもできます。たとえば、アプリケーションに複数のカスタム・イベントBeanが含まれている場合は、各カスタム・イベントBeanごとに個別のXMLファイルを作成するか、すべてのカスタム・イベントBeanの構成を含む単一のXMLファイルを作成するか、またはアプリケーションのすべてのコンポーネント(Bean、アダプタ、プロセッサ、およびストリーム)を含むファイルを作成できます。

次の例では、BusStopAdapterアダプタはイベントの記録のために構成されます。各アダプタ構成には、config要素の個別のadapter子要素が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application">
<adapter>
<name>BusStopAdapter</name>
<record-parameters>
<dataset-name>spatial_sample</dataset-name>
<event-type-list>
<event-type>BusPos</event-type>
<event-type>BusStop</event-type>
<event-type>BusPosEvent</event-type>
<event-type>BusStopArrivalEvent</event-type>
<event-type>BusStopPubEvent</event-type>
<event-type>BusStopPubEvent</event-type>
</event-type-list>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>
</event-bean>
</wlevs:config>

name子要素で各アダプタを一意に識別します。この名前は、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルのwlevs:adapter要素のid属性の値と一致している必要があります。これが、この構成が適用される対象の、EPNアセンブリ・ファイル内の特定のカスタム・アダプタ・コンポーネントをOracle Event Processingが認識する仕組みです。

独自の要素を使用してコンポーネント構成を拡張することもできます。詳細は、第26章「コンポーネント構成の拡張」を参照してください。

詳細は、次を参照してください:

- B.2項「コンポーネント構成スキーマ wlevs_application_config.xsd」

15.6 カスタム・アダプタ・ファクトリの作成

アダプタ・ファクトリを実装および構成して、複数のイベント処理ネットワークで単一アダプタ実装を使用できます。ファクトリ・クラスは、リクエストするアプリケーションのアダプタ・インスタンスを提供します。

ここで説明するAPIの詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスに関する項を参照してください。

アダプタ・ファクトリを作成するには、以下の手順を実行します。

1. アダプタ・クラスでは、アダプタがファクトリで返されるよう、com.bea.wlevs.ede.api.Adapterインタフェースを実装します。これはマーカー・インタフェースなので、メソッドは実装されません。

public class BusStopAdapter implements Adapter, StreamSource {
// Adapter implementation code.
}

2. アダプタ・ファクトリ・クラスを実装して、アダプタのインスタンスを作成して返します。
アダプタ・ファクトリ・クラスは、com.bea.wlevs.ede.api.AdapterFactoryインタフェースを実装する必要があります。createメソッドを実装する場合、アダプタのインスタンスを作成します。

import com.oracle.cep.sample.spatial.BusStopAdapter;
import com.bea.wlevs.ede.api.AdapterFactory;

public class BusStopAdapterFactory implements AdapterFactory {
public BusStopAdapterFactory() {}
public synchronized BusStopAdapter create()
throws IllegalArgumentException {

// Your code might have a particular way to create the instance.
return new BusStopAdapter();

}
}

3. EPNアセンブリ・ファイルでは、ファクトリ・クラスを構成します。
次の例に示すように、wlevs:factory要素を使用してEPNアセンブリ・ファイルにファクトリを登録します。

<wlevs:factory provider-name="busStopAdapterProvider"
class="com.oracle.cep.sample.spatial.BusStopAdapterFactory"/>

サービスのプロパティを指定する必要がある場合は、osgi:service>要素を使用して、EPNアセンブリ・ファイルにOSGIサービスとしてファクトリを登録する必要もあります。OSGIサービス・レジストリの範囲は、すべてのOracle Event Processingです。このため、指定のサーバーにデプロイされた複数のアプリケーションが同じアダプタ・ファクトリを使用する場合は、ファクトリをOSGIサービスとして登録するのが必ず一度きりになるようにします。

エントリを追加して、サービスをcom.bea.wlevs.ede.api.AdapterFactoryインタフェースの実装として登録します。key属性のtype、およびこのアダプタ・プロバイダを参照する名前を使用して、プロパティを指定します。最後に、ネストされた標準のSpring bean要素を追加して、Springアプリケーション・コンテキストで特定のアダプタ・クラスを登録します。

<osgi:service interface="com.bea.wlevs.ede.api.AdapterFactory">
<osgi:service-properties>
<entry key="type" value="busStopAdapterProvider"</entry>
</osgi:service-properties>
<bean class="com.oracle.cep.sample.spatial.BusStopAdapterFactory" />
</osgi:service>

4. アダプタのインスタンスを使用するアプリケーションでは、次の例に示すように、クラス名でアダプタを指定するのではなく、プロバイダとして構成されたファクトリを指定してアダプタを構成します。

<wlevs:adapter id="BusStopAdapter"
provider="busStopAdapterProvider">
// ...
</wlevs:adapter>

16 Javaでのイベントの処理

この章では、イベント処理ネットワーク(EPN)のイベントを送受信するイベント・シンクおよびイベント・ソースとして機能するJavaクラスに必要なOracle Event Processingインタフェースの実装方法について説明します。Oracle Event ProcessingイベントBeanまたはSpring BeanとしてJavaクラスを構成する方法についても説明します。

Javaの新しいロジックを書き込むか、または既存のJavaコードを組み込むかにかかわらず、Oracle Event Processingは、Javaコードをアプリケーションに追加するいくつかの方法を提供します。オプションには、コードの実行場所と実行方法および構成方法が含まれます。

この章の内容は次のとおりです。

- 16.1項「イベント処理ネットワークのJavaコードのロール」

- 16.2項「ソースおよびシンクでのイベントの処理」

- 16.3項「BeanとしてのJavaクラスの構成」

16.1 イベント処理ネットワークのJavaコードのロール

新しい機能を書き込むか、Oracle Event Processingアプリケーションに組み込むJavaの既存のロジックがあるかにかかわらず、コードの場所はそのロールによって変わります。

多くのOracle Event ProcessingアプリケーションでJavaコードは必要ないので注意してください。たとえば、アプリケーションのロジックは、Oracle CQLのみで取得される場合があります。

Javaコードのロールの次の説明を使用して、コードに最適な場所を検索します。

- イベント処理ネットワーク(EPN)を通過するイベントを処理するBeanとしてのJavaクラス
EPNを通過する場合にイベントを処理するJavaコードを書き込んで、イベントを受信、送信または送受信できます。たとえば、イベントの送受信をサポートするクラスを追加して、EPNで中間ロジックとして使用できます。そのため、受信するイベントからデータを受信し、特定のダウンストリーム・コンポーネントで使用するデータから新しい種類のイベントを作成できます。

イベントを送受信するJavaクラスの実装の詳細は、16.3項「BeanとしてのJavaクラスの構成」を参照してください。

- イベントを着信または発信する外部コンポーネントを統合するカスタム・アダプタ
Oracle Event Processingに付属しているアダプタでサポートされていない外部コンポーネントとやり取りするよう設計されたカスタム・アダプタのロジックとして、Javaクラスを実装できます。たとえば、付属しているJMSまたはHTTPパブリッシュ・サブスクライブ・アダプタでサポートされていないイベント・ソースからイベントを受信できるアダプタを実装できます。

カスタム・アダプタのJavaコードは、この章で説明されているイベント・ソースおよびイベント・シンク機能を実装します。16.2項「ソースおよびシンクでのイベントの処理」を参照してください。カスタム・アダプタの他の側面の詳細は、第15章「カスタム・アダプタを使用した外部コンポーネントの統合」を参照してください。

- Oracle CQLコードの機能を強化するJava関数
Oracle CQLコードからJavaメソッドを呼び出して、固有のロジックでOracle CQLを強化できます。たとえば、アプリケーションでイベント・データとして受信するデータなどの計算を実行するメソッドとともにJavaクラスを書き込んだ場合、select文の一部としてOracle CQLコード内のクラスのメソッドを呼び出す可能性があります。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のユーザー定義関数に関する項を参照してください。

- イベント・データを表すイベント・タイプとしてのJavaBeanクラス
JavaBeanクラスとしてタイプを実装して、イベント・タイプ -- アプリケーションを介してイベントを移動する手段 -- を作成できます。選択肢はありますが、これがベスト・プラクティス・アプローチです。

詳細は、9.3.1項「JavaBeanとしてのOracle Event Processingイベント・タイプの作成」を参照してください。

16.2 ソースおよびシンクでのイベントの処理

イベントを処理するよう設計されたJavaコードを書き込む場合、イベント・シンクまたはイベント・ソースのクラスを作成します。イベント処理ネットワークを通過する場合、イベント・シンクはイベントを受信できます。イベント・ソースはイベントを作成し、EPNのダウンストリーム・ステージに送信できます。たとえば、イベントを受信し、データに関する処理を実行し、次のステージに送信するクラスを作成できます。

イベント・シンクおよびソースは、Oracle Event Processing APIで提供される特定のインタフェースを実装します。イベント・シンクは、Oracle Event Processingサーバーがイベント・タイプ・インスタンスに渡すことができるメソッドを含むインタフェースを実装します。イベント・ソースは、イベントを送信するのに使用するオブジェクトを受信するメソッドを含むインタフェースを実装します。1つのクラスは、イベント処理ネットワーク(EPN)のロールに応じて、いずれかまたは両方の種類の機能を実装できます。

注意:

この項は、ストリームとリレーションおよびイベント処理ネットワークを移動するイベントを表す様々な方法を理解していることを前提とします。そうでない場合、必ず1.3項「イベント、ストリームおよびリレーションの概要」を参照してください。

イベント処理のJavaコードの一般的な場所は、アダプタおよびBeanです。アダプタは、外部コンポーネントと通信するEPNの一部です。外部イベント・データを受信してデータからイベントを作成するか、内部イベントを受信してデータをEPNの外側の別のコンポーネントに送信するよう設計されています。この章の説明に従ったイベント処理コードの書込みは、アダプタの作成の重要な一部です。アダプタの作成の詳細は、第15章「カスタム・アダプタを使用した外部コンポーネントの統合」を参照してください。

図java_logic.gifの説明

アダプタと同様に、Beanはイベントを処理できます。ただし、通常、イベントを内外に渡すようEPNの中央にBeanを追加します。たとえば、Javaコードで通過するイベントのデータに応じてアプリケーション・ロジックを実行するBeanを追加できます。

次の手順では、イベントを送受信するJavaクラスを作成する一般的な手順について説明します。

1. イベントを送受信するために必要なインタフェースを実装します。EPNコンポーネントとしてJavaロジックを開発するオプションは次のとおりです。

- EPNを通過する場合にイベントを受信できるクラスを作成するには、クラスをイベント・シンクにするインタフェースを実装します。これらのインタフェースには、1つのイベントを受信するStreamSinkまたはRelationSinkあるいはイベントのバッチを受信するBatchStreamSinkまたはBatchRelationSinkが含まれます。詳細は、16.2.1項「イベント・シンクの実装」を参照してください。

- EPNの他の部分にイベントを送信できるクラスを作成するには、クラスをイベント・ソースにするインタフェースを実装します。これらのインタフェースには、1つのイベントを送信するStreamSourceまたはRelationSourceあるいはイベントのバッチを送信するBatchStreamSourceまたはBatchRelationSourceが含まれます。詳細は、16.2.2項「イベント・ソースの実装」を参照してください。

2. 属するEPNに追加できるよう、クラスを構成します。

- クラスがアダプタの一部である場合、アダプタの実装を終了し、第15章「カスタム・アダプタを使用した外部コンポーネントの統合」の説明に従って構成します。

- クラスがBeanとしてEPNに追加されると、16.3項「BeanとしてのJavaクラスの構成」の説明に従って構成できます。

注意:

この手順では、カスタム・イベントBeanはプロセッサ、ストリームおよびビジネス・ロジックPOJOなど、EPNの他のコンポーネントを組み込んだ同一アプリケーションJARファイルにバンドルされたとみなされます。カスタム・イベントBeanを固有のJARファイルにバンドルし、複数のアプリケーション間で共有できるようにするには、23.2.4.2項「固有のバンドルでのイベントBeanのアセンブル方法」を参照してください。

16.2.1 イベント・シンクの実装

イベント処理ネットワークを通過する場合にイベントを受信できるJavaクラスを作成できます。イベントを受信できるコンポーネントはイベント・シンクです。イベント・シンクなどを作成して、各イベントの内容に対応するロジックとともにイベント処理ネットワークの中央でイベントを受信できます。

イベント・シンクのJavaクラスは、この項に記載されているインタフェースのいずれかを実装します。各インタフェースは、イベントが通常チャネルであるクラスのEPNステージに接続されたアップストリームを終了する場合にイベントをクラスに渡すためにOracle Event Processingサーバーで使用するメソッドを提供します。

注意:

単純なイベント・シンクの作成を含む段階を追った開発の例は、必ず第8章「ウォークスルー: 単純なアプリケーションのアセンブル」を参照してください。

ここで示されるインタフェースは、ストリームまたはリレーションとして到着するイベントのサポートを提供します。ただし、リレーション・サポートのインタフェースは、ストリームとして到着するイベントの受信もサポートします。次の表に示すように、インタフェースは階層的に関連します。

インタフェース

説明

com.bea.wlevs.ede.api.StreamSink

ストリームとして順番に到着するイベントを受信するためにこれを実装します。

com.bea.wlevs.ede.api.RelationSink

リレーションとして順番に到着するイベントを受信するためにこれを実装します。ストリームとしてイベントを受信するサポートも提供するよう、StreamSinkを拡張します。

com.bea.wlevs.ede.api.BatchStreamSink

ストリームとして到着するバッチ・イベントの受信をサポートするためにこれを実装します。送信元のチャネルを構成してバッチ処理を許可する場合、イベントはタイムスタンプでバッチ処理されて到着する可能性があります。バッチ処理されていないイベントを受信するサポートも提供するよう、StreamSinkを拡張します。

com.bea.wlevs.ede.api.BatchRelationSink

リレーションとして到着するバッチ・イベントの受信をサポートするためにこれを実装します。送信元のチャネルを構成してバッチ処理を許可する場合、イベントはタイムスタンプでバッチ処理されて到着する可能性があります。ストリームまたはリレーションとしてバッチ処理されていないイベントを受信するサポートも提供するよう、RelationSinkを拡張します。

16.2.1.1 StreamSinkまたはBatchStreamSinkの実装

ストリームとしてイベントを受信するクラスは、Oracle Event Processingの観点から挿入されるイベントのみ受信します。そのため、ストリームでは、イベントはシーケンスの最後に常に追加されます。また、ストリームのイベントは、あるイベントから次のイベントにタイムスタンプの値が古くならないよう、時間の昇順で常に受信します。(非減少のタイムスタンプの概念はイベントのタイムスタンプが直前のイベントのタイムスタンプと同じになる可能性を考慮しますが、直前のタイムスタンプ以前は考慮しません。同一または以降のいずれかです。)

その結果、ストリームとしてイベントを受信するサポート用のインタフェースは、イベントを受信するごとに1つのメソッドを持ちます。これと複数の種類のイベントの受信をサポートするリレーションとしてイベントを受信するインタフェースを対比します。

ストリームとしてバッチ処理されていないイベントを受信するクラスの場合、StreamSinkインタフェースを実装します。クラスに接続されるアップストリーム・ステージを離れる場合にストリームから各イベントに渡すためにOracle Event Processingサーバーが呼び出す1つのメソッドonInsertEventがあります。

例16-1「StreamSinkインタフェースの実装」では、株式取引イベントを受信する単純なStreamSink実装は、Objectインスタンスとして各イベントを受信し、イベントが特定のイベント・タイプのインスタンスかどうかをテストして確認します。そうである場合、コードはそのタイプのメンバーであるプロパティの値を取得します。

例16-1 StreamSinkインタフェースの実装

public class TradeListener implements StreamSink {

public void onInsertEvent(Object event) throws EventRejectedException {
if (event instanceof TradeEvent){
String symbolProp = ((TradeEvent) event).getSymbol();
Integer volumeProp = ((TradeEvent) event).getVolume();
// Code to do something with the property values.
}
}
}

ストリームとしてバッチ処理されたイベントを受信するクラスの場合、BatchStreamSinkインタフェースを実装します。インタフェースには、アップストリーム・ステージから受信するイベントの集合に渡すためにOracle Event Processingサーバーが呼び出す1つのメソッドonInsertEventsがあります。(BatchStreamSinkインタフェースはStreamSinkを拡張するため、バッチ処理されていないイベントも受信できます。)

イベントのバッチ処理の詳細は、10.1.6項「バッチ処理チャネル」を参照してください。

16.2.1.2 RelationSinkまたはBatchRelationSinkの実装

リレーションとしてイベントを受信するクラスは、リレーションにある可能性があるすべての種類のイベント(イベントの挿入、イベントの削除およびイベントの更新)を受信できます。ストリームと異なり、リレーションのイベントは順序付けされず、リレーションを作成または操作したコードで更新または削除されたイベントを含みます。

そのため、リレーションとしてイベントを受信するサポート用のインタフェースには、クラスでイベントの挿入、削除または更新を受信できるメソッドがあります。

リレーションとしてバッチ処理されていないイベントを受信するクラスの場合、RelationSinkインタフェースを実装します。onInsertEvent、onDeleteEventおよびonUpdateEventの3つのメソッド(1つはStreamSinkインタフェースから継承されたもので、このインタフェースを拡張します)があります。実行時、Oracle Event Processingサーバーは、クラスに接続されるアップストリーム・チャネルから受信するイベントのタイプに応じて適切なメソッドを呼び出します。

例16-2 RelationSinkインタフェースの実装

public class TradeListener implements RelationSink {

public void onInsertEvent(Object event) throws EventRejectedException {
if (event instanceof TradeEvent){
String symbolProp = ((TradeEvent) event).getSymbol();
Integer volumeProp = ((TradeEvent) event).getVolume();
// Do something with the inserted event.
}
}

@Override
public void onDeleteEvent(Object event) throws EventRejectedException {
if (event instanceof TradeEvent){
// Do something with the deleted event.
}
}

@Override
public void onUpdateEvent(Object event) throws EventRejectedException {
if (event instanceof TradeEvent){
// Do something with the updated event.
}
}
}

リレーションとしてバッチ処理されたイベントを受信するクラスの場合、BatchRelationSinkインタフェースを実装します。java.util.Collectionインスタンスのバッチから3つのタイプすべてのイベントを受信するよう設計されたonEventsメソッドがあります。

onEvents(insertEvents, deleteEvents, updateEvents)

また、このインタフェースはRelationSinkインタフェースを拡張して、バッチ処理されていないイベントを受信するサポートを提供します。

実行時、Oracle Event Processingサーバーは、適切なメソッドを呼び出して、クラスに接続されたアップストリーム・ステージから受信するイベントに渡します。

イベントのバッチ処理の詳細は、10.1.6項「バッチ処理チャネル」を参照してください。

この項で説明しているOracle Event Processing APIの完全なAPIリファレンス情報については、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください。

16.2.2 イベント・ソースの実装

イベント処理ネットワークのダウンストリーム・ステージにイベントを送信できるJavaクラスを作成できます。イベントを送信できるコンポーネントはイベント・ソースです。イベント・ソースなどを作成して、Javaコードで作成したイベントまたはEPNを通過するイベント・データから変更したイベントを送信できます。

イベント・ソースのJavaクラスは、この項に記載されているインタフェースのいずれかを実装します。各インタフェースは、Oracle Event Processingサーバーで使用されるメソッドを提供して、クラスにセンダー・クラスのインスタンスを渡します。

イベント・ソースで受信するセンダー・インスタンスは、この項に記載されているセンダー・インタフェースのいずれかを実装します。センダー・インタフェースは、バッチ処理の有無にかかわらずストリームまたはリレーションとしてイベントをチャネルなどの後続のダウンストリームEPNステージに送信するためにコードで呼び出すことができるメソッドを提供します。

ここで示されるインタフェースは、ストリームまたはリレーションとしてイベントを送信するサポートを提供します。ただし、リレーション・サポートのインタフェースは、ストリームとしてイベントの送信もサポートします。

表16-1 イベント・ソースを実装するインタフェース

インタフェース

説明

com.bea.wlevs.ede.api.StreamSource

ストリームとしてイベントを送信する機能のためにこれを実装します。実行時、Oracle Event Processingサーバーはストリーム・センダー・クラスのインスタンスをインジェクトします。

com.bea.wlevs.ede.api.RelationSource

リレーションまたはストリームとしてイベントを送信する機能のためにこれを実装します。実行時、Oracle Event Processingサーバーはリレーション・センダー・クラスのインスタンスをインジェクトします。ストリーム・イベントのソースとしてサポートも提供するよう、StreamSourceを拡張します。

表16-2「センダー・クラスで実装されるインタフェース」に示すインタフェースは、イベント・ソース・クラスがOracle Event Processingサーバーから受信するセンダー・クラスによって実装されます。

表16-2 センダー・クラスで実装されるインタフェース

インタフェース

説明

com.bea.wlevs.ede.api.StreamSender

コードでストリームとしてイベントを送信できるメソッドを提供します。

com.bea.wlevs.ede.api.RelationSender

コードでリレーションとしてイベントを送信できるメソッドを提供します。ストリームとしてイベントを送信するサポートも提供するよう、StreamSenderを拡張します。

com.bea.wlevs.ede.api.BatchStreamSender

コードでストリームとしてバッチ処理されたイベントを送信できるメソッドを提供します。送信する

ダウンストリーム・ステージがバッチ処理されたイベントのために構成されたチャネルである場合、タイムスタンプでバッチ処理されたイベントを送信できます。バッチ処理されていないイベントを送信するサポートも提供するよう、StreamSenderを拡張します。

com.bea.wlevs.ede.api.BatchRelationSender

コードでリレーションとしてバッチ処理されたイベントを送信できるメソッドを提供します。送信するダウンストリーム・ステージがバッチ処理されたイベントのために構成されたチャネルである場合、タイムスタンプでバッチ処理されたイベントを送信できます。バッチ処理されていないイベントを送信するサポートも提供するよう、RelationSenderを拡張します。

16.2.2.1 StreamSourceの実装

ストリームとしてイベントのソースであるクラスは、Oracle Event Processingの観点から挿入されるイベントのみ送信します。挿入されたイベントのみ送信すると、リレーションではなくストリームがモデル化されます。ストリーム・ソースから送信されるイベントには、あるイベントから後続のイベントへの非減少のタイムスタンプもあります。つまり、後続のイベントのタイムスタンプは、直前のイベントと同じか後になります。

StreamSourceを実装する場合、コードによってバッチ処理の有無にかかわらずイベントを送信できます。StreamSource setEventSenderメソッドの実装により、表16-2「センダー・クラスで実装されるインタフェース」に示されているタイプのいずれかにキャストできるセンダー・インスタンスを受信します。コードはセンダー・インスタンスを使用して、イベントが移動するダウンストリーム・ステージで期待したとおりにイベントを送信します。

コードでバッチ処理を有効にするチャネルにイベントを送信する場合、送信する前にバッチ処理されたイベント・センダーのいずれかを使用して、タイムスタンプでイベントをバッチ処理する必要があります。詳細は、10.1.6項「バッチ処理チャネル」を参照してください。

センダー・インスタンスは、アプリケーションのタイムスタンプを付けるように受信チャネルを構成する場合にハートビートを送信できるsendHeartbeatメソッドも提供します。

16.2.2.2 RelationSourceの実装

リレーションとしてイベントのソースであるクラスは、イベントを受信するダウンストリーム・ステージで期待したとおりにイベントの挿入、削除および更新を送信できます。

RelationSourceを実装する場合、コードでバッチ処理の有無にかかわらずイベントを送信できます。RelationSource setEventSenderメソッドの実装により、表16-2「センダー・クラスで実装されるインタフェース」に示されているタイプのいずれかにキャストできるセンダー・インスタンスを受信します。コードは、センダー・インスタンスを使用して、ダウンストリーム・ステージで期待したとおりにイベントを送信します。

RelationSourceを実装する場合、クラスで受信するセンダー・インスタンスを使用する場合に次の制約に留意してください。

- sendDeleteEventについては、チャネル用に構成されたのと同じイベント・タイプのインスタンスを送信する必要があります。

- sendInsertEventについては、同じ主キーを持つイベントがすでにリレーション内に含まれる場合、一意制約違反例外が発生し、入力イベントが破棄されます。

- sendUpdateEventについては、指定の主キーを持つイベントがリレーション内に含まれていない場合、無効な更新タプル例外が発生し、入力イベントが破棄されます。

例16-3「RelationSourceインタフェースの実装」では、単純なRelationSource実装はStreamSenderを受信し、リレーションとしてイベントを送信するためにセンダーをRelationSenderにキャストします。このクラスはリポジトリで構成されたイベント・タイプから新しいTradeEventインスタンスを作成しますが、sendEventsメソッドはコードの別の部分からパラメータのように簡単にインスタンスを受信できます。

例16-3 RelationSourceインタフェースの実装

package com.oracle.cep.example.tradereport;

import com.bea.wlevs.ede.api.EventType;
import com.bea.wlevs.ede.api.EventTypeRepository;
import com.bea.wlevs.ede.api.RelationSender;
import com.bea.wlevs.ede.api.RelationSource;
import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.util.Service;

public class TradeEventSource implements RelationSource {

// Variables for event type respository and event sender. Both
// will be set by the server.
EventTypeRepository m_repos = null;
RelationSender m_sender = null;

// Called by the server to set the repository instance.
@Service
public void setEventTypeRepository(EventTypeRepository repos) {
m_repos = repos;
}

// Called by the server to set the sender instance.
@Override
public void setEventSender(StreamSender sender) {
// Cast the received StreamSender to a RelationSender
m_sender = (RelationSender)sender;
}

/**
* Sends events to the next EPN stage using the sender
* received from the server. This code assumes that an event
* instance isn't received from another part of the class,
* instead creating a new instance from the repository.
*/
private void sendEvents(){
EventType eventType = m_repos.getEventType("TradeEvent");
TradeEvent tradeEvent = (TradeEvent)eventType.createEvent();
m_sender.sendDeleteEvent(tradeEvent);
}
}

16.3 BeanとしてのJavaクラスの構成

Javaクラスを書き込んでイベントを処理する場合、EPNアセンブリ・ファイルで構成してEPNに追加できます。Spring BeanまたはOracle Event ProcessingイベントBeanとしてクラスを構成できます。

注意:

外部コンポーネントとやり取りする場合にコードでイベントを受信または送信するアダプタの一部としてクラスを追加することもできます。アダプタとしてのクラスの構成の詳細は、第15章「カスタム・アダプタを使用した外部コンポーネントの統合」を参照してください。

イベントBeanまたはSpring Beanとしてクラスを構成するかどうかは、デプロイメント・コンテキストおよびサポートする機能に依存します。ただし、基本的に、他の場所ですでにSpringを使用している場合など、Spring機能の利用に関心がある場合にSpring Beanとしてクラスを構成できます。

表16-3「イベントBeanおよびSpring Beanの比較」は、イベントBeanおよびSpring Beanで提供される機能を示します。

表16-3 イベントBeanおよびSpring Beanの比較

Beanタイプ

説明

イベントBean

Oracle Event Processingサーバー・コンテナの機能を積極的に使用するEPNステージとして役立ちます。イベントBeanの機能は次のとおりです。

- Oracle Event Processing EPNステージのタイプです。

- Oracle Event Processingモニター・フレームワークによってモニターできます。

- 構成メタデータの注釈を利用できます。

- 通過するイベントを記録および再生するよう設定できます。

- Oracle Event ProcessingサーバーAPIインタフェースを実装するのではなく、XML宣言でメソッドを指定することによって、Oracle Event ProcessingサーバーBeanライフサイクルに参加できます。

Spring Bean

Springへのレガシー統合に役立ちます。Spring Beanの機能は次のとおりです。

- EPNに追加するSpring Beanがある場合に役立ちます。

- Oracle Event Processing EPNステージのタイプではありません。

- Oracle Event Processingモニター・フレームワークによってモニターできません。

- 構成メタデータの注釈を使用できません。

- 通過するイベントを記録および再生するよう設定できません。

それぞれの異なるbeanタイプの詳細は、次を参照してください。

- 16.3.1項「イベントBeanとしてのJavaクラスの構成」

- 16.3.2項「Spring BeanとしてのJavaクラスの構成」

16.3.1 イベントBeanとしてのJavaクラスの構成

EPNアセンブリ・ファイルおよびコンポーネント構成ファイルでOracle Event ProcessingイベントBeanとしてJavaクラスを構成できます。EPNアセンブリ・ファイルでイベントBeanとして構成すると、デフォルト設定とともにBeanがEPNに追加されます。コンポーネント構成ファイルで構成して、特定の機能へのランタイム構成変更をサポートできます。

詳細は、次の項を参照してください。

- 16.3.1.1項「EPNアセンブリ・ファイルのイベントBeanの構成」

- 16.3.1.2項「コンポーネント構成ファイルのイベントBeanの構成」

アプリケーションの他のコンポーネントの登録を含む、構成ファイルの完全な説明は、5.3項「EPNアセンブリ・ファイルの作成」を参照してください。

16.3.1.1 EPNアセンブリ・ファイルのイベントBeanの構成

EPNアセンブリ・ファイルでは、wlevs:event-bean要素を使用してカスタム・イベントBeanをイベント・プロセッサ・ネットワークのコンポーネントとして宣言します。構成コードはファクトリから作成されるイベントBeanによって異なるので注意してください。詳細は、16.3.1.3項「イベントBeanファクトリの作成」を参照してください。

次の例では、TradeListenerクラスは、ダウンストリーム接続がID BeanOutputChannelを使用したチャネルであるイベントBeanとして構成されます。

<wlevs:event-bean id="TradeListenerBean"
class="com.oracle.cep.example.tradereport.TradeListener">
<wlevs:listener ref="BeanOutputChannel"/>
</wlevs:event-bean>

wlevs:instance-property子要素を使用して、Beanの静的プロパティを設定することもできます。静的プロパティはBeanのデプロイ後に変更されないプロパティです。

たとえば、BeanクラスにsetThresholdメソッドが含まれている場合は、次のようにポート番号を渡すことができます。

<wlevs:event-bean id="TradeListenerBean"
class="com.oracle.cep.example.tradereport.TradeListener">
<wlevs:instance-property name="threshold" value="6000" />
<wlevs:listener ref="BeanOutputChannel"/>
</wlevs:event-bean>

wlevs:listener要素を使用して、イベント・シンクであるイベントBeanを参照します。次の例では、TradeListenerBeanイベントBeanは、チャネルProcessorOutputChannelからイベントを受信します。

<wlevs:channel id="ProcessorOutputChannel" >
<wlevs:listener ref="TradeListenerBean" />
</wlevs:channel>

16.3.1.2 コンポーネント構成ファイルのイベントBeanの構成

コンポーネント構成ファイルのイベントBeanの構成を追加できます。ここで追加する構成は、実行時に更新するために使用できます。コンポーネント構成ファイルの構成の追加では、EPNアセンブリ・ファイルで構成してイベントBeanをEPNに追加済と仮定します(詳細は、16.3.1.1項「EPNアセンブリ・ファイルのイベントBeanの構成」を参照)。

開発環境の必要に応じて、個別のコンポーネント構成XMLファイルも作成することもできます。たとえば、アプリケーションに複数のカスタム・イベントBeanが含まれている場合は、各カスタム・イベントBeanごとに個別のXMLファイルを作成するか、すべてのカスタム・イベントBeanの構成を含む単一のXMLファイルを作成するか、またはアプリケーションのすべてのコンポーネント(Bean、アダプタ、プロセッサ、およびストリーム)を含むファイルを作成できます。

次の例では、TradeListenerBeanイベントBeanはイベントの記録のために構成されます。各イベントBean構成には、config要素の個別のevent-bean子要素が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application">
<event-bean>
<name>TradeListenerBean</name>
<record-parameters>
<dataset-name>tradereport_sample</dataset-name>
<event-type-list>
<event-type>TradeEvent</event-type>
</event-type-list>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>
</event-bean>
</wlevs:config>

各イベントBeanをname子要素で一意に識別します。この名前は、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルのwlevs:event-bean要素のid属性の値と同じである必要があります。これが、この構成が適用される対象の、EPNアセンブリ・ファイル内の特定のイベントBeanをOracle Event Processingが認識する仕組みです。

独自の要素を使用してコンポーネント構成を拡張することもできます。詳細は、第26章「コンポーネント構成の拡張」を参照してください。

コンポーネント構成XMLスキーマのリファレンスは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

16.3.1.3 イベントBeanファクトリの作成

イベントBeanファクトリを実装および構成して、複数のイベント処理ネットワークで単一イベントBean実装を使用できます。ファクトリ・クラスは、リクエストするアプリケーションのイベントBeanインスタンスを提供します。

ここで説明するAPIの詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスに関する項を参照してください。

イベントBeanファクトリを作成するには、以下の手順を実行します。

1. イベントBeanクラスでは、Beanがファクトリで返されるよう、com.bea.wlevs.ede.api.EventBeanインタフェースを実装します。これはマーカー・インタフェースなので、メソッドは実装されません。

public class TradeListener implements EventBean, StreamSink {
// Bean implementation code.
}

2. イベントBeanファクトリ・クラスを実装して、イベントBeanのインスタンスを作成して返します。
イベントBeanファクトリ・クラスは、com.bea.wlevs.ede.api.EventBeanFactoryインタフェースを実装する必要があります。createメソッドを実装して、イベントBeanのインスタンスを作成します。

import com.oracle.cep.example.tradereport.TradeListener;
import com.bea.wlevs.ede.api.EventBeanFactory;

public class TradeListenerFactory implements EventBeanFactory {
public TradeListenerFactory() {
}
public synchronized TradeListener create()
throws IllegalArgumentException {

// Your code might have a particular way to create the instance.
return new TradeListener();

}
}

3. EPNアセンブリ・ファイルでは、ファクトリ・クラスを構成します。
次の例に示すように、wlevs:factory要素を使用してEPNアセンブリ・ファイルにファクトリを登録します。

<wlevs:factory provider-name="tradeListenerProvider"
class="com.oracle.cep.example.tradereport.TradeListenerFactory"/>

サービスのプロパティを指定する必要がある場合は、osgi:service>要素を使用して、EPNアセンブリ・ファイルにOSGIサービスとしてファクトリを登録する必要もあります。OSGIサービス・レジストリの範囲は、すべてのOracle Event Processingです。このため、指定のサーバーにデプロイされた複数のアプリケーションが同じイベントBeanファクトリを使用する場合は、ファクトリをOSGIサービスとして登録するのが必ず一度きりになるようにします。

エントリを追加して、サービスを com.bea.wlevs.ede.api.EventBeanFactoryインタフェースの実装として登録します。key属性のtype、およびこのイベントBeanプロバイダを参照する名前を使用して、プロパティを指定します。最後に、ネストされた標準のSpring bean要素を追加して、Springアプリケーション・コンテキストで特定のイベントBeanクラスを登録します。

<osgi:service interface="com.bea.wlevs.ede.api.EventBeanFactory">
<osgi:service-properties>
<entry key="type" value="tradeListenerProvider"</entry>
</osgi:service-properties>
<bean class="com.oracle.cep.example.tradereport.TradeListenerFactory" />
</osgi:service>

4. イベントBeanのインスタンスを使用するアプリケーションでは、次の例に示すように、クラス名でBeanを指定するのではなく、プロバイダとして構成されたイベントBeanファクトリを指定してイベントBeanを構成します。

<wlevs:event-bean id="TradeListenerBean"
provider="tradeListenerProvider">
...
</wlevs:event-bean>

再利用のための固有のバンドルのイベントBeanのバンドルの詳細は、23.2.4.2項「固有のバンドルでのイベントBeanのアセンブル方法」を参照してください。

16.3.2 Spring BeanとしてのJavaクラスの構成

イベント処理ネットワークにクラスを含めるためにSpring BeanとしてJavaクラスを構成できます。EPNに組み込む既存のSpring Beanがある場合、これは適切なオプションです。または、JavaコードでSpring機能を利用できます。

Spring BeanはSpringフレームワークで管理されるJavaクラスです。標準のbean要素を使用してEPNアセンブリ・ファイルで構成して、Spring Beanとしてクラスを追加します。

Spring BeanはOracle Event Processingステージのタイプではないことに留意してください。つまり、Oracle Event Processing監視フレームワークによって監視できません。また、構成メタデータの注釈も使用できず通過するイベントを記録および再生するように設定できません。

EPNアセンブリ・ファイルでは、bean要素を使用してカスタムSpring Beanをイベント・プロセッサ・ネットワークのコンポーネントとして宣言します。例:

<bean id="TradeListenerBean"
class="com.oracle.cep.example.tradereport.TradeListener">
</bean>

16.3.2.1 Spring Beanの特性のサポート

EPNに追加するSpring Beanでは、様々なライフサイクル・インタフェースを実装できます。これらには、InitializingBean、DisposableBeanおよびRunnableBeanなどのアクティブなインタフェースが含まれます。Spring Beanイベント・ソースでは、@Prepare、@Rollback、@Activateなどの構成メタデータの注釈も利用できます。

17 Oracle CQLでのイベント・ストリームの問合せ

この章では、Oracle Event Processingイベント処理ネットワーク用にOracle Continuous Query Language (Oracle CQL)プロセッサを構成する方法について説明します。これには、プロセッサのデータ・ソースの構成およびパフォーマンスの最適化に関する情報も含まれます。

この章の内容は次のとおりです。

- 17.1項「Oracle CQLプロセッサ構成の概要」

- 17.2項「Oracle CQLプロセッサの構成」

- 17.3項「Oracle CQLプロセッサ表ソースの構成」

- 17.4項「Oracle CQLプロセッサ・キャッシュ・ソースの構成」

- 17.5項「パラレル問合せ実行用のOracle CQLプロセッサの構成」

- 17.6項「フォルトの処理」

- 17.7項「Oracle CQLプロセッサ構成ファイルの例」

17.1 Oracle CQLプロセッサの構成の概要

Oracle Event Processingアプリケーションには、1つ以上のイベント・プロセッサ、もしくはプロセッサが含まれています。各プロセッサは1つまたは複数のアダプタからのイベントを入力として受け取ります。これらのアダプタでは、ソースから連続的なデータ・ストリームを送信するデータ・フィードにリスニングします。金融データ・フィードやOracle Event Processingロード・ジェネレータなど、任意のソースを使用できます。

Oracle CQLプロセッサの主な機能は、その関連付けられたOracle CQL (Oracle Continuous Query Language)ルールであり、これらのルールは、プロセッサにリスニング・コンポーネントに渡すイベントのサブセットを持ちます。リスニングするコンポーネントには、他のプロセッサまたは通常はイベント処理ネットワークの最後を定義し、クライアント・アプリケーションへのパブリッシュなどイベントでなんらかの処理を実行するビジネス・オブジェクトPOJOを指定できます。Oracle CQLの詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』を参照してください。

アプリケーションの各Oracle CQLプロセッサに対して、コンポーネント構成ファイルでprocessor要素を作成する必要があります。このprocessor要素では、プロセッサのOracle CQLルールの初期セット、および任意のプロセッサ構成を指定します。

Oracle CQLプロセッサEPNアセンブリ・ファイルで、任意の追加Oracle CQLプロセッサの機能を構成できます。

コンポーネント構成ファイルprocessor要素のname要素は、EPNアセンブリ・ファイルprocessor要素のid属性と一致している必要があります。たとえば、例17-1に示すEPNアセンブリ・ファイルprocessor要素の場合、例17-2に示す対応するコンポーネント構成ファイルprocessor要素が指定されます。

例17-1 EPNアセンブリ・ファイルOracle CQLプロセッサID: proc

<wlevs:processor id="proc">
<wlevs:table-source ref="Stock" />
</wlevs:processor>

例17-2 コンポーネント構成ファイルOracle CQLプロセッサ名: proc

<processor>
<name>proc</name>
<rules>
<query id="q1"><![CDATA[
SELECT ExchangeStream.symbol, ExchangeStream.price, Stock.exchange
FROM   ExchangeStream [Now], Stock
WHERE  ExchangeStream.symbol = Stock.symbol
]]></query>
</rules>
</procesor>

processor要素は、次のいずれかの任意のコンポーネント構成ファイルに作成できます。

- デフォルトのOracle Event Processingアプリケーション構成ファイル(デフォルトでは、META-INF/wlevs/config.xml)。

- 個別の構成ファイル。

アプリケーションに1つ以上のプロセッサが含まれている場合は、デフォルトconfig.xmlファイルでプロセッサごとにprocessor要素を作成できます。また、プロセッサごとにMETA-INF/wlevsに個別のXMLファイルを作成するか、またはすべてのプロセッサの構成のみでなく、アプリケーション内のすべてのコンポーネント(アダプタ、プロセッサ、およびチャネル)が含まれる単一のXMLファイルをMETA-INF/wlevsに作成できます。開発環境に最も適した方法を選択します。

デフォルトでは、Oracle Event Processing IDE for Eclipseは、1つのコンポーネント構成ファイルおよび1つのEPNアセンブリ・ファイルを作成します。Oracle Event Processing IDE for Eclipseを使用してOracle CQLプロセッサを作成する場合、デフォルトでプロセッサ要素がデフォルト・コンポーネント構成ファイルのMETA-INF/wlevs/config.xmlファイルに追加されます。Oracle Event Processing IDE for Eclipseを使用して、Oracle CQLプロセッサの作成時に新しい構成ファイルを作成するか、または既存の構成ファイルを使用するかを選択できます。

コンポーネント構成ファイルは、Oracle Event Processingアプリケーション・バンドルの一部としてデプロイされます。Oracle Event Processing Visualizer、wlevs.Adminユーティリティを使用するか、または適切なJMX Mbeanを直接操作して、後で実行時にこの構成を更新できます。

詳細は、次を参照してください:

- 1.4.2項「コンポーネント構成ファイルの概要」

- 1.4.1項「EPNアセンブリ・ファイルの概要」

- 5.3項「EPNアセンブリ・ファイルの作成」

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のwlevs.Adminコマンドライン・リファレンスに関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event ProcessingのJMXの構成に関する項

Oracle CQLプロセッサ構成の詳細は、次の項を参照してください。

- 17.1.1項「ダウンストリーム・チャネルに対する問合せ出力の制御」

- 17.2項「Oracle CQLプロセッサの構成」

- 17.3項「Oracle CQLプロセッサ表ソースの構成」

- 17.4項「Oracle CQLプロセッサ・キャッシュ・ソースの構成」

- 17.7項「Oracle CQLプロセッサ構成ファイルの例」

17.1.1 ダウンストリーム・チャネルに対する問合せ出力の制御

1つ以上の問合せを使用してOracle CQLプロセッサを構成する場合、デフォルトではすべての問合せの結果がダウンストリーム・チャネルに出力されます。

どの問合せの結果をダウンストリーム・チャネルに出力するかは、チャネルselector要素を使用してこのチャネルに結果を出力する問合せ名のリストをスペースで区切って指定することで制御できます。

アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

詳細は、10.1.5項「ダウンストリーム・チャネルに対する問合せ出力の制御: selector」を参照してください。

17.2 Oracle CQLプロセッサの構成

プロセッサを手動で構成するか、またはOracle Event Processing IDE for Eclipseを使用して構成できます。

プロセッサ・コンポーネント構成ファイルを記述する完全なXSDスキーマは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

Oracle CQLプロセッサ・コンポーネント構成ファイルおよびアセンブリ・ファイルの完全な例は、17.7項「Oracle CQLプロセッサ構成ファイルの例」を参照してください。

この節では、次のトピックについて説明します。

- 17.2.1項「Oracle Event Processing IDE for Eclipseを使用したOracle CQLプロセッサの構成方法」

- 17.2.2項「Oracle CQLプロセッサ・コンポーネント構成ファイルの手動による作成方法」

17.2.1 Oracle Event Processing IDE for Eclipseを使用したOracle CQLプロセッサの構成方法

プロセッサを作成および編集する最も効率的かつ間違いの少ない方法は、Oracle Event Processing IDE for Eclipseを使用することです。オプションで、プロセッサは手動で作成および編集できます(17.2.2項「Oracle CQLプロセッサ・コンポーネント構成ファイルの手動による作成方法」を参照してください)。

Oracle Event Processing IDE for Eclipseを使用してOracle CQLプロセッサを構成するには:

1. Oracle Event Processing IDE for Eclipseを使用してプロセッサを作成します。
7.4.1.3項「プロセッサ・ノードの作成方法」を参照してください。

EPNエディタを使用してOracle CQLプロセッサを作成する場合、Oracle Event Processing IDE for Eclipseでは、デフォルト・コンポーネント構成ファイルまたは新しいコンポーネント構成ファイルの選択が求められます。詳細は、第7章「Oracle Event Processing IDE for Eclipseおよびイベント処理ネットワーク」を参照してください。

2. 「プロセッサ」ノードを右クリックし、「構成のソースに移動」を選択します。
Oracle Event Processing IDE for Eclipseは、適切なコンポーネント構成ファイルを開きます。デフォルト・プロセッサ・コンポーネント構成は、例17-3に示されています。

デフォルト・プロセッサ・コンポーネント構成には、name要素およびrules要素が含まれます。

rules要素を使用して、このプロセッサが実行するOracle CQL文を含むように作成する子要素をグループ化します。子要素には、次のものが含まれます。

- rule: ユーザー定義ウィンドウを登録または作成するOracle CQL文を含みます。rule要素id属性はウィンドウの名前と一致する必要があります。

- view: Oracle CQL view文(Oracle CQLで副問合せに相当するもの)を含みます。view要素のid属性はビューの名前を定義します。

- query: Oracle CQL select文を含みます。query要素のid属性は問合せの名前を定義します。

デフォルト・プロセッサ・コンポーネント構成には、id Queryのダミーquery要素が含まれます。

例17-3 デフォルト・プロセッサ・コンポーネント構成

<processor>
<name>proc</name>
<rules>
<query id="Query"><!-- <![CDATA[ select * from MyChannel [now] ]]> -->
</query>
</rules>
</processor>

3. ダミーquery要素を、このプロセッサが実行するOracle CQL文を含むよう作成するrule、view、およびquery要素と置き換えます。
詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のOracle CQL問合せ、ビュー、および結合の概要に関する項を参照してください。

4. 「ファイル」>「保存」を選択します。

5. オプションで、アセンブリ・ファイルで追加のOracle CQLプロセッサの機能を構成します。

- 17.1.1項「ダウンストリーム・チャネルに対する問合せ出力の制御」

- 17.3項「Oracle CQLプロセッサ表ソースの構成」

- 17.4項「Oracle CQLプロセッサ・キャッシュ・ソースの構成」

17.2.2 Oracle CQLプロセッサ・コンポーネント構成ファイルの手動による作成方法

プロセッサ構成を作成、および編集する最も効率的かつ間違いの少ない方法は、Oracle Event Processing IDE for Eclipseを使用することではありますが(17.2.1項「Oracle Event Processing IDE for Eclipseを使用したOracle CQLプロセッサの構成方法」を参照)、プロセッサ構成ファイルを手動で作成および維持することもできます。

この項には、プロセッサ構成ファイルを手動で作成する主な手順が記述されています。簡略化のため、この手順ではすべてのプロセッサを1つのXMLファイルに構成することを想定しています。ただし、各プロセッサごとに個別のファイルを作成することもできます。

Oracle CQLプロセッサ・コンポーネント構成ファイルを手動で作成するには:

1. プロセッサが実行するOracle CQLルールのセットを設計します。これらのルールは、すべての受信イベントを選択する簡単なものから、次に示すように、時間、プロパティ値などを基にセットを制限するものまであります。

SELECT *
FROM   TradeStream [Now]
WHERE  price > 10000

Oracle CQLは、多くの点で、リレーショナル・データベース表の問合せに使用するStructure Query Language (SQL)と類似しますが、構文は多くの点で異なります。もう1つの大きな違いとしては、Oracle CQL問合せでは時間というディメンションも考慮し、プロセッサは静的なSQL問合せよりOracle CQLを継続的に実行します。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のOracle CQL問合せ、ビュー、および結合の概要に関する項を参照してください。

2. アプリケーションの各プロセッサに対して、前の手順で設計したOracle CQLルールおよび他の任意の機能を含むプロセッサ構成XMLファイルを作成します。
このXMLファイルの名前は自分で決定しますが、その拡張は.xmlで終了することが必要です。

プロセッサ構成ファイルのルート要素はconfigで、ネームスペース定義は次の手順に示します。

3. アプリケーションの各プロセッサに対して、configのprocessor子要素を追加します。
各プロセッサをname子要素で一意に識別します。この名前は、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルのwlevs:processor要素のid属性の値と同じである必要があります。これによって、Oracle Event Processingは、このプロセッサ構成はEPNアセンブリ・ファイルのどのプロセッサ・コンポーネントに適用されるかを理解します。詳細は、5.3項「EPNアセンブリ・ファイルの作成」を参照してください。

たとえば、アプリケーションに2つのプロセッサがある場合、構成ファイルは最初に以下のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<n1:config xmlns:n1="http://www.bea.com/ns/wlevs/config/application">
<processor>
<name>firstProcessor</name>
...
</processor>
<processor>
<name>secondProcessor</name>
...
</processor>
</n1:config>

この例では、構成ファイルには、firstProcessorおよびsecondProcessorという2つのプロセッサが含まれています。これは、EPNアセンブリ・ファイルには、同じ識別子を持つ少なくとも2つのプロセッサ登録が含まれる必要があることを意味します。

<wlevs:processor id="firstProcessor" ...>
...
</wlevs:processor>
<wlevs:processor id="secondProcessor" ...>
...
</wlevs:processor>

注意:

XMLファイルの識別子と名前は大/小文字が区別されるため、EPNアセンブリ・ファイルでコンポーネントの識別子を参照するときは、必ず大/小文字を同一にします。

4. rules子要素を各processor要素に追加します。
rules要素を使用して、このプロセッサが実行するOracle CQL文を含むように作成する子要素をグループ化します。子要素には、次のものが含まれます。

- rule: ユーザー定義ウィンドウを登録または作成するOracle CQL文を含みます。rule要素id属性はウィンドウの名前と一致する必要があります。

- view: Oracle CQL view文(Oracle CQLで副問合せに相当するもの)を含みます。view要素のid属性はビューの名前を定義します。

- query: Oracle CQL select文を含みます。query要素のid属性は問合せの名前を定義します。

viewおよびquery要素の必要なid属性を使用して、各ルールを一意に識別します。XML CDATAタイプを使用して、実際のOracle CQLルールを入力します。例:

<?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>
<name>proc</name>
<rules>
<view id="lastEvents" schema="cusip bid srcId bidQty"><![CDATA[
select mod(price)
from filteredStream[partition by srcId, cusip rows 1]
]]></view>
<query id="q1"><![CDATA[
SELECT *
FROM   lastEvents
WHERE  price > 10000
]]></query>
</rules>
</processor>
</n1:config>]]></query>

5. ファイルを保存して閉じます。

6. オプションで、アセンブリ・ファイルで追加のOracle CQLプロセッサの機能を構成します。

- 17.1.1項「ダウンストリーム・チャネルに対する問合せ出力の制御」

- 17.3項「Oracle CQLプロセッサ表ソースの構成」

- 17.4項「Oracle CQLプロセッサ・キャッシュ・ソースの構成」

17.3 Oracle CQLプロセッサ表ソースの構成

以下を使用して、Oracle CQL問合せからリレーショナル・データベース表にアクセスできます。

- 表ソース: 表ソースを使用して、ストリームを「即時」ウィンドウのみ、かつ単一のデータベース表に対してのみ結合できます。

注意:

表ソースの変更が、ストリーム・データと適宜調整されないため、表ソースを「即時」ウィンドウを使用してイベント・ストリームにのみ結合でき、かつ単一のデータベース表のみ結合できる場合があります。詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のS[now]に関する項を参照してください。

任意の複雑なSQL問合せおよび複数の表を自分のOracle SQL問合せと統合するには、かわりにOracle JDBCデータ・カートリッジの使用を検討してください。

詳細は、17.3項「Oracle CQLプロセッサ表ソースの構成」を参照してください。

- Oracle JDBCデータ・カートリッジ: Oracle JDBCデータ・カートリッジを使用して、任意の複雑なSQL問合せおよび複数の表、データソースを自分のOracle CQL問合せと結合する場合があります。

注意:

Oracle JDBCデータ・カートリッジを使用して、Oracle CQL文からリレーショナル・データベース表にアクセスすることをお薦めします。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のOracle JDBCデータ・カートリッジに関する項を参照してください。

いずれの場合でも、データソースはOracle Event Processingサーバーconfig.xmlファイルで定義する必要があります。詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のリレーショナル・データベースへのアクセスの構成に関する項を参照してください。

Oracle Event Processingのリレーション・データベース表イベント・ソースはプル・データ・ソースです。つまり、Oracle Event Processingはイベント・ソースを定期的にポーリングします。

この項では、例17-4に示されるSQL文を使用して、アクセスする表を作成することを想定します。

例17-4 表作成SQL文

create table Stock (symbol varchar(16), exchange varchar(16));

構成した後に、イベント・ストリームであるようにStock表にアクセスするOracle CQL問合せを定義できます。次の例では、問合せは1つのイベント・ストリームExchangeStreamをStock表と結合します。

例17-5 リレーショナル・データベース表StockのOracle CQL問合せ

SELECT ExchangeStream.symbol, ExchangeStream.price, Stock.exchange
FROM   ExchangeStream [Now], Stock
WHERE  ExchangeStream.symbol = Stock.symbol

注意:

表ソースの変更が、ストリーム・データと適宜調整されないため、表ソースを「即時」ウィンドウを使用してイベント・ストリームにのみ結合でき、かつ単一のデータベース表のみ結合できる場合があります。

任意の複雑なSQL問合せおよび複数の表を自分のOracle SQL問合せと統合するには、かわりにOracle JDBCデータ・カートリッジの使用を検討してください。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のOracle JDBCデータ・カートリッジに関する項を参照してください。

17.3.1 Oracle Event Processing IDE for Eclipseを使用したOracle CQLプロセッサ表ソースの構成方法

リレーショナル・データベース表にアクセスするようにOracle CQLプロセッサを構成する最も効率的かつ間違いの少ない方法は、Oracle Event Processing IDE for Eclipseを使用することです。

Oracle Event Processing IDE for Eclipseを使用してOracle CQLプロセッサ表ソースを構成するには:

1. 使用する表が含まれるデータベースのデータ・ソースを作成します。

例17-6は、データ・ソースStockDSを使用したOracle Event Processingサーバーのconfig.xmlファイルの例を示します。

例17-6 データ・ソースStockDSを使用したOracle Event Processingサーバーのconfig.xmlファイル

<?xml version="1.0" encoding="UTF-8"?>
<n1:config xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/server wlevs_server_config.xsd"
xmlns:n1="http://www.bea.com/ns/wlevs/config/server"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<domain>
<name>ocep_domain</name>
</domain>

...

<data-source>
<name>StockDs</name>
<connection-pool-params>
<initial-capacity>1</initial-capacity>
<max-capacity>10</max-capacity>
</connection-pool-params>
<driver-params>
<url>jdbc:derby:</url>
<driver-name>org.apache.derby.jdbc.EmbeddedDriver</driver-name>
<properties>
<element>
<name>databaseName</name>
<value>db</value>
</element>
<element>
<name>create</name>
<value>true</value>
</element>
</properties>
</driver-params>
<data-source-params>
<jndi-names>
<element>StockDs</element>
</jndi-names>
<global-transactions-protocol>None</global-transactions-protocol>
</data-source-params>
</data-source>

...

</n1:config>

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のリレーショナル・データベースへのアクセスの構成に関する項を参照してください。

2. Oracle Event Processing IDE for Eclipseを使用して表ノードを作成します。
7.4.1.1項「基本ノードの作成方法」を参照してください。

3. Oracle Event Processing IDE for Eclipseを使用してOracle CQLプロセッサを作成します。
7.4.1.3項「プロセッサ・ノードの作成方法」を参照してください。

4. 表ノードをOracle CQLプロセッサ・ノードに接続します。
7.4.2.1項「ノードの接続方法」を参照してください。

EPNエディタは、ソース表を参照するターゲット・プロセッサ・ノードにwlevs:table-source要素を追加します。

5. EPNの表ノードを右クリックし、「アセンブリのソースに移動」を選択します。
Oracle Event Processing IDE for Eclipseは、この表ノードのEPNアセンブリ・ファイルを開きます。

6. 例17-7に示すようにtable要素を編集し、表17-1に示すようにtable要素属性を構成します。

例17-7 EPNアセンブリ・ファイル表要素

<wlevs:table id="Stock" event-type="StockEvent" data-source="StockDs" />

表17-1 EPNアセンブリ・ファイル表要素属性

属性

説明

id

表ソースの名前。この表ソースの以降の参照ではこの名前を使用します。

event-type

ステップ9で作成する表event-typeに対して指定するtype-name。

data-source

ステップ1でOracle Event Processingサーバーconfig.xmlファイルで指定したdata-source名。

7. EPN内の表に接続しているOracle CQLプロセッサノードを右クリックし、「アセンブリのソースに移動」を選択します。
Oracle Event Processing IDE for EclipseはこのOracle CQLプロセッサに対するEPNアセンブリ・ファイルを開きます。

8. Oracle CQLプロセッサ要素のtable-source子要素を、例17-8に示されているように編集します。
ref属性をステップ6で指定したtable要素のidに設定します。

例17-8 EPNアセンブリ・ファイルtable-source要素

<wlevs:processor id="proc">
<wlevs:table-source ref="Stock" />
</wlevs:processor>

9. 例17-9に示されているように、EPNアセンブリ・ファイルを編集し、表に対してevent-type-repository要素を新しいevent-type子要素で更新します。

9.2.3.2項「データベース表ソースとともに使用するイベント・タイプの制約」の説明に従ってプロパティ属性にアクセスして構成する表の各列のproperty子要素を作成します。

例17-9 表のEPNアセンブリ・ファイルevent-type要素

<wlevs:event-type-repository>
...
<wlevs:event-type type-name="StockEvent">
<wlevs:properties>
<wlevs:property name="symbol" type="char[]" length="16" />
<wlevs:property name="exchange" type="char[]" length="16" />
</wlevs:properties>
</wlevs:event-type>
...
</wlevs:event-type-repository>

イベント・タイプの作成の詳細は、次の項を参照してください。

- 第9章「イベント・タイプの作成」

- 9.2.2項「イベント・タイプのデータ型の選択」

10. EPN内の表に接続しているOracle CQLプロセッサノードを右クリックし、「構成のソースに移動」を選択します。
Oracle Event Processing IDE for EclipseはこのOracle CQLプロセッサに対するコンポーネント構成ファイルを開きます。

11. 例17-10に示されているように、コンポーネント構成ファイルを編集して、表のevent-typeを使用するOracle CQL問合せを追加します。

例17-10 表イベント・タイプStockEventを使用するOracle CQL問合せ

<processor>
<name>proc</name>
<rules>
<query id="q1"><![CDATA[
SELECT  ExchangeStream.symbol, ExchangeStream.price, Stock.exchange
FROM    ExchangeStream [Now], Stock
WHERE   ExchangeStream.symbol = Stock.symbol
]]></query>
</rules>
</processor>

注意:

表ソースの変更が、ストリーム・データと適宜調整されないため、「即時」ウィンドウのみを使用できる場合があります。詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のS[Now]に関する項を参照してください。

17.4 Oracle CQLプロセッサ・キャッシュ・ソースの構成

Oracle Event ProcessingキャッシュにアクセスするようにOracle CQLプロセッサを構成できます。

詳細は、次を参照してください:

- 13.1項「キャッシュの統合の概要」

- 13.6.5項「Oracle CQLユーザー定義関数からキャッシュへのアクセス」

- 13.6.1項「Oracle CQL文からキャッシュへのアクセス」

17.5 パラレル問合せ実行用のOracle CQLプロセッサの構成

パフォーマンス向上のため、CQL問合せを、デフォルトで行われているシリアル実行ではなく、パラレル実行できるようにすることが可能です。CQLコードがこれをサポートしている場合、CQLプロセッサで複数のスレッドが使用可能なときは、着信イベントをパラレルに実行するように問合せを構成できます。

問合せ出力イベントの相対的な順序が問合せのダウンストリーム・クライアントにとって重要ではない場合のみ、パラレル問合せ実行を有効にします。たとえば、トランザクション・シーケンスが無関係な、特定の会社に関係する証券取引のセットを顧客に伝えるなど、問合せの主な目的がイベントのフィルタ処理である場合、イベントの順序付けは重要ではないと考えられます。

デフォルト(パラレル実行を有効にしない)では、問合せはチャネルからイベントをシリアルに処理します。システム・タイムスタンプを使用するチャネルを経由してルーティングされるイベントの場合、イベント順序は、イベントが受信される順序です。アプリケーションがタイムスタンプを付けるチャネルを経由する場合、イベント順序は、イベントに含まれるタイムスタンプの値によって決定された順序です。全体順序の制約を緩和すると、構成された問合せは、可能な場合はイベントをパラレルに処理しながら、その問合せのイベント順序を考慮しないようにできます。

17.5.1 パラレル問合せ実行のサポートの設定

パラレル問合せ実行のサポートの指定が主に単純な構成タスクである場合は、機能を最大限に活用できるように、次の手順に必ず従ってください。

- パラレル実行をサポートするように、ordering-constraint属性を使用します。

- プロセッサに呼び出すスレッドが、パフォーマンスの目標を達成するのに十分であることを確認します。パラレル問合せ実行の最大量は、CQLプロセッサで使用できるスレッドの数によって制約されます。たとえば、プロセッサのアダプタ・アップストリームが必要なスレッドの数をサポートし、アダプタとプロセッサの間にチャネルがある場合、パススルーとして機能するように、max-threadsの数を0にしてチャネルを構成してください。
パススルーを行わない場合、必ずmax-threadsの値を1より大きくして、問合せのアップストリーム・チャネルを構成してください。(max-threadsの値の設定を有用にするには、max-size属性を0より大きい値に設定する必要もあります。)詳細は、第10章「チャネルを使用したEPNステージの接続」を参照してください。

- max-threads属性値の設定に関連するその他のガイドラインに従います。たとえば、max-threadsの値の設定を有用にするには、max-size属性を0より大きい値に設定する必要もあります。

- 必要に応じて、同期化されたブロックの使用などによって、問合せ結果を受け取るBeanがスレッドを認識していることを確認します。たとえば、Beanのコードによって、複数のスレッドで実行された問合せから受け取った結果のリストを作成する場合に、これを行う必要がある可能性があります。

17.5.2 ordering-constraint属性の使用

イベントがシリアルに処理されることを保証する、デフォルトの順序付けの制約を緩和することで、パラレル問合せ実行を有効にします。これを行うには、queryまたはview要素でordering-constraint属性を設定します。

例17-11では、可能であれば常に、問合せをパラレルに実行するように、ordering-constraint属性をUNORDEREDに設定します。

例17-11 パラレル実行を許可するように構成された問合せ

<query id="myquery" ordering-constraint="UNORDERED">
SELECT symbol FROM S WHERE price > 10
</query>

ordering-constraint属性は、次の3つの値をサポートします。

- ORDEREDは、出力イベントの順序は(入力イベントの順序で暗示されるように)重要であることを意味します。CQLエンジンはイベントをシリアルに処理します。これはデフォルトの動作です。

- UNORDEREDは、出力イベントの順序は出力イベントのコンシューマにとって重要ではないことを意味します。これにより、CQLプロセッサはイベントを複数のスレッドでパラレルに処理できるようになります。可能な場合、問合せは複数のスレッドでパラレルに実行して、イベントを処理します。

- PARTITION_ORDEREDは、異なるパーティション間の出力イベントの順序が出力イベントのコンシューマにとって重要ではない場合に、パーティション内の出力イベントの順序が(入力イベントの順序で暗示されるように)保持されるよう指定していることを意味します。このような緩和により、CQLエンジンは、パーティション間のイベントを複数のスレッドでパラレルに(可能な場合)処理できるようになります。

指定したパーティションに従っているイベントをシリアルに処理するが、パーティション間の順序は無視し、異なるパーティションに属するイベントをパラレルに処理するよう指定する場合に、Use the PARTITION_ORDEREDの値を使用します。PARTITION_ORDEREDの値を使用する場合、partition-expression属性を追加して、パーティション化用のどの式をパーティション間の順序付けの制約を緩和するための基準とするかも指定する必要があります。

例17-12では、GROUP BY句はsymbolの値に基づいて出力をパーティション化します。partition-expression属性は、特定のsymbolの値に対応するイベントの指定されたサブセット内のイベントをシリアルに処理するよう指定します。一方、パーティション間では順序を無視できます。

例17-12 パーティション間のパラレル実行を許可するように構成された問合せ

<query id="myquery" ordering-constraint="PARTITION_ORDERED"
partitioning-expression="symbol">
SELECT
COUNT(*) as c, symbol
FROM
S[RANGE 1 minute]
GROUP BY
symbol
</query>

17.5.3 問合せのパーティション化でのpartition-order-capacityの使用

一般的に、多くのスレッドを使用可能にして、可能な場合はパラレルで実行できるようにordering-constraint属性を設定することによって、問合せのパフォーマンスが向上すると考えられます。多くのパフォーマンス・チューニング技術と同様、これらの設定で少しずつ試行錯誤を重ねて、より良い結果となる組合せを見つける必要があります。

しかし、問合せでパーティション化を使用し、ordering-constraint属性をPARTITION_ORDEREDに設定した場合でも、期待するスケーリングの量にならない可能性があります。たとえば、4つのスレッドで実行しても2つのスレッドで実行する場合に比べてパフォーマンスがあまり向上しない場合を考えます。このような場合、パーティションを含む問合せの操作でCQLエンジンの特性を最大限に活用するために、partition-order-capacityの値を使用できます。

partition-order-capacityの値は、PARTITION_ORDEREDの問合せを処理する際に指定したプロセッサ・インスタンス内で許可されている並列の最大量を指定します。使用可能なスレッドが異なるパーティションに属するイベントを処理している場合、値は問合せ内で同時に実行できるスレッドの最大数を設定します。

他のパフォーマンス・チューニングの側面と同様、partition-order-capacityを最大限に活用するために、少し実験を行うことがあります。partition-order-capacityを調整する場合、最初に行うこととして適切なのは、CQLプロセッサ・インスタンスでアクティブにするスレッドの最大数にそれを設定することです。場合によっては(たとえば、データが高速である、CQLプロセッサからダウンストリームを処理することが困難など)、partition-order-capacityの値を使用可能なスレッド数より大きく設定しても、有用なことがあります。ただし、パフォーマンス・テストが指定したアプリケーションおよび負荷にとって有用であることを確認する場合、これのみを行う必要があります。

partition-order-capacityの値は4つの場所のうち1つから設定され、2つはユーザーが明示的に設定しない場合のフォールバックとなります。次に、優先順位を示します。

1. チャネル構成に設定されたpartition-order-capacity要素。プロセッサの入力チャネルでこれを指定した場合、そのプロセッサのPARTITION_ORDERED問合せに対して有効になります。詳細は、付録D「スキーマ参照: コンポーネント構成wlevs_application_config.xsd」のD.72項「partition-order-capacity」を参照してください。

2. サーバー構成に設定されたpartition-order-capacityプロパティ。チャネルに値が設定されない場合、サーバー上で実行中のすべてのPARTITION_ORDERED問合せに対してこの値が使用されます。詳細は、付録F「スキーマ参照: サーバー構成wlevs_server_config.xsd」のF.29項「partition-order-capacity」を参照してください。

3. チャネル構成に設定されたmax-threadsの値。プロセッサの入力チャネルでこれを指定した場合、そのプロセッサのPARTITION_ORDERED問合せに対して有効になります。

4. partition-order-capacityの値とmax-threadsの値のいずれも指定しない場合、またはmax-threadsの値を0に設定した(つまりパススルー・チャネルである)場合に、システムのデフォルト値(現在は4に設定)が使用されます。

partition-order-capacityを使用する場合は、次の点に留意してください。

- partition-order-capacityの値は、ordering-constraint属性をPARTITION_ORDEREDに設定している場合のみ有用になります。

- partition-order-capacityを増やすと、通常、並列度およびスケーリングが増加します。たとえば、プロファイリングにロック競合のボトルネックが発生した場合、partition-order-capacityを増やして競合が減少しているかどうかを確認することが有用である可能性があります。

- パーティション化をCQLプロセッサで行う特定の方法により、partition-order-capacityを使用可能なスレッド数より大きく設定しても、場合によっては有用なことがあります。

- 非常に高い値を指定すると、使用するメモリーでリソース・コストがかかります。

- このパラメータの調整は、アプリケーションおよび入力率の詳細に大きく依存します。実験によって調整することは、最適な値を決定するのに必要な場合があります。

17.5.4 制限事項

可能であれば常にCQLプロセッサによって使用できるように、サポートを指定するパフォーマンス強化機能として、パラレル問合せ実行を検討してください。すべての問合せをパラレルで実行できるわけではありません。これには、特定のCQL言語機能を使用した問合せが含まれています。

たとえば、問合せで集計のフォーム(値の範囲から最大値を検索するなど)を使用する場合、CQLプロセッサは問合せを完全にはパラレルで実行できない可能性があります(これには、順序付けの制約を考慮して正しい結果を保証する必要があります)。一部の問合せのセマンティクスがそれ自体でも順序付け処理への問合せを制限しています。パラレル実行のサポートを指定しているかどうかに関係なく、このような問合せはシリアルで実行されます。

また、IStream、RStreamおよびDStream演算子は、処理のためにそのオペランドの状態を維持し、問合せを実行するために、CQLプロセッサがスレッドを同期化する必要があるようにします。

CQLプロセッサは、常に問合せのセマンティク目的に配慮していることに注意してください。ordering-constraint属性によってこの目的を変更する場合、この属性は目的を元のままに残す値に強制変換されます。

partitioning-expression属性を使用している場合、この属性は単一の式のみをサポートしていることに留意してください。値への複数のプロパティ名の入力はサポートされていません。

17.6 フォルトの処理

固有のフォルト処理メカニズムを持たないコードで発生するフォルトを処理するコードを書き込むことができます。これには、Oracle CQLコードおよびマルチスレッドEPNチャネルが含まれます。デフォルトでは、try/catch構造を使用するJavaと同様に、CQL言語には発生するエラーを処理するメカニズムがありません。CQLで発生するフォルトを処理するには、フォルト・ハンドラを書き込み、ハンドラをOracle CQLプロセッサなどのフォルトを処理するEPNステージに接続します。

フォルト・ハンドラとマルチスレッド・チャネル(つまり、max-threads設定が0より大きいチャネル)を関連付けることもできます。これにより、チャネルのダウンストリームであるステージからチャネルにスローされる例外が発生した場合のフォルト処理が提供されます。max-threads設定が0であるチャネルはアップストリーム・ステージに例外をすでに再スローしているパススルー・チャネルであることに注意してください。チャネルのフォルト・ハンドラに固有の追加情報は、10.1.8項「チャネルのフォルトの処理」を参照してください。

フォルト・ハンドラは、com.bea.wlevs.ede.api.FaultHandlerインタフェースを実装するJavaクラスです。OSGiサービスとしてフォルト・ハンドラを登録してステージに関連付けることによって、クラスをEPNステージに接続します。OSGiの詳細は、付録A「SpringおよびOSGiの追加情報」を参照してください。

カスタム・フォルト・ハンドラを使用しない場合、次のデフォルトのフォルト処理動作を取得します。

- 例外がOracle CQLで発生する場合、CQLエンジンは例外を捕捉し、問合せプロセッサを停止します。

- 例外がプロセッサのダウンストリームであるステージで発生する場合、そのステージはリスナーとして削除されます。

- 例外がログに記録され(CQLServerカテゴリの下)、例外の原因の一部であるイベントが破棄されます。

- アップストリーム・ステージは障害が通知されません。

書き込むカスタム・フォルト・ハンドラを使用する場合、次の操作を実行できます。

- ステージのフォルトをハンドラに例外としてスローするよう、フォルト・ハンドラとOracle CQLプロセッサまたはマルチスレッド・チャネルを関連付けます。そのため、例外を処理または再スローできます。

- コードで例外を処理するか、次のアップストリームのステージに再スローする場合、問合せ処理を続行できます。

- フォルトを処理する場合にイベント・データの損失を防ぎます。たとえば、データ・ソースへの接続を構成した場合、そこでイベント・データを保存できます。

- フォルトが発生した場合にフォルトおよびイベント情報をログに記録します。

- 他のOracle CQLプロセッサおよびチャネルに到達する場合に例外がスローされるアップストリームを処理するよう、EPNで必要な場合に複数のフォルト・ハンドラを使用します。

つまり、フォルト・ハンドラをOracle CQLプロセッサおよびマルチスレッド・チャネルを含むフォルトに対応する固有のメカニズムがないステージに関連付けることを検討します。固有の例外処理モデルを持つJavaで書き込むカスタム・アダプタなどの他のステージは、フォルト・ハンドラの利点がありません。

CQLプロセッサのアップストリームのステージへのフォルトの再スローを含む実行するアクションを決定するためにフォルト処理コードでフォルトを検証する場合、問合せを続行できます。

たとえば、CQLプロセッサのアップストリーム・ステージは、JMSトランザクションをロールバックして(セッションがトランザクションである場合)イベントを再送信できるオプションがあるJMSサブスクライバ・アダプタである可能性があります。イベントがすでに再送信され、問題を解決できないことがわかった場合、トランザクションをコミットすることもできます。

カスタム・フォルト・ハンドラを使用している場合でも、問合せが停止して再起動したかのように、問合せ状態がフォルトの後にリセットされます。ただし、問合せが停止し、すべての後続のイベントが削除される場合、デフォルトの動作と比較してください。

17.6.1 フォルト・ハンドラ・クラスの実装

com.bea.wlevs.ede.api.FaultHandlerインタフェースを実装して、フォルト・ハンドラ・クラスを作成します。クラスを書き込んだ後、OSGiサービスとして登録してフォルトを処理するステージと関連付けました。詳細は、17.6.2項「フォルト・ハンドラの登録」を参照してください。

インタフェースのメソッドhandleFaultの実装は、ハンドラを関連付けるEPNステージの例外を受信します。例外自体は、com.bea.wlevs.ede.api.EventProcessingExceptionのインスタンスまたはJVMエラーが発生した場合のjava.lang.Errorのインスタンスです。

メソッドは、コードで再スローする場合に例外が通過するアップストリーム・ステージの名前catchersを含む文字配列も受信します。配列に複数の捕捉コードがある場合、再スローされた例外がすべてを通過します。一時的な問合せの実行中に例外が発生する場合と例外がチャネルのフォルト・ハンドラにスローされる場合の捕捉コードの配列が空になる2つの場合があります。これらの場合、フォルト・ハンドラはバックグラウンド・スレッドのコンテキストで実行され、アップストリーム・ステージとのリンクはありません。

フォルト・ハンドラから再スローされる例外は、捕捉されるか、または捕捉できないステージ(関連付けられたフォルト・ハンドラがないプロセッサまたはマルチスレッド・チャネルなど)に到達するまで、アップストリームEPNステージを戻ります。例外を再スローする場合、捕捉コード・リストのチャネルは例外を捕捉するために関連付けられたフォルト・ハンドラを持つ必要があるので注意してください。

EventProcessingExceptionインスタンスは、CQLExecutionException、ArithmeticExecutionExceptionおよびその他(必ずOracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください)を含むクラスを拡張する例外タイプのいずれかである可能性もあります。EventProcessingExceptionインスタンスは、コードでフォルトの生成に含まれたイベントの挿入、削除および更新を取得できるメソッドを提供します。

メソッドの実装は、次のいずれかを実行する必要があります。

- Javaのtry/catch文のようにフォルトを使用します。実装でフォルトを再スローしない場合、イベント処理は後続のイベントを続行します。ただし、問合せを再起動したかのように、問合せ処理は状態をリセットして続行します。処理状態が失われ、フォルトを発生させたイベントの後のイベントから処理を新たに開始します。

- アップストリーム・ステージ(またはフォルト・ハンドラ)で受信するよう、フォルトを再スローします。フォルトを使用する場合のように、問合せ状態が後続のイベントでリセットされますが、問合せはイベントの処理を続行します。フォルトを受信するアップストリーム・ステージには、CQLプロセッサのMBeanインタフェースを使用して、問題のある問合せを明示的に停止するオプションが常にあります。

例17-13「フォルト・ハンドラ・クラス」では、コードでフォルトを処理する上位レベルの説明を示します。

例17-13 フォルト・ハンドラ・クラス

package com.example.faulthandler;

import com.bea.wlevs.ede.api.FaultHandler;

public class SimpleFaultHandler implements FaultHandler
{
private String suppress;

// Called by the server to pass in fault information.
@Override
public void handleFault(Throwable fault, String[] catchers) throws Throwable
{
// Log the fault.
return;
}
}

17.6.2 フォルト・ハンドラの登録

フォルト処理クラスを書き込んだ後、OSGiサービスとして登録して、EPNステージに関連付けることができます。これを実行する最も単純な方法は、EPNアセンブリ・ファイルで宣言的にハンドラを登録することです。

注意:

固有のOSGi動作のため、構成からランタイム・フォルト・ハンドラ登録が非同期的に発生します。つまり、ハンドラがフォルトを受信する前に少しのウォームアップ時間が必要になる場合があります。ネットワークに届く最初のイベントに対してハンドラの準備が整っていることを確認するには、アプリケーションでイベントの受信を開始する前に待機期間の追加を検討します。

例17-14「EPNステージにフォルト・ハンドラを登録するコード」では、EPNアセンブリ・ファイルの引用は、idがexampleProcessorであるOracle CQLプロセッサのフォルト・ハンドラとしてSimpleFaultHandlerクラスを登録するservice要素スタンザを示します。

例17-14 EPNステージにフォルト・ハンドラを登録するコード

<osgi:service interface="com.bea.wlevs.ede.api.FaultHandler">
<osgi:service-properties>
<entry key="application.identity" value="myapp"/>
<entry key="stage.identity" value="exampleProcessor"/>
</osgi:service-properties>
<bean class="com.example.faulthandler.SimpleFaultHandler"/>
</osgi:service>

<!-- A processor with a user-defined function. -->
<wlevs:processor id="exampleProcessor" >
...
</wlevs:processor>

OSGiサービスを登録するスキーマの詳細は、http://static.springsource.org/osgi/docs/1.1.x/reference/html/appendix-schema.htmlを参照してください。OSGiの詳細は、http://en.wikipedia.org/wiki/OSGiを参照してください。

17.7 Oracle CQLプロセッサ構成ファイルの例

この項では、Oracle CQLプロセッサ構成ファイルの例を記載します。次のものが含まれます。

- 17.7.1項「Oracle CQLプロセッサ・コンポーネント構成ファイル」

- 17.7.2項「Oracle CQLプロセッサEPNアセンブリ・ファイル」

17.7.1 Oracle CQLプロセッサ・コンポーネント構成ファイル

次の例では、Oracle CQLプロセッサのコンポーネント構成ファイルを示します。

<?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>
<name>proc</name>
<rules>
<view id="lastEvents"><![CDATA[
select mod(price)
from filteredStream[partition by srcId, cusip rows 1]
]]></view>
<query id="q1"><![CDATA[
SELECT *
FROM   lastEvents
WHERE  price > 10000
]]></query>
</rules>
</processor>
</n1:config>

この例では、name要素はprocプロセッサにOracle CQLルールが構成されていることを指定します。これは、これらのOracle CQLルールを実際のprocプロセッサ・インスタンスとリンクするために、アプリケーションを定義するEPNアセンブリ・ファイルに、procのid属性値を持つ対応するwlevs:processor要素が含まれている必要があることを意味します。(17.7.2項「Oracle CQL Processor EPNアセンブリ・ファイル」を参照)。

このOracle CQLプロセッサ・コンポーネント構成ファイルは、Oracle CQL view文(副問合せ同等のOracle CQL)を指定するための表示の要素も定義します。ビュー選択の結果はダウンストリーム・チャネルに出力されません。

最後に、このOracle CQLプロセッサ・コンポーネント構成ファイルはquery要素を定義し、Oracle CQL問合せ文を指定します。問合せ文は、ビューから選択します。デフォルトでは、問合せの結果はダウンストリーム・チャネルに出力されます。selector要素を使用して、チャネル構成でこの動作を制御できます。詳細は、次を参照してください:

- 10.2.1項「Oracle Event Processing IDE for Eclipseを使用してシステム・タイムスタンプ・チャネルを構成する方法」

- 10.2.2項「Oracle Event Processing IDE for Eclipseを使用してアプリケーション・タイムスタンプ・チャネルを構成する方法」

17.7.2 Oracle CQLプロセッサEPNアセンブリ・ファイル

次の例では、Oracle CQLプロセッサのEPNアセンブリ・ファイルを示します。

<?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-v11_1_1_6.xsd">

<wlevs:event-type-repository>
<wlevs:event-type type-name="ExchangeEvent">
<wlevs:properties>
<wlevs:property name="symbol" type="char[]" length="16" />
<wlevs:property name="price" type="java.lang.Double" />
</wlevs:properties>
</wlevs:event-type>
<wlevs:event-type type-name="StockExchangeEvent">
<wlevs:properties>
<wlevs:property name="symbol" type="char[]" length="16" />
<wlevs:property name="price" type="java.lang.Double" />
<wlevs:property name="exchange" type="char[]" length="16" />
</wlevs:properties>
</wlevs:event-type>
<wlevs:event-type type-name="StockEvent">
<wlevs:properties>
<wlevs:property name="symbol" type="char[]" length="16" />
<wlevs:property name="exchange" type="char[]" length="16" />
</wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

<!-- Assemble EPN (event processing network) -->
<wlevs:adapter id="adapter" class="com.bea.wlevs.example.db.ExchangeAdapter" >
<wlevs:listener ref="ExchangeStream"/>
</wlevs:adapter>

<wlevs:channel id="ExchangeStream" event-type="ExchangeEvent" >
<wlevs:listener ref="proc"/>
</wlevs:channel>

<wlevs:table id="Stock" event-type="StockEvent" data-source="StockDs" />

<wlevs:processor id="proc" advertise="true" >
<wlevs:table-source ref="Stock" />
</wlevs:processor>

<wlevs:channel id="OutputStream" advertise="true" event-type="StockExchangeEvent" >
<wlevs:listener ref="bean"/>
<wlevs:source ref="proc"/>
</wlevs:channel>

<osgi:reference id="ds" interface="com.bea.core.datasource.DataSourceService" cardinality="0..1" />

<!-- Create business object -->
<bean id="bean" class="com.bea.wlevs.example.db.OutputBean">
<property name="dataSourceService" ref="ds"/>
</bean>

</beans>

18 データ・カートリッジを使用したアプリケーションの構成

この章では、Oracle Event Processingで使用するために、Oracle Continuous Query Language (CQL)を拡張するOracle JDBCカートリッジおよびOracle Spatialカートリッジを構成する方法について説明します。

この章の内容は次のとおりです。

- 18.1項「データ・カートリッジ・アプリケーション・コンテキストについて」

- 18.2項「Oracle Spatialアプリケーション・コンテキストの構成方法」

- 18.3項「Oracle JDBCデータ・カートリッジ・アプリケーション・コンテキストの構成方法」

データ・カートリッジの詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のデータ・カートリッジの概要に関する項を参照してください。

18.1 データ・カートリッジ・アプリケーション・コンテキストについて

データ・カートリッジの実装によって、Oracle Event Processingサーバーがデータ・カートリッジのインスタンスとインスタンスによって提供される複合オブジェクトに伝播するアプリケーション・コンテキストを定義できます。

次のデータ・カートリッジに対してアプリケーション・コンテキストを構成できます。

- 18.2項「Oracle Spatialアプリケーション・コンテキストの構成方法」

- 18.3項「Oracle JDBCデータ・カートリッジ・アプリケーション・コンテキストの構成方法」

データ・カートリッジの詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のデータ・カートリッジの概要に関する項を参照してください。

18.2 Oracle Spatialアプリケーション・コンテキストの構成方法

Oracle Event Processingアプリケーションのイベント処理ネットワーク(EPN)アセンブリ・ファイルにあるspatial:context要素を使用して、Oracle Spatialのインスタンスのアプリケーション・コンテキストを定義します。

com.oracle.cartridge.spatial.GeometryからのすべてのコンストラクタとメソッドおよびOracle Spatial機能は、spatial:contextを認識します。たとえば、SRIDがOracle Spatialアプリケーション・コンテキストの値から自動的に設定されます。

詳細は、次を参照してください:

- 『Oracle Spatial開発者ガイド』(http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_objrelschema.htm#SPATL492)のSDO_SRIDに関する項

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のOracle Spatialに関する項

Oracle Spatialアプリケーション・コンテキストを構成する手順:

1. Oracle Event Processing IDE for EclipseのEPNエディタを開きます。
7.1項「EPNエディタを開く」を参照してください。

2. パッケージcom.oracle.cep.cartridge.spatialをOracle Event ProcessingアプリケーションのMANIFEST.MFファイルにインポートします。
詳細は、5.7.5項「パッケージのインポート方法」を参照してください。

3. いずれかのコンポーネントを右クリックし、「アセンブリのソースに移動」を選択します。

4. EPNファイルを編集し、例18-1に示すとおり、必須ネームスペースとスキーマの場所のエントリを追加します。

例18-1 EPNアセンブリ・ファイル: Oracle Spatialネームスペースおよびスキーマの場所

<?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"
xmlns:spatial="http://www.oracle.com/ns/ocep/spatial"
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-v11_1_1_6.xsd"
http://www.oracle.com/ns/ocep/spatial
http://www.oracle.com/ns/ocep/spatial/ocep-spatial.xsd">

5. 例18-1に示すように、EPNファイルを編集してspatial:context要素を追加します。

例18-2 EPNアセンブリ・ファイル内のspatial:context要素

<spatial:context id="SpatialGRS80" />

6. このEPN内で一意の値をid属性に割り当てます。
これは、以降のOracle CQL問合せで、このアプリケーション・コンテキストを参照するときに使用される名前です。例18-2で、idはSpatialGRS80です。

注意:

id値は、Oracle Spatial名のspatialと異なる必要がります。詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のデータ・カートリッジ名に関する項を参照してください。

7. アプリケーション要件に応じて、spatial:context要素の他の属性を構成します。
表18-1はspatial:context要素の属性を示します。

表18-1 spatial:context要素の属性

属性

説明

anyinteract-tolerance

containまたはinside演算子のデフォルトの許容度。

デフォルト: 0.0000005

rof

バッファリングとプロジェクト化に使用するReciprocal Of Flattening (ROF)パラメータを定義します。

デフォルト: 298.257223563

sma

バッファリングとプロジェクト化に使用するSemi-Major Axis (SMA)パラメータを定義します。

デフォルト: 6378137.0

srid

SRID整数。有効な値:

- CARTESIAN: 直交座標系の場合。

- LAT_LNG_WGS84_SRID: WGS84座標系の場合。

- Oracle Spatial SDO_COORD_SYS表のCOORD_SYS_ID列の整数値。

デフォルト: LAT_LNG_WGS84_SRID

tolerance

バッファリングなどの幾何演算で無視される最短距離。

デフォルト: 0.000000001

例18-3は、測地基準系1980 (GRS80)座標系(srid="4269")を使用してEPNアセンブリ・ファイルでSpatialGRS80という名前の空間コンテキストを作成する方法を示します。

例18-3 EPNアセンブリ・ファイル内のspatial:context要素

<spatial:context id="SpatialGRS80" srid="4269" sma="63787.0" rof="298.25722101" />

8. 名前によってこのアプリケーション・コンテキストを参照するOracle CQL問合せを作成します。
例18-4は、Oracle CQL問合せでspatial:contextを参照する方法を示します。この場合、問合せはSpatialGRS80 (例18-2で定義されます)のリンク名を使用してこのアプリケーション・コンテキストをOracle Spatialに伝播します。SpatialGRS80のspatial:context属性設定は、createPointメソッド・コールに適用されます。アプリケーション・コンテキストはSRIDを定義するため、createPointメソッドにその引数を渡す必要はありません。

例18-4 Oracle CQL問合せでspatial:contextの参照

<view  id=”createPoint”>
select com.oracle.cep.cartridge.spatial.Geometry.createPoint@SpatialGRS80(lng, lat, 0d)
from CustomerPos[NOW]
</view>

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のOracle Spatialの使用に関する項を参照してください。

18.3 Oracle JDBCデータ・カートリッジ・アプリケーション・コンテキストの構成方法

次を使用して、Oracle JDBCデータ・カートリッジのインスタンスのアプリケーション・コンテキストを定義します。

- EPNアセンブリ・ファイルのjdbc:jdbc-context要素

- コンポーネント構成ファイルのjc:jdbc-ctx要素
jc:jdbc-ctx要素では次のことが可能です。

- jdbc:jdbc-contextを1つだけ参照する

- data-sourceを1つだけ参照する

- 1つ以上のSQL関数を定義する

注意:

SQL関数のすべてのSELECTリスト列に対して、別名を指定する必要があります。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のOracle JDBCデータ・カートリッジに関する項を参照してください。

Oracle JDBCデータ・カートリッジ・アプリケーション・コンテキストを構成する手順:

1. Oracle Event Processing IDE for EclipseのEPNエディタを開きます。
7.1項「EPNエディタを開く」を参照してください。

2. いずれかのコンポーネントを右クリックし、「アセンブリのソースに移動」を選択します。

3. EPNファイルを編集し、例18-5に示すとおり、必須ネームスペースとスキーマの場所のエントリを追加します。

例18-5 EPNアセンブリ・ファイル: Oracle JDBCデータ・カートリッジ・ネームスペースおよびスキーマの場所

<?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"
xmlns:jdbc="http://www.oracle.com/ns/ocep/jdbc"
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-v11_1_1_6.xsd"
http://www.oracle.com/ns/ocep/jdbc
http://www.oracle.com/ns/ocep/jdbc/ocep-jdbc.xsd">

4. 例18-6に示すように、EPNファイルを編集してjdbc:jdbc-context要素を追加します。

例18-6 EPNアセンブリ・ファイル内のjdbc:jdbc-context要素: id

<jdbc:jdbc-context id="JdbcCartridgeOne"/>

5. このEPN内で一意の値をid属性に割り当てます。
これは、以降のOracle CQL問合せで、このアプリケーション・コンテキストを参照するときに使用される名前です。例18-6で、idはJdbcCartridgeOneです。

注意:

id値は、Oracle JDBCデータ・カートリッジ名のjdbcと異なる必要があります。詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のデータ・カートリッジ名に関する項を参照してください。

6. 必要なプロセッサを右クリックし、「構成のソースに移動」を選択します。

7. 例18-7に示すように、コンポーネント構成ファイルを編集して必須ネームスペースのエントリを追加します。

例18-7 コンポーネント構成ファイル: Oracle JDBCデータ・カートリッジ・ネームスペース

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jc="http://www.oracle.com/ns/ocep/config/jdbc
xsi:schemaLocation="
http://www.oracle.com/ns/ocep/config/jdbc
http://www.oracle.com/ns/ocep/config/jdbc/ocep_jdbc_context.xsd">

8. 例18-8に示すように、コンポーネント構成ファイルを編集してjc:jdbc-ctx要素を追加します。

例18-8 コンポーネント構成ファイル内のjc:jdbc-ctx要素

<jc:jdbc-ctx>
</jc:jdbc-ctx>

9. 例18-9に示すように、値がEPNアセンブリ・ファイルに定義したOracle JDBCアプリケーション・コンテキストの名前となるname子要素を追加します。

例18-9 コンポーネント構成ファイル内のjc:jdbc-ctx要素: name

<jc:jdbc-ctx>
<name>JdbcCartridgeOne</name>
</jc:jdbc-ctx>

10. 値がracle Event Processingサーバーのconfig.xmlファイルで定義されているデータソース名となる、data-source子要素を追加します。
詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle CEPのJDBCの構成に関する項

- F.10項「data-source」

例18-10は、StockDSというデータソースを指定する方法を示します。

例18-10 コンポーネント構成ファイル内のjc:jdbc-ctx要素: data-source

<jc:jdbc-ctx>
<name>JdbcCartridgeOne</name>
<data-source>StockDS</data-source>
</jc:jdbc-ctx>

11. 例18-11に示すように、function子要素を使用して1つ以上のSQL関数を作成します。

例18-11 コンポーネント構成ファイル内のjc:jdbc-ctx要素: function

<jc:jdbc-ctx>
<name>JdbcCartridgeOne</name>
<data-source>StockDS</data-source>
<function name="getDetailsByOrderIdName">
<param name="inpOrderId" type="int" />
<param name="inpName" type="char" />
<return-component-type>
com.oracle.cep.example.jdbc_cartridge.RetEvent
</return-component-type>
<sql><![CDATA[
SELECT
Employee.empName as employeeName,
Employee.empEmail as employeeEmail,
OrderDetails.description as description
FROM
PlacedOrders, OrderDetails , Employee
WHERE
PlacedOrders.empId = Employee.empId AND
PlacedOrders.orderId = OrderDetails.orderId AND
Employee.empName = :inpName AND
PlacedOrders.orderId = :inpOrderId
]]></sql>
</function>
</jc:jdbc-ctx>

注意:

SQL問合せのすべてのSELECTリスト列に対して、別名を指定する必要があります。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のSQL文の定義に関する項を参照してください。

12. Oracle JDBCデータ・カートリッジ・アプリケーション・コンテキストを使用して、SQL関数を起動するOracle CQL問合せを作成します。
例18-12は、Oracle CQL問合せでjdbc:jdbc-contextを参照する方法を示します。この場合、問合せはJdbcCartridgeOne (例18-11で定義)のリンク名を使用してこのアプリケーション・コンテキストをOracle JDBCデータ・カートリッジに伝播します。例18-12のOracle CQL問合せはOracle JDBCデータ・カートリッジ・コンテキストJdbcCartridgeOneで定義した関数getDetailsByOrderIdNameを起動します。

例18-12 Oracle CQL問合せでのJDBCアプリケーション・コンテキストの参照

<processor>
<name>Proc</name>
<rules>
<query id="q1"><![CDATA[
RStream(
select
currentOrder.orderId,
details.orderInfo.employeeName,
details.orderInfo.employeeemail,
details.orderInfo.description
from
OrderArrival[now] as currentOrder,
TABLE(getDetailsByOrderIdName@JdbcCartridgeOne(
currentOrder.orderId, currentOrder.empName
) as orderInfo
) as details
)
]]></query>
</rules>
</processor>

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のOracle JDBCデータ・カートリッジを使用したOracle CQL問合せの定義に関する項を参照してください。

19 Oracle EPLでのイベント・ストリームの問合せ

この章では、Oracle Event Processingイベント処理ネットワーク用にOracle Event Processing Language (EPL)プロセッサを構成する方法について説明します。EPLは非推奨です。新しいアプリケーションではOracle Continuous Query Languageを使用する必要があります。

この章の内容は次のとおりです。

- 19.1項「EPLプロセッサ・コンポーネント構成の概要」

- 19.2項「EPLプロセッサの構成」

- 19.3項「EPLプロセッサ・キャッシュ・ソースの構成」

- 19.4項「EPLプロセッサ構成ファイルの例」

注意:

イベント処理言語(EPL)は、Oracle Event Processing 11gリリース1 (11.1.1)ではOracle CQLによって置き換えられます。Oracle Event Processingは、EPLとの下位互換性をサポートします。詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

19.1 EPLプロセッサ・コンポーネント構成の概要

Oracle Event Processingアプリケーションには、1つ以上のイベント・プロセッサ、もしくはプロセッサが含まれています。各プロセッサは1つまたは複数のアダプタからのイベントを入力として受け取ります。これらのアダプタでは、ソースから連続的なデータ・ストリームを送信するデータ・フィードにリスニングします。金融データ・フィードからOracle Event Processingロード・ジェネレータまで、任意のソースを使用できます。

EPLプロセッサの主な機能は、受信イベントのサブセットを選択してプロセッサをリスニングしているコンポーネントに渡す、関連付けられたEvent Processing Language (EPL)のルールです。リスニングするコンポーネントには、他のプロセッサまたは通常はイベント処理ネットワークの最後を定義し、クライアント・アプリケーションへのパブリッシュなどイベントでなんらかの処理を実行するビジネス・オブジェクトPOJOを指定できます。EPLの詳細は、『Oracle Fusion Middleware Oracle Event Processing EPL言語リファレンス』を参照してください。

アプリケーションの各EPLプロセッサに対して、コンポーネント構成ファイルにprocessor要素を作成する必要があります。このprocessor要素には、プロセッサのEPLルールの初期セット、および次のような任意のプロセッサ構成を指定します。

- Oracle Event Processingアプリケーションでリレーショナル・データベースへの接続が必要な場合は、JDBCデータ・ソースのリファレンス。

- プロセッサのモニターの有効化。

EPLプロセッサEPNアセンブリ・ファイルに、任意の追加EPLプロセッサの機能を構成できます。

コンポーネント構成ファイルprocessor要素のname要素は、EPNアセンブリ・ファイルprocessor要素のid属性と一致している必要があります。たとえば、例19-1に表示されるEPNアセンブリ・ファイルprocessor要素が指定され、例19-2に表示される対応するコンポーネント構成ファイルprocessor要素が指定されています。

例19-1 EPNアセンブリ・ファイル EPLプロセッサID: proc

<wlevs:processor id="proc" provider="epl" >
<wlevs:table-source ref="Stock" />
</wlevs:processor>

例19-2 コンポーネント構成ファイル EPLプロセッサ名: proc

<processor>
<name>proc</name>
<rules>
<rule id="myRule"><![CDATA[
SELECT symbol, AVG(price)
FROM (SELECT * FROM MarketTrade WHERE blockSize > 10)
RETAIN 100 EVENTS PARTITION BY symbol WITH LARGEST price
GROUP BY symbol
HAVING AVG(price) >= 100
ORDER BY symbol
]]></rule>
</rules>
</procesor>

注意:

Oracle Event Processing 11gリリース1 (11.1.1)では、Event Processing Language (EPL)はOracle CQLで置換されているため、デフォルトのプロセッサ・プロバイダはcqlです。EPNアセンブリ・ファイルにEPLプロセッサを指定するには、例19-1に示すように、wlevs:processor要素のprovider属性をeplに設定する必要があります。Oracle Event Processingは、EPLとの下位互換性をサポートします。詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

processor要素は、次のいずれかの任意のコンポーネント構成ファイルに作成できます。

- デフォルトのOracle Event Processingアプリケーション構成ファイル(デフォルトでは、META-INF/wlevs/config.xml)。

- 個別の構成ファイル。

アプリケーションに1つ以上のプロセッサが含まれている場合は、デフォルトconfig.xmlファイルでプロセッサごとにprocessor要素を作成できます。また、プロセッサごとにMETA-INF/wlevsに個別のXMLファイルを作成するか、またはすべてのプロセッサの構成のみでなく、アプリケーション内のすべてのコンポーネント(アダプタ、プロセッサ、およびチャネル)が含まれる単一のXMLファイルをMETA-INF/wlevsに作成できます。開発環境に最も適した方法を選択します。

デフォルトでは、Oracle Event Processing IDE for Eclipseは、1つのコンポーネント構成ファイルおよび1つのEPNアセンブリ・ファイルを作成します。Oracle Event Processing IDE for Eclipseを使用してEPLプロセッサを作成する場合、デフォルトでプロセッサ要素がデフォルト・コンポーネント構成ファイルMETA-INF/wlevs/config.xmlファイルに追加されます。

コンポーネント構成ファイルは、Oracle Event Processingアプリケーション・バンドルの一部としてデプロイされます。Oracle Event Processing Visualizer、wlevs.Adminユーティリティを使用するか、または適切なJMX Mbeanを直接操作して、後で実行時にこの構成を更新できます。

詳細は、次を参照してください:

- 1.4.2項「コンポーネント構成ファイルの概要」

- 1.4.1項「EPNアセンブリ・ファイルの概要」

- 5.3項「EPNアセンブリ・ファイルの作成」

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のwlevs.Adminコマンドライン・リファレンスに関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event ProcessingのJMXの構成に関する項

EPLプロセッサ構成の詳細は、次の項を参照してください。

- 19.2項「EPLプロセッサの構成」

- 19.3項「EPLプロセッサ・キャッシュ・ソースの構成」

- 19.4項「EPLプロセッサ構成ファイルの例」

19.2 EPLプロセッサの構成

以下の手順では、プロセッサの構成ファイルを作成する主な手順について示します。簡略化のため、この手順ではすべてのプロセッサを1つのXMLファイルに構成することを想定しています。ただし、各プロセッサごとに個別のファイルを作成することもできます。

プロセッサ構成ファイルを記述する完全なXSDスキーマは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

プロセッサ構成ファイルの完全な例は、19.4項「EPLプロセッサ構成ファイルの例」を参照してください。

19.2.1 EPLプロセッサを手動で構成する方法

任意のテキスト・エディタを使用して、手動でEPLプロセッサを構成できます。

EPLプロセッサを構成するには:

1. プロセッサで実行されるEPLルールのセットを設計します。これらのルールでは、次の2つの例のように、単純にすべての受信イベントを選択し、時間やプロパティの値などに基づいてセットを制限することが可能です。

SELECT * from Withdrawal RETAIN ALL
SELECT symbol, AVG(price)
FROM (SELECT * FROM MarketTrade WHERE blockSize > 10)
RETAIN 100 EVENTS PARTITION BY symbol WITH LARGEST price
GROUP BY symbol
HAVING AVG(price) >= 100
ORDER BY symbol

EPLにはリレーショナル・データベース表の問合せに使用されるStructure Query Language (SQL)との多くの共通点がありますが、これらの構文は多くの点で異なります。その他の大きな相違点として、EPL問合せではもう1つの面(時間)が考慮されます。静的なSQL問合せとは異なり、プロセッサではEPLが継続的に実行されます。

EPLに関する追加概念情報と、独自のEPLルールの設計と作成に役立つ例およびリファレンス情報は、『Oracle Fusion Middleware Oracle Event Processing EPL言語リファレンス』を参照してください。

2. アプリケーションの各プロセッサについて上記の手順で設計されたEPLルールおよびオプションの機能が含まれた、プロセッサ構成XMLファイルを作成します。
このXMLファイルの名前は自分で決定しますが、その拡張は.xmlで終了することが必要です。

プロセッサ構成ファイルのルート要素はconfigで、ネームスペース定義は次の手順に示します。

3. アプリケーションの各プロセッサに対して、configのprocessor子要素を追加します。
各プロセッサをname子要素で一意に識別します。この名前は、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルのwlevs:processor要素のid属性の値と同じである必要があります。これによって、Oracle Event Processingは、このプロセッサ構成はEPNアセンブリ・ファイルのどのプロセッサ・コンポーネントに適用されるかを理解します。詳細は、5.3項「EPNアセンブリ・ファイルの作成」を参照してください。

たとえば、アプリケーションに2つのプロセッサがある場合、構成ファイルは最初に以下のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<n1:config xmlns:n1="http://www.bea.com/ns/wlevs/config/application">
<processor>
<name>firstProcessor</name>
...
</processor>
<processor>
<name>secondProcessor</name>
...
</processor>
</n1:config>

この例では、構成ファイルには、firstProcessorおよびsecondProcessorという2つのプロセッサが含まれています。これは、EPNアセンブリ・ファイルには、同じ識別子を持つ少なくとも2つのプロセッサ登録が含まれる必要があることを意味します。

<wlevs:processor id="firstProcessor" provider="epl"...>
...
</wlevs:processor>
<wlevs:processor id="secondProcessor" provider="epl"...>
...
</wlevs:processor>

注意:

Oracle Event Processing 11gリリース1 (11.1.1)では、Event Processing Language (EPL)はOracle CQLで置換されているため、デフォルトのプロセッサ・プロバイダはcqlです。EPNアセンブリ・ファイルにEPLプロセッサを指定するには、wlevs:processor要素のprovider属性をeplに設定する必要があります。Oracle Event Processingは、EPLとの下位互換性をサポートします。詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

注意:

XMLファイルの識別子と名前は大/小文字が区別されるため、EPNアセンブリ・ファイルでコンポーネントの識別子を参照するときは、必ず大/小文字を同一にします。

4. 各processorにrules子要素を追加して、このプロセッサに設計されているEPLルール・セットに対応する1つ以上のrule要素をグループ化します。
rule要素の必要なid属性を使用して、各ルールを一意に識別します。XML CDATAタイプを使用して実際のEPLルールを入力します。例:

<processor>
<name>firstProcessor</name>
<rules>
<rule id="myFirstRule"><![CDATA[
SELECT * from Withdrawal RETAIN ALL
]]></rule>
<rule id="mySecondRule"><![CDATA[
SELECT * from Checking RETAIN ALL
]]></rule>
</rules>
</processor>

5. 必要に応じて、次の追加processor子要素を追加してデフォルトのプロセッサ構成をオーバーライドします。

- 必要に応じて、processor要素のdatabase子要素を追加してアプリケーションのJDBCデータ・ソースを定義します。EPLルールでイベントのストリームが実際のリレーショナル・データベース表に結合される場合は、これを追加する必要があります。
databaseのname子要素を使用して、データ・ソースを一意に識別します。

databaseのdata-source-name子要素を使用してデータ・ソースの実際の名前を指定します。この名前は、使用するドメインのconfig.xmlファイル内のdata-source構成オブジェクトのname子要素に対応します。

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のリレーショナル・データベースへのアクセスの構成に関する項を参照してください。

例:

<processor>
<name>firstProcessor</name>
<rules>
....
</rules>
<database>
<name>myDataSource</name>
<data-source-name>rdbmsDataSource</data-source-name>
</database>
</processor>

6. ファイルを保存して閉じます。

7. 必要に応じて、アセンブリ・ファイルに追加のEPLプロセッサ機能を構成します。

- 19.3項「EPLプロセッサ・キャッシュ・ソースの構成」

19.3 EPLプロセッサ・キャッシュ・ソースの構成

EPLプロセッサを構成してOracle Event Processingキャッシュにアクセスできます。

詳細は、次を参照してください:

- 13.1項「キャッシュの統合の概要」

- 13.6.6項「EPLユーザー定義関数からキャッシュへのアクセス」

- 13.6.2項「EPL文からキャッシュへのアクセス」

19.4 EPLプロセッサの構成ファイルの例

この項では、Oracle CQLプロセッサ構成ファイルの例を記載します。次のものが含まれます。

- 19.4.1項「EPLプロセッサ・コンポーネント構成ファイル」

- 19.4.2項「EPLプロセッサEPNアセンブリ・ファイル」

19.4.1 EPLプロセッサ・コンポーネント構成ファイル

次の例は、19.2項「EPLプロセッサの構成」」に示すmyProcessorEPLプロセッサのサンプルのEPL問合せを構成する方法を示します。

<?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">
<processor>
<name>myProcessor</name>
<rules>
<rule id="myRule"><![CDATA[
SELECT symbol, AVG(price)
FROM (SELECT * FROM MarketTrade WHERE blockSize > 10)
RETAIN 100 EVENTS PARTITION BY symbol WITH LARGEST price
GROUP BY symbol
HAVING AVG(price) >= 100
ORDER BY symbol
]]></rule>
</rules>
</processor>
</n1:config>

例では、name要素は、単一のEPLルールが構成されているプロセッサはmyProcessorという名前であることを指定しています。これは、アプリケーションを定義するEPNアセンブリ・ファイルには、これらのEPLルールを実際のmyProcessorEPLプロセッサ・インスタンスにリンクするために、対応する<wlevs:processor id="myProcessor" provider="epl" />要素を含む必要があることを示します(19.4.2項「EPLプロセッサEPNアセンブリ・ファイル」を参照してください)。

19.4.2 EPLプロセッサのEPNアセンブリ・ファイル

次の例は、EPLプロセッサのEPNアセンブリ・ファイルを示しています。

<?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-v11_1_1_6.xsd">
<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>
<wlevs:adapter
id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter">
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
</wlevs:adapter>
<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent">
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>
<wlevs:processor id="helloworldProcessor" provider="epl" />
<wlevs:channel
id="helloworldOutputChannel" event-type="HelloWorldEvent" advertise="true">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>
</beans>

20 イベント・レコードと再生の構成

この章では、イベント永続ストアを指定してストアに問い合せる方法など、Oracle Event Processingイベント処理ネットワークをデバッグするためにイベントの記録および再生を構成する方法について説明します。

この章の内容は次のとおりです。

- 20.1項「イベント・レコードと再生の構成の概要」

- 20.2項「アプリケーションにおけるイベントの記録および再生の構成」

- 20.3項「カスタム・イベント・ストア・プロバイダの作成」

20.1 イベントの記録および再生の構成の概要

Oracle Event Processingイベント・リポジトリ機能を使用すると、イベント処理ネットワーク(EPN)コンポーネントを離れたイベントをデータベース表などのストアに永続化し、後からそれらを再生したり、イベントBeanなどのコンポーネントからイベントに対する問合せを明示的に実行したりすることができます。

この機能の一般的な使用例には、現在実行中のアプリケーションの問題をデバッグする機能があります。問題発生時にEPNのノードでイベントを記録していた場合は、後から同じイベント・リストを再生し、デバッグ目的のために問題のシナリオを再現できます。

次の図は、イベント・レコードと再生の例のEPNを示し、イベントがどの時点で記録され、どこで再生されるかを示しています。simpleEventSourceアダプタはイベントの記録が構成されています。図に示すように、イベントがアダプタを離れた時点で記録が行われます。eventStreamチャネルではイベントの再生が構成されています。図に示すように、イベントがチャネルに到着した時点で再生が行われます。

図20-1 EPNでの記録と再生の構成

「図20-1 EPNでの記録と再生の構成」の説明

この項では次について説明します:

- 20.1.1項「永続イベント・ストアへのイベントの格納」

- 20.1.2項「イベントの記録」

- 20.1.3項「イベントの再生」

- 20.1.4項「格納されたイベントの問合せ」

- 20.1.5項「記録と再生の例」

20.1.1 永続イベント・ストアへのイベントの格納

イベントを記録する場合、Oracle Event Processingサーバーは永続イベント・ストアにそのイベントを格納します。Oracle Event Processingサーバーが提供またはユーザー自身で定義する独自の永続イベント・ストアを使用できます。

- 20.1.1.1項「デフォルトの永続イベント・ストア」

- 20.1.1.2項「カスタム永続イベント・ストア」

- 20.1.1.3項「永続イベント・ストア・スキーマ」

20.1.1.1 デフォルトの永続イベント・ストア

デフォルトでは、Oracle Event Processingは、Oracle Event Processingサーバーにバンドルされている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 Event Processingサーバーは次の場所にBerkeley DBインスタンスを作成します。

ORACLE_CEP_HOME/user_projects/domains/domainname/servername/bdb

ORACLE_CEP_HOMEは、Oracle Event Processing (/oracle_homeなど)をインストールしたディレクトリ、domainnameはドメイン名、そしてservernameは、(/oracle_cep/user_projects/domains/mydomain/myserverなど)サーバー名です。

20.2.1項「Oracle Event Processingサーバーのイベント・ストアの構成」の説明に従って、bdb-config要素db-env-path子要素を構成することによりこのデフォルトを変更できます。

20.1.1.2 カスタム永続イベント・ストア

オプションで、カスタム永続イベント・ストア・プロバイダを作成して記録したイベントを格納できます。たとえば、OracleデータベースまたはDerbyのリレーショナル・データベース管理システムを永続イベント・ストアとして指定できます。

詳細は、20.3項「カスタム・イベント・ストア・プロバイダの作成」を参照してください。

20.1.1.3 永続イベント・ストア・スキーマ

記録したイベントを格納するための実際のデータベース・スキーマは作成しません。記録および再生機能を使用するアプリケーションをデプロイし、記録が始まると、Oracle Event Processingサーバーが自動的に実際のデータベース・スキーマを作成します。

詳細は、20.2.5項「Berkeleyデータベース・スキーマの説明」を参照してください。

20.1.2 イベントの記録

プロセッサ、アダプタ、ストリーム、イベントBeanなど、イベント処理ネットワーク(EPN)でイベントを生成する任意のコンポーネントの記録を構成できます。プロセッサおよびストリームでは常にイベントが生成されます。アダプタおよびイベントBeanではEventSourceインタフェースを実装する必要があります。また、EPNの異なるコンポーネントからのイベントを異なる永続ストアに格納したり、すべてのイベントを同じストアに格納したりするよう構成できます。コンポーネントによって出力されるイベントのみが記録されることに注意してください。

コンポーネントのイベントの記録を有効にするには、構成ファイルを更新し、record-parameters要素を追加します。record-parametersの子要素を使用して、イベントの記録先となるイベント・ストア、記録が行われる最初の期間、格納するイベント・タイプのリストなどを指定します。

アプリケーションのデプロイが完了し、イベントがネットワーク内で循環を開始すると、特定の開始時間を構成した場合は記録が自動的に開始され、または管理ツールを使用して記録が動的に開始されます。記録が構成された各コンポーネントについて、Oracle Event Processingではコンポーネントを離れたイベントが、記録時のタイム・スタンプと共に適切なストアに格納されます。

20.1.3 イベントの再生

プロセッサ、アダプタ、ストリーム、イベントBeanなど、イベント処理ネットワーク(EPN)の任意のコンポーネントの再生を構成できます。一般に、再生コンポーネントはネットワーク内でイベントを記録するノードよりも後のノードです。

コンポーネントのイベントの再生を有効にするには、構成ファイルを更新し、playback-parameters要素を追加します。playback-parametersの子要素を使用して、イベントを再生するイベント・ストア、再生するイベント・タイプのリスト(デフォルトではすべて再生)、再生する記録されたイベントの期間などを指定します。デフォルトでは、Oracle Event Processingでは正確な速度でイベントが再生されますが、イベントが記録元のコンポーネントを離れたときの元の速度よりも速いまたは遅い速度で再生されるように構成できます。

アプリケーションのデプロイが完了し、イベントがネットワーク内で循環を開始すると、管理ツール(Oracle Event Processing Visualizerまたはwlevs.Admin)を使用して再生を開始する必要があります。Oracle Event Processingでは適切な永続ストアからイベントが読み込まれ、EPNの適切な場所に挿入されます。

コンポーネントが再生イベントを取得した場合は、元のイベントとまったく同じように見えることに注意してください。また、ネットワークの後ろのコンポーネントでイベントの記録が構成されている場合、Oracle Event Processingでは再生イベントが「実際の」イベントと共に記録されます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNを流れるイベントの記録と再生に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のイベントの記録と再生を制御するコマンドに関する項

20.1.4 格納されたイベントの問合せ

イベント・ストアAPIを使用して、記録時間の範囲とイベント記録元のコンポーネントを指定することで、ストア内の過去のイベントに対する問合せを実行できます。実際に使用する問合せはイベント・リポジトリ・プロバイダによって異なります。たとえば、Oracle Event Processingに付属のデフォルト永続イベント・ストア・プロバイダではOracle CQLまたはEPLを使用します。これらのAPIを使用してイベント・ストアの古いイベントを削除できます。これらのAPIを使用してイベント・ストアの古いイベントを削除することもできます。

20.1.5 記録と再生のサンプル

この項のサンプル・コードは、ORACLE_CEP_HOME\ocep_11.1\samples\source\applications\recplayディレクトリにあるイベントの記録と再生の例からの抜粋です。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Event Processingのメイン・インストール・ディレクトリです。

例の実行とビルドの詳細は、2.10項「イベントの記録および再生の例」を参照してください。

20.2 アプリケーションにおけるイベントの記録および再生の構成

次の手順で説明しているとおり、イベント・リポジトリを使用する方法に応じて異なるタスクを実行する必要があります。追加の詳細を示す節を参照してください。

アプリケーションのイベントの記録と再生を構成するには:

1. オプションでは、Oracle Event Processingサーバー・インスタンスのためBerkeleyデータベース・イベント・ストアを構成します。
デフォルトBerkeleyデータベース構成はそのままで使用できます。Berkeleyデータベース・インスタンスの位置をカスタマイズしたり、またはパフォーマンスをチューニングする場合のみ、構成を変更する必要があります。

20.2.1項「Oracle Event Processingサーバーのイベント・ストアの構成」を参照してください。

2. コンポーネント構成ファイルを更新して、イベントを記録するためにEPNのコンポーネントを構成します。
コンポーネントは、プロセッサ、アダプタ、チャネルまたはイベントBeanにできます。コンポーネントを離れるイベントのみ記録します。

20.2.2項「イベントを記録するコンポーネントの構成」を参照してください。

3. コンポーネント構成ファイルを更新して、イベントを再生するためにEPNのコンポーネントを構成します。
コンポーネントは、プロセッサ、アダプタ、チャネルまたはイベントBeanにできます。イベント・シンクもあるコンポーネントのみイベントを再生でき、イベントはコンポーネントの入力側に再生されます。

20.2.3項「イベントを再生するコンポーネントの構成」を参照してください。

4. 変更を反映するためアプリケーションを再デプロイします。

5. イベントの記録の明示的な開始および終了時間を指定していない場合は、Oracle Event Processing Visualizerまたはwlevs.Adminを使用して記録を開始する必要があります。常にこれらの管理ツールを使用して、イベントの再生を開始または終了する必要があります。
20.2.4項「イベントの記録と再生の開始および終了」を参照してください。

20.2.1 Oracle Event Processingサーバーのイベント・ストアの構成

デフォルトBerkeleyデータベース構成はそのままで使用できます。Berkeleyデータベース・インスタンスの位置をカスタマイズしたり、またはパフォーマンスをチューニングする場合のみ、構成を変更する必要があります。

詳細は、20.3項「カスタム・イベント・ストア・プロバイダの作成」を参照してください。

Oracle Event Processingサーバーのイベント・ストアを構成する手順:

1. 実行中であれば、Oracle Event Processingサーバー・インスタンスを停止します。

2. 任意のXMLエディタを使用して、サーバーのconfig.xmlファイルを編集のために開きます。
config.xmlファイルはサーバーのDOMAIN_DIR/servername/configディレクトリにあります。DOMAIN_DIRは/oracle_cep/user_projects/domains/myDomainなどのドメイン・ディレクトリを指し、servernameはdefaultserverなどのサーバー名を指します。

3. config.xmlファイルにbdb-config要素を編集します。
例20-1は、完全に構成されたbdb-config要素を示します。

例20-1 bdb-config要素

<bdb-config>
<db-env-path>bdb</db-env-path>
<cache-size>1000</cache-size>
</bdb-config>

表20-1は指定できるbdb-configの子要素の一覧を示します。

表20-1 bdb-configの子要素

子要素

説明

db-env-path

Oracle Event Processingサーバーは、サブディレクトリ内でサーバーのDOMAIN_DIR/servername/configディレクトリに関連するBerkeleyデータベースのインスタンスを作成しますが、このサブディレクトリを指定します。ここで、DOMAIN_DIRは、/oracle_cep/user_projects/domains/myDomainなどのドメイン・ディレクトリを参照し、servernameはdefaultserverなどのサーバー名を参照します。

デフォルト: bdb

cache-size

Berkeleyデータベースのキャッシュ・エントリに使用可能なメモリー量をバイト単位で指定します。キャッシュ・サイズを調整し、Berkeleyデータベースのパフォーマンスをチューニングできます。

詳細は、次を参照してください:

- http://www.oracle.com/technology/documentation/berkeley-db/je/GettingStartedGuide/cachesize.html

- http://www.oracle.com/technology/documentation/berkeley-db/je/java/com/sleepycat/je/EnvironmentMutableConfig.html#setCacheSize(long)

デフォルト: je.maxMemoryPercent * JVM最大メモリー

4. Oracle Event Processingサーバー・インスタンスを再起動します。

20.2.2 イベントを記録するコンポーネントの構成

アプリケーションの任意のプロセッサ、アダプタ、チャネル、またはイベントBeanでイベントの記録を構成できます。すべての他のコンポーネントの構成と同様、構成ファイルを更新してコンポーネントでのイベントの記録を指定します。これらの構成ファイルの一般情報は、1.4.2項「コンポーネント構成ファイルの概要」を参照してください。

この項では、イベントを記録するコンポーネントを構成するための主な手順について説明します。簡略化のため、この手順ではイベントを記録するアダプタを構成し、コンポーネント構成ファイルがすでに作成されていることを想定しています。

イベント・レコードの構成ファイル要素が記述された完全な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>

表20-2は指定できるrecord-parametersの子要素の一覧を示します。dataset-nameのみ必須です。

表20-2 record-parametersの子要素

子要素

説明

dataset-name

グループにまとめる必要のあるデータのグループを指定します。

BDBプロバイダの場合は、データセット名はBerkeleyデータベースにあるデータベース環境として使用されます。

Oracle RDBMSベースのプロバイダの場合は、記録されたイベントを格納する表が作成されるデータベース領域またはスキーマを指定します。

Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。

event-type-list

イベント・ストアに記録されるイベント・タイプを指定します。この要素を指定しない場合、Oracle Event Processingではコンポーネントを離れるすべてのイベント・タイプが記録されます。

event-type子コンポーネントを使用して、次のように1つ以上のイベントをリストします。

<event-type-list>
<event-type>EventOne</event-type>
<event-type>EventTwo</event-type>
</event-type-list>

Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。

time-range

開始および終了時間を使用して、記録が行われる期間を指定します。

期間は、開始時間を指定するためにstart子要素を使用し、終了時間を指定するためにend子要素を使用して構成されています。

開始時間および終了時間を次のXMLスキーマのdateTime値の形式として表します。

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スキーマのdateTime形式の完全な詳細は、http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation を参照してください。

期間を指定しない場合、アプリケーションをデプロイしてもイベントは記録されず、Oracle Event Processing Visualizerまたはwlevs.Adminを使用して明示的に開始するまで記録は行われません。

time-rangeまたはtime-range-offsetを指定できますが、両方は指定できません。

time-range-offset

開始時間と期間を使用して、記録が行われる期間を指定します。

期間は、開始時間を指定するためにstart子要素を使用し、その記録を停止する開始時間後の時間を指定するためにduration子要素を使用して構成されています。

開始時間を次のXMLスキーマのdateTime値の形式として表します。

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スキーマのdateTime形式の完全な詳細は、http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation を参照してください。

期間を指定しない場合、アプリケーションをデプロイしてもイベントは記録されず、Oracle Event Processing Visualizerまたはwlevs.Adminを使用して明示的に開始するまで記録は行われません。

time-rangeまたはtime-range-offsetを指定できますが、両方は指定できません。

batch-size

イベント・バッファからイベント・ストアに書き込むためにOracle Event Processingによって単一のバッチで選択されるイベント数を指定します。

デフォルト値は1000です。

batch-time-out

イベント・ストアに書き込む前に、イベント・バッファ枠がbatch-sizeのイベント数を満たすまでOracle Event Processingが待機する秒数を指定します。

デフォルト値は60です。

max-size

指定した場合、Oracle Event Processingではイベント・ストアへの書込みにストリームが使用され、この要素はストリーム・サイズを指定します。0以外の値は非同期の書込みを示します。

デフォルト値は1024です。

max-threads

指定した場合、Oracle Event Processingではイベント・ストアへの書込みにストリームが使用され、この要素によって、このストリームのイベントの処理に使用するスレッドの最大数が指定されます。max-sizeが0の場合は、この値の設定に影響はありません。

デフォルト値は1です。

20.2.3 イベントを再生するコンポーネントの構成

アプリケーションの任意のプロセッサ、アダプタ、チャネル、またはイベントBeanでイベントの再生を構成できます。ただし、実際にイベントを受信し、それらのイベントを再生できるように、再生コンポーネントは記録コンポーネントの下流ノードである必要があります。すべての他のコンポーネントの構成と同様、構成ファイルを更新してコンポーネントでのイベントの再生を指定します。これらの構成ファイルの一般情報は、1.4.2項「コンポーネント構成ファイルの概要」を参照してください。

この項では、イベントを再生するコンポーネントを構成するための主な手順について説明します。簡略化のため、この手順ではイベントの記録元である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>

表20-3は指定できるplayback-parametersの子要素の一覧を示します。dataset-nameのみ必須です。

表20-3 playback-parametersの子要素

子要素

説明

dataset-name

グループにまとめる必要のあるデータのグループを指定します。

BDBプロバイダの場合は、データセット名はBerkeleyデータベースにあるデータベース環境として使用されます。

Oracle RDBMSベースのプロバイダの場合は、記録されたイベントが格納され、再生イベントの問合せが実行される表のデータベース領域またはスキーマを指定します。

Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。

event-type-list

イベント・ストアから再生されるイベント・タイプを指定します。この要素を指定しない場合、Oracle Event Processingではすべてのイベント・タイプが再生されます。

event-type子コンポーネントを使用して、次のように1つ以上のイベントをリストします。

<event-type-list>
<event-type>EventOne</event-type>
<event-type>EventTwo</event-type>
</event-type-list>

Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。

time-range

開始および終了時間を使用して、再生が行われる期間を指定します。

期間は、開始時間を指定するためにstart子要素を使用し、終了時間を指定するためにend子要素を使用して構成されています。

開始時間および終了時間を次のXMLスキーマのdateTime値の形式として表します。

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スキーマのdateTime形式の完全な詳細は、http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation を参照してください。

期間を指定しない場合はアプリケーションをデプロイしてもイベントは再生されず、Oracle Event Processing Visualizerまたはwlevs.Adminを使用して明示的に開始するまで再生は行われません。

time-rangeまたはtime-range-offsetを指定できますが、両方は指定できません。

time-range-offset

開始時間と期間を使用して、再生が行われる期間を指定します。

期間は、開始時間を指定するためにstart子要素そ使用し、その再生を停止する開始時間後の時間を指定するためにduration子要素を使用して構成されています。

開始時間を次のXMLスキーマのdateTime値の形式として表します。

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スキーマのdateTime形式の完全な詳細は、http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation を参照してください。

期間を指定しない場合はアプリケーションをデプロイしてもイベントは再生されず、Oracle Event Processing Visualizerまたはwlevs.Adminを使用して明示的に開始するまで再生は行われません。

time-rangeまたはtime-range-offsetを指定できますが、両方は指定できません。

playback-speed

再生速度を正のfloatとして指定します。

デフォルト値は1で、これは通常速度に相当します。2の値は、イベントが元の記録速度の倍の速度で再生されることを意味します。同様に、0.5の値は、イベントが半分の速度で再生されることを意味します。

repeat

指定された期間の再生が終了した後に、イベントをもう一度再生するかどうかを指定します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。true値は、意図的に停止されるまで再生が無限に繰り返されることを意味します。Falseの場合はイベントが一度のみ再生されます。

max-size

指定した場合、Oracle Event Processingではイベント・ストアからのイベントの再生にストリームが使用され、この要素はストリーム・サイズを指定します。0以外の値は非同期の書込みを示します。

デフォルト値は1024です。

max-threads

指定した場合、Oracle Event Processingではイベント・ストアからのイベントの再生にストリームが使用され、この要素によって、このストリームのイベントの処理に使用されるスレッドの最大数が指定されます。max-sizeが0の場合は、この値の設定に影響はありません。

デフォルト値は1です。

20.2.4 イベントの記録と再生の開始および終了

アプリケーションのコンポーネントで記録および再生機能構成が完了し、Oracle Event Processingにアプリケーションをデプロイしたら、最初の構成で開始および終了時間を明示的に指定した場合にのみサーバーでイベントの記録が開始されます。

たとえば、コンポーネント構成に次の要素が含まれているとします。

<time-range>
<start>2010-01-20T05:00:00</start>
<end>2010-01-20T18:00:00</end>
</time-range>

この場合、2010年1月20日午前5時に記録が自動的に開始されます。

ただし、イベントの再生を開始するにはOracle Event Processing Visualizerまたはwlevs.Adminを使用するのが唯一の方法です。これらの管理ツールは、イベントの記録を動的に開始または終了する際にも使用します。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNを流れるイベントの記録と再生に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のイベントの記録と再生を制御するコマンドに関する項

Visualizerおよびwlevs.Adminでは、管理対象Bean (MBean)を使用して、イベントの記録と再生を動的に開始および終了し、イベント・ストアの構成を管理します。管理対象BeanはJava Management Extensions (JMX)インタフェースを提供するJava Beanです。JMXはネットワーク上のリソースをモニターおよび管理するためのJava EEソリューションです。com.bea.wlevs.management.configuration.StageMBeanを使用することにより、独自の管理ツールを作成し、JMXを使用してイベント・ストア機能を管理できます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event ProcessingのJMXの構成に関する項

- Oracle Fusion Middleware Oracle Event Processing Java APIリファレンス

20.2.5 Berkeleyデータベース・スキーマの説明

イベント・レコードと再生のステージを構成した場合、dataset-nameを指定して記録したデータを識別します。

Oracle Event Processingサーバーは、bdb-config要素で指定するdb-env-pathの下にこの名前のサブディレクトリを作成します。

たとえば、bdb-config要素は例20-2のようになります。

例20-2 デフォルトbdb-config要素

<bdb-config>
<db-env-path>bdb</db-env-path>
</bdb-config>

dataset-nameがtest1の場合、Oracle Event Processingサーバーは、データを次のディレクトリに格納します。

ORACLE_CEP_HOME/user_projects/domains/domainname/servername/bdb/test1

ORACLE_CEP_HOMEは、Oracle Event Processing (/oracle_homeなど)をインストールしたディレクトリ、domainnameはドメイン名、そしてservernameは、(/oracle_cep/user_projects/domains/mydomain/myserverなど)サーバー名です。

Oracle Event Processingは、data-setサブディレクトリ内に、記録された各イベント・タイプ別のデータベースを含むBerkeleyデータベース環境を作成します。データベース名は、イベント・タイプ・リポジトリに指定したイベント・タイプ名と同じです。

データベース・キーは、レコード時間およびシーケンス番号です。

20.3 カスタム・イベント・ストア・プロバイダの作成

Oracle Event Processingには、カスタム・イベント・ストア・プロバイダの作成に使用できるイベント・ストアAPIが用意されています。Oracleは、リレーショナル・データベースにイベントを格納するためのRDBMSベースの実装、またはJDBC接続をサポートする実装を提供します。異なる種類のデータベースにイベントを格納する必要がある場合や、何らかの理由でOracle RDBMSプロバイダがニーズに合致しない場合は、イベント・ストアAPIを使用して独自のイベント・ストア・プロバイダを作成できます。

イベント・ストアAPIはcom.bea.wlevs.eventstoreパッケージに含まれています。次のリストに最も重要なインタフェースについて説明します。

- EventStore: 単一のイベント・ストアを表現するオブジェクト。このインタフェースのメソッドを使用すると、イベントをストアに永続化し、プロバイダ固有の問合せを使用してストアの内容への問合せを実行できます。

- EventStoreManager: イベント・ストアを管理します。特定のOracle Event ProcessingサーバーにはEventStoreManagerのインスタンスが1つのみ存在し、このインスタンスは自身をOSGiレジストリに登録するため、イベント・ストア・プロバイダは自身をイベント・ストア・マネージャに登録できるようになります。このインタフェースを使用して、既存のイベント・ストアの検索、新しいイベント・ストアの作成、特定のイベント・ストアのプロバイダの取得、イベント・プロバイダの登録を行います。イベント・ストア・マネージャは実際の作業をイベント・ストア・プロバイダに委任します。

- EventStoreProvider: イベント・ストア・サービスをクライアントに提供する基礎となるリポジトリ。

詳細は、Oracle Fusion Middleware Oracle Event Processing Java APIリファレンスを参照してください。

21 ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト

この章では、Oracle Event Processingアプリケーションをテストするために、付属のロード・ジェネレータおよびcsvgenアダプタを使用する方法について説明します。

この章の内容は次のとおりです。

- 21.1項「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテストの概要」

- 21.2項「ロード・ジェネレータ・ユーティリティの構成と実行」

- 21.3項「ロード・ジェネレータのプロパティ・ファイルの作成」

- 21.4項「データ・フィード・ファイルの作成」

- 21.5項「アプリケーションのcsvgenアダプタの構成」

21.1 ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテストの概要

ロード・ジェネレータは、データ・フィードをシミュレートするためにOracle Event Processingで提供される単純なユーティリティです。このユーティリティは、実世界のデータ・フィードに接続する必要がないため、アプリケーションのOracle CQLまたはEPLルールをテストする際に役立ちます。

ロード・ジェネレータは、サンプルのデータ・フィード情報が含まれたASCIIファイルを読込み、構成されたポートに各データ項目を送信します。ロード・ジェネレータではサンプル・データ・ファイルの項目が順番に読み込まれ、チャネルに挿入されます。末尾まで達したらデータ・ファイルの先頭に戻ることを繰り返し、これによってファイル内のデータ項目数に関係なく、連続するデータ・ストリームを使用できることが保証されます。送信データの速度、開始時点の速度、最終的な速度、最終的な速度に達するまでの時間を構成できます。

アプリケーションでは、着信データを読み込む際に、独自のアダプタのかわりにOracle Event Processingで提供されるcsvgenアダプタを使用する必要があります。これは、csvgenアダプタがload generatorで生成されたデータ・パケットを復号化するよう特別にコーディングされているためです。

アプリケーションを再デプロイした場合は、ロード・ジェネレータも再起動する必要があります。

テストおよびデバッグの詳細は、6.4項「Oracle Event Processingサーバー上で実行されているOracle Event Processingアプリケーションのデバッグ」を参照してください

21.2 ロード・ジェネレータ・ユーティリティの構成と実行

このプロシージャでは、ロード・ジェネレータ・ユーティリティの構成方法と実行方法について説明します。

ロード・ジェネレータ・ユーティリティを構成および実行するには:

1. 必要に応じて、load generatorの特定の実行用の構成プロパティが含まれたプロパティ・ファイルを作成します。これらのプロパティでは、シミュレート・データが含まれたファイルの場所、ジェネレータがデータを供給するポートなどが指定されます。
Oracle Event Processingにはデフォルトのプロパティ値が適切である場合に使用できる、デフォルトのプロパティ・ファイルが用意されています。

21.3項「ロード・ジェネレータのプロパティ・ファイルの作成」を参照してください。

2. 実際のデータ・フィード値が含まれたファイルを作成します。
21.4項「データ・フィード・ファイルの作成」を参照してください。

3. ロード・ジェネレータで生成されたデータ・フィードが正常に読み込まれるようにcsvgenアダプタを構成します。Oracle Event Processingアプリケーションを記述したEPNアセンブリ・ファイルでアダプタを構成します。
21.5項「アプリケーションのcsvgenアダプタの構成」を参照してください。

4. イベント・タイプを作成するためのビルダー・ファクトリを必ず構成します。イベント・タイプのビルダー・ファクトリを指定するタスクは通常はオプションですが、load generatorを使用する場合には必須です。
詳細は、9.3.1.5項「イベント・タイプ・ビルダー・クラスによるイベント・タイプ・インストールの制御」を参照してください。

5. コマンド・ウィンドウを開き、3.2項「開発環境の設定」の説明に従って、環境を設定します。

6. ORACLE_CEP_HOME\ocep_11.1\utils\load-generatorディレクトリに移動します。ORACLE_CEP_HOMEは、d:\oracle_cep.などのOracle Event Processingのメイン・インストール・ディレクトリです。

7. ステップ1で作成したプロパティ・ファイルを指定してロード・ジェネレータを実行し、シミュレートされたデータ・フィードを開始します。たとえば、プロパティ・ファイル名がc:\loadgen\myDataFeed.propの場合は、次のコマンドを実行します。

prompt> runloadgen.cmd c:\loadgen\myDataFeed.prop

21.3 ロード・ジェネレータのプロパティ・ファイルの作成

load generatorでは構成にASCIIプロパティ・ファイルが使用されます。プロパティには、サンプルのデータ・フィード値が含まれたファイルの場所、ユーティリティがデータ・フィードを送信するポートなどがあります。

Oracle Event Processingには、ORACLE_CEP_HOME\ocep_11.1\utils\load-generatorディレクトリにcsvgen.propというデフォルトのプロパティ・ファイルがあります。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Event Processingのメイン・インストール・ディレクトリです。

ファイルの形式は単純で、プロパティと値の各ペアが各行に置かれます。次の例は、デフォルトのcsvgen.propファイルです。このファイルを独自のプロパティ・ファイルのテンプレートとして使用することをお薦めします。

test.csvDataFile=test.csv
test.port=9001
test.packetType=CSV
test.mode=client
test.senders=1
test.latencyStats=false
test.statInterval=2000

注意:

独自のプロパティ・ファイルを作成する場合は、test.packetType、test.mode、test.senders、test.latencyStatsおよびtest.statIntervalの各プロパティを厳密に前述のとおりに含める必要があります。

前述のプロパティ・ファイルの例では、サンプル・データを含むファイルはtest.csvであり、プロパティ・ファイルと同じディレクトリにあります。ロード・ジェネレータによってポート9001にデータ・フィードが送信されます。

次の表に、プロパティ・ファイルで設定できる追加のプロパティを示します。

表21-1 ロード・ジェネレータのプロパティ

プロパティ

説明

データ型

必須?

test.csvDataFile

データ・フィード値が含まれたファイルを指定します。

String

はい

test.port

load generatorがデータ・フィードを送信するポート番号。

それぞれの入力アダプタは、21.5項「アプリケーションのcsvgenアダプタの構成」に示すとおり、そのtest.portに関連付けられます。

Integer

はい

test.secs

load generatorの秒単位の実行時間。

デフォルト値は30です。

Integer

いいえ

test.rate

最終データ速度(毎秒のメッセージ数単位)。

デフォルト値は1です。

Integer

いいえ

test.startRate

初期データ速度(毎秒のメッセージ数単位)。

デフォルト値は1です。

Integer

いいえ

test.rampUpSecs

test.startRateからtest.rateに増加するまでの秒数。

デフォルト値は0です。

Integer

いいえ

21.4 データ・フィード・ファイルの作成

ロード・ジェネレータ・データ・フィード・ファイルは、Oracle Event Processingアプリケーションに登録されたイベント・タイプに対応するサンプルのデータ・フィード値を含みます。

例21-1はEmployeeEventを示し、例21-2はこのイベント・タイプに対応するロード・ジェネレータのデータ・フィード・ファイルを示します。

例21-1 EmployeeEventのイベント・タイプ

<wlevs:event-type-repository>
<wlevs:event-type type-name="EmployeeEvent">
<wlevs:properties>
<wlevs:property name="name" type="char" />
<wlevs:property name="age" type="int" />
<wlevs:property name="birthplace" type="char" length="512" />
</wlevs:properties>
</wlevs:event-type>
...
</wlevs:event-type-repository>

例21-2 EmployeeEventイベント・タイプのデータ・フィード・ファイル

Lucy,23,Madagascar
Nick,44,Canada
Amanda,12,Malaysia
Juliet,43,Spain
Horatio,80,Argentina

ロード・ジェネレータのデータ・フィード・ファイルの形式は簡単です。

- 特定のデータ・フィードの各項目を各行に配置します。

- データ・フィード項目の各フィールドをカンマで区切ります。

- コンマは文字列フィールドの一部として含みません。

- フィールド値の一部としてスペースが含まれているのでない限り、カンマの前後に余分なスペースを含めないでください。

- 整数、long、doubleおよびfloatなどの、データ・フィード・ファイルの文字列データおよび数値データのみを含みます。

- デフォルトでは、文字列フィールドの最大長は256文字です。
長い文字列を指定するには、例21-1で示すbirthplaceプロパティのように、event-typeにcharプロパティのlength属性を設定します。

注意:

ロード・ジェネレータはCSV仕様に完全には準拠していません(http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm)。

詳細は、9.2.3.1項「csvgenアダプタとともに使用するイベント・タイプの制約」を参照してください。

21.5 アプリケーションのcsvgenアダプタの構成

ロード・ジェネレータ・ユーティリティを使用する場合、Oracle Event Processingで提供されるcsvgenアダプタは、ロード・ジェネレータで生成されたデータ・パケットを読み込むように特別にコーディングされているため、アプリケーションではこのアダプタを使用する必要があります。

すべてのアダプタと同じように、アプリケーションのEPNアセンブリ・ファイルのwlevs:adapter要素を使用して、csvgenアダプタを登録します。独自のアダプタのかわりにcsvgenアダプタをプロバイダとして指定するために、provide属性をcsvgenに設定します。また、次の子タグを指定する必要があります。

- name属性portとvalue属性のconfigured_portがあるwlevs:instance-property要素。configured_portはロード・ジェネレータ・プロパティ・ファイルのtest.portプロパティに対応します。21.3項「ロード・ジェネレータのプロパティ・ファイルの作成」を参照してください。

- name属性のeventTypeNameおよびvalue属性のevent_type_nameのあるwlevs:instance-property要素。event_type_nameはload-generatedフィードの項目を表すイベント・タイプ名に対応します。

- name属性のeventPropertyNamesおよびvalue属性のordered_list_of_propertiesのあるwlevs:instance-property要素。ordered_list_of_propertiesは、ロード・ジェネレータで送信されてcsvgenアダプタで受信される順番でプロパティ名をリストします。

アダプタの構成する方法を説明する前に、まず次に示すwlevs:metada要素を使用して、アプリケーションがEPNアセンブリ・ファイルに、PersonTypeと呼ばれるイベント・タイプを登録していると仮定します。

<wlevs:event-type-repository>
<wlevs:event-type type-name="PersonType">
<wlevs:properties>
<wlevs:property name="name" type="char"/>
<<wlevs:property name="age" type="int"/>
<<wlevs:property name="birthplace" type="char"/>
</wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

このイベント・タイプは21.4項「データ・フィード・ファイルの作成」で説明しているデータ・フィード・ファイルに対応しています。

このデータを受信するcsvgenアダプタを構成するには、次のwlevs:adapter要素を使用します。

<wlevs:adapter id="csvgenAdapter" provider="csvgen">
<wlevs:instance-property name="port" value="9001"/>
<wlevs:instance-property name="eventTypeName" value="PersonType"/>
<wlevs:instance-property name="eventPropertyNames" value="name,age,birthplace"/>
</wlevs:adapter>

アダプタ構成の例に示す太字部分の値がPersonTypeイベント・タイプの登録にどのように対応しているかに注意してください。

イベント・タイプの登録でwlevs:class要素を使用して独自のJavaBeanを指定した場合、eventPropertyNames値はJavaBeanのプロパティに対応します。たとえば、JavaBeanにgetNameメソッドが含まれている場合、JavaBeanのプロパティの中の1つはnameになります。

イベント・タイプの詳細は、第9章「イベント・タイプの定義および使用」を参照してください。

22 イベント・インスペクタでのアプリケーションのテスト

この章では、イベント・インスペクタのサービスを使用して、Oracle Event Processingイベント処理ネットワーク(EPN)の任意のステージでイベントをトレースおよびインジェクトする方法について説明します。

この章の内容は次のとおりです。

- 22.1項「イベント・インスペクタでのアプリケーションのテストの概要」

- 22.2項「イベント・インスペクタHTTPパブリッシュ/サブスクライブ・サーバーの構成」

- 22.3項「イベントのインジェクト」

- 22.4項「イベントのトレース」

注意:

イベント・インスペクタのサービスは、Oracle Event Processing本番サーバーでは使用しません。開発するときにのみ使用します。

22.1 イベント・インスペクタでのアプリケーションのテストの概要

イベント・インスペクタのサービスを使用して次のことを実行できます:

- EPNのいずれかのステージからのイベントの表示

- EPNのいずれかのステージへのイベントのインジェクト

開発中にOracle CQL問合せのテストやデバッグを行うためにイベント・インスペクタのサービスを使用できます。

この項では次について説明します:

- 22.1.1項「イベントのトレース」

- 22.1.2項「イベントのインジェクト」

- 22.1.3項「イベント・インスペクタのイベント・タイプ」

- 22.1.4項「イベント・インスペクタHTTPパブリッシュ・サブスクライブ・チャネルおよびサーバー」

- 22.1.5項「イベント・インスペクタのクライアント」

テストおよびデバッグの詳細は、6.4項「Oracle Event Processingサーバー上で実行されているOracle Event Processingアプリケーションのデバッグ」を参照してください

22.1.1イベントのトレース

イベント・インスペクタのサービスを使用して、EPNのいずれかのステージから退出するイベントを表示します。

イベント・インスペクタのサービスは共通HTTPパブリッシュ・サブスクライブ・チャネルとサーバーを使用してイベントをトレースします。

トレース・イベントのbinding属性にはoutboundを設定する必要があります。

詳細は、次を参照してください:

- 22.1.3項「イベント・インスペクタのイベント・タイプ」

- 22.1.4項「イベント・インスペクタHTTPパブリッシュ・サブスクライブ・チャネルおよびサーバー」

- 22.4項「イベントのトレース」

22.1.2 イベントのインジェクト

イベント・インスペクタのサービスを使用して、EPNのいずれかのステージへイベントをインジェクトできます。

イベント・インスペクタのサービスはHTTPパブリッシュ・サブスクライブ・チャネルとサーバーを使用してイベントをインジェクトします。

インジェクトされたイベントのbinding属性にはinboundを設定する必要があります。

イベント・インスペクタ・クライアントを使用して次のようなイベントがインジェクトできます。

- StockTickイベントなど、タイプによる単一のシンプルなイベント
この場合、使用可能な特定のイベント・プロパティ・タイプはクライアントに依存します。

- JSON形式の文字列として単一イベントのHTTPパブリッシュ・サブスクライブ・チャネルへの直接インジェクト
この場合、JSONが示すことのできるいずれかのイベント・プロパティを使用できます。

- 1つ以上のJSON形式の文字列を含むファイルを使用した複数のイベント
この場合、JSONが示すことのできるいずれかのイベント・プロパティを使用できます。 イベント・インスペクタのサービス・クライアントがファイルを解析し、すべてのJSON文字列をHTTPパブリッシュ・サブスクライブ・チャネルにインジェクトします。

入力ファイルを作成するとき、JavaオブジェクトをJSON形式に変換するためにGSON Javaライブラリを使用できます。

詳細は、次を参照してください:

- http://www.json.org/

- http://code.google.com/p/google-gson

- 22.1.3項「イベント・インスペクタのイベント・タイプ」

- 22.1.4項「イベント・インスペクタHTTPパブリッシュ・サブスクライブ・チャネルおよびサーバー」

- 22.3項「イベントのインジェクト」

22.1.3 イベント・インスペクタのイベント・タイプ

JavaBean、MapおよびタプルのすべてのOracle Event Processingイベント・タイプがサポートされています。

イベント・インスペクタのサービスは、トレース・チャネルに公開する前にイベントをJavaScript Object Notation (JSON)形式に変換します。イベントはJSON形式でインジェクトする必要があります。

JSON形式のイベントは、例22-1に示す構造に準拠する必要があります。表22-1は必要な属性を示します。

注意:

イベント・インスペクタで使用されるイベント・タイプのプロパティ・タイプとして、バイト配列はサポートされていません。

例22-1 イベント・インスペクタJSONイベント

{
"event-type": "myEventType",
"operation": "insert",
"binding": "outbound",
"value":{
"firstname": "Jane",
"lastname": "Doe",
"phone": {
"code": 12345,
"number": "office"
},
}
}

表22-1 イベント・インスペクタJSONイベントの必要な属性

属性

説明

event-type

アプリケーション・アセンブリ・ファイルのevent-type-repositoryで定義されたOracle Event Processingイベントの名前。

operation

イベントのタイプを指定します。

- insert: 挿入イベント。

- delete: 削除イベント

- update: 更新イベント

- heartbeat: ハートビート・イベント

binding

次のうちの1つ:

- inbound: インジェクト・イベント。

- outbound: トレース・イベント。

value

event-typeで定義された1つ以上のJSON形式のイベント・プロパティ。

詳細は、次を参照してください:

- http://www.json.org/

- 9.1項「Oracle Event Processingイベント・タイプの概要」

- 22.1.1項「イベントのトレース」

- 22.1.2項「イベントのインジェクト」

22.1.4 イベント・インスペクタHTTPパブリッシュ・サブスクライブ・チャネルとサーバー

イベント・インスペクタのサービスは動的HTTPパブリッシュ・サブスクライブ(HTTP pub-sub)チャネル(config.xmlで構成なし)を使用します。次の名前がつけられています。

/SERVERNAME/APPLICATIONNAME/STAGENAME/DIRECTION

説明:

- SERVERNAME:Oracle Event Processing EPNステージが実行されているOracle Event Processingサーバーの名前。

- APPLICATIONNAME: Oracle Event Processingアプリケーションの名前。

- STAGENAME: EPNステージの名前。

- DIRECTION: 次のいずれか:

- input: イベントをインジェクトする場合。

- output: イベントをトレースする場合。

例:

/server-1/myapp/MyInputAdapter/input

イベント・インスペクタのサービスは、HTTPパブリッシュ・サブスクライブ・サーバーを使用します。次のいずれかになります。

- ローカル: event-inspector要素でconfig.xmlファイルを構成し、このマシンで実行中のローカル・パブリッシュ・サブスクライブ・サーバーの名前でpubsub-server-name子要素を構成します。詳細は、22.2.1項「ローカル・イベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」を参照してください。

- リモート: event-inspector要素でconfig.xmlファイルを構成し、リモート・マシンで実行中のHTTPパブリッシュ・サブスクライブ・サーバーへのURLでpubsub-server-url子要素を構成します。詳細は、22.2.2項「リモート・イベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」を参照してください。

- デフォルト: config.xmlファイルで1つのみのHTTPパブリッシュ・サブスクライブ・サーバーが定義されていてローカルまたはリモートのHTTPパブリッシュ・サブスクライブ・サーバーが指定されていない場合、イベント・インスペクタ・サービスはデフォルトでローカルのHTTPパブリッシュ・サブスクライブ・サーバーを使用します。

イベント・インスペクタのサービスは同じHTTPパブリッシュ・サブスクライブ・チャネルとサーバーを使用してイベントをトレースしインジェクトします。

詳細は、次を参照してください:

- 22.1.1項「イベントのトレース」

- 22.1.2項「イベントのインジェクト」

22.1.5 イベント・インスペクタのクライアント

イベント・インスペクタ・サービスは次のクライアントをサポートします。

- 22.1.5.項「Oracle Event Processing Visualizer」

22.1.5.1 Oracle Event Processing Visualizer

Oracle Event Processing Visualizerを使用してイベント・インスペクタ・サービスにアクセスできます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のイベント・インスペクタでのアプリケーションのテストに関する項を参照してください。

22.2 イベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成

ローカルまたはリモートのHTTPパブリッシュ・サブスクライブ・サーバーでイベント・インスペクタのサービスを構成できます。

- 22.2.1項「ローカルのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」

- 22.2.2項「リモートのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」

コンポーネント構成ファイルでイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーを構成します。これらの構成ファイルの一般情報は、1.4.2項「コンポーネント構成ファイルの概要」を参照してください。

config.xmlにHTTPパブリッシュ・サブスクライブ・サーバーが1つのみ定義されていて、ローカルまたはリモートのHTTPパブリッシュ・サブスクライブ・サーバーが指定されていない場合、イベント・インスペクタ・サービスはデフォルトでローカルのHTTPパブリッシュ・サブスクライブ・サーバーを使用します。詳細は、第12章「HTTPパブリッシュ/サブスクライブ・サーバーの統合」を参照してください。

22.2.1 ローカルのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法

コンポーネント構成ファイルに、ローカルのHTTPパブリッシュ・サブスクライブ・サーバーでイベント・インスペクタのサービスを構成します。22.2.2項「リモートのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」の説明に従って、リモートのHTTPパブリッシュ・サブスクライブ・サーバーを構成できます。

ローカルのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーを構成するには:

1. Oracle Event Processing IDE for EclipseのEPNエディタを開きます。
7.1項「EPNエディタを開く」を参照してください。

2. 構成ファイルと関連付けたいずれかのコンポーネントを右クリックし、「構成のソースに移動」を選択します。

3. 例22-2に示すように、event-inspector要素を追加します。

例22-2 イベント・インスペクタ・サービス・ローカルのHTTPパブリッシュ・サブスクライブ・サーバー

<event-inspector>
<name>myEventInspectorConfig</name>
<pubsub-server-name>myPubSub</pubsub-server-name>
</event-inspector>

例22-3に示すように、myPubSubのpubsub-server-name値は、ローカルのOracle Event Processingサーバーconfig.xmlファイルで定義されたhttp-pubsub要素のname子要素の値です。

例22-3 Oracle Event Processing組込みのHTTPパブリッシュ・サブスクライブ・サーバーのhttp-pubsub要素

...
<http-pubsub>
<name>myPubSub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
<supported-transport>
<types>
<element>long-polling</element>
</types>
</supported-transport>
<publish-without-connect-allowed>true</publish-without-connect-allowed>
</server-config>
<channels>
...
</channels>
</pub-sub-bean>
</http-pubsub>
...

4. config.xmlファイルを保存して閉じます。

22.2.2リモートのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法

コンポーネント構成ファイルに、リモートのHTTPパブリッシュ・サブスクライブ・サーバーでイベント・インスペクタのサービスを構成します。22.2.1項「ローカルのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」の説明に従って、ローカルのHTTPパブリッシュ・サブスクライブ・サーバーを構成できます。

リモートのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーを構成するには:

1. Oracle Event Processing IDE for EclipseのEPNエディタを開きます。
7.1項「EPNエディタを開く」を参照してください。

2. 構成ファイルと関連付けたいずれかのコンポーネントを右クリックし、「構成のソースに移動」を選択します。

3. 例22-4に示すように、event-inspector要素を追加します。

例22-4 イベント・インスペクタ・サービス・リモートのHTTPパブリッシュ・サブスクライブ・サーバー

<event-inspector>
<name>myEventInspectorTraceConfig</name>
<pubsub-server-url>http://HOST:PORT/PATH</pubsub-server-url>
</event-inspector>

説明:

- HOST: リモートのOracle Event Processingサーバーのホスト名またはIPアドレスです。

- PORT: リモートのOracle Event Processingサーバーconfig.xmlファイルで定義されたリモートのOracle Event Processingサーバーnetioポートです。デフォルトは9002です。

- PATH: リモートのOracle Event Processingサーバーconfig.xmlファイルで定義されたhttp-pubsub要素pathの子要素の値です。

例22-3に示すhttp-pubsub構成の場合、有効なpubsub-server-urlは、次を参照してください。

http://remotehost:9002/pubsub

例22-5 Oracle Event Processing組込みのHTTPパブリッシュ・サブスクライブ・サーバーのhttp-pubsub要素

...
<http-pubsub>
<name>myPubSub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
<supported-transport>
<types>
<element>long-polling</element>
</types>
</supported-transport>
<publish-without-connect-allowed>true</publish-without-connect-allowed>
</server-config>
<channels>
...
</channels>
</pub-sub-bean>
</http-pubsub>
...

4. config.xmlファイルを保存して閉じます。

22.3 イベントのインジェクト

イベント・インスペクタ・サービスHTTPパブリッシュ・サブスクライブ・サーバーを構成した後、イベントをインジェクトするためにイベント・インスペクタ・クライアントを使用できます。イベント・インジェクションを構成するには、Oracle Event Processing Visualizerを使用するか、アプリケーションでコンポーネント構成ファイルを編集して、アプリケーションのデプロイ時または再デプロイ時に設定されるインジェクション設定を指定します。

Oracle Event Processing Visualizerで、アプリケーションの再デプロイ時に破棄できる設定でイベント・インジェクションを構成します。Oracle Event Processing Visualizerを使用してイベントをインジェクトする方法の詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のイベント・インスペクタ・サービス動的チャネルでの単純イベントのインジェクト方法およびイベント・インスペクタ・サービス動的チャネルでイベントをJSON文字列としてインジェクトする方法に関する項を参照してください。

アプリケーションのデプロイ時または再デプロイ時に設定されるイベント・インジェクション設定を指定するには、インジェクトするステージのコンポーネント構成設定を編集して、インジェクションを構成します。

たとえば、22.3項「イベント・インジェクション・コンポーネント構成設定」に示すコンポーネント構成の一部は、イベント・インジェクション用にプロセッサを構成する方法を示しています。inject-parameters要素のactive子要素はインジェクションをオンにすることを指定し、channel-name要素はインジェクトされる要素の送信元のHTTPパブリッシュ・サブスクライブ(HTTP pub-sub)チャネルを指定します。

例22-6 イベント・インジェクション・コンポーネント構成設定

<processor>
<name>FindCrossRates</name>
<inject-parameters>
<active>true</active>
<channel-name>/NonClusteredServer/fx/FindCrossRates/output</channel-name>
</inject-parameters>
<rules>
<!-- Query rules omitted. -->
</rules>
</processor>

これらの要素の参照情報は、D.55項「inject-parameters」を参照してください。

詳細は、次を参照してください:

- 22.2項「イベント・インスペクタHTTPパブリッシュ/サブスクライブ・サーバーの構成」

22.4 イベントのトレース

イベント・インスペクタ・サービスHTTPパブリッシュ・サブスクライブ(HTTP pub-sub)サーバーを構成した後、イベント・インスペクタ・クライアントを使用して、EPNのいずれかのステージから退出するイベントをトレースできます。イベントをトレースするには、Oracle Event Processing Visualizerを使用してトレースを構成するか、アプリケーションでコンポーネント構成ファイルを編集して、アプリケーションのデプロイ時または再デプロイ時に設定されるトレース設定を指定します。

Oracle Event Processing Visualizerで、アプリケーションの再デプロイ時に破棄できる設定でイベント・トレースを構成します。Oracle Event Processing Visualizerを使用してイベントをトレースする方法の詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』の動的チャネルでイベントをトレースする方法に関する項を参照してください。

アプリケーションのデプロイ時または再デプロイ時に設定されるイベント・トレース構成について、トレース元のステージのコンポーネント構成設定を編集して、トレースを構成します。

たとえば、22.4項「イベント・トレース・コンポーネント構成設定」に示すコンポーネント構成の一部は、イベント・トレース用にプロセッサを構成する方法を示しています。trace-parameters要素のactive子要素はトレースをオンにすることを指定し、channel-name要素はトレースされる要素の送信先のHTTPパブリッシュ・サブスクライブ(HTTP pub-sub)チャネルを指定します。

例22-7 イベント・トレース・コンポーネント構成設定

<processor>
<name>FindCrossRates</name>
<trace-parameters>
<active>true</active>
<channel-name>/NonClusteredServer/fx/FindCrossRates/output</channel-name>
</trace-parameters>
<rules>
<!-- Query rules omitted. -->
</rules>
</processor>

これらの要素の参照情報は、D.106項「trace-parameters」を参照してください。

詳細は、次を参照してください:

- 22.2項「イベント・インスペクタHTTPパブリッシュ/サブスクライブ・サーバーの構成」

第IV部

Oracle Event Processingアプリケーションの完了および調整

第4部の章の内容は次のとおりです。

- 第23章「Oracle Event Processingアプリケーションのアセンブルとデプロイ」

- 第24章「高可用性のためのアプリケーションの開発」

- 第25章「スケーラブルなアプリケーションの開発」

- 第26章「コンポーネント構成の拡張」

- 第27章「パフォーマンスのチューニング」

23 Oracle Event Processingアプリケーションのアセンブルとデプロイ

この章では、Oracle CEP IDE for EclipseおよびOracle Event Processing Visualizerを使用して、Oracle Event Processingアプリケーションを手動でアセンブルおよびデプロイする方法について説明します。

この章の内容は次のとおりです。

- 23.1項「アプリケーションのアセンブリおよびデプロイメントの概要」

- 23.2項「Oracle Event Processingアプリケーションのアセンブル」

- 23.3項「アプリケーション・ライブラリの管理」

- 23.4項「ログ・メッセージ・カタログの管理」

- 23.5項「Oracle Event Processingアプリケーションのデプロイ」

23.1 アプリケーションのアセンブリおよびデプロイメントの概要

アプリケーション・アセンブリという用語は、JavaファイルやXML構成ファイルなどのアプリケーションのコンポーネントをOracle Event Processingにデプロイ可能なOSGIバンドルにパッケージ化するプロセスを表します。アプリケーションのデプロイメントという用語は、Oracle Event Processingドメインでクライアント・リクエストを処理するためにアプリケーションを利用できるようにする処理を表します。

この項では次について説明します:

- 23.1.1項「アプリケーション」

- 23.1.3項「アプリケーション・ライブラリ」

- 23.1.2項「アプリケーションの依存関係」

- 23.1.4項「デプロイメントおよびデプロイメント順序」

- 23.1.5項「構成履歴の管理」

注意:

Oracle Event ProcessingアプリケーションはSpring FrameworkおよびOSGi Service Platformの上に構築され、それらの技術およびサービスを広範囲にわたり使用します。SpringおよびOSGiに関するリファレンスおよび概念情報へのリンクは、付録A「SpringおよびOSGiに関する追加情報」を参照してください。

23.1.1 アプリケーション

Oracle Event Processingアセンブリおよびデプロイメントのコンテキスト内で、アプリケーションは次のアーティファクトを含むOSGiバンドル(http://www2.osgi.org/javadoc/r4/org/osgi/framework/Bundle.htmlを参照)JARファイルとして定義されます。

- アダプタ、アダプタ・ファクトリ、ビジネス・ロジックを格納したPOJOなど、アプリケーションのいくつかのコンポーネントを実装するコンパイル済Javaクラス・ファイル。

- アプリケーションのコンポーネントを構成する1つまたは複数のOracle Event Processing構成XMLファイル。イベント・プロセッサは構成ファイルを必要とする唯一のタイプのコンポーネントです。他のすべてのコンポーネント(アダプタおよびストリーム)では、コンポーネントのデフォルトの構成が十分に機能的である場合、構成ファイルは必要ありません。すべての構成ファイルを1つのファイルにまとめたり、または個々のコンポーネントの構成を固有のファイルに分割したりできます。
バンドルを動的にデプロイする場合は、構成ファイルはOSGiバンドルJARファイルのMETA-INF/wlevsディレクトリに格納されている必要があります。アプリケーションがすでにドメイン・ディレクトリ内に存在する場合、構成ファイルは同じディレクトリに抽出する必要があります。

- アプリケーションのすべてのコンポーネントと、各コンポーネントが相互にどのように接続されているかを記述したEPNアセンブリ・ファイル。
EPNアセンブリ・ファイルは、OSGiバンドルJARファイルのMETA-INF/springディレクトリにある必要があります。

- JARファイルのコンテンツを記述するMANIFEST.MFファイル。

23.1.2 アプリケーションの依存関係

OSGIバンドルは、インポートされたパッケージまたは必須のパッケージを指定することで依存関係を宣言します。また、パッケージをエクスポートすることで他のバンドルに機能を提供します。バンドルが他のバンドルに機能を提供する必要がある場合は、Export-Packageを使用して、指定されたパッケージを他のバンドルで参照できるようにする必要があります。エクスポートされないすべてのバンドルはバンドルの外部で使用できません。

設計時に依存関係を定義します。

この項では次について説明します:

- 23.1.2.1項「プライベート・アプリケーションの依存関係」

- 23.1.2.2項「共有アプリケーションの依存関係」

- 23.1.2.3項「ネイティブ・コードの依存関係」

詳細は、次を参照してください:

- 23.1.4項「デプロイメントおよびデプロイメント順序」

- 23.2項「Oracle Event Processingアプリケーションのアセンブル」

23.1.2.1 プライベート・アプリケーションの依存関係

一部の依存関係は、アプリケーションにバンドルされ、アプリケーションとデプロイされるコンポーネントで満たされます。たとえば、標準JARファイルまたはプロパティ・ファイルなどです。

詳細は、次を参照してください:

- 5.7.1項「Oracle Event Processingプロジェクトへの標準JARファイルの追加方法」

- 5.7.2項「Oracle Event ProcessingプロジェクトへのOSGiバンドルの追加方法」

- 5.7.3項「Oracle Event Processingプロジェクトへのプロパティ・ファイルの追加方法」

23.1.2.2 共有アプリケーションの依存関係

一部の依存関係は、Oracle Event Processingサーバー・アプリケーション・ライブラリのディレクトリにデプロイされたコンポーネントで満たされます。これらのコンポーネントは、特定のアプリケーションにバンドルされたり、特定のアプリケーションとデプロイされることはありません。かわりに、アプリケーション・ライブラリからエクスポートされる1つ以上のパッケージをインポートするすべてのアプリケーションにアクセスできます。

詳細は、次を参照してください:

- 23.1.2.3項「ネイティブ・コードの依存関係」

- 23.1.3項「アプリケーション・ライブラリ」

- 5.7.4項「パッケージのエクスポート方法」

- 5.7.5項「パッケージのインポート方法」

23.1.2.3 ネイティブ・コードの依存関係

場合によっては、パッケージをアプリケーション・ライブラリとして選択できないネイティブ・コード・ライブラリに依存するアプリケーション・ライブラリを作成する必要があります。

その場合、Oracle Event Processingサーバーの起動時にネイティブ・コード・ライブラリをオペレーティング・システム・パス(bootclasspath)に置き、ネイティブ・コード・ライブラリが、このネイティブ・コードを呼び出す必要のあるライブラリ・バンドルによってロードされるようにします。

詳細は、次を参照してください:

- 23.1.2.2項「共有アプリケーションの依存関係」

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingサーバー・ブート・クラスパスの構成に関する項

23.1.3 アプリケーション・ライブラリ

Oracle Event Processingアプリケーション・ライブラリを使用して、共有ライブラリを便利な場所にデプロイし、Oracle Event Processingサーバーの起動時にデプロイする共有ライブラリの順序を完全に制御できます。

アプリケーション・ライブラリは、コンパイル済のJavaクラスおよびその他の必須アーティファクトのJavaアーカイブを含むOSGiバンドルです。

アプリケーション・ライブラリは、ドライバまたは外部ステージ(他のダウンストリーム・アプリケーションで役に立つ一部または完全なOracle Event Processingアプリケーション)などの様々な目的で使用することができます。

プロジェクトに簡単な組込みJARファイルとしてライブラリを追加することができますが、アプリケーション・ライブラリを使用するには、次のいくつかの利点があります。

- ライブラリの更新バージョンをデプロイするなど、アプリケーション・アセンブリとメンテナンス活動を簡単化します。

- 再利用を促進します。

- サーバー・ディスク領域使用量を削減します。

次のOracle Event Processingサーバー・ディレクトリのいずれかにアプリケーション・ライブラリをデプロイします。

- 23.1.3.1項「ライブラリ・ディレクトリ」

- 23.1.3.2項「ライブラリ拡張ディレクトリ」

- 23.1.3.3項「アプリケーション・ライブラリの作成」

詳細は、次を参照してください:

- 23.3項「アプリケーション・ライブラリの管理」

- 23.1.2項「アプリケーションの依存関係」

- 23.1.4項「デプロイメントおよびデプロイメント順序」

- 1.4.1.2項「EPNアセンブリ・ファイルでの外部ステージの参照」

- 付録A「SpringおよびOSGiに関する追加情報」

23.1.3.1 ライブラリ・ディレクトリ

デフォルトでは、Oracle Event Processingサーバー・ライブラリ・ディレクトリは次のとおりです。

DOMAIN_DIR/servername/modules

説明:

- DOMAIN_DIR: /oracle_cep/user_projects/domains/mydomainなどのドメイン・ディレクトリ

- servername: myserverなどのサーバー・インスタンス

例:

/oracle_cep/user_projects/domains/mydomain/myserver/modules

このディレクトリ内のライブラリは、ライブラリ拡張ディレクトリの後、Oracle Event Processingアプリケーションの前にデプロイされます。

ライブラリがドライバ(JDBCドライバなど)である場合、23.1.3.2項「ライブラリ拡張ディレクトリ」に従って、ライブラリ拡張ディレクトリに格納する必要があります。

アプリケーション・ライブラリ・ディレクトリ・パスのルートを構成するには、23.3.1項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの定義方法」を参照してください。

23.1.3.2 ライブラリ拡張ディレクトリ

デフォルトでは、Oracle Event Processingサーバー・ライブラリ拡張ディレクトリは次のとおりです。

DOMAIN_DIR/servername/modules/ext

説明:

- DOMAIN_DIR: /oracle_cep/user_projects/domains/mydomainなどのドメイン・ディレクトリ

- servername: myserverなどのサーバー・インスタンス

例:

/oracle_cep/user_projects/domains/mydomain/myserver/modules/ext

このディレクトリ内のライブラリが最初にOracle Event Processingサーバー・モジュールとともにデプロイされます。

ライブラリがドライバ(JDBCドライバなど)である場合、正しい順序でアクティブ化されるようにライブラリ拡張ディレクトリに格納する必要があります。たとえば、以前のバージョンを新しいバージョンでオーバーライドしたり、または代替ドライバへのアクセスを提供するために必要です。詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』の別のデータベース・ドライバまたはドライバのバージョンへのアクセスの構成に関する項を参照してください。

ライブラリがドライバではない場合、23.1.3.1項「ライブラリ・ディレクトリ」に従って、ライブラリ・ディレクトリに格納することができます。

アプリケーション・ライブラリ拡張ディレクトリ・パスのルートを構成するには、23.3.1項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの定義方法」を参照してください。

23.1.3.3 アプリケーション・ライブラリの作成

Oracle Event Processingでは、OSGiバンドル・ラッパーを任意のJavaアーカイブについて作成する場合に使用するbundler.shユーティリティを提供しています。作成されたバンドルJARは、OSGiコンテナにデプロイされる場合があります。ここでは、バンドル内にあるJavaパッケージ/クラスが他のデプロイ済バンドルにインポートされ、利用されます。使用例としては、サードパーティのJDBCドライバのパッケージなどがあります。

ユーティリティでは、指定のソースJARファイルが読み取られ、ソースJARの内容と、適切なバンドル関連エントリが指定されているマニフェストを含むターゲットJARファイルが作成されます。ソース・アーカイブで検出されたすべてのJavaパッケージは、ターゲット・バンドルによりエクスポートされます。

オプションで、JAR内の1つ以上のクラスをインスタンス化し、各オブジェクトをOSGiサービスとして登録するバンドル・ アクティベータを生成することができます。この機能では、コンポーネント・バンドルで実行時に特定のファクトリ・クラスの複数バージョンにアクセスし、これを操作することができます。

手動でアクティベータ実装を構成する場合は、Oracle Event Processing IDE for Eclipseを使用することができます。

詳細は、次を参照してください:

- 23.3.2項「bundler.shを使用したアプリケーション・ライブラリの作成方法」

- 23.3.3項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの作成方法」

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のbundler.shで構築されるアプリケーション・ライブラリを使用したデータベース・ドライバへのアクセス方法に関する項

23.1.4 デプロイメントおよびデプロイメント順序

アプリケーションをアセンブルした後、適切なデプロイメント・ツールを使用してOracle Event Processingドメインに認識されるようにしてアプリケーションをデプロイします。手順の詳細は、23.5項「Oracle Event Processingアプリケーションのデプロイ」を参照してください。

Oracle Event Processingサーバーは、Oracle Event Processingサーバー起動時に次の順序でコンポーネントをデプロイします。

1. ライブラリをライブラリ拡張ディレクトリにデプロイします(DOMAIN_DIR/servername/modules/extディレクトリ)。

2. ライブラリをライブラリ・ディレクトリにデプロイします(DOMAIN_DIR/servername/modulesディレクトリ)。

3. Oracle Event Processingアプリケーションのデプロイ

Oracle Event Processingサーバーは、ライブラリ名の字句順序に基づいて、ライブラリ拡張ディレクトリとライブラリ・ディレクトリの両方からライブラリをデプロイします。字句順序には、相対ディレクトリ名に加えてJARファイル名も含まれます。

例:

- modules/a.jarがmodules/b.jarの前に開始されます。

- 字句順序で0/my.jarはmy.jarの前になるため、modules/0/my.jarはmodule/my.jarの前に開始されます。

このルールに従って、単にライブラリ拡張ディレクトリまたはライブラリ・ディレクトリのいずれかの適切に名付けられたサブディレクトリにJARファイルを整理することで、Oracle Event ProcessingサーバーがJARファイルをデプロイする順序を制御することができます。

アプリケーションがOracle Event Processingにデプロイされると、構成されたアダプタでは金融データ・フィードなどの構成されたイベントに対するリスニングがただちに開始されます。

詳細は、23.1.3項「アプリケーション・ライブラリ」を参照してください。

23.1.5 構成履歴の管理

アプリケーションをOracle Event Processingサーバーにデプロイすると、Oracle Event Processingサーバーはアプリケーションの構成履歴を作成します。ルールまたはOracle Event Processing高可用性アダプタの構成を変更すると、この履歴に記録されます。Oracle Event Processing Visualizerまたはwlevs.Adminツールを使用して、これらの変更を表示し、ロールバックする(変更を元に戻す)ことができます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』の構成履歴の管理に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』の構成履歴の管理コマンドに関する項

23.2 Oracle Event Processingアプリケーションのアセンブル

Oracle Event Processingアプリケーションのアセンブルとは、http://www2.osgi.org/javadoc/r4/org/osgi/framework/Bundle.htmlで説明されているように、アプリケーションを構成するアーティファクトをOSGiバンドルJARファイルにバンドリングすることを意味します。アーティファクトには、次のものが含まれます。

- コンパイル済のJavaクラス

- アプリケーション・コンポーネント(プロセッサやアダプタなど)を構成するOracle Event Processingコンポーネント構成ファイル。

- EPNアセンブリ・ファイル

- MANIFEST.MFファイル

SpringおよびOSGiに関するリファレンスおよび概念情報へのリンクは、付録A「SpringおよびOSGiに関する追加情報」を参照してください。

この項では次について説明します:

- 23.2.1項「Oracle Event Processing IDE for Eclipseを使用したOracle Event Processingアプリケーションのアセンブル」

- 23.2.2項「Oracle Event Processingアプリケーションの手動アセンブル」

- 23.2.3項「外部ステージによるアプリケーションのアセンブル」

- 23.2.4項「カスタム・アダプタまたはイベントBeanの固有ハンドルでのアセンブル」

23.2.1 Oracle Event Processing IDE for Eclipseを使用したOracle Event Processingアプリケーションのアセンブル

Oracle Event Processing IDE for Eclipseを使用して、Oracle Event Processingアプリケーションを容易にアセンブルできます。

詳細は、次を参照してください:

- 5.5項「Oracle Event Processingプロジェクトのエクスポート」

- 5.6項「プロジェクトのアップグレード」

- 5.7項「Oracle Event Processingプロジェクトのライブラリおよび他の非クラス・ファイルの管理」

アプリケーションが外部ステージに依存している場合は、23.2.3項「外部ステージによるアプリケーションのアセンブル」を参照してください。

23.2.2 Oracle Event Processingアプリケーションの手動アセンブル

オプションで、Oracle Event Processingアプリケーションを手動でアセンブルできます。

簡略化のために、次の手順では必要なアーティファクトを含む一時ディレクトリを作成し、その後でこの一時ディレクトリのコンテンツをjarファイルに構築します。これは単に推奨される方法であり、この方法でアプリケーションをアセンブルすることは必須ではありません。

注意:

次に記述したステップの多くを実行できるbuild.xml Antファイルについては、HelloWorldサンプル・ソース・ディレクトリを参照してください。build.xmlファイルは、ORACLE_CEP_HOME\ocep_11.1\samples\source\applications\helloworldにあり、ORACLE_CEP_HOMEはd:\oracle_cepなど、主なOracle Event Processingインストール・ディレクトリを示します。

Oracle Event Processingアプリケーションを手動でアセンブルする手順:

1. コマンド・ウィンドウを開き、3.2項「開発環境の設定」の説明に従って、環境を設定します。

2. outputなどの空のディレクトリを作成します。

prompt> mkdir output

3. すべてのアプリケーションJavaファイルをoutputディレクトリにコンパイルします。

4. output/META-INF/springディレクトリを作成します。

5. アプリケーションのコンポーネントと各コンポーネントの接続が記述されたEPNアセンブリ・ファイルをoutput/META-INF/springディレクトリにコピーします。
このファイルの詳細は、5.3項「EPNアセンブリ・ファイルの作成」を参照してください。

6. output/META-INF/wlevsディレクトリを作成します。

7. アプリケーションのコンポーネント(プロセッサやアダプタなど)を構成するXMLファイルをoutput/META-INF/wlevsディレクトリにコピーします。

8. バンドルに関する説明情報を含むMANIFEST.MFファイルを作成します。
23.2.2.1項「MANIFEST.MFファイルの作成」を参照してください。

9. Oracle Event ProcessingアプリケーションからサードパーティJARファイルにアクセスする必要がある場合は、23.2.2.2項「サードパーティJARファイルへのアクセス」を参照してください。

10. outputディレクトリのコンテンツを含むJARファイルを作成します。
デフォルト・マニフェスト・ファイルではなく、必ず前のステップで作成したMANIFEST.MFファイルを指定します。

JARファイルには任意の名前を付けることができます。Oracle Event Processingのサンプルでは、Javaパッケージの名前とバージョンを組み合わせた次のようなJARファイル名を使用します。

com.bea.wlevs.example.helloworld_1.0.0.0.jar

サーバーにデプロイされているバンドルを明確にするため、同じようなネーミング・ルールを使用することを検討してください。

jarタスクの使用方法の詳細は、http://ant.apache.org/manual/Tasks/jar.htmlのApache Antドキュメントを参照し、jarコマンド・ライン・ツールの使用方法の詳細は、http://download.oracle.com/javase/6/docs/technotes/tools/windows/jar.htmlのJava SEドキュメントを参照してください。

11. アプリケーションが外部ステージに依存している場合は、23.2.3項「外部ステージによるアプリケーションのアセンブル」を参照してください。

23.2.2.1 MANIFEST.MFファイルの作成

MANIFEST.MFファイルの構造およびコンテンツはOSGi Frameworkによって指定されます。ファイル内の多くのヘッダーの値はアプリケーションまたはビジネスに固有ですが、多くのヘッダーはOracle Event Processingで必須です。

特に、MANIFEST.MFファイルでは次のものが定義されます。

- アプリケーション名: Bundle-Nameヘッダーで指定されます。

- シンボリック・アプリケーション名: Bundle-SymbolicNameヘッダーで指定されます。
wlevs.AdminユーティリティやJMXサブシステムなど、多くのOracle Event Processingツールは、アプリケーションを参照する場合にバンドルのシンボリック名を使用します。

- アプリケーションのバージョン: Bundle-Versionヘッダーで指定されます。

- インポートされたパッケージ: Import-Packageヘッダーで指定されます。
Oracle Event Processingでは、少なくとも次のパッケージをインポートする必要があります。

Import-Package:
com.bea.wlevs.adapter.defaultprovider;version="11.1.1",
com.bea.wlevs.ede;version="11.1.1",
com.bea.wlevs.ede.api;version="11.1.1",
com.bea.wlevs.ede.impl;version="11.1.1",
org.osgi.framework;version="1.3.0",
org.springframework.beans.factory;version="2.5.6",
org.apache.commons.logging;version="1.1.0",
com.bea.wlevs.spring;version="11.1.1",
com.bea.wlevs.util;version="11.1.1",
org.springframework.beans;version="2.5.6",
org.springframework.util;version="2.0",
org.springframework.core.annotation;version="2.5.6",
org.springframework.beans.factory;version="2.5.6",
org.springframework.beans.factory.config;version="2.5.6",
org.springframework.osgi.context;version="1.2.0",
org.springframework.osgi.service;version="1.2.0"

アダプタの構成を拡張した場合は、次のパッケージもインポートする必要があります。

javax.xml.bind;version="2.0",
javax.xml.bind.annotation;version=2.0,
javax.xml.bind.annotation.adapters;version=2.0,
javax.xml.bind.attachment;version=2.0,
javax.xml.bind.helpers;version=2.0,
javax.xml.bind.util;version=2.0,
com.bea.wlevs.configuration;version="11.1.1",
com.bea.wlevs.configuration.application;version="11.1.1",
com.sun.xml.bind.v2;version="2.0.2"

- エクスポートされたパッケージ: Export-Packageヘッダーで指定されます。このヘッダーは、1つ以上のアプリケーション・クラスを、デプロイされている他のアプリケーションと共有する必要がある場合にのみ指定します。一般的な例には、イベント・タイプJavaBeanの共有などがあります。
可能な場合は、実装クラス自体のかわりにインタフェースのみが含まれるパッケージをエクスポートします。エクスポートされたクラスが他のアプリケーションで使用中である場合、クラスをエクスポートしているアプリケーションを完全にアンデプロイすることはできなくなります。

エクスポートされたパッケージはサーバー全体で利用されるため、必ずサーバー全体で一意の名前を使用します。

次の完全なMANIFEST.MFファイルはHelloWorldのサンプルで、アダプタの構成が拡張されています。

Manifest-Version: 1.0
Archiver-Version:
Build-Jdk: 1.6.0_06
Extension-Name: example.helloworld
Specification-Title: 1.0.0.0
Specification-Vendor: Oracle.
Implementation-Vendor: Oracle.
Implementation-Title: example.helloworld
Implementation-Version: 1.0.0.0
Bundle-Version: 11.1.1.4_0
Bundle-ManifestVersion: 1
Bundle-Vendor: Oracle.
Bundle-Copyright: Copyright (c) 2006 by Oracle.
Import-Package: com.bea.wlevs.adapter.defaultprovider;version="11.1.1",
com.bea.wlevs.ede;version="11.1.1",
com.bea.wlevs.ede.impl;version="11.1.1",
com.bea.wlevs.ede.api;version="11.1.1",
org.osgi.framework;version="1.3.0",
org.apache.commons.logging;version="1.1.0",
com.bea.wlevs.spring;version="11.1.1",
com.bea.wlevs.util;version="11.1.1",
net.sf.cglib.proxy,
net.sf.cglib.core,
net.sf.cglib.reflect,
org.aopalliance.aop,
org.springframework.aop.framework;version="2.5.6",
org.springframework.aop;version="2.5.6",
org.springframework.beans;version="2.5.6",
org.springframework.util;version="2.0",
org.springframework.core.annotation;version="2.5.6",
org.springframework.beans.factory;version="2.5.6",
org.springframework.beans.factory.config;version="2.5.6",
org.springframework.osgi.context;version="1.2.0",
org.springframework.osgi.service;version="1.2.0",
javax.xml.bind;version="2.0",
javax.xml.bind.annotation;version=2.0,
javax.xml.bind.annotation.adapters;version=2.0,
javax.xml.bind.attachment;version=2.0,
javax.xml.bind.helpers;version=2.0,
javax.xml.bind.util;version=2.0,
com.bea.wlevs.configuration;version="11.1.1",
com.bea.wlevs.configuration.application;version="11.1.1",
com.sun.xml.bind.v2;version="2.0.2"
Bundle-Name: example.helloworld
Bundle-Description: WLEvS example helloworld
Bundle-SymbolicName: helloworld

23.2.2.2 サードパーティJARファイルへのアクセス

Oracle Event Processingアプリケーションの作成時には、既存のサードパーティJARファイル内のレガシー・ライブラリにアクセスする必要がある場合があります。このレガシー・コードへのアクセスを保証する2つの方法があります。

- 23.1.3項「アプリケーション・ライブラリ」

- 23.2.2.2.1項「Bundle-Classpathを使用したサードパーティJARファイルへのアクセス」

- 23.2.2.2.2項「-Xbootclasspathを使用したサードパーティJARファイルへのアクセス」

23.2.2.2.1 Bundle-Classpathを使用したサードパーティJARファイルへのアクセス

Oracle Event ProcessingアプリケーションJARファイルにサードパーティJARファイルをパッケージ化することをお薦めします。JARファイルは、任意の場所に保存できます。

注意:

このアプローチでは、JARファイルのロード順序をほとんど制御できず、依存関係の競合が発生する可能性があります。このため、Oracle Event Processingサーバー・アプリケーション・ライブラリの使用をお薦めします。詳細は、23.1.3項「アプリケーション・ライブラリ」を参照してください。

ただし、MANIFEST.MFファイルにBundle-Classpathヘッダーを追加し、アプリケーション・クラス・パスを更新することにより、Oracle Event ProcessingアプリケーションによるサードパーティJARファイルでのクラスの検出を保証する必要があります。Bundle-Classpathをクラスおよびリソースの検索先となるJARファイル・パス名のカンマ区切りのリストに設定します。バンドル自身を指定するには、ピリオド(.)を使用します。例:

Bundle-Classpath: ., commons-logging.jar, myExcitingJar.jar, myOtherExcitingJar.jar

ネイティブ・ライブラリにアクセスする必要がある場合は、ネイティブ・ライブラリもJARファイルにパッケージ化し、MANIFEST.MFファイルのBundle-NativeCodeヘッダーを使用してJARでのその場所を指定する必要があります。

詳細は、5.7.1項「Oracle Event Processingプロジェクトへの標準JARファイルの追加方法」を参照してください。

23.2.2.2.2 -Xbootclasspathを使用したサードパーティJARファイルへのアクセス

JDBCドライバなどのOracle Event Processingにデプロイされているすべてのアプリケーションで使用されるライブラリがJARファイルに含まれている場合は、サーバー・インスタンスの起動に使用するスクリプト内のjavaコマンドに-Xbootclasspath/aオプションを指定することで、JARファイルをサーバーのブート・クラスパスに追加できます。

注意:

このアプローチでは、JARファイルのロード順序をほとんど制御できず、依存関係の競合が発生する可能性があります。このため、Oracle Event Processingサーバー・アプリケーション・ライブラリの使用をお薦めします。詳細は、23.1.3項「アプリケーション・ライブラリ」を参照してください。

サーバー起動スクリプト名はstartwlevs.cmd (Windows)またはstartwlevs.sh (UNIX)で、スクリプトはドメイン・ディレクトリ内のサーバー・ディレクトリにあります。すぐに使用できるように用意されているサンプル・ドメインはORACLE_CEP_HOME/ocep_11.1/samples/domainsにあり、ユーザー・ドメインはORACLE_CEP_HOME/user_projects/domainsにあります。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Event Processingの主なインストール・ディレクトリです。

wlevs_2.0.jarファイルを実行するjavaコマンドに-Xbootclasspath/aオプションを追加して、起動スクリプトを更新します。システム全体でアクセスするサードパーティJARファイルのフル・パス名に-Xbootclasspath/aオプションを設定します。

たとえば、デプロイされているすべてのアプリケーションからe:\jars\myExcitingJAR.jarというJARファイルにアクセスできるようにする場合は、起動スクリプトのjavaコマンドを次のように更新します。更新箇所を太字で示します(実際には、コマンドは1行に1つにする必要があります)。

%JAVA_HOME%\bin\java -Dwlevs.home=%USER_INSTALL_DIR% -Dbea.home=%BEA_HOME%
-Xbootclasspath/a:e:\jars\myExcitingJAR.jar
-jar "%USER_INSTALL_DIR%\bin\wlevs_2.0.jar" -disablesecurity %1 %2 %3 %4 %5 %6

23.2.3 外部ステージによるアプリケーションのアセンブル

外部ステージに依存しているアプリケーションをアセンブルするとき、クラスパス依存関係に注意してください。図23-1に示したアプリケーションの依存関係グラフを考慮してください。

図23-1 外部ステージ依存関係グラフ

「図23-1 外部ステージ依存関係グラフ」の説明

この例では、アプリケーションAはアプリケーションBに、アプリケーションBはアプリケーションCに、アプリケーションCはアプリケーションAに依存します。アプリケーションCは、Java Beanイベント・タイプMarketEvent用のイベント・タイプ・クラスを宣言し、エクスポートします。アプリケーションAとBは、アプリケーションCによって提供されたMarketEventクラスをインポートします。

次の点に注意してください。

- 外部ステージを再デプロイする場合、そのアプリケーションまたは外部ステージに依存するすべての外部ステージを再デプロイする必要があります。
たとえば、アプリケーションBを再デプロイする場合、アプリケーションAも再デプロイする必要があります。

- 1つの外部ステージと他のステージの間にクラスパスの依存関係がある場合、共有クラスを宣言し、エクスポートする外部ステージをデプロイするときは、共有クラスをインポートするすべての外部ステージを再デプロイする必要があります。
たとえば、アプリケーションCを再デプロイする場合、アプリケーションC(MarketEvent)とクラスパスの依存関係がアプリケーションAとBも再デプロイする必要があります。

詳細は、次を参照してください:

- 1.4.1.2項「EPNアセンブリ・ファイルでの外部ステージの参照」

- 23.5項「Oracle Event Processingアプリケーションのデプロイ」

23.2.4 カスタム・アダプタまたはイベントBeanの固有ハンドルでのアセンブル

通常、カスタム・アダプタおよびイベントBeanは、プロセッサ、ストリームおよびビジネス・ロジックPOJOなど、他のコンポーネントを含む1つのアプリケーションJARファイルにバンドルされます。ただし、アダプタを固有のJARファイルにバンドルし、他のアプリケーション・バンドルでアダプタを参照する必要がある場合もあります。

これは、たとえば、2つの異なるアプリケーションが同じデータ・フィード・プロバイダからのデータを読み込み、両方のアプリケーションが同じイベント・タイプを使用する場合に役立ちます。この場合、2つの異なるアプリケーションで実装が重複するよりも、同一のアダプタおよびイベント・タイプの実装を共有するほうが有意義です。

異なるバンドルでアダプタおよびアダプタを使用するアプリケーションを構成する方法には、実際の違いはなく、構成を配置する場所が異なります。

この項では次について説明します:

- 23.2.4.1項「固有のバンドルでのカスタム・アダプタのアセンブル方法」

- 23.2.4.2項「固有のバンドルでのイベントBeanのアセンブル方法」

23.2.4.1 固有のバンドルでのカスタム・アダプタのアセンブル方法

カスタム・アダプタとその依存クラスは固有のバンドルにアセンブルできます。

カスタム・アダプタを固有のバンドルにアセンブルする手順:

1. カスタム・アダプタのJavaクラス、カスタム・アダプタ・ファクトリのJavaクラス、およびオプションで、アダプタが着信データを変換するイベント・タイプのJavaクラスのみが含まれているOSGIバンドルを作成します。
この手順では、バンドルはGlobalAdapterと呼ばれます。

2. GlobalAdapterバンドルのEPNアセンブリ・ファイルで:

- 15.6項「カスタム・アダプタ・ファクトリの作成」の説明に従って、アダプタ・ファクトリをOSGIサービスとして登録します。

- イベント・タイプもバンドルに組み込む場合は、9.5項「アプリケーション・バンドル間でのイベント・タイプの共有」の説明に従って登録します。

- wlevs:adapter要素を使用してカスタム・アダプタ・コンポーネントを宣言しないでください。
この要素は、アダプタを実際に使用するアプリケーション・バンドルのEPNアセンブリ・ファイルで使用します。

- カスタム・アダプタを更に構成する場合は、15.5.2項「カスタム・アダプタ・コンポーネント構成ファイルの構成」の説明に従って、通常の手順を実行します。

- イベント・タイプをGlobalAdapterバンドルに含める場合は、5.7.4項「パッケージのエクスポート方法」の説明に従って、Export-Packageヘッダーを使用し、GlobalAdapterバンドルのMANIFEST.MFファイルでJavaBeanクラスをエクスポートします。

3. 23.5項「Oracle Event Processingアプリケーションのデプロイ」の説明に従って、GlobalAdapterバンドルをアセンブルおよびデプロイします。

4. カスタム・アダプタに使用するプリケーションのEPNアセンブリ・ファイルで、15.5.1項「EPNアセンブリ・ファイルでのカスタム・アダプタの構成」の説明に従って、カスタム・アダプタ・コンポーネントを宣言します。
引き続き、provider属性を使用してOSGI登録済アダプタ・ファクトリを指定しますが、この場合、OSGIはアダプタを実際に使用するEPNアセンブリ・ファイルとは別の(GlobalAdapterバンドルの)EPNアセンブリ・ファイルで登録されます。

5. GlobalAdapterバンドルのイベント・タイプをエクスポートした場合は、それを使用するアプリケーションに明示的にインポートする必要があります。
これは、23.2.2.1項「MANIFEST.MFファイルの作成」の説明に従って、アプリケーション・バンドルのMANIFEST.MFファイルでImport-Packageヘッダーにパッケージを追加して実行します。

23.2.4.2 固有のバンドルでのイベントBeanのアセンブル方法

カスタム・イベントBeanとその依存クラスは固有のバンドルにアセンブルできます。

カスタム・イベントBeanを固有のバンドルにアセンブルする手順:

1. カスタム・イベントBean Javaクラスおよびカスタム・イベントBeanファクトリJavaクラスのみを含むOSGIバンドルを作成します。
この手順では、バンドルはGlobalEventBeanと呼ばれます。

2. GlobalEventBeanバンドルのEPNアセンブリ・ファイルで:

- 16.3.1.3項「イベントBeanファクトリの作成」の説明に従って、カスタム・イベントBeanファクトリをOSGIサービスとして登録します。

- wlevs:event-bean要素を使用してカスタム・イベントBeanコンポーネントを宣言しないでください。
この要素は、イベントBean実際に使用するアプリケーション・バンドルのEPNアセンブリ・ファイルで使用します。

3. 23.5項「Oracle Event Processingアプリケーションのデプロイ」の説明に従って、GlobalEventBeanバンドルをアセンブルおよびデプロイします。

4. カスタム・イベントBeanに使用するプリケーションのEPNアセンブリ・ファイルで、16.3.1.3項「イベントBeanファクトリの作成」の説明に従って、カスタム・イベントBeanコンポーネントを宣言します。
引き続き、provider属性を使用してOSGI登録済カスタム・イベントBeanファクトリを指定しますが、この場合、OSGIはアダプタを実際に使用するEPNアセンブリ・ファイルとは別の(GlobalEventBeanバンドルの)EPNアセンブリ・ファイルで登録されます。

5. GlobalEventBeanバンドルのイベント・タイプをエクスポートした場合は、それを使用するアプリケーションに明示的にインポートする必要があります。
これは、23.2.2.1項「MANIFEST.MFファイルの作成」の説明に従って、アプリケーション・バンドルのMANIFEST.MFファイルでImport-Packageヘッダーにパッケージを追加して実行します。

23.3 アプリケーション・ライブラリの管理

Oracle Event Processingアプリケーション・ライブラリを使用して、共有ライブラリを便利な場所にデプロイし、Oracle Event Processingサーバーの起動時にデプロイする共有ライブラリの順序を完全に制御できます。

この項では、次の項を含めて、Oracle Event Processingサーバー・アプリケーション・ライブラリを管理する方法について説明します。

- 23.3.1項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの定義方法」

- 23.3.2項「bundler.shを使用したアプリケーション・ライブラリの作成方法」

- 23.3.3項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの作成方法」

- 23.3.4項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの更新方法」

- 23.3.5項「Oracle Event Processing Visualizerを使用したアプリケーション・ライブラリの表示方法」

詳細は、23.1.3項「アプリケーション・ライブラリ」を参照してください。

23.3.1 Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの定義方法

Oracle Event Processingサーバー・アプリケーション・ライブラリを使用する前に、Oracle Event Processing IDE for Eclipseデザイン・タイム構成をアプリケーション・ライブラリのディレクトリの場所で更新する必要があります。

デフォルトのアプリケーション・ライブラリ構成の詳細は、次を参照してください。

- 23.1.3.1項「ライブラリ・ディレクトリ」

- 23.1.3.2項「ライブラリ拡張ディレクトリ」

詳細は、23.3項「アプリケーション・ライブラリの管理」を参照してください。

Oracle Event Processing IDE for Eclipseを使用してアプリケーション・ライブラリのディレクトリを定義する手順:

1. Oracle Event Processing IDE for Eclipseを起動します。

2. プロジェクトを右クリックし、「プロパティ」を選択します。
図23-2に表示されているように、「プリファレンス」ダイアログが表示されます。

図23-2 「プリファレンス」ダイアログ: アプリケーション・ライブラリのパス

「図23-2 「プリファレンス」ダイアログ: アプリケーション・ライブラリのパス」の説明

3. Oracle Oracle Event Processingアプリケーション・ライブラリのパスを選択します。

4. 表23-1の説明に従って、アプリケーション・ライブラリのパスを指定します。

表23-1 Oracle Event Processingアプリケーション・ライブラリのパス

オプション

説明

「絶対パスを使用」

アプリケーション・ライブラリのディレクトリに絶対パスを指定するにはこのオプションを選択します。

23.3.1.1項「絶対パスの構成方法」を参照してください。

「パス変数の拡張」

パス変数に基づいてアプリケーション・ライブラリを指定するにはこのオプションを選択します。

23.3.1.2項「パス変数を拡張する方法」を参照してください。

23.3.1.1 絶対パスの構成方法

アプリケーション・ライブラリ・パスを絶対パスとして指定できます。チーム環境では、23.3.1.2項「パス変数を拡張する方法」の説明に従って、パス変数に基づくアプリケーション・ライブラリ・パスを指定する方がより便利です。

絶対パスを構成するには:

1. 「参照」ボタンをクリックして、ファイル・システム・ブラウザを開きます。

2. ファイル・システム・ブラウザを使用して、ディレクトリを選択します。

注意:

ディレクトリはOracle Event Processingサーバー・ドメインに存在する必要があります。詳細は、6.2項「Oracle Event Processingサーバーの作成」を参照してください。

3. 「OK」をクリックします。

4. 「適用」をクリックします。

5. 「OK」をクリックします。

23.3.1.2 パス変数を拡張する方法

パス変数を拡張することで、アプリケーション・ライブラリ・パスを指定できます。これは、最もフレキシブルなアプローチであり、チーム環境に適切です。あるいは、23.3.1.1項「絶対パスの構成方法」に従って、絶対パスでアプリケーション・ライブラリを指定できます。

パス変数を拡張するには:

1. 「変数」ボタンをクリックします。
図23-3に示すようにパス変数の選択ダイアログが表示されます。

図23-3 パス変数の選択ダイアログ

「図23-3 パス変数の選択ダイアログ」の説明

2. 「新規」をクリックします。
図23-4に示すような新しい変数ダイアログが表示されます。

図23-4 新しい変数ダイアログ

「図23-4 新しい変数ダイアログ」の説明

3. 表23-2で説明されているように、「新規変数」ダイアログを構成します。

表23-2 Oracle Event Processingアプリケーション・ライブラリ・パス変数

オプション

説明

名前

変数の名前を入力します。

ロケーション

「フォルダ」ボタンをクリックして、ファイル・システム・ブラウザを開きます。アプリケーション・ライブラリのディレクトリを使用するには、ルートディレクトリを選択します。

注意: ディレクトリはOracle Event Processingサーバー・ドメインに存在する必要があります。詳細は、6.2項「Oracle Event Processingサーバーの作成」を参照してください。

4. 「OK」をクリックします。
図23-5で示したとおり、パス変数の選択ダイアログに新しいパス変数が表示されます。

図23-5 パス変数の選択(当該変数名が表示)

「図23-5 パス変数の選択(当該変数名が表示)」の説明

5. オプションで、変数を選択し、「拡張」をクリックします。
図23-6に示すように、変数の拡張ダイアログが表示されます。このダイアログには、この変数のために指定したルートディレクトリの下にあるすべてのディレクトリが表示されます。

図23-6 変数の拡張ダイアログ

「図23-6 変数の拡張ダイアログ」の説明

6. サブディレクトリを選択して、「OK」をクリックします。
アプリケーション・ライブラリ・パスは、図23-7で示すように定義した変数パスに対して相対的に指定します。

図23-7 「プリファレンス」ダイアログ(アプリケーション・ライブラリ・パスとパス変数)

「図23-7 「プリファレンス」ダイアログ(アプリケーション・ライブラリ・パスとパス変数)」の説明

7. 「適用」をクリックします。

8. 「OK」をクリックします。

23.3.2 bundler.shを使用したアプリケーション・ライブラリの作成方法

このプロシージャでは、バンドル・ユーティリティを使用したOSGiバンドルの作成方法について説明します。

この方法をお薦めします。手動でアクティベータ実装を構成する場合は、23.3.3項「Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの作成方法」を参照してください。

新規JDBCドライバのアプリケーション・ライブラリを作成する場合は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のbundler.shで構築されるアプリケーション・ライブラリを使用したデータベース・ドライバへのアクセス方法に関する項を参照してください。

詳細は、23.1.3.3項「アプリケーション・ライブラリの作成」を参照してください。

bundler.shを使用してアプリケーション・ライブラリを作成する手順:

1. 3.2項「開発環境の設定」に従って環境を設定します。

2. bundler.shスクリプトを実行して、ドライバを含むOSGiバンドルを作成します。
bundler.shスクリプトは、ORACLE_CEP_HOME/ocep_11.1/binディレクトリにあります。ORACLE_CEP_HOMEは、Oracle Event Processingサーバーのインストール先のディレクトリです。

例23-1は、bundler.shコマンド・ライン・オプションを示し、表23-3は、これらのオプションを説明します。

例23-1 bundler.shコマンド・ライン・オプション

bundler -source JAR -name NAME -version VERSION
[-factory CLASS+] [-service INTERFACE+] [-fragmenthost HOST]
[-stagedir PATH] [-targetdir PATH]
[+import PACKAGE|REGEX+] [-imods REGEX;MODS+] [-import PACKAGE+]
[+export PACKAGE|REGEX+] [-emods REGEX;MODS+]
[-dimport PACKAGE+] [-explode] [-verbose]

表23-3 bundler.shコマンド・ライン・オプション

引数

説明

-source JAR

バンドルするソースJARファイルのパス。

-name NAME

バンドルのシンボリック名。ターゲットJARファイル名のルートは名前の値から導出されています。

-version VERSION

バンドル・バージョン番号。すべてのエクスポートされたパッケージは、この値のバージョン属性で修飾されます。ターゲットJARファイル名には、バージョン番号が含まれています。

-factory CLASS+

OSGiサービスとしてインスタンス化および登録される1つ以上のファクトリ・クラスのスペース区切りリストを指定するオプションの引数。各サービスは、OSGiサービス・レジストリに名前(-name)とバージョン(-version)プロパティとともに登録されます。

この引数は-fragmenthost引数とは互換性がありません。

-service INTERFACE+

各ファクトリ・オブジェクト・サービス登録のオブジェクト・クラスとして使用する1つ以上のJavaインタフェースのスペース区切りリストを指定するオプションの引数。インタフェース名を指定していない場合、または指定したインタフェース数がファクトリ・クラス数と一致していない場合、各ファクトリ・オブジェクトはファクトリ・クラス名で登録されます。

-fragmenthost HOST

結果のバンドルがフラグメント・ハンドルであることを示し、ホスト・バンドルのシンボリック名を指定するオプションの引数。

この引数は-factory引数とは互換性がありません。

-stagedir PATH

ターゲットJARファイル作成時の一時ファイルの書込み先を指定するオプションの引数。

デフォルト: ./bundler.tmp

-targetdir PATH

生成されたバンドルJARファイルの場所を指定するオプションの引数。

デフォルト: 現在の作業ディレクトリ(.)

+import PACKAGE|REGEX+

1つ以上のパッケージ、またはマニフェストImport-Package属性から除外するパッケージを選択するための通常表現のスペース区切りリスト。

デフォルトでは、(java.*を除く)すべての依存パッケージがインポートされます。

-imods REGEX;MODS+

インポート修飾子は通常表現と一致するパッケージに適用されます。

-import PACKAGE

マニフェストImport-Package属性に含まれる追加パッケージ。

指定したインポート修飾子は適用されません。

+export PACKAGE|REGEX+

1つ以上のパッケージ、またはマニフェストExport-Package属性から除外するパッケージを選択するための通常表現のスペース区切りリスト。

デフォルトでは、すべてのバンドル・パッケージがエクスポートされます。

-emods REGEX;MODS+

エクスポート修飾子は通常表現と一致するパッケージに適用されます。

-dimport PACKAGE+

マニフェストDynamicImport-Package属性に含まれる追加パッケージ。

-explode

このオプションのフラグでは、ソースJARの内容のターゲットJARファイルへの移動を指定します。

デフォルトでは、ソースJARはターゲットJARファイル内にネストされ、生成されたバンドル・マニフェストに適切なBundle-Classpath属性に組み込まれます。

-verbose

詳細出力を有効にするオプション・フラグ。

例23-2は、bundler.shを使用してOracle JDBCドライバ用のOSGiバンドルを作成する方法を示します。

例23-2 Bundlerユーティリティの使用

bundler.sh \
-source C:\drivers\com.oracle.ojdbc14_11.2.0.jar \
-name oracle11g \
-version 11.2.0 \
-factory oracle.jdbc.xa.client.OracleXADataSource oracle.jdbc.OracleDriver \
-service javax.sql.XADataSource java.sql.Driver \
-targetdir C:\stage

ソースJARは、C:\driversディレクトリにあるOracleドライバです。生成されたバンドルJARの名前は、-nameと-version引数(oracle10g_11.2.0.jar)の連結で、C:\stageディレクトリに作成されます。バンドルJARには、例23-3に示すファイルがあります。

例23-3 バンドルJARコンテンツ

1465 Thu Jun 29 17:54:04 EDT 2006 META-INF/MANIFEST.MF
1540457 Thu May 11 00:37:46 EDT 2006 com.oracle.ojdbc14_11.2.0.jar
1700 Thu Jun 29 17:54:04 EDT 2006 com/bea/core/tools/bundler/Activator.class

コマンド・ライン・オプションによって、バンドルがアクティブ化されるときにOSGiサービスとしてインスタンス化および登録される2つのファクトリ・クラスがあることを指定します。表23-4に示すように、各ファクトリ・クラスは別々のオブジェクト・クラスにあります。

表23-4 ファクトリ・クラスおよびサービス・インタフェース

ファクトリ・クラス

サービス・インタフェース

oracle.jdbc.xa.client.OracleXADataSource

javax.sql.XADataSource

oracle.jdbc.OracleDriver

java.sql.Driver

各サービスは、nameプロパティをoracle11gに設定し、versionプロパティを11.2.0の値で登録します。例23-4は、サービスの登録を示すOracle Event Processingサーバー・ログ・メッセージです。

例23-4 サービス登録ログ・メッセージ

...
INFO: [Jun 29, 2006 5:54:18 PM] Service REGISTERED: { version=11.2.0, name=oracle11g, objectClass=[ javax.sql.XADataSource ], service.id=23 }
INFO: [Jun 29, 2006 5:54:18 PM] Service REGISTERED: { version=11.2.0, name=oracle11g, objectClass=[ java.sql.Driver ], service.id=24 }
INFO: [Jun 29, 2006 5:54:18 PM] Bundle oracle11g STARTED
...

3. アプリケーション・ライブラリJARを該当するOracle Event Processingサーバー・アプリケーション・ディレクトリにコピーします。

1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置く必要があります。
23.1.3.2項「ライブラリ拡張ディレクトリ」を参照してください。

2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。
23.1.3.1項「ライブラリ・ディレクトリ」を参照してください。

詳細は、23.1.3項「アプリケーション・ライブラリ」を参照してください。

4. Oracle Event Processingサーバーを停止し、起動します。
『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingサーバーの起動および停止に関する項を参照してください。

23.3.3 Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの作成方法

ここでは、Oracle Event Processing IDE for Eclipseを使用してドライバ用のOSGiバンドルを作成し、Oracle Event Processingサーバー上にデプロイする手順を説明します。

この方法をお薦めします。手動でアクティベータ実装を構成しない場合は、23.3.2項「bundler.shを使用したアプリケーション・ライブラリの作成方法」を参照してください。

新規JDBCドライバのアプリケーション・ライブラリを作成する場合は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processing IDE for Eclipseで構築されるアプリケーション・ライブラリを使用したデータベース・ドライバへのアクセス方法に関する項を参照してください。

Oracle Event Processing IDE for Eclipseを使用してアプリケーション・ライブラリを作成する手順:

1. Oracle Event Processing IDE for Eclipseを使用して、新しいOracle Event Processingプロジェクトを作成します。
詳細は、5.2項「Oracle Event Processingプロジェクトの作成」を参照してください。

2. プロジェクト・フォルダを右クリックして、「新規」>「フォルダ」を選択します。

3. 「フォルダ名」フィールドにlibと入力し、「終了」をクリックします。

4. Oracle Event Processing for Eclipseの外で、JDBC JARファイルをlibフォルダにコピーします。

5. Oracle Event Processing IDE for Eclipse内で、libフォルダを右クリックして、「リフレッシュ」を選択します。
図23-8に示すように、JARファイルがlibフォルダに表示されます。

図23-8 Oracle Event Processing IDE for Eclipse lib ディレクトリ

「図23-8 Oracle Event Processing IDE for Eclipse libディレクトリ」の説明

6. srcディレクトリを右クリックして、「新規」>「クラス」を選択します。
図23-9に示すように、「Javaクラス」ダイアログが表示されます。

図23-9 「新規Javaクラス」ダイアログ

「図23-9 「新規Javaクラス」ダイアログ」の説明

7. 表23-5に示すように、「新規Javaクラス」ダイアログを構成します。

表23-5 新規Javaクラス・パラメータ

パラメータ

説明

パッケージ名

パッケージの名前。たとえば、com.fooを指定します。

名前

クラスの名前。たとえば、MyActivatorを指定します。

その他のパラメータはデフォルト値のままにします。

8. 「終了」をクリックします。
新規のJavaクラスがプロジェクトに追加されます。

9. 例23-5に示すように、実装するためにJavaクラスを編集します。
JDBCドライバの既存のバージョンを差し代えるように、NAMEおよびVERSIONを設定します。この例では既存のバージョンは、次のとおりです。

- oracle10g

- 10.0.0

既存のバージョンを差し代えるために、MyActivatorクラスではこれらの値を次の値に設定します。

- oracle11g

- 11.2.0

例23-5 MyActivatorクラスの実装

package com.foo;

import java.util.Dictionary;
import java.util.Properties;

import javax.sql.XADataSource;
import java.sql.Driver;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;

public class MyActivator implements BundleActivator {

private static final String NAME="oracle11g";
private static final String VERSION="11.2.0";

private String[] factories = {"oracle.jdbc.xa.client.OracleXADataSource","oracle.jdbc.OracleDriver"};
private String[] interfaces= {"javax.sql.XADataSource","java.sql.Driver"};
private ServiceRegistration[] serviceRegistrations = new ServiceRegistration[factories.length];

public void start(BundleContext bc) throws Exception {
Dictionary props = new Properties();
props.put("name", NAME);
props.put("version", VERSION);
for (int i=0; i<factories.length; i++) {
Object svc = bc.getBundle().loadClass(factories[i]).newInstance();
serviceRegistrations[i] = bc.registerService(interfaces[i], svc, props);
}
}

public void stop(BundleContext bc) throws Exception {
for (int i=0; i<serviceRegistrations.length; i++) {
serviceRegistrations[i].unregister();
}
}
}

10. META-INF/MANIFEST.MFファイルを右クリックし、次で開く>プラグイン・マニフェストエディタを選択します。
図23-10に示すように、マニフェスト・エディタが表示されます。

図23-10 マニフェスト・エディタ:「概要」タブ

「図23-10 マニフェスト・エディタ:「概要」タブ」の説明

11. 「ランタイム」タブをクリックします。
図23-11に示すように、「ランタイム」タブが表示されます。

図23-11 マニフェスト・エディタ:「ランタイム」タブ

「図23-11 マニフェスト・エディタ:「ランタイム」タブ」の説明

12. 「クラスパス」ペインで、「追加」をクリックします。
図23-12に示すように、JAR選択ダイアログが表示されます。

図23-12 JARの選択ダイアログ

「図23-12 JAR選択ダイアログ」の説明

13. libディレクトリを展開して、使用するデータベース・ドライバJARファイルを選択します。

14. 「OK」をクリックします。

15. 「依存関係」タブをクリックします。
図23-13に示すように、「依存関係」タブが表示されます。

図23-13 マニフェスト・エディタの「依存関係」タブ

「図23-13 マニフェスト・エディタの「依存関係」タブの説明

16. インポートされたパッケージペインで、「追加」をクリックします。
図23-14に示すように、パッケージの選択ダイアログが表示されます。

図23-14 パッケージの選択ダイアログ

「図23-14 パッケージの選択ダイアログ」の説明

17. エクスポートされたパッケージフィールドで、org.osgi.frameworkを入力します。
図23-14に示すように、リスト・ボックスには、その接頭辞の付いているすべてのパッケージが表示されます。

18. リスト・ボックスでorg.osgi.frameworkを選択して、「OK」をクリックします。

19. MANIFEST.MFタブをクリックします。
図23-15に示すように、MANIFEST.MFタブが表示されます。

図23-15 マニフェスト・エディタ

「図23-15 マニフェスト・エディタ」の説明

20. 例23-6に示すように、使用するJARを一時ディレクトリに解凍します。

例23-6 データベース・ドライバの解凍

$ pwd
/tmp
$ ls com.*
com.bea.oracle.ojdbc6_1.0.0.0_11-1-0-7.jar
$ mkdir driver
$ cd driver
$ jar -xvf ../com.bea.oracle.ojdbc6_1.0.0.0_11-1-0-7.jar
$ ls
META-INF  oracle
$ cd META-INF
$ ls
MANIFEST.MF  services

21. 例23-7に示すように、使用するJAR MANIFEST.MFファイルを開いて、Export-Packageエントリをコピーし、マニフェスト・エディタに貼り付けます。

例23-7 マニフェスト・エディタへのエクスポート・パッケージの追加

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %project.name
Bundle-SymbolicName: JDBCDriver
Bundle-Version: 1.0.0
Bundle-Localization: bundle
Bundle-Vendor: %project.vendor
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ClassPath: .
Import-Package: com.bea.wlevs.configuration;version="11.1.1.4_0", ...
Export-Package: oracle.core.lmx;version=1.0.0.0_11-1-0-7,oracle.core.l
vf;version=1.0.0.0_11-1-0-7,oracle.jdbc;version=1.0.0.0_11-1-0-7,orac
le.jdbc.aq;version=1.0.0.0_11-1-0-7,oracle.jdbc.connector;version=1.0
.0.0_11-1-0-7,oracle.jdbc.dcn;version=1.0.0.0_11-1-0-7,oracle.jdbc.dr
iver;version=1.0.0.0_11-1-0-7,oracle.jdbc.internal;version=1.0.0.0_11
-1-0-7,oracle.jdbc.oci;version=1.0.0.0_11-1-0-7,oracle.jdbc.oracore;v
ersion=1.0.0.0_11-1-0-7,oracle.jdbc.pool;version=1.0.0.0_11-1-0-7,ora
cle.jdbc.rowset;version=1.0.0.0_11-1-0-7,oracle.jdbc.util;version=1.0
.0.0_11-1-0-7,oracle.jdbc.xa;version=1.0.0.0_11-1-0-7,oracle.jdbc.xa.
client;version=1.0.0.0_11-1-0-7,oracle.jpub.runtime;version=1.0.0.0_1
1-1-0-7,oracle.net.ano;version=1.0.0.0_11-1-0-7,oracle.net.aso;versio
n=1.0.0.0_11-1-0-7,oracle.net.jndi;version=1.0.0.0_11-1-0-7,oracle.ne
t.ns;version=1.0.0.0_11-1-0-7,oracle.net.nt;version=1.0.0.0_11-1-0-7,
oracle.net.resolver;version=1.0.0.0_11-1-0-7,oracle.security.o3logon;
version=1.0.0.0_11-1-0-7,oracle.security.o5logon;version=1.0.0.0_11-1
-0-7,oracle.sql;version=1.0.0.0_11-1-0-7,oracle.sql.converter;version
=1.0.0.0_11-1-0-7

22. 例23-8に示すように、マニフェスト・エディタにBundle-Activator要素を追加します。
Bundle-Activatorの値は、Activatorクラスの完全修飾クラス名です。

例23-8 マニフェスト・エディタへのBundle-Activator要素の追加

Manifest-Version: 1.0
Bundle-Activator: com.foo.MyActivator
Bundle-ManifestVersion: 2
Bundle-Name: %project.name
Bundle-SymbolicName: JDBCDriver
Bundle-Version: 1.0.0
Bundle-Localization: bundle
Bundle-Vendor: %project.vendor
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ClassPath: .
Import-Package: com.bea.wlevs.configuration;version="11.1.1.4_0", ...
Export-Package: oracle.core.lmx;version=1.0.0.0_11-1-0-7, ...
...

23. 例23-9に示すように、マニフェスト・エディタにDynamicImport-Package要素を追加します。

例23-9 マニフェスト・エディタへのDynamicImport-Package要素の追加

Manifest-Version: 1.0
Bundle-Activator: com.foo.MyActivator
Bundle-ManifestVersion: 2
Bundle-Name: %project.name
Bundle-SymbolicName: JDBCDriver
Bundle-Version: 1.0.0
Bundle-Localization: bundle
Bundle-Vendor: %project.vendor
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ClassPath: .
DynamicImport-Package: *
Import-Package: com.bea.wlevs.configuration;version="11.1.1.4_0", ...
Export-Package: oracle.core.lmx;version=1.0.0.0_11-1-0-7, ...
...

24. Oracle Event ProcessingアプリケーションをJARファイルにエクスポートします。
詳細は、5.5.1項「Oracle Event Processingプロジェクトのエクスポート方法」を参照してください。

25. バンドルJARを適切なOracle Event Processingサーバー・アプリケーション・ライブラリ・ディレクトリにコピーします。

1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置く必要があります。
23.1.3.2項「ライブラリ拡張ディレクトリ」を参照してください。

2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。
23.1.3.1項「ライブラリ・ディレクトリ」を参照してください。

詳細は、23.1.3項「アプリケーション・ライブラリ」を参照してください。

26. Oracle Event Processingサーバーを停止し、起動します。
『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingサーバーの起動および停止に関する項を参照してください。

23.3.4 Oracle Event Processing IDE for Eclipseを使用したアプリケーション・ライブラリの更新方法

アプリケーション・ライブラリ拡張、アプリケーション・ライブラリ・ディレクトリまたはそれらのユーザー定義のサブディレクトリでJARファイルの追加、置き換えまたは解除を行う場合、次の2つの場所で変更を加える必要があります。

- Oracle Event Processing IDE for Eclipseでサーバーのランタイムを作成するために使用したローカルOracle Event Processingサーバー。

- 依存アプリケーションをデプロイされた本番Oracle Event Processingサーバー。

これらの変更は、同時に実行する必要がありません。アプリケーション・ライブラリの変更に依存するプロジェクトのコードを変更する前に、ローカルOracle Event Processingサーバーに変更を加える必要があります。アプリケーション・ライブラリの変更に依存するアプリケーションをデプロイする前に、本番Oracle Event Processingサーバーに変更を加える必要があります。

詳細は、23.3項「アプリケーション・ライブラリの管理」を参照してください。

Oracle Event Processing IDE for Eclipseを使用してアプリケーション・ライブラリを更新する手順:

1. 本番Oracle Event Processingサーバー上のアプリケーション・ライブラリ拡張またはアプリケーション・ライブラリ・ディレクトリに新しいまたは改訂されたバンドルを追加します。
これは、このアプリケーション・ライブラリに依存するアプリケーションをデプロイするサーバーです。

ライブラリのデプロイメント順序を制御するには、ライブラリを適切な名前のサブディレクトリに整理します。

詳細は、次を参照してください:

- 23.1.3.2項「ライブラリ拡張ディレクトリ」

- 23.1.3.1項「ライブラリ・ディレクトリ」

- 23.1.4項「デプロイメントおよびデプロイメント順序」

2. 本番Oracle Event Processingサーバーを停止し、起動します。
Oracle Event Processingサーバーは、更新されたアプリケーション・ライブラリ拡張またはアプリケーション・ライブラリ・ディレクトリからリフレッシュします。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のスタンドアロン・サーバー・ドメインでのOracle Event Processingサーバーの起動および停止に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のマルチサーバー・ドメインでのOracle Event Processingサーバーの起動および停止に関する項

3. Oracle Event Processing IDE for EclipseターゲットのランタイムOracle Event Processingサーバー上のアプリケーション・ライブラリ拡張またはアプリケーション・ライブラリ・ディレクトリに同じ新規または改訂されたバンドルを追加します。

4. Oracle Event Processing IDE for Eclipseを起動します。

5. プロジェクトを右クリックし、「ターゲットのランタイムをリフレッシュ」を選択します。
Oracle Event Processing IDE for Eclipseは、Oracle Event Processing IDE for EclipseターゲットのランタイムOracle Event Processingサーバー上の更新されたアプリケーション・ライブラリ拡張またはアプリケーション・ライブラリ・ディレクトリからこのプロジェクトをリフレッシュします。

6. 必要に応じて、アプリケーション依存性を更新します。
たとえば、新規バンドルを追加するか、または既存のバンドルのバージョンを変更します。

詳細は、23.1.2項「アプリケーションの依存関係」を参照してください。

7. 本番Oracle Event Processingサーバーにアプリケーションをアセンブルし、デプロイします。
詳細は、23.5項「Oracle Event Processingアプリケーションのデプロイ」を参照してください。

開発時に、このアプリケーション向けにOracle Event Processing IDE for Eclipseで定義した依存関係は、実行時に本番Oracle Event Processingサーバーのアプリケーション・ライブラリでインストールされたコンポーネントによって満たされます。

23.3.5 Oracle Event Processing Visualizerを使用したアプリケーション・ライブラリの表示方法

Oracle Event Processing Visualizerを使用して、Oracle Event Processingサーバーにデプロイされたアプリケーション・ライブラリを表示できます。

ライブラリ拡張ディレクトリとライブラリ・ディレクトリ、そのいずれからもライブラリを表示できます。

注意:

Oracle Event Processing Visualizerでは、アプリケーション・ライブラリをOracle Event Processingサーバーにはデプロイできません。Oracle Event Processing Visualizerでは、Oracle Event ProcessingアプリケーションのOracle Event Processingサーバーへのデプロイのみ可能です。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のOracle Event Processingサーバーにデプロイされたアプリケーション・ライブラリの表示方法に関する項

- 23.1.3.2項「ライブラリ拡張ディレクトリ」

- 23.1.3.1項「ライブラリ・ディレクトリ」

- 23.3項「アプリケーション・ライブラリの管理」

23.4 ログ・メッセージ・カタログの管理

この項では、Oracle Event Processingアプリケーションのローカライズに使用する、次のようなログ・メッセージ・カタログの管理方法について説明します。

- 23.4.1項「Oracle Event Processingサーバーでのメッセージ・カタログの使用」

- 23.4.2項「ローカライズ用LoggerおよびTextFormatterクラスを生成するためのメッセージ・カタログの解析方法」

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingのロギングおよびデバッグの構成に関する項

- 付録G「スキーマ参照: メッセージ・カタログmsgcat.dtd」

- 付録H「スキーマ参照: ロケール・メッセージ・カタログl10n_msgcat.dtd」

23.4.1 Oracle Event Processingサーバーでのメッセージ・カタログの使用

メッセージ・カタログは、テキスト・メッセージのコレクションが格納される単一のXMLファイルです。各メッセージには、ユニークな識別子が付けられます。これらのXMLファイルを、ビルド・プロセス中に weblogic.i18ngen を使用してクラスにコンパイルします。(詳細については、 「weblogic.i18ngenユーティリティ」 を参照してください)。生成されたクラスのメソッドは、実行時にメッセージをログに記録するために使用されるオブジェクトとなります。

メッセージ・カタログでは、複数のロケールまたは言語がサポートされています。特定のメッセージ・カタログには、最上位カタログというデフォルト・バージョンが必ず1つあり、英語版のメッセージが含まれます。さらに、追加してサポートされるロケールごとに、対応するロケール固有のカタログが付加されます。

最上位カタログ(英語版)には、メッセージの定義に必要な情報がすべて含まれます。ロケール固有のカタログには、メッセージID、変更された日付、および特定ロケールに対応するメッセージの変換だけが含まれます。

メッセージ・カタログ・ファイルは次のXMLドキュメント・タイプ定義(DTD)ファイルのいずれかで定義されます。

- msgcat.dtd - 最上位のデフォルト・カタログの構文を記述します。

- l10n_msgcat.dtd - ロケール固有のカタログの構文を記述します。

DTDはORACLE_CEP_HOEM/modules/com.bea.core.i18n.generator_1.4.0.0.jarに格納されます。

メッセージ・カタログの作成では、ロギングのすべての必要条件に対応するログ・メッセージ・カタログを1つ作成したり、サブシステムまたはJavaパッケージごとに細かく分けてカタログを作成することもできます。表示するときにそのログの特定の部分に焦点を当てることができるよう、複数のサブシステム・カタログの使用をお薦めします。

シンプル・テキスト・カタログについては、国際化される各ユーティリティにシングル・カタログを作成することをお薦めします。

この項では次について説明します:

- 23.4.1.1項「メッセージ・カタログの階層」

- 23.4.1.2項「メッセージ・カタログの命名のガイドライン」

- 23.4.1.3項「メッセージ引数の使い方」

- 23.4.1.4項「メッセージ・カタログのフォーマット」

- 23.4.1.5項「メッセージ・カタログのローカライゼーション」

詳細は、次を参照してください:

- 付録G「スキーマ参照: メッセージ・カタログmsgcat.dtd」

- 付録H「スキーマ参照: ロケール・メッセージ・カタログl10n_msgcat.dtd」

23.4.1.1 メッセージ・カタログの階層

すべてのメッセージは、デフォルトで最上位カタログに定義する必要があります。

基本カタログの様々なローカライゼーションを提供するカタログは、ロケールに基づいた名前がついたmsgcatのサブディレクトリ(ドイツ語の場合はmsgcat/deなど)に定義されています。たとえば、mycat.xmlという最上位カタログと..de/mycat.xmlというそのドイツ語版のカタログがあります。通常、最上位カタログは英語です。ただし、どのカタログでも英語は必須ではありません。

java.util.Localeのドキュメントで定義されているように、ロケールの指定(deなど)にも階層があります。ロケールでは言語、国、およびバリアントを指定できます。言語は、ロケール指定でもっとも一般的なものです。言語は国コードによって拡張できます。たとえば、en\USはアメリカ英語を示します。これに関連付けられたカタログの名前は、..en\US\mycat.xmlとなります。バリアントはベンダーまたはブラウザに固有であり、言語または国で定義された複数のロケールの間で細かな違い(照合順序など)を持たせるために使用します。

23.4.1.2 メッセージ・カタログの命名のガイドライン

メッセージ・カタログ・ファイルの名前(.xml拡張子を除く)は、実行時クラスおよびプロパティ名の生成に使用されるため、命名は慎重に行ってください。

メッセージ・カタログに名前を付ける場合、以下のガイドラインに従ってください。

- メッセージ・カタログを作成しているターゲット・パッケージ内の既存クラスの名前と競合するようなメッセージ・カタログ名は避けます。

- メッセージ・カタログ名に含まれる文字は、クラス名に使用できる文字のみを使用します。

- クラス名の命名規約に従います。

たとえば、カタログの名前がXyz.xmlの場合、生成されるクラス名はXyzLogLocalizerおよびXyzLoggerになります。

以下の考慮事項も、メッセージ・カタログ・ファイルに適用されます。

- メッセージIDは、通常は先頭に0が付く6文字の文字列。一部のインタフェースでは、整数表現もサポートされています。

注意:

これは、ログ・メッセージ・カタログにのみ適用されます。シンプル・テキスト・カタログは任意の文字列をとることができます。

- Javaでは、パッケージと呼ばれるコレクションにクラスをまとめることができます。パッケージ名は、特定のカタログが存在するサブシステムの名前と一致させることをお薦めします。命名が一環していると、OSGiインポートの定義が容易になります。

- ログのLocalizer「クラス」は、実際にはResourceBundleプロパティ・ファイルです。

23.4.1.3 メッセージ引数の使い方

ログ・メッセージのメッセージ本文、メッセージ詳細、原因、およびアクションなどのセクションには、java.text.MessageFormatに記載されているようなメッセージ引数を組み込むことができます。メッセージの内容が、java.text.MessageFormatで指定されたパターンに準拠していることを確認してください。シンプル・テキスト・メッセージでは、引数を入れられるのは、メッセージ本文のセクションに限られます。引数は、実行時に動的に設定される値を表します。これらの値は、メッセージを出力するなどのルーチンに渡されます。1つのメッセージには0から9で番号付けされた10個までの引数をサポートできます。メッセージ本文にはすべての引数を入れる必要がありますが、メッセージ定義(メッセージ本文、メッセージ詳細、妥当な原因)の任意のテキスト・セクションにもこれらの引数の任意のサブセットを入れることができます。メッセージ引数は開発時にメッセージ定義に挿入され、実行時においてメッセージがログに記録されるときに適切なメッセージ・コンテンツに置き換えられます。

以下は、XMLログ・メッセージ定義の抜粋で、メッセージ引数の使い方を示しています。引数の番号は、method属性で指定された引数の1つと対応している必要があります。具体的には、{0}は最初の引数と、{1}は2番目の引数と対応している必要があります。例23-10では、{0}は開けないファイルを表し、{1}は適切に開かれるファイルを表します。

例23-10 メッセージ引数

<messagebody>Unable to open file, {0}. Opening {1}. All arguments must be in body.</messagebody>

<messagedetail> File, {0} does not exist. The server will restore the file
contents from {1}, resulting in the use of default values for all future
requests. </messagedetail>

<cause>The file was deleted</cause>

<action>If this error repeats then investigate unauthorized access to the
file system.</action>

次に、 method 属性の例を示します。

-method="logNoFile(String name, String path)"

例23-10のメッセージの例では、2つの引数{0}および{1}が使用されています。

- 両方とも<messagebody>で使用されています。

- 両方とも<messagedetail>で使用されています。

- どちらも<cause>または<action>では使用されていません。

注意:

1つのメッセージには0から9で番号付けされた10個までの引数をサポートできます。メッセージ本文にはすべての引数を入れる必要がありますが、メッセージ定義(メッセージ詳細、原因、処置)の任意のテキスト・セクションにもこれらの引数の任意のサブセットを入れることができます。

また、引数はString型と想定されるか、String型で表現可能です。数値データは{n,number}と表現されます。日付は{n,date}の形式でサポートされます。ログ・メッセージには重大度レベルを割り当てる必要があります。ログ・メッセージはmethod属性で定義されているとおり、生成済のLoggerメソッドによって生成されます。

23.4.1.4 メッセージ・カタログのフォーマット

最上位のカタログ・ファイルとロケール固有のカタログ・ファイルでは、カタログのフォーマットが若干異なります。最上位カタログでは、基本ロケール(デフォルトでは、英語)のテキスト・メッセージが定義されます。ロケール固有のカタログ(スペイン語に翻訳されたカタログなど)は、最上位バージョンで定義されているテキストの翻訳だけを備えています。さらに、ログ・メッセージ・カタログではシンプル・テキスト・カタログと定義の方法が異なります。

23.4.1.4.1 ログ・メッセージ・カタログ

例23-11はログ・メッセージを1つ持つメッセージ・カタログMyUtilLog.xmlを示しています。このログ・メッセージは、messagebody、messagedetail、causeおよびactionの各要素の使用方法を示しています。

例23-11 ログ・メッセージ・カタログ

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
baseid="600000"
endid="600100"
<log_message
messageid="600001"
severity="warning"
method="logNoAuthorization(String arg0, java.util.Date arg1,int arg2)"
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</log_message>
</message_catalog>

詳細は、付録G「スキーマ参照: メッセージ・カタログmsgcat.dtd」を参照してください。

23.4.1.4.2 シンプル・テキスト・カタログ

例23-12では、1つのシンプル・テキストが定義されているシンプル・テキスト・カタログMyUtilLabels.xmlを示しています。

例23-12 シンプル・テキスト・カタログ

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog>
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
<message>
messageid="FileMenuTitle"
<messagebody>
File
</messagebody>
</message>
</message_catalog>

詳細は、付録G「スキーマ参照: メッセージ・カタログmsgcat.dtd」を参照してください。

23.4.1.4.3 ロケール固有のカタログ

例23-13は、..\msgcat\fr\MyUtilLabels.xmlにあるメッセージのフランス語版です。

例23-13 ロケール固有のカタログ

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<locale_message_catalog
l10n_package="programs.utils"
subsystem="MYUTIL"
version="1.0">
<message>
<messageid="FileMenuTitle">
<messagebody> Fichier </messagebody>
</message>
</locale_message_catalog>

messagebody、messagedetail、cause、およびactionの各要素でテキストを入力するときには、有効なUTF-8 (Unicode Transformation Format-8)文字を生成するツールを使用するとともに、適切なキーボードのマッピングがインストールされている必要があります。UTF-8は、ASCII文字のエンコーディングを最適化する、効率的なUnicode文字列エンコーディング方式です。メッセージ・カタログでは常にUTF-8エンコーディング方式が使用されます。

詳細は、付録H「スキーマ参照: ロケール・メッセージ・カタログl10n_msgcat.dtd」を参照してください。

23.4.1.5 メッセージ・カタログのローカライゼーション

カタログ・サブディレクトリの名前は、小文字2文字のISO 639言語コード(日本語はja、フランス語はfrなど)に基づいて付けられます。サポートされている言語コードは、java.util.Locale Javadocで確認できます。

言語コードのバリエーションは、言語コードの下位にある大文字2文字のISO 3166国コードとバリアントを使用するとできます。一般的な構文は、lang\country\variantです。

たとえば、zhは中国の言語コードです。CNは簡体字中国語の国コードで、TWは繁体字中国語の国コードです。このため、zh\CNおよびzh\TWは中国語の異なる2つのロケールです。

バリアントは、特定のロケールを扱うプラットフォーム・ベンダーの機能に違いがある場合などに役立ちます。ベンダー・バリアントには、WIN、MAC、POSIXなどがあります。ロケールをさらに修飾するために2つのバリアントが使用される場合もあります。この場合、バリアントはアンダースコアで区切ります(Traditional_MacとModern_MACなど)。

注意:

言語、国、およびバリアントは、すべて大文字/小文字が区別されます。

完全修飾ロケールはzh\TW\WINのようになり、Win32プラットフォームでの繁体字中国語を識別します。

上記のロケールをサポートするメッセージ・カタログには、次のファイルが含まれます。

- \*.xml - デフォルト・カタログ

- \zh\*.xml - 中国語ローカライゼーション

- \zh\TW\*.xml - 繁体字中国語ローカライゼーション

- \zh\TW\WIN\*.xml - Win32コード・セットに対する繁体字中国語ローカライゼーション

特定のローカライゼーションは、親ローカライゼーションで定義されたすべてのメッセージに対応する必要はありません。

23.4.2 ローカライズ用LoggerおよびTextFormatterクラスを生成するためのメッセージ・カタログの解析方法

メッセージ・カタログXMLファイルを作成すると、weblogic.i18ngenユーティリティを使用してLoggerおよびTextFormatterクラスを作成することができます。

weblogic.i18ngenユーティリティを使用すると、メッセージ・カタログ(XMLファイル)を解析し、ログ・メッセージのテキストをローカライズするためのLoggerクラスおよびTextFormatterクラスを生成できます。このユーティリティでは、メッセージIDのルックアップ・クラス・ハッシュ表weblogic.i18n.L10nLookupのロードに使用するi18n_user.propertiesが作成、または更新されます。

エラーや警告などのメッセージはすべてstderrに送信されます。

ユーザー・カタログが認識されるように、i18n_user.propertiesファイルはOracle Event Processingサーバー・クラス・パスで識別されたディレクトリに置く必要があります。

i18n_user.propertiesファイルは、Oracle Event Processingサーバー・クラス・パスに置くことをお薦めします。i18n_user.propertiesファイルがtargetdirectoryにある場合は、targetdirectoryがOracle Event Processingサーバー・クラス・パスにある必要があります。

LoggerおよびTextFormatterクラスを生成するためのメッセージ・カタログを解析する手順:

1. メッセージ・カタログXMLファイルを作成します。
23.4.1項「Oracle Event Processingサーバーでのメッセージ・カタログの使用」を参照してください。

2. 開発環境を設定します。
3.2項「開発環境の設定」を参照してください。

3. 次の構文を使用して、weblogic.i18ngenユーティリティを実行します。

java weblogic.i18ngen [options] [filelist]

説明:

- options: 表23-6を参照してください。

- filelist: このファイル・リストのファイルとディレクトリを処理します。ディレクトリが指定されている場合は、そのディレクトリのすべてのXMLファイルが処理されます。すべてのファイルの名前には、XMLの接尾辞が付いている必要があります。すべてのファイルはmsgcat.dtd構文に準拠している必要があります。weblogic.i18ngenは、実際に生成されたファイルに対して、完全修飾名リスト(Javaソース)をstdoutに出力します。

表23-6 weblogic.i18ngenユーティリティ・オプション

オプション

説明

-build

必要なすべてのファイルを生成し、コンパイルします。

-buildオプションは、-i18n、-l10n、-keepgeneratedおよび-compileオプションを兼ね備えています。

-d targetdirectory

生成されたJavaソース・ファイルの宛先となるルート・ディレクトリを指定します。ユーザー・カタログ・プロパティは、指定されたtargetdirectoryの相対パスにあるi18n_user.propertiesに配置されます。ファイルは、対応するメッセージ・カタログのi18n_package値およびl10n_package値に基づいて適切なディレクトリに配置されます。デフォルトのターゲット・ディレクトリは現在のディレクトリとなります。このディレクトリは必要に応じて作成されます。

この引数が省略された場合は、メッセージ・カタログに指定されたクラス階層に関係なく、すべてのクラスがカレント・ディレクトリに生成されます。

-n

解析し、有効性を検証しますが、クラスは生成しません。

-keepgenerated

生成されたJavaソース(クラス・ファイルと同じディレクトリに存在)を保持します。

-ignore

エラーを無視します。

-i18n

インターナショナライザ(Loggers、TextFormattersなど)を生成します。

-l10n

Localizer (LogLocalizers 、TextLocalizersなど)を生成します。

-compile

現在のCLASSPATHを使用して生成されたJavaファイルをコンパイルします。生成されたクラスは、 -d オプションで識別されるディレクトリに配置されます。生成されたクラスは、ソースと同じディレクトリに配置されます。

通常は、コンパイルの途中でエラーが検出されると、クラス・ファイルやプロパティ・ファイルが作成されません。 i18ngen は異常な終了ステータスで終了します。

-nobuild

解析と有効性の検証のみを実行します。

-debug

デバッグ・モード。

-dates

weblogic.i18ngenに、カタログ内のメッセージ・タイムスタンプを更新させます。カタログが書込み可能でタイムスタンプが更新された場合、カタログは上書きされます。

注意:

ユーティリティはどのディレクトリからでも実行できますが、ファイルがコマンド・ラインで指定される場合、ファイル・パスはカレント・ディレクトリに対する相対パスになります。

4. ログ・メッセージを翻訳し、必須のローカライズ済リソース・バンドルを生成します。

5. i18n_user.propertiesファイルがOracle Event Processingサーバー・クラス・パスにあることを確認します。

6. 次のパッケージをOracle Event Processingアプリケーションにインポートします。

- weblogic.i18n.logging

- weblogic.logging

7. ログ・メッセージ・リソース・バンドルを含むアプリケーションをアセンブルおよびデプロイします。

23.5 Oracle Event Processingアプリケーションのデプロイ

Oracle Event Processingアプリケーションをアセンブルした後、それをOracle Event Processingサーバー・ドメインにデプロイします。

この項では次について説明します:

- 23.5.1項「Oracle Event Processing IDE for Eclipseを使用してOracle Event Processingアプリケーションをデプロイする方法」

- 23.5.2項「Oracle Event Processing Visualizerを使用してOracle Event Processingアプリケーションをデプロイする方法」

- 23.5.3項「デプロイヤ・ユーティリティを使用してOracle Event Processingアプリケーションをデプロイする方法」

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingスタンドアロン・サーバー・ドメインへのアプリケーションのデプロイに関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のマルチサーバー・ドメインへのOracle Event Processingアプリケーションのデプロイに関する項

23.5.1 Oracle Event Processing IDE for Eclipseを使用してOracle Event Processingアプリケーションをデプロイする方法

Oracle Event Processing IDE for Eclipseを使用して、Oracle Event Processingアプリケーションをデプロイできます。

Oracle Event Processing IDE for Eclipseを使用して、スタンドアロンまたはマルチサーバー・ドメインのいずれかにアプリケーションをデプロイします。

注意:

外部ステージを使用する場合、23.2.3項「外部ステージによるアプリケーションのアセンブル」に示しているように、依存関係ステージのデプロイメントと再デプロイメントを管理するルールに注意してください。

Oracle Event Processing IDE for Eclipseを使用してOracle Event Processingアプリケーションをデプロイする手順:

1. Oracle Event Processingアプリケーションをアセンブルします。
23.2項「Oracle Event Processingアプリケーションのアセンブル」を参照してください。

2. アプリケーションをデプロイするには、Oracle Event Processing IDE for Eclipseを使用します。
6.3.6項「Oracle Event Processingサーバーにアプリケーションをデプロイする方法」を参照してください。

23.5.2 Oracle Event Processing Visualizerを使用してOracle Event Processingアプリケーションをデプロイする方法

Oracle Event ProcessingアプリケーションをOracle Event Processingサーバー・ドメインにデプロイする最も簡単な方法は、Oracle Event Processing Visualizerを使用することです。

Oracle Event Processing Visualizerを使用して、スタンドアロンまたはマルチサーバー・ドメインのいずれかにアプリケーションをデプロイできます。

注意:

外部ステージを使用する場合、23.2.3項「外部ステージによるアプリケーションのアセンブル」に示しているように、依存関係ステージのデプロイメントと再デプロイメントを管理するルールに注意してください。

Oracle Event Processing Visualizerを使用してOracle Event Processingアプリケーションをデプロイする手順:

1. Oracle Event Processingアプリケーションをアセンブルします。
23.2項「Oracle Event Processingアプリケーションのアセンブル」を参照してください。

2. Oracle Event Processing Visualizerを起動します。
6.3.9項「Oracle Event Processing IDE for EclipseからOracle Event Processing Visualizerを起動する方法」を参照してください。

3. Oracle Event Processing Visualizerを使用してアプリケーションをデプロイします。
『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のアプリケーションのデプロイに関する項を参照してください。

23.5.3 デプロイヤ・ユーティリティを使用してOracle Event Processingアプリケーションをデプロイする方法

次の手順では、デプロイヤ・コマンド・ライン・ユーティリティを使用してOracle Event Processingにアプリケーションをデプロイする方法について説明します。

デプロイヤを使用して、スタンドアロンまたはマルチサーバー・ドメインのいずれかにアプリケーションをデプロイできます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のデプロイヤ・コマンドライン・リファレンスに関する項を参照してください。

注意:

外部ステージを使用する場合、23.2.3項「外部ステージによるアプリケーションのアセンブル」に示しているように、依存関係ステージのデプロイメントと再デプロイメントを管理するルールに注意してください。

デプロイヤ・ユーティリティを使用してOracle Event Processingアプリケーションをデプロイする手順:

1. Oracle Event Processingアプリケーションをアセンブルします。
23.2項「Oracle Event Processingアプリケーションのアセンブル」を参照してください。

2. コマンド・ウィンドウを開き、3.2項「開発環境の設定」の説明に従って、環境を設定します。

3. CLASSPATH変数を更新して、ORACLE_CEP_HOME/ocep_11.1/binディレクトリにあるwlevsdeploy.jar JARファイルを指定します。ORACLE_CEP_HOMEは、/oracle_cepなどの主なOracle Event Processingインストール・ディレクトリを示します。

注意:

リモート・コンピュータ上でデプロイヤを実行する場合、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のリモートでのデプロイヤ・ユーティリティの実行に関する項を参照してください。

4. アプリケーションをデプロイするOracle Event ProcessingインスタンスでJettyが構成されていることを確認してください。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event ProcessingのJettyの構成に関する項を参照してください。

5. コマンド・ウィンドウで、次の構文を使用して、アプリケーションをインストールするデプロイヤ・ユーティリティを実行します(実際には、コマンドは1行に1つです)。

prompt> java -jar wlevsdeploy.jar -url http://host:port/wlevsdeployer
-user user -password password -install application_jar_file

説明

- hostは、Oracle Event Processingが実行しているコンピュータのホスト名です。

- portは、Oracle Event Processingがリスニングしているポート番号であり、デフォルト値は9002です。
このポートは、Oracle Event Processingドメインを記述するDOMAIN_DIR/config/config.xmlファイルに指定されています。DOMAIN_DIRは、ドメイン・ディレクトリです。

ポート番号は、<Netio>要素の<Port>子要素の値です。

<Netio>
<Name>NetIO</Name>
<Port>9002</Port>
</Netio>

- userは、Oracle Event Processing管理者のユーザー名です。

- passwordは、Oracle Event Processing管理者のパスワードです。

- application_jar_fileは、23.2項「Oracle Event Processingアプリケーションのアセンブル」の説明に従ってOSGiバンドルにアセンブルされたアプリケーションJARファイルです。このファイルは、デプロイヤ・ユーティリティを実行する同じコンピュータに置かれている必要があります。
たとえば、Oracle Event Processingはホストariel上で実行中で、ポート9002にリスニングしており、管理者のユーザー名とパスワードがwlevs/wlevsであり、アプリケーションJARファイルmyapp_1.0.0.0.jarが/applicationsディレクトリに置かれている場合、コマンドは次のようになります(実際には、コマンドは1行に1つです)。

prompt> java -jar wlevsdeploy.jar -url http://ariel:9002/wlevsdeployer
-user wlevs -password wlevs -install /applications/myapp_1.0.0.0.jar

アプリケーションJARファイルが正常にインストールされ、初期化タスクが完了したら、Oracle Event Processingではアプリケーションが自動的に起動され、アダプタ・コンポーネントでは着信イベントのリスニングがただちに開始されます。

デプロイヤ・ユーティリティでは、アプリケーションJARファイルの再開、一時停止、更新、およびアンインストールや、マルチサーバー・ドメインの指定されたグループへのアプリケーションのデプロイなどの追加オプションが提供されます。詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のデプロイヤ・コマンドライン・リファレンスに関する項を参照してください。

注意:

サーバーがマルチサーバー・ドメインの一部の場合(クラスタリングが有効の場合)は、グループへのデプロイのみが可能です。サーバーがスタンドアロン・サーバー・ドメインの一部の場合(つまり、クラスタリングが無効の場合)は、グループにはデプロイできません。詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingマルチサーバー・ドメイン管理の概要に関する項を参照してください。

Oracle Event Processingは、deployments.xmlファイルを使用して、デプロイ済アプリケーションのOSGiバンドルのリストを内部的に維持します。このファイルは、DOMAIN_DIR/servernameディレクトリにあります。DOMAIN_DIRは、メイン・ドメイン・ディレクトリであり、アプリケーションのデプロイ先となるサーバー・インスタンスに対応します。servernameは、実際のサーバーです。このファイルの詳細は、付録B「デプロイメント・スキーマdeployment.xsd」を参照してください。この情報はあくまでも参考として示しています。deployments.xmlファイルを手動で更新することはお薦めしません。

24 高可用性のためのアプリケーションの開発

この章では、Oracle Event Processingアプリケーションの可用性を向上するために使用できるOracle Event Processingコンポーネントおよび設計パターンについて、および必要なサービス品質を提供するためにOracle Event Processingアプリケーションの高可用性を構成する方法について説明します。

この章の内容は次のとおりです。

- 24.1項「高可用性の理解」

- 24.2項「高可用性の構成」

24.1 高可用性の理解

この項では、Oracle Event Processingアプリケーションの可用性を向上するために使用できるOracle Event Processingコンポーネントおよび設計パターンについて説明します。

この節の内容は以下のとおりです。

- 24.1.1項「高可用性アーキテクチャ」

- 24.1.2項「サービス品質の選択」

- 24.1.3項「高可用性用Oracle Event Processingアプリケーションの設計」

24.1.1 高可用性アーキテクチャ

コンピューティング・リソースのように、Oracle Event Processingサーバーは、データやサービスの損失につながるハードウェアおよびソフトウェアのフォルトの両方に影響を受けやすくなっています。Oracle Event Processingの高可用性オプションは、そのようなフォルトの可能性および影響を共に軽減しようと検索します。

Oracle Event Processingは、アクティブ・スタンバイ高可用性アーキテクチャをサポートします。この方法には、高パフォーマンス、簡素性、およびフェイルオーバー時間の短縮という利点があります。

高可用性を高める必要があるOracle Event Processingアプリケーションは、Oracle Event Processingマルチサーバー・ドメインで稼働している2つ以上のOracle Event Processingサーバー・インスタンスのグループにデプロイされます。Oracle Event Processingは、自動的にグループ内の1つのサーバーをアクティブ・プライマリに選択します。残りのサーバーは、アクティブ・セカンダリとなります。

プライマリ・サーバーおよびセカンダリ・サーバーは、すべて同一の入力イベントを受信するように構成され、それらを並列に処理しますが、プライマリ・サーバーのみがOracle Event Processingアプリケーション・クライアントにイベントを出力します。選択したサービス品質に依存して、セカンダリ・サーバーはメモリー内の問合せを使用してそのような出力イベントをバッファリングし、プライマリ・サーバーは、プライマリ・サーバーが出力済のイベントを使用してセカンダリ・サーバーを最新に保ちます。

図24-1は通常の構成を示します。

図24-1 Oracle Event Processingの高可用性: プライマリ・サーバーおよびセカンダリ・サーバー

「図24-1 Oracle Event Processingの高可用性: プライマリ・サーバーおよびセカンダリ・サーバー」の説明

この項では次について説明します:

- 24.1.1.1項「高可用性のライフサイクルおよびフェイルオーバー」

- 24.1.1.2項「デプロイメント・グループおよび通知グループ」

- 24.1.1.3項「高可用性コンポーネント」

- 24.1.1.4項「高可用性とスケーラビリティ」

- 24.1.1.5項「高可用性およびOracle Coherence」

24.1.1.1 高可用性のライフサイクルおよびフェイルオーバー

図24-2は、Oracle Event Processingの高可用性ライフサイクルの状態図を示します。この図では、状態名(SECONDARY、BECOMING_PRIMARYおよびPRIMARY)はOracle Event Processingの高可用性アダプタのRuntimeMBeanメソッドのgetStateの戻り値に対応します。このような状態はOracle Event Processing専用です。

図24-2 Oracle Event Processingの高可用性ライフサイクルの状態図

「図24-2 Oracle Event Processingの高可用性ライフサイクルの状態図」の説明

初期プライマリとなるサーバーを指定することはできません。初期状態では、マルチサーバー・ドメインで起動する第1サーバーがプライマリになるため、特定の順序でサーバーを起動することによって、プライマリの選択に影響を与えることができます。稼働中の特定のサーバーを強制的にプライマリにすることはできません。プライマリが失敗するとバックアップが機能し、現在のプライマリがフェイルオーバーの起動に失敗しないかぎり、二度と自動的にプライマリになりません。

この項では、Oracle Event Processingの高可用性ライフサイクルを次のような内容で詳細に説明します。

- 24.1.1.1.1項「セカンダリの障害」

- 24.1.1.1.2項「プライマリの障害およびフェイルオーバー」

- 24.1.1.1.3項「高可用性マルチサーバー・ドメインの再結合」

24.1.1.1.1 セカンダリの障害

通常、セカンダリ・サーバーに障害が発生しても図24-3に示すようにOracle Event Processingアプリケーションの動作には影響はありません。選択するサービス品質に関係なくイベントの欠落や重複は発生しません。

図24-3 セカンダリの障害

「図24-3 セカンダリの障害」の説明

24.1.1.1.2 プライマリの障害およびフェイルオーバー

ただし、プライマリ・サーバーで障害が発生した場合、図24-4で示すように、選択するサービス品質に応じて、Oracle Event Processingはイベントの欠落や重複を発生させる可能性があるフェイルオーバーを実行します。

図24-4 プライマリの障害およびフェイルオーバー

「図24-4 プライマリの障害およびフェイルオーバー」の説明

フェイルオーバー中、Oracle Event Processingは自動的に新しいプライマリおよびSECONDARY状態からBECOMING_PRIMARY状態への新しいプライマリの遷移を選択します。選択するサービス品質に依存して、新しいプライマリは構成可能な準備状況のしきい値を満たすまでPRIMARY状態に遷移しません。詳細は、24.1.2項「サービス品質の選択」にある特定のサービス品質オプションを参照してください。

24.1.1.1.3 高可用性マルチサーバー・ドメインの再結合

新しいOracle Event ProcessingサーバーがOracle Event Processing高可用性マルチサーバー・ドメインに追加される場合、または既存の障害が発生したサーバーが再起動する場合、サーバーは、サーバーにデプロイされたすべてのアプリケーションが完全に結合するまで、Oracle Event Processing高可用性デプロイメントと通知グループを完全には結合しません。アプリケーションの種類によって、いつ完全に結合したことが宣言されるかが決定されます。

アプリケーションが完全に同一の出力イベントのシーケンスを既存のセカンダリとして出力する必要がある場合(タイプ1アプリケーション)、一部の有限の期間(warm-up-window-lengthの期間)の入力ストリームを処理することによって、アプリケーションはその内部状態を再構築できます。このwarm-up-window-lengthの時間によって、アプリケーションが完全にOracle Event Processing高可用性デプロイメントと通知グループを結合するのにかかる最短時間が決定されます。

アプリケーションが完全に同一の出力イベントのシーケンスを既存のセカンダリとして出力する必要がない場合(タイプ2アプリケーション)、warm-up-window-lengthの時間は必要にならず、アプリケーションはデプロイされるとすぐにOracle Event Processing高可用性デプロイメントと通知グループを完全に結合します。

詳細は、24.1.3.2.5項「適切なwarm-up-window-length時間の選択」を参照してください。

24.1.1.2 デプロイメント・グループおよび通知グループ

マルチサーバー・ドメイン内のすべてのサーバーは、同一のデプロイメント・グループに属します。このグループは、アプリケーションをデプロイする対象のグループです。Oracle Event Processingの高可用性のために同一のアプリケーションをグループ内のすべてのサーバーにデプロイする必要があります。

デフォルトでは、マルチサーバー・ドメイン内のすべてのサーバーも同一の通知グループに属します。サーバーは、サーバーで障害が発生したとき(およびグループを終了したとき)または動作を再開したとき(およびグループを再結合したとき)を示すメンバーシップ通知用の通知グループと共に、プライマリからの同期通知用の通知グループをリスニングします。

Oracle Event Processingの高可用性アプリケーションのスケールを変更する必要がある場合、ActiveActiveGroupBeanを使用して、すべてのサーバー(プライマリおよびセカンダリ)に広がる単一のデプロイメント・グループの利点を保持する一方で、プライマリ・サーバー・ユニットとして2つ以上のサーバーを機能させることを許可する通知グループを定義できます。

マルチサーバー・ドメインのデプロイメント・グループを作成するためには、Oracle Coherenceベースのクラスタリングを使用する必要があります。デフォルト・グループまたはカスタム・グループのいずれかを使用できます。

詳細は、次を参照してください:

- 24.1.1.4項「高可用性とスケーラビリティ」

- 24.1.1.5項「高可用性およびOracle Coherence」

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle Event Processingマルチサーバー・ドメインを作成する方法に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle Event Processingマルチサーバー・ドメインを作成する方法に関する項

24.1.1.3 高可用性コンポーネント

Oracle Event Processingの高可用性オプションを実装するには、各入力アダプタおよび高可用性出力アダプタの後、各出力アダプタの前に、高可用性入力アダプタを使用してイベント処理ネットワーク(EPN)を構成します。

図24-5は、定位置にすべての実行可能な高可用性アダプタを持つ通常のEPNを示します。

図24-5 EPN内の高可用性アダプタ

「図24-5 EPN内の高可用性アダプタ」の説明

注意:

簡略化するために、図24-5ではチャネルを示さずプロセッサを1つのみ示します。ただし、EPNは任意で複数の入力ストリームと出力ストリーム、チャネル、複数のプロセッサ、イベントBeanなどと複合化することができます。唯一の制約は、各入力アダプタは高可用性入力アダプタが次にきて、各出力アダプタは高可用性出力アダプタが先行する必要があるということです。同様に、簡略化するために2つのOracle Event Processingサーバーのみのマルチサーバー・ドメインが示されますが、任意の数のセカンダリ・サーバーを持つことができます。

プライマリのオプションの高可用性入力アダプタは、各セカンダリの対応する高可用性入力アダプタと通信し、イベント・タイムスタンプを正規化します。

Oracle Event Processingの高可用性によって、高可用性入力アダプタの1つの種類が提供されます。24.1.1.3.1項「高可用性入力アダプタ」を参照してください。

プライマリの高可用性出力アダプタは、Oracle Event Processingアプリケーションをダウンストリーム・クライアントに接続する出力ストリームにイベントを出力する処理を行います。プライマルの高可用性出力アダプタも対応する各セカンダリの高可用性出力アダプタと通信を行い、選択する高可用性のサービス品質に依存して、セカンダリ出力アダプタに出力イベントのメモリー内問合せをトリミングするように命令することができます。

Oracle Event Processingの高可用性によって、次の高可用性出力アダプタが提供されます。

- 24.1.1.3.2項「バッファリング出力アダプタ」

- 24.1.1.3.3項「ブロードキャスト出力アダプタ」

- 24.1.1.3.4項「相関出力アダプタ」

Oracle Event Processingの高可用性によって、JMSアプリケーションでスケーラビリティを向上するための通知グループのSpring Beanも提供されます。24.1.1.3.5項「ActiveActiveGroupBean」を参照してください。

どのアダプタを選択するかは、選択する高可用性のサービス品質によって決定されます。24.1.2項「サービス品質の選択」を参照してください。

24.1.1.3.1 高可用性入力アダプタ

プライマリOracle Event Processingサーバー上のオプションのOracle Event Processing高可用性入力アダプタは、イベントがアダプタに到着し、イベントに割り当てられた時間値をすべてのセカンダリ・サーバーに転送するとき、時間(ナノ秒)をイベントに割り当てます。これによって、アプリケーションを稼働しているすべてのサーバーが統一された時間値を使用し(および同一の結果を生成し)、分散型クロック同期の必要性がなくなることが保証されます。

時間値は、EPN内の任意のダウンストリーム・チャネルにイベントが到着する前に各イベントに割当てられるため、ダウンストリーム・チャネルは、イベントのチャネル到着時に新しい時間値をイベントに割り当てないようにアプリケーションの時間を使用するように構成する必要があります。

入力イベントは、このアダプタを使用するために各イベントを一意で識別するキーを持つ必要があります。

Oracle Event Processingの高可用性入力アダプタをハートビート・イベントを送信するように構成できます。

Oracle Event Processingの高可用性入力アダプタは、すべての高可用性のサービス品質オプションに適用できます。ただし、高可用性入力アダプタはパフォーマンスのオーバーヘッドを増加するため、一部の高可用性サービス品質オプション(24.1.2.1項「シンプル・フェイルオーバー」および24.1.2.2項「バッファリングを使用するシンプル・フェイルオーバー」など)には適しません。このようなオプションでは、かわりにアプリケーション時間と何らかの着信イベント・プロパティの使用を検討します。

詳細は、次を参照してください:

- 24.1.2.3項「軽量キュー・トリミング」

- 24.1.2.4項「JMSによる正確なリカバリ」

- 24.2.2.1項「高可用性入力アダプタの構成方法」

24.1.1.3.2 バッファリング出力アダプタ

Oracle Event Processingの高可用性バッファリング出力アダプタは、バッファリング型キュー・トリミング方式を実装します。バッファはストリームからの出力イベントのスライディング・ウィンドウです。ウィンドウのサイズはミリ秒単位で測定されます。

Oracle Event Processingの高可用性バッファリング出力アダプタは、シンプル・フェイルオーバーおよび高可用性のサービス品質オプションのバッファリングを使用するシンプル・フェイルオーバーに適用できます。

詳細は、次を参照してください:

- 24.1.2.1項「シンプル・フェイルオーバー」

- 24.1.2.2項「バッファリングを使用するシンプル・フェイルオーバー」

- 24.2.2.2項「バッファリング出力アダプタの構成方法」

24.1.1.3.3 ブロードキャスト出力アダプタ

Oracle Event Processingの高可用性ブロードキャスト出力アダプタは、分散型キュー・トリミング方式を実装します。アクティブ・プライマリ・インスタンスは、メッセージを通知グループ内のアクティブ・セカンダリ・インスタンスにブロードキャストし、キューのローカル表現をトリミングするタイミングを通知します。

Oracle Event Processing高可用性ブロードキャスト出力アダプタは、軽量キュー・トリミングの高可用性のサービス品質オプションに適用できます。

詳細は、次を参照してください:

- 24.1.2.3項「軽量キュー・トリミング」

- 24.2.2.3項「ブロードキャスト出力アダプタの構成方法」

24.1.1.3.4 相関出力アダプタ

Oracle Event Processingの高可用性相関出力アダプタは、通常はJMSから2つのイベント・ストリームを関連付けます。このアダプタは、イベントのインバウンド・バッファと同一イベント・ストリームのセカンド・ソースに関連付け、構成可能な時間間隔の後で相関関係付けに障害が発生する場合にバッファを出力します。関連付けられたイベントは、キューからトリミングされます。関連付けられたイベントは、順序通りに整理されると仮定されます。

Oracle Event Processingの高可用性相関出力アダプタは、JMS高可用性のサービス品質オプションを使用する正確なリカバリに適用できます。

詳細は、次を参照してください:

- 24.1.2.4項「JMSによる正確なリカバリ」

- 24.2.2.4項「相関出力アダプタの構成方法」

24.1.1.3.5 ActiveActiveGroupBean

com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanは、JMS入力アダプタから入力ストリームをパーティション化することを可能にするSpring Beanです。

このコンポーネントは、JMS高可用性のサービス品質のみを使用する正確なリカバリに適用できます。ただし、Oracle Event Processingアプリケーションのスケーラビリティを向上するために高可用性なしで使用することもできます。

詳細は、次を参照してください:

- 24.1.1.4項「高可用性とスケーラビリティ」

- 24.1.2.4項「JMSによる正確なリカバリ」

- 25.1.2.2項「ActiveActiveGroupBean」

24.1.1.4 高可用性およびスケーラビリティ

Oracle Event Processingの高可用性アプリケーションのスケールを変更する必要がある場合、ActiveActiveGroupBeanを使用して、すべてのサーバー(プライマリおよびセカンダリ)に広がる単一のデプロイメント・グループの利点を保持する一方で、高可用性ユニットとして2つ以上のサーバーを機能させることを許可する通知グループを定義できます。

図24-6は、最も単純な構成から高可用性、そして高可能性とスケーラビリティの両方へと至る3つのOracle Event Processingアプリケーションのシナリオを示します。

図24-6 高可用性およびスケーラビリティ

「図24-6 高可用性およびスケーラビリティ」の説明

大半のアプリケーションは、高可用性を持たないシングルサーバー・ドメインで起動します。この場合、最も単純なシナリオでは、1つのOracle Event Processingサーバー上で稼働しているOracle Event Processingアプリケーションが入力イベント・ストリームを処理して出力イベントを生成します。

高可用性のシナリオでは、Oracle Event ProcessingアプリケーションはOracle Event Processing高可用性オプションを使用するように構成されています。このアプリケーションは、2つのサーバーから構成されるマルチサーバー・ドメインのデプロイメント・グループにデプロイされます。このシナリオでは、プライマリ・サーバーのみがイベントを出力します。

高可用性とスケーラビリティの両方を持つシナリオでは、Oracle Event Processingの高可用性アプリケーションは、通知グループを定義するためにActiveActiveGroupBeanを使用するように構成されています。各通知グループには、単一の高可用性ユニットとして機能する2つ以上のOracle Event Processingサーバーが含まれます。このシナリオでは、各通知グループ内のプライマリ・サーバーのみがイベントを出力します。通知グループ内のプライマリ・サーバーが万一機能しなくなった場合、Oracle Event Processingの高可用性フェイルオーバーが発生し、その通知グループ内のセカンダリ・サーバーが新しいプライマリを宣言して、構成するOracle Event Processing高可用性のサービス品質にてイベントの出力を再開します。

詳細は、次を参照してください:

- 25.1.2.2項「ActiveActiveGroupBean」

- 25.2.2.2項「Oracle Event Processing高可用性のあるJMSアプリケーションでスケーラビリティを構成する方法」

24.1.1.5 高可用性およびOracle Coherence

Oracle Event Processingの高可用性オプションは、Oracle Coherenceに依存します。Oracle Coherenceを使用せずにOracle Event Processingの高可用性オプションを実装することはできません。

パフォーマンスのチューニングを検討する場合、Oracle Event Processingアプリケーションに加えて必ずOracle Coherenceの構成を評価します。

詳細は、次を参照してください:

- 27.2.5項「Oracle Coherenceパフォーマンス・チューニング・オプション」

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Coherenceクラスタの構成に関する項

- Oracle Coherence開発者ガイド(http://download.oracle.com/docs/cd/E15357_01/coh.360/e15723/toc.htm)

24.1.2 サービス品質の選択

Oracle Event Processingの高可用性を使用することによって、表24-1で一覧表示されている任意のサービス品質オプションを選択できます。欠落イベントおよび複製イベントに対するアプリケーションの許容値と共に期待されるイベント・スループットに適するサービス品質オプションを選択します。プライマリ・サーバーおよびセカンダリ・サーバーのハードウェア要件は、サービス品質がより正確になるほど上がるので注意してください。

表24-1 Oracle Event Processing高可用性のサービス品質

高可用性オプション

欠落イベント?

重複イベント?

パフォーマンス・オーバーヘッド

24.1.2.1項「シンプル・フェイルオーバー」

はい(多数)

はい(少数)

ごく少数

24.1.2.2項「バッファリングを使用するシンプル・フェイルオーバー」

はい(少数)脚注1

はい(多数)

低

24.1.2.3項「軽量キュー・トリミング」

いいえ

はい(少数)

低-中脚注2

24.1.2.4項「JMSによる正確なリカバリ」

いいえ

いいえ

高

脚注 1  大きさが十分なバッファを構成すれば、欠落イベントは発生しません。

脚注 2  パフォーマンス・オーバーヘッドはチューニング可能です。トリミングの頻度を調整してオーバーヘッドを削減できますが、フェイルオーバー時により多くの複製数が発生します。

24.1.2.1 シンプル・フェイルオーバー

この高可用性のサービス品質は、最低のパフォーマンス・オーバーヘッド(リカバリ時間が速い)および最低のデータ整合性(フェイルオーバー時に欠落イベントと複製イベントの両方の可能性があります)によって特徴付けられます。

プライマリ・サーバーはイベントを出力し、セカンダリ・サーバーはその出力イベントを単に破棄するだけで、出力イベントのバッファリングは行いません。現在のアクティブ・プライマリで障害が発生した場合、通知されると新しいアクティブ・プライマリが選択され、出力イベントの送信を開始します。

フェイルオーバー中には、前のプライマリより前または後で稼働しているかに応じて、新しいプライマリによって多くのイベントが欠落したり複製されたりする場合があります。

フェイルオーバー・ウィンドウ中には、イベントが欠落する場合があります。たとえば、1秒当たり100個のイベントを処理してフェイルオーバーに10秒かかる場合、1000個のイベントが欠落します。

新しいプライマリは、ただちにPRIMARY状態を入力します。BECOMING_PRIMARY状態から新しいプライマリが遷移する前に満たす必要がある構成可能な準備状態のしきい値はありません。

Oracle Event Processingサーバーがマルチサーバー・ドメインに再結合するとき、セカンダリとしてただちに利用可能になります。

この高可用性のサービス品質を実装するには、各出力アダプタの前に高可用性バッファリング出力アダプタを使用して(サイズがゼロのスライディング・ウィンドウを使用して)EPNを構成します。パフォーマンス・オーバーヘッドを削減するには、高可用性入力アダプタを使用せずに一部の着信イベント・プロパティを持つアプリケーション時間を使用します。

詳細は、24.2.1.1項「シンプル・フェイルオーバーの構成方法」を参照してください。

24.1.2.2 バッファリングを使用するシンプル・フェイルオーバー

この高可用性のサービス品質は、低いパフォーマンス・オーバーヘッド(リカバリ時間が速い)および向上したデータ整合性(フェイルオーバー時に欠落イベントはなくても多数の複製イベントの可能性があります)によって特徴付けられます。

プライマリ・サーバーはイベントを出力し、セカンダリ・サーバーはその出力イベントをバッファリングします。現在のアクティブ・プライマリで障害が発生した場合、通知されると新しいアクティブ・プライマリが選択され、出力イベントの送信を開始します。

フェイルオーバー・ウィンドウ中には、イベントが欠落する場合があります。たとえば、1秒当たり100個のイベントを処理してフェイルオーバーに10秒かかる場合、1000個のイベントが欠落します。セカンダリのバッファが大容量の場合、多数の複製が出力される可能性があります。一方、バッファが大容量になるほどメッセージの欠落の可能性は低くなります。

Oracle Event Processingサーバーがマルチサーバー・ドメインに再結合するとき、ご使用のアプリケーションがOracle Event Processing高可用性タイプ1アプリケーションの場合(アプリケーションが既存のセカンダリと完全に同一の出力イベントのシーケンスを出力する必要があります)、セカンダリとして利用できるようになる前にOracle Event Processingの高可用性出力アダプタに構成するwarm-up-window-lengthの時間を待機する必要があります。

この高可用性のサービス品質を実装するには、各出力アダプタの前に高可用性バッファリング出力アダプタを使用して(サイズがゼロより大きいスライディング・ウィンドウを使用して)EPNを構成します。パフォーマンス・オーバーヘッドを削減するには、高可用性入力アダプタを使用せずに一部の着信イベント・プロパティを持つアプリケーション時間を使用します。

詳細は、次を参照してください:

- 24.1.3.2.5項「適切なwarm-up-window-length時間の選択」

- 24.2.1.2項「バッファリングを使用するシンプル・フェイルオーバーの構成方法」

24.1.2.3 軽量キュー・トリミング

この高可用性のサービス品質は、低いパフォーマンス・オーバーヘッド(リカバリ時間が速い)および向上したデータ整合性(フェイルオーバー時に欠落イベントはなくても少数の複製イベントの可能性があります)によって特徴付けられます。

アクティブ・プライマリはセカンダリに通信し、イベントを実際に処理します。これによって、特定の時点でプライマリによって送信されていないイベントのみを含むようにセカンダリは出力イベントのバッファをトリミングできます。イベントは現在のプライマリによって送信された後でのみトリミングされるので、セカンダリによってフェイルオーバーの発生時に任意の出力イベントが欠落しないようにできます。

アクティブ・プライマリがキュー・トリミング・メッセージをアクティブ・セカンダリに送信する頻度は、次のように構成可能です。

- n個のイベントごと(n>0)
これによって、フェイルオーバー時に複製された出力イベントの数を最大n個に限定します。

- nミリ秒ごと(n>0)

キュー・トリミング・アダプタには、アクティブ・プライマリおよびセカンダリの間で統一的にイベントを識別する方法が必要です。お薦めの方法は、イベントを識別するためにアプリケーション時間を使用することですが、一意にイベントを識別する任意のキー値が役に立ちます。

キュー・トリミングの利点は、出力イベントが絶対に欠落しないことです。ただし、通信の必要があるトリミング・メッセージの送信には、アクティブ・プライマリでわずかなパフォーマンス・オーバーヘッドがあります。このオーバーヘッドは、キュー・トリミング・メッセージ頻度の増加に伴い増加します。

フェイルオーバー中には、新しいプライマリがBECOMING_PRIMARY状態に入り、そのイベント・キュー(セカンダリとして累積していく)がフラッシュされるまで、PRIMARY状態には遷移しません。この遷移中には、新しい入力イベントがバッファリングされ、一部の複製イベントが出力される場合があります。

Oracle Event Processingサーバーがマルチサーバー・ドメインに再結合するとき、ご使用のアプリケーションがOracle Event Processing高可用性タイプ1アプリケーションの場合(アプリケーションが既存のセカンダリと完全に同一の出力イベントのシーケンスを出力する必要があります)、セカンダリとして利用できるようになる前にOracle Event Processingの高可用性出力アダプタに構成するwarm-up-window-lengthの時間を待機する必要があります。

この高可用性のサービス品質を実装するには、各入力アダプタおよび高可用性ブロードキャスト出力アダプタの後、各出力アダプタの前に、高可用性入力アダプタを使用してEPNを構成します。

詳細は、24.2.1.3項「軽量キュー・トリミングの構成方法」を参照してください。

24.1.2.4 JMSによる正確なリカバリ

この高可用性のサービス品質は、高パフォーマンス・オーバーヘッド(リカバリ時間が遅い)および最大のデータ整合性(フェイルオーバー時に欠落イベントも複製イベントもありません)によって特徴付けられます。

この高可用性のサービス品質は、JMSの入力アダプタおよび出力アダプタにのみ対応します。

この高可用性のサービス品質では、シングルサーバーのイベント・パスに伴うトランザクションの保証は考慮しませんが、サーバーのセットからの単一の出力は保証します。これを達成するため、セカンダリ・サーバーは、プライマリによってパブリッシュされるイベント・ストリームにJMS経由でリスニングします。図24-7は、この受信イベント・ストリームが、セカンダリが出力キューをトリミングするために使用する信頼できるキュー・トリミング・メッセージの必須ソースであることを示します。JMSが信頼できる転送に構成されている場合、セカンダリで確認されるイベントのストリームは、正確にプライマリによって出力されるイベントのストリームであるため、フェイルオーバーは以前のプライマリによって転送されないイベントを新しいプライマリが正確に出力することを可能にします。

図24-7 JMSによる正確なリカバリ

「図24-7 JMSによる正確なリカバリ」の説明

フェイルオーバー中には、新しいプライマリがBECOMING_PRIMARY状態に入り、そのイベント・キュー(セカンダリとして累積していく)がフラッシュされるまで、PRIMARY状態には遷移しません。この遷移中には、新しい入力イベントがバッファリングされ、複製イベントは出力されません。

Oracle Event Processingサーバーがマルチサーバー・ドメインに再結合するとき、ご使用のアプリケーションがOracle Event Processing高可用性タイプ1アプリケーションの場合(アプリケーションが既存のセカンダリと完全に同一の出力イベントのシーケンスを出力する必要があります)、セカンダリとして利用できるようになる前にOracle Event Processingの高可用性出力アダプタに構成するwarm-up-window-lengthの時間を待機する必要があります。

この高可用性のサービス品質を実装するには、各入力アダプタおよび高可用性相関出力アダプタの後、各出力アダプタの前に、高可用性入力アダプタを使用してEPNを構成します。

スケーラビリティを向上するため、高可用性のサービス品質を持つクラスタ・グループBeanも使用できます。

詳細は、次を参照してください:

- 24.2.1.4項「JMSによる正確なリカバリの構成方法」

- 25.2.2項「ActiveActiveGroupBeanによるスケーラビリティの構成」

24.1.3 高可用性用Oracle Event Processingアプリケーションの設計

Oracle Event Processingの高可用性を宣言的に実装できますが、選択する高可用性のサービス品質から完全に利点を引き出すには、Oracle Event ProcessingアプリケーションがOracle Event Processingの提供する高可用性オプションを利用するように設計する必要があります。

高可用性用Oracle Event Processingアプリケーションを設計するときには、次を考慮してください。

- 24.1.3.1項「プライマリOracle Event Processingの高可用性のユースケース」

- 24.1.3.2項「高可用性の設計パターン」

- 24.1.3.3項「Oracle CQLの問合せの制約」

24.1.3.1 プライマリOracle Event Processingの高可用性のユースケース

Oracle Event Processingの高可用性オプションは様々なOracle Event Processingアプリケーション設計に適応させることができますが、通常、Oracle Event Processingの高可用性は次のユースケースを想定して設計されています。

- アプリケーションは1つ以上の外部システムから入力イベントを受信します。

- 外部システムは、パブリッシュ/サブスクライブ・スタイルのシステムで、複数のアプリケーションのインスタンスが同時に接続し、同一のメッセージのストリームを受信することを可能にします。

- アプリケーションは、複数のアプリケーションのコピーが同時に実行される場合、競合が発生しないように外部のシステムを更新しません。

- アプリケーションは、出力イベントを外部のダウンストリーム・システムに送信します。複数のアプリケーションのインスタンスは、一度にメッセージを送信できるアプリケーションのインスタンスは1つのみですが、ダウンストリーム・システムに同時に接続できます。

このような制約では、次の異なるケースが注目されます。

- アプリケーションは、障害の発生時に、一部の出力イベントのダウンストリーム・システムへの送信をスキップすることが許可されます。複製も許可されます。
この場合、次のOracle Event Processing高可用性のサービス品質オプションが適用されます。

- 24.1.2.1項「シンプル・フェイルオーバー」

- アプリケーションは、複製イベントをダウンストリーム・システムに送信することを許可されますが、障害の発生時に任意のイベントをスキップすることは禁止されます。
この場合、次のOracle Event Processing高可用性のサービス品質オプションが適用されます。

- 24.1.2.2項「バッファリングを使用するシンプル・フェイルオーバー」

- 24.1.2.3項「軽量キュー・トリミング」

- アプリケーションは、障害の発生中にイベントが送信できない短い一時停止を法として、障害の発生時に完全に同一のメッセージ/イベントのストリームを送信する必要があります。
この場合、次のOracle Event Processing高可用性のサービス品質オプションが適用されます。

- 24.1.2.4項「JMSによる正確なリカバリ」

24.1.3.2 高可用性の設計パターン

Oracle Event Processingの高可用性オプションを使用するOracle Event Processingアプリケーションを設計するときには、次の設計パターンを順守します。

- 24.1.3.2.1項「アプリケーションが許容できる最小の高可用性の選択」

- 24.1.3.2.2項「すべての入口/出口ポイントでOracle Event Processing高可用性コンポーネントの使用」

- 24.1.3.2.3項「必要な項目のみ保存」

- 24.1.3.2.4項「Oracle CEPアプリケーションの状態の制限」

- 24.1.3.2.5項「適切なwarm-up-window-length時間の選択」

- 24.1.3.2.8項「アプリケーションが多重呼出し不変であることの保証」

- 24.1.3.2.9項「外部のソース・イベント・アイデンティティ」

- 24.1.3.2.10項「イベント順序の重要性の理解」

- 24.1.3.2.14項「高可用性を考慮したOracle CQL問合せの記述」

- 24.1.3.2.15項「サーバーのカップリングの回避」

- 24.1.3.2.16項「サーバー・リカバリの計画」

24.1.3.2.1 アプリケーションが許容できる最小の高可用性の選択

正確なリカバリの追加コスト(ノードごとのスループットは減少)がアプリケーションに実際に必要になることを確認してください。

24.1.3.2.2 すべての入口/出口ポイントでOracle Event Processing高可用性コンポーネントの使用

各通常入力アダプタの後にOracle Event Processing高可用性入力アダプタを使用する必要があり、各通常出力アダプタの前にOracle Event Processing高可用性出力アダプタを使用する必要があります。

24.1.3.2.3 必要な項目のみ保存

大半のOracle Event Processingシステムは、少数の「充実した」イベントを出力する問合せの対象となる多数の生の入力イベントによって特徴付けられます。通常、このような充実したイベントは数が少なく、かつ価値があるという両方の理由から、それらだけを保存するのが合理的です。

24.1.3.2.4 Oracle CEPアプリケーションの状態の制限

Oracle Event Processingシステムによって、イベントのウィンドウを問い合せることができます。きわめて大きいウィンドウを使用してシステムを構築することは魅力的ですが、障害の発生時に再構築の必要がある状態が増加します。通常、このような技術の高可用性ファシリティは適切に活用されるため、長期状態は分散型キャッシュやデータベースのような安定したストレージに保存されるとみなす方が良さそうです。

24.1.3.2.5 適切なwarm-up-window-length時間の選択

新しいOracle Event ProcessingサーバーがOracle Event Processing高可用性マルチサーバー・ドメインに追加される場合、または既存の障害が発生したサーバーが再起動する場合、サーバーは、サーバーにデプロイされたすべてのアプリケーションが完全に結合するまで、Oracle Event Processing高可用性デプロイメントと通知グループを完全には結合しません。アプリケーションの種類によって、いつ完全に結合したことが宣言されるかが決定されます。

Oracle Event Processingの高可用性アプリケーションは、表24-2で示すように、タイプ1またはタイプ2のアプリケーションとして記述されます。

表24-2 Oracle Event Processingの高可用性アプリケーションの種類

アプリケーション・タイプ

出力イベントの完全に同一のシーケンスを生成する必要があるか?

有限の期間内に入力ストリームを処理することによって内部状態を再構築できる必要があるか?

完全に結合する前にこの期間を待機する必要があるか?

タイプ1

はい

はい

はい

タイプ2

いいえ

いいえ

いいえ

詳細は、24.1.1.1.3項「高可用性マルチサーバー・ドメインの再結合」を参照してください。

24.1.3.2.6 タイプ1アプリケーション

タイプ1アプリケーションは、Oracle Event Processing高可用性デプロイメントおよび通知グループに完全に結合すると、新しいセカンダリが既存のセカンダリと完全に同一の出力イベントのシーケンスを生成するように要求します。

タイプ1アプリケーションは、アプリケーションを実行している他のセカンダリと完全に同一の出力イベントのストリームを生成した後で、有限の期間(warm-up-window-lengthの時間)にその入力ストリームを処理することによって、内部状態を再構築する必要があります。

warm-up-window-lengthの時間は、Oracle Event Processing高可用性出力アダプタ上で構成されます。warm-up-window-lengthの時間の長さは、秒または分単位で指定されます。たとえば、アプリケーションに5分、7分、15分の範囲をベースとするウィンドウを持つOracle CQL問合せが含まれる場合、最小のwarm-up-window-length時間は15分(最大の範囲をベースとするウィンドウ・サイズ)となります。Oracleは、必要な状態が完全に利用可能であることを保証するために数分の値を持つ最大ウィンドウ長もお薦めします。そのため先の例では17分または20分がwarm-up-window-length時間に適した長さとなります。

Oracle Event Processingサーバーは、warm-up-window-lengthの期間中はシステム時間を使用するため、処理中のイベントに関連したアプリケーション時間には直接関連付けられません。

タイプ1アプリケーションは、有限の期間中に発生したイベントのみを対象とします。すべての範囲をベースとするOracle CQLウィンドウは、warm-up-window-length時間よりも短縮する必要があり、タプル・ベースのウィンドウも時間によって条件を付けられる必要があります。たとえば、アプリケーションは、直近の10個のイベントが直近の5分間に発生した場合、それらのイベントのみを考慮します。このプロパティを持たないアプリケーションは、タイプ1アプリケーションではありえずwarm-up-window-lengthの期間を使用できません。たとえば、時間の条件を持たないタプル・ベースでパーティション化されたウィンドウを使用するアプリケーションは、任意の時間量がウィンドウの状態の再構築に必要となるためwarm-up-window-lengthを使用できません。

タイプ1アプリケーションがOracle Event Processingの高可用性ブロードキャスト出力アダプタを使用する場合、一意のアプリケーション専用キーまたはアプリケーション時間のようなモノトニックなキーを使用することによって、イベントをトリミングできます。アプリケーション時間を使用してイベントをトリミングすることは、出力イベントの生成が失敗する可能性があるアプリケーションにおいて、堅牢性が増すと共に不具合への脆弱性が低下するためお薦めです。

詳細は、次を参照してください:

- 24.1.3.3項「Oracle CQLの問合せの制約」

- 24.1.1.3.2項「バッファリング出力アダプタ」

- 24.1.1.3.3項「ブロードキャスト出力アダプタ」

- 24.1.1.3.4項「相関出力アダプタ」

24.1.3.2.7 タイプ2アプリケーション

タイプ2アプリケーションは、Oracle Event Processing高可用性デプロイメントおよび通知グループに完全に結合すると、新しいセカンダリが既存のセカンダリと完全に同一の出力イベントのシーケンスを生成するように要求しません。新しいクラスタ・メンバーが、入力イベントの処理を開始する時点に関して有効な出力イベントを生成するように要求するのみです。

タイプ2アプリケーションはwarm-up-window-length期間を要求しません。

大半のアプリケーションは、タイプ2アプリケーションとなります。アプリケーションが任意の時点で(プライマリOracle Event Processingサーバー上で)起動し、その時点で入力ストリームからイベントの処理を開始して、有効な出力イベントを生成することが多くあります。言い換えれば、アプリケーションの起動中は入力ストリームが一時停止されず、入力イベントは常に生成されて受信します。多くの場合、セカンダリ・ノードを想定することは合理的です。このノードは同一の動作を行い、若干異なる時点では、若干のタイミングの違いのためにプライマリによって生成されるイベントと必ずしも同一にはなりませんが、アプリケーションの観点から有効な出力イベントを生成します。たとえば、市場が開いている間のみ実行する経理用アプリケーションは、次のようにタイプ2アプリケーションとして動作する可能性があります。すべてのサーバーが市場が開く前に起動し、市場のデータ・ストリームと同一の時点で受信イベントの処理を開始します。複数のセカンダリは障害に対する保護のために実行され、市場が開いている間はセカンダリの数が十分であるかぎり、障害が発生するセカンダリを再起動する必要はなく、さらにセカンダリを追加する必要もないためどのセカンダリも状態をリカバーする必要がありません。

24.1.3.2.8 アプリケーションが多重呼出し不変であることの保証

異なるサーバー上でアプリケーションの2つのコピーを実行でき、それらが共有されたキャッシュやデータベースで競合しないようにする必要があります。外部のリレーション(キャッシュや表など)を使用する場合、Oracle Event Processingサーバーがクラスタに再結合するとき、アプリケーションが以前と同一のキャッシュや表にアクセスすることを保証する必要があります: 同一の外部リレーションに対してもう一度結合する必要があります。サーバー上のデータ・ソースは変更されてはならず、データは必ず同一のデータ・ソースから抽出する必要があります。

24.1.3.2.9 外部のソース・イベント・アイデンティティ

多数の高可用性ソリューションは、異なるサーバー間でイベントが相関関係を持つことを必要とし、そのためにはイベントが普遍的に識別可能である必要があります。これを行う最善の方法は、イベントをシードするために、これを提供するOracle Event Processingシステムに頼るのではなく、外部情報(タイムスタンプが望ましい)を使用することです。

詳細は、24.1.3.3.6項「アプリケーション時間の優先」を参照してください。

24.1.3.2.10 イベント順序の重要性の理解

キュー・トリミングを使用するOracle Event Processing高可用性のサービス品質オプションでは、プライマリおよびセカンダリのサーバーが同一の出力イベントを生成するだけでなく、完全に同一の順序で出力イベントを生成する必要があります。

プライマリおよびセカンダリのサーバーは、キュー・トリミングおよび同等ベースのイベント識別子(つまり、モノトニックではないイベント識別子のことで、継続的に増加しないイベント識別子)を使用するOracle Event Processing高可用性のサービス品質オプションを選択する場合、同一の出力イベントを完全に同一の順序で生成する必要があります。この場合、異なる順序で出力イベントを生成すると、障害の発生時に欠落した出力イベントまたは不要な複製出力イベントのいずれかにつながります。

図24-8で示される出力イベント・ストリームを検討してください。プライマリは、出力イベントa、b、およびcを持ちます。イベントcを出力後、プライマリはセカンダリにキュー・トリミング・メッセージを送信します。

図24-8 イベント順序

「図24-8 イベント順序」の説明

セカンダリは、イベントc自体を含むイベントcの前に生成されたキュー内のすべてのイベントをトリミングします。この場合、イベント・セットは{a, b, e, d, c}となり、これらはプライマリがイベントdおよびeをまだ出力していないため適切ではありません。イベントcのトリミング・メッセージの処理後にフェイルオーバーが発生する場合、イベントは失われます。

イベント順序を管理するには、次の設計パターンを検討してください。

- 24.1.3.2.11項「確定的動作の優先」

- 24.1.3.2.12項「マルチスレッドの回避」

- 24.1.3.2.13項「モノトニックなイベント識別子の優先」

24.1.3.2.11 確定的動作の優先

複数のインスタンス上で実行される場合、アプリケーションが同一の順序でイベントを生成するためには、確定している必要があります。アプリケーションは次の要素に依存させないでください。

- 異なるマシン上に異なる結果を返す可能性がある乱数ジェネレータ。

- System.getTimeMillisまたはSystem.nanoTimeなどのメソッド。これらはシステム・クロックが同期されていないため、異なるマシン上で異なる結果を返す可能性があります。

24.1.3.2.12 マルチスレッドの回避

スレッド・スケジューリング・アルゴリズムは時間への依存度がきわめて高いため、マルチスレッドはアプリケーション内で非確定的なソースとなります。つまり、異なるスレッドは異なるマシン上で異なる時間でスケジューリングすることができます。

たとえば、複数のスレッドがOracle Event Processingの高可用性アダプタに並列にイベントを送信するEPNを作成しないでください。そのようなチャネルがOracle Event Processingの高可用性アダプタのイベント・ソースの場合、イベントが異なるスレッドごとに並列にアダプタに送信されるようになり、イベント順序を非確定的にすることができる可能性があります。

避ける必要があるチャネル構成に関する詳細は、次を参照してください。

- 25.1.2.1項「EventPartitioner」

- 表C-9「wlevs:channelアプリケーション・アセンブリ要素の属性」のmax-threads

24.1.3.2.13 モノトニックなイベント識別子の優先

イベント識別子はモノトニックまたは非モノトニックにできます。

モノトニックな識別子は、継続的に増加する識別子です(時間値など)。

非モノトニックな識別子は、継続的に増加せず、重複を含む可能性があります。

通常、モノトニックなイベント識別子を使用してOracle Event Processingアプリケーションを設計する必要があります。モノトニックなイベント識別子を使用すると、Oracle Event Processingの高可用性アダプタは順序通りでないイベントを生成する可能性があるアプリケーションを処理できます。

24.1.3.2.14 高可用性を考慮したOracle CQL問合せの記述

Oracle Event Processingの高可用性を使用するとき、Oracle CQLの問合せの使用方法がすべてサポートされるわけではありません。この制約を解決するには、Oracle CQLの問合せを再定義する必要があります。

詳細は、24.1.3.3項「Oracle CQLの問合せの制約」を参照してください。

24.1.3.2.15 サーバーのカップリングの回避

Oracle Event Processingシステムの最もパフォーマンスが高い高可用性は、サーバー間の調整を必要とせずにサーバーが実行できるときです。通常、共有状態が存在せず、ダウンストリーム・システムが複製を許容する場合にこれは達成できます。高可用性のレベルを上げることは、ダウンストリーム・システムが確認するイベントのストリームの忠実度を上げることを目標としますが、このように忠実度を上げることはパフォーマンスのペナルティを伴います。

24.1.3.2.16 サーバー・リカバリの計画

セカンダリ・サーバーがマルチサーバー・ドメインに再結合するとき、24.1.3.2.5項「適切なwarm-up-window-length時間の選択」で説明されているとおり、現在のプライマリおよびアクティブ・セカンダリの状態と一致するようにサーバーはOracle Event Processingアプリケーションの状態を再構築する時間が必要になります。

マルチサーバー・ドメインに再結合した後に、セカンダリ・サーバーがアクティブ・セカンダリとして利用可能になるためにかかる時間は、要求するアクティブ・セカンダリの数における要因となります。

準備完了前にセカンダリが新しいプライマリになることを宣言される場合、セカンダリは例外をスローします。

24.1.3.3 Oracle CQLの問合せの制約

Oracle Event Processingの高可用性オプションを使用するOracle Event ProcessingアプリケーションでOracle CQLの問合せを記述するときは、次の制約に従ってください。

- 24.1.3.3.1項「範囲ベースのウィンドウ」

- 24.1.3.3.2項「タプル・ベースのウィンドウ」

- 24.1.3.3.3項「パーティション化されたウィンドウ」

- 24.1.3.3.4項「スライディング・ウィンドウ」

- 24.1.3.3.5項「DURATION句および非イベント検出」

- 24.1.3.3.6項「アプリケーション時間の優先」

Oracle CQLの詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』を参照してください。

24.1.3.3.1 範囲ベースのウィンドウ

タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)では、すべての範囲ベースのOracle CQLウィンドウは、warm-up-window-lengthの時間よりも短くする必要があります。24.1.3.2.5項「適切なwarm-up-window-length時間の選択」を参照してください。

チャネルは、Oracle CQLの問合せが範囲ベースのウィンドウを含む場合にアプリケーション時間を使用する必要があります。24.1.3.3.6項「アプリケーション時間の優先」を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』の範囲ベースのストリームからリレーションへのウィンドウ演算子に関する項を参照してください。

24.1.3.3.2 タプル・ベースのウィンドウ

タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)では、すべてのタプル・ベースのウィンドウは、時間によって条件が付けられる必要があります。24.1.3.2.5項「適切なwarm-up-window-length時間の選択」を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のタプル・ベースのストリームからリレーションへのウィンドウ演算子に関する項を参照してください。

24.1.3.3.3 パーティション化されたウィンドウ

パーティション化されたウィンドウを避けることを検討します。 パーティションが再構築できない場合があります。パーティション化されたウィンドウを使用する場合、Oracle Event Processingサーバーの時間がパーティションを再構築するのに十分な長さとなるようにwarm-up-window-lengthを構成します。24.1.3.2.5項「適切なwarm-up-window-length時間の選択」を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のパーティション化されたストリームからリレーションへのウィンドウ演算子に関する項を参照してください。

24.1.3.3.4 スライディング・ウィンドウ

Oracle CQLの問合せは、マルチサーバー・ドメインに結合する新しいノードが既存ノードと完全に同一の出力イベントを生成することが期待される場合、スライディング・ウィンドウを使用しません。

詳細は、次を参照してください:

- 24.1.1.1.3項「高可用性マルチサーバー・ドメインの再結合」

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のS[range T1 slide T2]に関する項

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のS [rows N1 slide N2]に関する項

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のS [partition by A1,..., Ak rows N range T1 slide T2]に関する項

24.1.3.3.5 DURATION句および非イベント検出

Oracle CQLの問合せが非イベント検出のDURATION句を含む場合、アプリケーション時間を使用する必要があります。

詳細は、次を参照してください:

- 24.1.3.3.6項「アプリケーション時間の優先」

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のDURATION句に関する項

24.1.3.3.6 アプリケーション時間の優先

Oracle Event Processingでは、各イベントはイベントの発生時点で関連付けられます。Oracle CQLは次の2種類を認識します。

- アプリケーション時間: イベントがOracle CQLプロセッサに入る前に、アプリケーションによってOracle CQLの外で各イベントに割り当てられた時間値です。

- システム時間: System.nanoTime()を必ずコールすることによって、Oracle CQLプロセッサに到着時にイベントに関連付けられる時間値です。

アプリケーション時間は、通常、アプリケーションの高可用性のために必要な最善の選択です。アプリケーション時間は、Oracle Event Processingにイベントが送信される前にイベントに関連付けられるため、アクティブなプライマリおよびセカンダリのインスタンスの全体に渡って整合性があります。一方、システム時間は、システム・クロックが同期されていないことによって、イベントに関連付けられた時間値が各インスタンスで異なる可能性があるためアプリケーションのインスタンスに異なる結果を生成させます。

Oracle CQLの問合せが時間ベースのウィンドウを使用しないアプリケーションにシステム時間を使用できます。イベント・ベースのウィンドウのみ使用するアプリケーションは、受信時間ではなくイベントを受信した順番に依存するためこの場合はシステム時間を使用することができます。

時間ベースのウィンドウを使用するOracle CQLの問合せに関してシステム時間を使用する必要がある場合は、特別なOracle Event Processingの高可用性入力アダプタを使用する必要があります。このアダプタは、受信イベントを補足し、プライマリおよびセカンダリのインスタンス全体に渡る統一的な時間を割り当てます。

24.2 高可用性の構成

この項では、フェイルオーバー、リカバリおよびキュー・トリミングの構成、および高可用性アダプタの構成に関する情報など、必要なサービス品質を提供するためにOracle Event Processingアプリケーションの高可用性を構成する方法について説明します。

この節の内容は以下のとおりです。

- 24.2.1項「高可用性のサービス品質の構成」

- 24.2.2項「高可用性アダプタの構成」

24.2.1 高可用性のサービス品質の構成

EPNアセンブリ・ファイルおよびコンポーネント構成ファイルで、Oracle Event Processingの高可用性のサービス品質を構成します。このような構成ファイルに関する一般情報は、次を参照してください。

- 1.4.1項「EPNアセンブリ・ファイルの概要」

- 1.4.2項「コンポーネント構成ファイルの概要」

注意:

Oracle Event Processingの高可用性の構成に変更を加えた後は、Oracle Event Processingアプリケーションを再デプロイする必要があります。23.5項「Oracle Event Processingのデプロイ」を参照してください。

この項では次について説明します:

- 24.2.1.1項「シンプル・フェイルオーバーの構成方法」

- 24.2.1.2項「バッファリングを使用するシンプル・フェイルオーバーの構成方法」

- 24.2.1.3項「軽量キュー・トリミングの構成方法」

- 24.2.1.4項「JMSによる正確なリカバリの構成方法」

スケーラビリティ用Oracle Event Processingの高可用性アプリケーションの構成に関する詳細は第25章「スケーラブルなアプリケーションの開発」を参照してください。

24.2.1.1 シンプル・フェイルオーバーの構成方法

スライディング・ウィンドウのサイズをゼロ(0)に設定して、Oracle Event Processingバッファリング出力アダプタを使用してシンプル・フェイルオーバーを構成します。

この手順は、図24-9で示すEPNの例から始まり、シンプル・フェイルオーバー用に構成するために必要なコンポーネントを加えていきます。例24-1は対応するEPNアセンブリ・ファイルを示し、例24-2は対応するコンポーネント構成ファイルを示します。

このOracle Event Processingの高可用性のサービス品質に関する詳細は、24.1.2.1項「シンプル・フェイルオーバー」を参照してください。

図24-9 シンプル・フェイルオーバーのEPN

「図24-9 シンプル・フェイルオーバーのEPN」の説明

例24-1 シンプル・フェイルオーバーのEPNアセンブリ・ファイル

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>

<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" advertise="true">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

</beans>

例24-2 シンプル・フェイルオーバーのコンポーネント構成アセンブリ・ファイル

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
<processor>
<name>helloworldProcessor</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from helloworldInputChannel [Now] ]]>
</query>
</rules>
</processor>
</wlevs:config>

シンプル・フェイルオーバーを構成するには:

1. Oracle Coherenceを使用してマルチ・サーバー・ドメインを作成します。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle Event Processingマルチサーバー・ドメインを作成する方法に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle Event Processingマルチサーバー・ドメインを作成する方法に関する項

2. Oracle Event Processingアプリケーションを作成します。
詳細は、5.2項「Oracle Event Processingプロジェクトの作成」を参照してください。

3. MANIFEST.MFファイルを編集し、次のImport-Packageエントリを追加します。

- com.bea.wlevs.ede.api.cluster

- com.oracle.cep.cluster.hagroups

- com.oracle.cep.cluster.ha.adapter

- com.oracle.cep.cluster.ha.api

詳細は、5.7.2項「Oracle Event ProcessingプロジェクトへのOSGiバンドルの追加方法」を参照してください。

4. Oracle Event ProcessingアプリケーションのEPNアセンブリ・ファイルを構成し、例24-3に示すように、Oracle Event Processingの高可用性バッファリング出力アダプタを追加します。

- チャネルhelloworldOutputChannelの後に、providerをha-bufferingに設定したwlevs:adapter要素を追加します。

- idごとにha-bufferingアダプタを参照するように、チャネルhelloworldOutputChannelでwlevs:listener要素を更新します。

- wlevs:listener要素を、HelloWorldBeanクラスを参照するha-bufferingアダプタに追加します。

例24-3 シンプル・フェイルオーバーのEPNアセンブリ・ファイル: バッファリング出力アダプタ

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
</wlevs:channel>

<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" advertise="true">
<wlevs:listener ref="myHaSlidingWindowAdapter"/>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

<wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
</wlevs:adapter>

</beans>

5. オプションで、入力アダプタ(helloworldInputChannel)からのチャネル・ダウンストリームを構成し、例24-4で示されるように適切なイベント・プロパティに基づいてアプリケーションのタイムスタンプを構成します。
シンプル・フェイルオーバーの場合、イベントはサーバー間で相関関係を持たないためシステムのタイムスタンプを使用できます。ただし、アプリケーションのタイムスタンプが使用されない場合、若干異なる結果がバッファから出力される可能性があります。

この例では、イベント・プロパティarrivalTimeが使用されます。

wlevs:expressionをこのイベント・プロパティに設定する必要があります。

例24-4 アプリケーション・タイムスタンプの構成

...
<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="myHaInputAdapter"/>
<wlevs:application-timestamped>
<wlevs:expression>arrivalTime</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>
...

6. Oracle Event Processingの高可用性バッファリング出力アダプタを構成します。
インスタンス・プロパティwindowLengthを、例24-5で示すようにゼロ(0)に設定します。

例24-5 バッファリング出力アダプタにおけるwindowLengthの構成

...
<wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:instance-property name="windowLength" value="0"/>
</wlevs:adapter>
...

詳細は、24.2.2.2.1項「バッファリング出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

7. オプションで、コンポーネント構成ファイルを例24-6で示すように、Oracle Event Processingの高可用性バッファリング出力アダプタを含むように構成します。

例24-6 高可用性アダプタを使用したシンプル・フェイルオーバーのコンポーネント構成ファイル

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
<processor>
<name>helloworldProcessor</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from helloworldInputChannel [Now] ]]>
</query>
</rules>
</processor>

<ha:ha-buffering-adapter >
<name>myHaSlidingWindowAdapter</name>
<window-length>0</window-length>
</ha:ha-buffering-adapter >

</wlevs:config>

詳細は、次を参照してください:

- 24.2.2.2.2項「バッファリング出力アダプタ・コンポーネント構成ファイルの構成」

8. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。
詳細は、23.5項「Oracle Event Processingアプリケーションのデプロイ」を参照してください。

Oracle Event Processingは、Oracle Event Processingサーバーのいずれかをプライマリとして自動的に選択します。

24.2.1.2 バッファリングを使用するシンプル・フェイルオーバーの構成方法

スライディング・ウィンドウのサイズをゼロ(0)より大きく設定して、Oracle Event Processingバッファリング出力アダプタを使用してシンプル・フェイルオーバーを構成します。

この手順は、図24-10で示すEPNの例から始まり、バッファリングを使用するシンプル・フェイルオーバー用に構成するために必要なコンポーネントを加えていきます。例24-7は対応するEPNアセンブリ・ファイルを示し、例24-8は対応するコンポーネント構成ファイルを示します。

このOracle Event Processingの高可用性のサービス品質に関する詳細は、24.1.2.2項「バッファリングによるシンプル・フェイルオーバー」を参照してください。

図24-10 バッファリングEPNを使用するシンプル・フェイルオーバー

「図24-10 バッファリングEPNを使用シンプル・フェイルオーバー」の説明

例24-7 バッファリングEPNアセンブリ・ファイルを使用するシンプル・フェイルオーバー

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>

<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutputChannel"
event-type="HelloWorldEvent" advertise="true">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

</beans>

例24-8 バッファリング・コンポーネント構成アセンブリ・ファイルを使用するシンプル・フェイルオーバー

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
<processor>
<name>helloworldProcessor</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from helloworldInputChannel [Now] ]]>
</query>
</rules>
</processor>
</wlevs:config>

バッファリングを使用してシンプル・フェイルオーバーを構成するには:

1. Oracle Coherenceを使用してマルチ・サーバー・ドメインを作成します。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle Event Processingマルチサーバー・ドメインを作成する方法に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle Event Processingマルチサーバー・ドメインを作成する方法に関する項

2. Oracle Event Processingアプリケーションを作成します。
詳細は、5.2項「Oracle Event Processingプロジェクトの作成」を参照してください。

3. MANIFEST.MFファイルを編集し、次のImport-Packageエントリを追加します。

- com.bea.wlevs.ede.api.cluster

- com.oracle.cep.cluster.hagroups

- com.oracle.cep.cluster.ha.adapter

- com.oracle.cep.cluster.ha.api

詳細は、5.7.2項「Oracle Event ProcessingプロジェクトへのOSGiバンドルの追加方法」を参照してください。

4. Oracle Event ProcessingアプリケーションのEPNアセンブリ・ファイルを構成し、例24-3に示すように、Oracle Event Processingの高可用性バッファリング出力アダプタを追加します。

- チャネルhelloworldOutputChannelの後に、providerをha-bufferingに設定したwlevs:adapter要素を追加します。

- idごとにha-bufferingアダプタを参照するように、チャネルhelloworldOutputChannelでwlevs:listener要素を更新します。

- wlevs:listener要素を、HelloWorldBeanクラスを参照するha-bufferingアダプタに追加します。

例24-9 シンプル・フェイルオーバーのEPNアセンブリ・ファイル: バッファリング出力アダプタ

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
</wlevs:channel>

<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent"
advertise="true">
<wlevs:listener ref="myHaSlidingWindowAdapter"/>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

<wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
</wlevs:adapter>

</beans>

5. オプションで、入力アダプタ(helloworldInputChannel)からのチャネル・ダウンストリームを構成し、例24-10で示されるように適切なイベント・プロパティに基づいてアプリケーションのタイムスタンプを構成します。
バッファリングを使用するシンプル・フェイルオーバーの場合、イベントはサーバー間で相関関係を持たないため、システムのタイムスタンプを使用できます。ただし、アプリケーションのタイムスタンプが使用されない場合、若干異なる結果がバッファから出力される可能性があります。

この例では、イベント・プロパティarrivalTimeが使用されます。

wlevs:expressionをこのイベント・プロパティに設定する必要があります。

例24-10 アプリケーション・タイムスタンプの構成

...
<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="myHaInputAdapter"/>
<wlevs:application-timestamped>
<wlevs:expression>arrivalTime</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>
...

6. Oracle Event Processingの高可用性バッファリング出力アダプタを構成します。
インスタンス・プロパティwindowLengthを、例24-11で示すようにゼロ(0)より大きい値に設定します。

例24-11 バッファリング出力アダプタにおけるwindowLengthの構成

...
<wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:instance-property name="windowLength" value="15000"/>
</wlevs:adapter>
...

詳細は、24.2.2.2.1項「バッファリング出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

7. オプションで、コンポーネント構成ファイルを例24-12で示すように、Oracle Event Processingの高可用性バッファリング出力アダプタを含むように構成します。

例24-12 バッファリング・コンポーネント構成ファイルを使用するシンプル・フェイルオーバー

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
<processor>
<name>helloworldProcessor</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from helloworldInputChannel [Now] ]]>
</query>
</rules>
</processor>

<ha:ha-buffering-adapter >
<name>myHaSlidingWindowAdapter</name>
<window-length>15000</window-length>
</ha:ha-buffering-adapter >

</wlevs:config>

詳細は、次を参照してください:

- 24.2.2.2.2項「バッファリング出力アダプタ・コンポーネント構成ファイルの構成」

8. アプリケーションが、Oracle Event Processingの高可用性タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)である場合、バッファリング出力アダプタのwarm-up-window-lengthを構成します。
詳細は、次を参照してください:

- 24.1.3.2.5項「適切なwarm-up-window-length時間の選択」

- 24.2.2.2.2項「バッファリング出力アダプタ・コンポーネント構成ファイルの構成」

9. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。
詳細は、23.5項「Oracle Event Processingアプリケーションのデプロイ」を参照してください。

Oracle Event Processingは、Oracle Event Processingサーバーのいずれかをプライマリとして自動的に選択します。

24.2.1.3 軽量キュー・トリミングの構成方法

Oracle Event Processingの高可用性入力アダプタおよびブロードキャスト出力アダプタを使用して、軽量キュー・トリミングを構成します。

この手順は、図24-11で示すEPNの例から始まり、軽量キュー・トリミング用に構成するために必要なコンポーネントを加えていきます。例24-13は対応するEPNアセンブリ・ファイルを示し、例24-14は対応するコンポーネント構成ファイルを示します。

このOracle Event Processingの高可用性のサービス品質に関する詳細は、24.1.2.3項「軽量キュー・トリミング」を参照してください。

図24-11 軽量キュー・トリミングのEPN

「図24-11 軽量キュー・トリミングのEPN」の説明

例24-13 軽量キュー・トリミングのEPNアセンブリ・ファイル

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>

<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent"
advertise="true">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

</beans>

例24-14 軽量キュー・トリミングのコンポーネント構成アセンブリ・ファイル

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
<processor>
<name>helloworldProcessor</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from helloworldInputChannel [Now] ]]>
</query>
</rules>
</processor>
</wlevs:config>

軽量キュー・トリミングを構成するには:

1. Oracle Coherenceを使用してマルチ・サーバー・ドメインを作成します。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle Event Processingマルチサーバー・ドメインを作成する方法に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle Event Processingマルチサーバー・ドメインを作成する方法に関する項

2. Oracle Event Processingアプリケーションを作成します。
詳細は、5.2項「Oracle Event Processingプロジェクトの作成」を参照してください。

3. MANIFEST.MFファイルを編集し、次のImport-Packageエントリを追加します。

- com.bea.wlevs.ede.api.cluster

- com.oracle.cep.cluster.hagroups

- com.oracle.cep.cluster.ha.adapter

- com.oracle.cep.cluster.ha.api

詳細は、5.7.2項「Oracle Event ProcessingプロジェクトへのOSGiバンドルの追加方法」を参照してください。

4. Oracle Event ProcessingアプリケーションのEPNアセンブリ・ファイルを構成し、例24-15に示すように、Oracle Event Processingの高可用性入力アダプタを追加します。

- 通常の入力アダプタhelloworldAdapterの後に、providerをha-inboundに設定したwlevs:adapter要素を追加します。

- wlevs:listener要素を、idごとにha-inboundアダプタを参照する通常の入力アダプタhelloworldAdapterに追加します。

- wlevs:source要素を、idごとにha-inboundアダプタを参照するhelloworldInputChannelに追加します。

例24-15 軽量キュー・トリミングのEPNアセンブリ・ファイル: 高可用性入力アダプタ

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
<wlevs:listener ref="myHaInputAdapter"/>
</wlevs:adapter>

<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="myHaInputAdapter"/>
</wlevs:channel>

<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent"
advertise="true">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

</beans>

5. Oracle Event ProcessingアプリケーションのEPNアセンブリ・ファイルを構成し、例24-16に示すように、Oracle Event Processingの高可用性ブロードキャスト出力アダプタを追加します。

- チャネルhelloworldOutputChannelの後に、providerをha-broadcastに設定したwlevs:adapter要素を追加します。

- idごとにha-broadcastアダプタを参照するように、チャネルhelloworldOutputChannelでwlevs:listener要素を更新します。

- wlevs:listener要素を、HelloWorldBeanクラスを参照するha-broadcastアダプタに追加します。

例24-16 軽量キュー・トリミングのEPNアセンブリ・ファイル: ブロードキャスト出力アダプタ

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
<wlevs:listener ref="myHaInputAdapter"/>
</wlevs:adapter>

<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="myHaInputAdapter"/>
</wlevs:channel>

<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent"
advertise="true">
<wlevs:listener ref="myHaBroadcastAdapter"/>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

<wlevs:adapter id="myHaBroadcastAdapter" provider="ha-broadcast" >
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
</wlevs:adapter>

</beans>

6. Oracle Event Processingの高可用性入力アダプタを構成します。
次の例の構成を検討します。

- 例24-17「高可用性入力アダプタ: デフォルト構成」

- 例24-18「高可用性入力アダプタ: タプル・イベント」

- 例24-19「高可用性入力アダプタ: 1つのイベント・プロパティのキー」

- 例24-20「高可用性入力アダプタ: 複数のイベント・プロパティのキー」

詳細は、24.2.2.1.1項「高可用性入力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

例24-17 高可用性入力アダプタ: デフォルト構成

この例は、すべてのデフォルトを使用した高可用性入力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
</wlevs:adapter>
...

例24-18 高可用性入力アダプタ: タプル・イベント

この例は、すべてのデフォルトを使用した高可用性入力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。イベントはタプル・ベースのイベントであるため、eventTypeプロパティを使用してイベント型(MyEventType)を指定する必要があります。

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
<wlevs:instance-property name="eventType" value="MyEventType"/>
</wlevs:adapter>
...

例24-19 高可用性入力アダプタ: 1つのイベント・プロパティのキー

この例は、高可用性入力アダプタの構成を示します。ここでは、必須キーはイベント・プロパティ(idという名前)に基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="keyProperties" value="id"/>
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
</wlevs:adapter>
...

例24-20 高可用性入力アダプタ: 複数のイベント・プロパティのキー

この例は、高可用性入力アダプタの構成を示します。ここでは、必須キーは1つ以上のイベント・プロパティ(orderIDおよびaccountIDプロパティ)に基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。複合キーのJavaクラス(com.acme.MyCompoundKeyClass)は必須で、その実装は例24-21で示されます。hashCodeおよびequalsメソッドが必要になります。keyClassを指定するとき、keyPropertiesインスタンス・プロパティは無視されます。Oracle Event Processingは、複合キーがkeyClass内のすべてのゲッター・メソッドに基づくと仮定します。

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
<wlevs:instance-property name="keyClass" value="com.acme.MyCompoundKeyClass"/>
</wlevs:adapter>
...

例24-21 MyCompoundKeyClassの実装

package com.acme;

public class MyCompoundKeyClass {
private int orderID;
private int accountID;

public MyCompoundKeyClass() {}

public int getOrderID() {
return orderID;
}
public setOrderID(int orderID) {
this.orderID = orderID;
}
public int getAccountID() {
return accountID;
}
public setOrderID(int accountID) {
this.accountID = accountID;
}

public int hashCode() {
int hash = 1;
hash = hash * 31 + orderID.hashCode();
hash = hash * 31 + (accountID == null ? 0 : accountID.hashCode());
return hash;
}

public boolean equals(Object obj) {
if (obj == this) return true;
if (obj == null) return false;
if (!(obj instanceof MyCompoundKeyClass)) return false;
MyCompoundKeyClass k = (MyCompoundKeyClass) obj;
return k.accountID == accountID && k.orderID == orderID;
}
}

7. 入力アダプタ(helloworldInputChannel)からのチャネル・ダウンストリームを構成し、例24-22で示される高可用性入力アダプタのtimeProperty設定に基づいて、アプリケーションのタイムスタンプを構成します。
wlevs:expressionをtimePropertyの値に設定する必要があります。

例24-22 アプリケーション・タイムスタンプの構成

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="keyProperties" value="id"/>
<wlevs:instance-property name="eventType" value="HelloWorldEvent"/>
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="myHaInputAdapter"/>
<wlevs:application-timestamped>
<wlevs:expression>arrivalTime</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>
...

8. Oracle Event Processingの高可用性ブロードキャスト出力アダプタを構成します。
次の例の構成を検討します。

- 例24-23「ブロードキャスト出力アダプタ: デフォルト構成」

- 例24-24「ブロードキャスト出力アダプタ: 1つのイベント・プロパティのキー」

- 例24-25「ブロードキャスト出力アダプタ: 複数のイベント・プロパティのキー」

詳細は、24.2.2.3.1項「ブロードキャスト出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

例24-23 ブロードキャスト出力アダプタ: デフォルト構成

この例は、すべてのデフォルトを使用したブロードキャスト出力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、キーの値は非モノトニック(継続的に増加しません)かつ全体順序(一意)です。

...
<wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-broadcast" >
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
</wlevs:adapter>
...

例24-24 ブロードキャスト出力アダプタ: 1つのイベント・プロパティのキー

この例は、ブロードキャスト出力アダプタの構成を示します。ここでは、必須キーはイベント・プロパティ(timePropertyという名前)に基づいており、キーの値はモノトニック(継続的に増加します)かつ全体順序ではありません(一意ではありません)。

...
<wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-broadcast" >
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:instance-property name="keyProperties" value="timeProperty"/>
<wlevs:instance-property name="monotonic" value="true"/>
<wlevs:instance-property name="totalOrder" value="false"/>
</wlevs:adapter>
...

例24-25 ブロードキャスト出力アダプタ: 複数のイベント・プロパティのキー

この例は、ブロードキャスト出力アダプタの構成を示します。ここでは、必須キーは1つ以上のイベント・プロパティ(timePropertyおよびaccountIDプロパティ)に基づいており、キーの値はモノトニック(継続的に増加します)かつ全体順序(一意)です。複合キーのJavaクラス(com.acme.MyCompoundKeyClass)は必須で、その実装は例24-26で示されます。hashCodeおよびequalsメソッドが必要になります。keyClassを指定するとき、keyPropertiesインスタンス・プロパティは無視されます。Oracle Event Processingは、複合キーがkeyClass内のすべてのゲッター・メソッドに基づくと仮定します。

...
<wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-broadcast" >
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:instance-property name="keyClass" value="com.acme.MyCompoundKeyClass"/>
<wlevs:instance-property name="monotonic" value="true"/>
<wlevs:instance-property name="totalOrder" value="true"/>
</wlevs:adapter>
...

例24-26 MyCompoundKeyClassの実装

package com.acme;

public class MyCompoundKeyClass {
private int timeProperty;
private int accountID;

public MyCompoundKeyClass() {}

public int getTimeProperty() {
return orderID;
}
public setTimeProperty(int timeProperty) {
this.timeProperty = timeProperty;
}
public int getAccountID() {
return accountID;
}
public setOrderID(int accountID) {
this.accountID = accountID;
}

public int hashCode() {
int hash = 1;
hash = hash * 31 + timeProperty.hashCode();
hash = hash * 31 + (accountID == null ? 0 : accountID.hashCode());
return hash;
}

public boolean equals(Object obj) {
if (obj == this) return true;
if (obj == null) return false;
if (!(obj instanceof MyCompoundKeyClass)) return false;
MyCompoundKeyClass k = (MyCompoundKeyClass) obj;
return k.accountID == accountID && k.orderID == orderID;
}
}

9. オプションで、コンポーネント構成ファイルを例24-27で示すように、Oracle Event Processingの高可用性入力アダプタおよびバッファリング出力アダプタを含むように構成します。

例24-27 軽量キュー・トリミングのコンポーネント構成ファイル

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
<processor>
<name>helloworldProcessor</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from helloworldInputChannel [Now] ]]>
</query>
</rules>
</processor>

<ha:ha-inbound-adapter>
<name>myHaInputAdapter</name>
</ha:ha-inbound-adapter>

<ha:ha-broadcast-adapter>
<name>myHaBroadcastAdapter</name>
<trimming-interval units="events">10</trimming-interval>
</ha:ha-broadcast-adapter>

</wlevs:config>

詳細は、次を参照してください:

- 24.2.2.1.2項「高可用性入力アダプタのコンポーネント構成ファイルの構成」

- 24.2.2.3.2項「ブロードキャスト出力アダプタ・コンポーネント構成ファイルの構成」

10. アプリケーションが、Oracle Event Processingの高可用性タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)である場合、ブロードキャスト出力アダプタのwarm-up-window-lengthを構成します。
詳細は、次を参照してください:

- 24.1.3.2.5項「適切なwarm-up-window-length時間の選択」

- 24.2.2.3.2項「ブロードキャスト出力アダプタ・コンポーネント構成ファイルの構成」

11. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。
詳細は、23.5項「Oracle Event Processingアプリケーションのデプロイ」を参照してください。

Oracle Event Processingは、Oracle Event Processingサーバーのいずれかをプライマリとして自動的に選択します。

24.2.1.4 JMSによる正確なリカバリの構成方法

Oracle Event Processingの高可用性入力アダプタおよび相関出力アダプタを使用して、JMSによる正確なリカバリを構成します。

この手順では、図24-12が示すEPNの例を作成する方法を説明します。例24-28は対応するEPNアセンブリ・ファイルを示し、例24-29は対応するコンポーネント構成ファイルを示します。

このOracle Event Processingの高可用性のサービス品質に関する詳細は、24.1.2.4項「JMSによる正確なリカバリ」を参照してください。

注意:

正確なリカバリのためにJMSアダプタによって使用されるJMS宛先は、キューではなくトピックである必要があります。

図24-12 JMSのEPNによる正確なリカバリ

「図24-12 JMSのEPNによる正確なリカバリ」の説明

例24-28 JMS EPNアセンブリ・ファイルを使用して精度の高いリカバリ

<?xml version="1.0" encoding="UTF-8"?>
<beans ... >

<wlevs:event-type-repository>
<wlevs:event-type type-name="StockTick">
<wlevs:properties>
<wlevs:property name="lastPrice" type="double" />
<wlevs:property name="symbol" type="char" />
</wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="JMSInboundAdapter" provider="jms-inbound">
<wlevs:listener ref="myHaInputAdapter"/>
</wlevs:adapter>

<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="keyProperties" value="sequenceNo"/>
<wlevs:instance-property name="timeProperty" value="inboundTime"/>
</wlevs:adapter>

<wlevs:channel id="channel1" event-type="StockTick">
<wlevs:listener ref="processor1" />
<wlevs:source ref="myHaInputAdapter"/>
<wlevs:application-timestamped>
<wlevs:expression>inboundTime</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>

<wlevs:processor id="processor1">
<wlevs:listener ref="channel2" />
</wlevs:processor>

<wlevs:adapter id="myHaCorrelatingAdapter" provider="ha-correlating" >
<wlevs:instance-property name="correlatedSource" ref="clusterCorrelatingOutstream"/>
<wlevs:instance-property name="failOverDelay" value="2000"/>
<wlevs:listener ref="JMSOutboundAdapter"/>
</wlevs:adapter>

<wlevs:channel id="channel2" event-type="StockTick">
<wlevs:listener ref="myHaCorrelatingAdapter" />
</wlevs:channel>

<wlevs:adapter id="JMSOutboundAdapter" provider="jms-outbound">
</wlevs:adapter>

<wlevs:adapter id="JMSInboundAdapter2" provider="jms-inbound">
</wlevs:adapter>

<wlevs:channel id="clusterCorrelatingOutstream" event-type="StockTick" advertise="true">
<wlevs:source ref="JMSInboundAdapter2"/>
</wlevs:channel>
</beans>

例24-29 JMSコンポーネント構成アセンブリ・ファイルを使用して精度の高いリカバリ

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
<processor>
<name>processor1</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from channel1 [Now] ]]>
</query>
</rules>
</processor>
</wlevs:config>

JMSによる正確なリカバリを構成するには:

1. Oracle Coherenceを使用してマルチ・サーバー・ドメインを作成します。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle Event Processingマルチサーバー・ドメインを作成する方法に関する項

- 『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle Event Processingマルチサーバー・ドメインを作成する方法に関する項

2. Oracle Event Processingアプリケーションを作成します。
詳細は、5.2項「Oracle Event Processingプロジェクトの作成」を参照してください。

3. MANIFEST.MFファイルを編集し、次のImport-Packageエントリを追加します。

- com.bea.wlevs.ede.api.cluster

- com.oracle.cep.cluster.hagroups

- com.oracle.cep.cluster.ha.adapter

- com.oracle.cep.cluster.ha.api

詳細は、5.7.2項「Oracle Event ProcessingプロジェクトへのOSGiバンドルの追加方法」を参照してください。

4. Oracle Event ProcessingアプリケーションのEPNアセンブリ・ファイルを構成し、例24-30に示すように、Oracle Event Processingの高可用性入力アダプタを追加します。

- 通常の入力アダプタJMSInboundAdapterの後に、providerをha-inboundに設定したwlevs:adapter要素を追加します。

- wlevs:listener要素を、idごとにha-inboundアダプタを参照する通常の入力アダプタJMSInboundAdapterに追加します。

- wlevs:source要素を、idごとにha-inboundアダプタを参照するチャネルchannel1に追加します。

例24-30 JMSのEPNアセンブリ・ファイルによる正確なリカバリ: 高可用性入力アダプタ

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

<wlevs:event-type-repository>
<wlevs:event-type type-name="StockTick">
<wlevs:properties>
<wlevs:property name="lastPrice" type="double" />
<wlevs:property name="symbol" type="char" />
</wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="JMSInboundAdapter" provider="jms-inbound">
<wlevs:listener ref="myHaInputAdapter"/>
</wlevs:adapter>

<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
</wlevs:adapter>

<wlevs:channel id="channel1" event-type="StockTick">
<wlevs:listener ref="processor1" />
<wlevs:source ref="myHaInputAdapter"/>
</wlevs:channel>

...

</beans>

5. Oracle Event ProcessingアプリケーションのEPNアセンブリ・ファイルを構成し、例24-31に示すように、Oracle Event Processingの高可用性相関出力アダプタを追加します。

- チャネルchannel2の後に、providerをha-correlatingに設定したwlevs:adapter要素を追加します。

- idごとにha-correlatingアダプタを参照するように、チャネルchannel2でwlevs:listener要素を更新します。

- wlevs:listener要素を、JMSOutboundAdapterクラスを参照するha-correlatingアダプタに追加します。

例24-31 JMSのEPNアセンブリ・ファイルによる正確なリカバリ: 相関出力アダプタ

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

<wlevs:event-type-repository>
<wlevs:event-type type-name="StockTick">
<wlevs:properties>
<wlevs:property name="lastPrice" type="double" />
<wlevs:property name="symbol" type="char" />
</wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="JMSInboundAdapter" provider="jms-inbound">
<wlevs:listener ref="myHaInputAdapter"/>
</wlevs:adapter>

<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
</wlevs:adapter>

<wlevs:channel id="channel1" event-type="StockTick">
<wlevs:listener ref="processor1" />
<wlevs:source ref="myHaInputAdapter"/>
</wlevs:channel>

<wlevs:processor id="processor1">
<wlevs:listener ref="channel2" />
</wlevs:processor>

<wlevs:channel id="channel2" event-type="StockTick">
<wlevs:listener ref="myHaCorrelatingAdapter" />
</wlevs:channel>

<wlevs:adapter id="myHaCorrelatingAdapter" provider="ha-correlating" >
<wlevs:listener ref="JMSOutboundAdapter"/>
</wlevs:adapter>

<wlevs:adapter id="JMSOutboundAdapter" provider="jms-outbound">
</wlevs:adapter>

...

</beans>

6. Oracle Event Processingの高可用性入力アダプタを構成します。
次の例の構成を検討します。

- 例24-32「高可用性入力アダプタ: デフォルト構成」

- 例24-33「高可用性入力アダプタ: タプル・イベント」

- 例24-34「高可用性入力アダプタ: 1つのイベント・プロパティのキー」

- 例24-35「高可用性入力アダプタ: 複数のイベント・プロパティのキー」

詳細は、24.2.2.1.1項「高可用性入力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

例24-32 高可用性入力アダプタ: デフォルト構成

この例は、すべてのデフォルトを使用した高可用性入力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
</wlevs:adapter>
...

例24-33 高可用性入力アダプタ: タプル・イベント

この例は、すべてのデフォルトを使用した高可用性入力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。イベントはタプル・ベースのイベントであるため、eventTypeプロパティを使用してイベント型(MyEventType)を指定する必要があります。

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
<wlevs:instance-property name="eventType" value="MyEventType"/>
</wlevs:adapter>
...

例24-34 高可用性入力アダプタ: 1つのイベント・プロパティのキー

この例は、高可用性入力アダプタの構成を示します。ここでは、必須キーはイベント・プロパティ(sequenceNoという名前)に基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、inboundTimeという名前のイベント・プロパティです。

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="keyProperties" value="sequenceNo"/>
<wlevs:instance-property name="timeProperty" value="inboundTime"/>
</wlevs:adapter>
...

例24-35 高可用性入力アダプタ: 複数のイベント・プロパティのキー

この例は、高可用性入力アダプタの構成を示します。ここでは、必須キーは1つ以上のイベント・プロパティ(orderIDおよびaccountIDプロパティ)に基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。複合キーのJavaクラス(com.acme.MyCompoundKeyClass)は必須で、その実装は例24-36で示されます。hashCodeおよびequalsメソッドが必要になります。keyClassを指定するとき、keyPropertiesインスタンス・プロパティは無視されます。Oracle Event Processingは、複合キーがkeyClass内のすべてのゲッター・メソッドに基づくと仮定します。

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
<wlevs:instance-property name="keyClass" value="com.acme.MyCompoundKeyClass"/>
</wlevs:adapter>
...

例24-36 MyCompoundKeyClassの実装

package com.acme;

public class MyCompoundKeyClass {
private int orderID;
private int accountID;

public MyCompoundKeyClass() {}

public int getOrderID() {
return orderID;
}
public setOrderID(int orderID) {
this.orderID = orderID;
}
public int getAccountID() {
return accountID;
}
public setOrderID(int accountID) {
this.accountID = accountID;
}

public int hashCode() {
int hash = 1;
hash = hash * 31 + orderID.hashCode();
hash = hash * 31 + (accountID == null ? 0 : accountID.hashCode());
return hash;
}

public boolean equals(Object obj) {
if (obj == this) return true;
if (obj == null) return false;
if (!(obj instanceof MyCompoundKeyClass)) return false;
MyCompoundKeyClass k = (MyCompoundKeyClass) obj;
return k.accountID == accountID && k.orderID == orderID;
}
}

7. 入力アダプタ(channel1)からのチャネル・ダウンストリームを構成し、例24-37で示される高可用性入力アダプタのtimeProperty設定に基づいて、アプリケーションのタイムスタンプを構成します。
wlevs:expressionをtimePropertyの値に設定する必要があります。

例24-37 アプリケーション・タイムスタンプの構成

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="eventType" value="HelloWorldEvent"/>
<wlevs:instance-property name="keyProperties" value="sequenceNo"/>
<wlevs:instance-property name="timeProperty" value="inboundTime"/>
</wlevs:adapter>

<wlevs:channel id="channel1" event-type="StockTick">
<wlevs:listener ref="processor1" />
<wlevs:source ref="myHaInputAdapter"/>
<wlevs:application-timestamped>
<wlevs:expression>inboundTime</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>
...

8. Oracle Event Processingの高可用性相関出力アダプタfailOverDelayを構成します。
例24-38は、相関出力アダプタの構成を示し、ここではfailOverDelayが2000ミリ秒になっています。

例24-38 相関出力アダプタの構成: failOverDelay

...
<wlevs:adapter id="myHaCorrelatingAdapter" provider="ha-correlating" >
<wlevs:listener ref="JMSOutboundAdapter"/>
<wlevs:instance-property name="failOverDelay" value="2000"/>
</wlevs:adapter>
...

詳細は、24.2.2.4.1項「相関出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

9. 2番目の通常JMS入力アダプタを作成します。
例24-39は、JMSInboundAdapter2という名前のJMSアダプタを示します。

例24-39 インバウンドJMSアダプタのアセンブリ・ファイル

...
<wlevs:adapter id="JMSInboundAdapter2" provider="jms-inbound">
</wlevs:adapter>
...

このJMS入力アダプタは、1番目のJMS入力アダプタ(JMSInboundAdapterなど)と同一となるように構成する必要があります。例24-40は、両方のJMS入力アダプタのコンポーネント構成ファイルを示します。両アダプタは、同一のプロバイダを含む完全に同一の構成になる必要があります。

例24-40 インバウンドJMSアダプタのコンポーネント構成ファイル

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
...
<jms-adapter>
<name>JMSInboundAdapter</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
</jms-adapter>

<jms-adapter>
<name>JMSInboundAdapter2</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
</jms-adapter>
...
</wlevs:config>

10. 相関ソースとして機能するチャネルを作成します。
ソースとして2番目の通常JMS入力アダプタを持つこのチャネルを構成する必要があります。

例24-41は、ソースがJMSInboundAdapter2のclusterCorrelatingOutstreamという名前の相関ソースを示します。

例24-41 相関ソースの作成

...
<wlevs:adapter id="JMSInboundAdapter2" provider="jms-inbound">
</wlevs:adapter>

<wlevs:channel id="clusterCorrelatingOutstream" event-type="StockTick" advertise="true">
<wlevs:source ref="JMSInboundAdapter2"/>
</wlevs:channel>

11. correlatedSourceを持つOracle Event Processingの高可用性相関出力アダプタを構成します。
例24-38は、相関出力アダプタの構成を示し、ここではcorrelatedSourceがclusterCorrelatingOutstreamになっています。

例24-42 相関出力アダプタ: correlatedSource

...
<wlevs:adapter id="myHaCorrelatingAdapter" provider="ha-correlating" >
<wlevs:listener ref="JMSOutboundAdapter"/>
<wlevs:instance-property name="failOverDelay" value="2000"/>
<wlevs:instance-property name="correlatedSource" value="clusterCorrelatingOutstream"/>
</wlevs:adapter>
...

詳細は、24.2.2.4.1項「相関出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

12. アプリケーションが、Oracle Event Processingの高可用性タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)である場合、相関出力アダプタのwarm-up-window-lengthを構成します。
詳細は、次を参照してください:

- 24.1.3.2.5項「適切なwarm-up-window-length時間の選択」

- 24.2.2.4.2項「相関出力アダプタのコンポーネント構成ファイルの構成」

13. コンポーネント構成ファイルを構成し、例24-43で示すように、インバウンドJMSアダプタおよびアウトバウンドJMSアダプタのsession-transactedを有効にします。

例24-43 インバウンド/アウトバウンドJMSアダプタのコンポーネント構成ファイル

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
...
<jms-adapter>
<name>JMSInboundAdapter</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>true</session-transacted>
</jms-adapter>

<jms-adapter>
<name>JMSInboundAdapter2</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>true</session-transacted>
</jms-adapter>
...
<jms-adapter>
<name>JMSOutboundAdapter</name>
<event-type>JMSEvent</event-type>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Topic1</destination-jndi-name>
<delivery-mode>nonpersistent</delivery-mode>
<session-transacted>true</session-transacted>
</jms-adapter>
...
</wlevs:config>

14. オプションで、コンポーネント構成ファイルを例24-27で示すように、Oracle Event Processingの高可用性入力アダプタおよび相関出力アダプタを含むように構成します。

例24-44 高可用性入力/出力アダプタのコンポーネント構成ファイル

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
...
<ha:ha-inbound-adapter>
<name>myHaInputAdapter</name>
</ha:ha-inbound-adapter>
...
<ha:ha-correlating-adapter>
<name>myHaBroadcastAdapter</name>
<fail-over-delay>2000</fail-over-delay>
</ha:ha-correlating-adapter>
...
</wlevs:config>

詳細は、次を参照してください:

- 24.2.2.1.2項「高可用性入力アダプタのコンポーネント構成ファイルの構成」

- 24.2.2.4.2項「相関出力アダプタのコンポーネント構成ファイルの構成」

15. オプションで、ActiveActiveGroupBeanをEPNに追加し、スケーラビリティを向上します。
詳細は、25.2.2項「ActiveActiveGroupBeanによるスケーラビリティの構成」を参照してください。

16. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。
詳細は、23.5項「Oracle Event Processingアプリケーションのデプロイ」を参照してください。

Oracle Event Processingは、Oracle Event Processingサーバーのいずれかをプライマリとして自動的に選択します。

24.2.2 高可用性アダプタの構成

チャネルやプロセッサなどのEPN内の他のコンポーネントを構成する方法と同様に、EPNアセンブリ・ファイルおよびコンポーネント構成ファイルでOracle Event Processingの高可用性アダプタを構成します。このような構成ファイルに関する一般情報は、次を参照してください。

- 1.4.1項「EPNアセンブリ・ファイルの概要」

- 1.4.2項「コンポーネント構成ファイルの概要」

注意:

Oracle Event Processingの高可用性の構成に変更を加えた後は、Oracle Event Processingアプリケーションを再デプロイする必要があります。23.5項「Oracle Event Processingのデプロイ」を参照してください。

この項では、Oracle Event Processingの高可用性アダプタのそれぞれに関する構成可能なオプションを次のような内容で説明します。

- 24.2.2.1項「高可用性入力アダプタの構成方法」

- 24.2.2.2項「バッファリング出力アダプタの構成方法」

- 24.2.2.3項「ブロードキャスト出力アダプタの構成方法」

- 24.2.2.4項「相関出力アダプタの構成方法」

24.2.2.1 高可用性入力アダプタの構成方法

Oracle Event Processingの高可用性ブロードキャスト入力アダプタは、BroadcastInputAdapterによって実装されます。

この項では、Oracle Event Processingの高可用性入力アダプタの構成方法を次のような内容で説明します。

- 24.2.2.1.1項「高可用性入力アダプタのEPNアセンブリ・ファイルの構成」

- 24.2.2.1.2項「高可用性入力アダプタのコンポーネント構成ファイルの構成」

詳細は、24.1.1.3.1項「高可用性入力アダプタ」を参照してください。

24.2.2.1.1 高可用性入力アダプタのEPNアセンブリ・ファイルの構成

Oracle Event Processingの高可用性入力アダプタを宣言するためのルート要素は、例24-45で示されるように、provider要素をha-inboundに設定したwlevs:adapterです。例24-45で示されるように、実際の入力アダプタでOracle Event Processingの高可用性入力アダプタのwlevs:listener要素を指定します。

例24-45 高可用性入力アダプタのEPNアセンブリ・ファイル

<wlevs:adapter id="jmsAdapter" provider="jms-inbound"
<wlevs:listener ref="myHaInputAdapter"/>
</wlevs:adapter>

<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound">
<wlevs:instance-property name="keyProperties" value="id"/>
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
<wlevs:instance-property name="eventType" value="MyEventType"/>
</wlevs:adapter>

<wlevs:channel id="inputChannel" event-type="MyEventType ">
<wlevs:source ref="myHaInputAdapter"/>
<wlevs:application-timestamped>
<wlevs:expression>arrivalTime</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>

表24-3は、Oracle Event Processingの高可用性入力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表24-3 高可用性入力アダプタ用wlevs:adapterの子要素

子要素

説明

wlevs:instance-property

表24-4で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。

表24-4は、Oracle Event Processingの高可用性入力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表24-4 高可用性入力アダプタのインスタンス・プロパティ

名前

値

timeProperty

高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティ名を指定します。

これは、例24-45で示すように高可用性入力アダプタの接続対象となる、ダウンストリームEPNコンポーネントのwlevs:application-timestamped要素で使用するプロパティと同一です。

keyProperties

Oracle Event Processingの高可用性入力アダプタがイベント・インスタンスを識別するために使用する、1つ以上のイベント・プロパティのスペースで区切られたリストを指定します。

1つ以上のプロパティを指定する場合は、keyClassを指定する必要があります。

デフォルト: すべてのイベント・プロパティ。

keyClass

複合キーとして使用されるJavaクラスの完全修飾なクラス名を指定します。

デフォルトでは、keyProperties設定が使用されない場合、keyClass内のすべてのJavaBeanプロパティがkeyPropertiesとなるように仮定されます。

eventType

Oracle Event Processingの高可用性入力アダプタが実際の入力アダプタから受信するイベントの種類名を指定します。これは、例24-45で示すように高可用性入力アダプタの接続対象となる、ダウンストリームEPNコンポーネントで使用するイベント型と同一です。

タプル・イベントの場合、このプロパティは必須です。

すべての他のJavaクラス・ベースのイベント型の場合、このプロパティはオプションです。

詳細は、9.1項「Oracle Event Processingイベント・タイプの概要」を参照してください。

24.2.2.1.2 高可用性入力アダプタのコンポーネント構成ファイルの構成

Oracle Event Processingの高可用性入力アダプタの構成用ルート要素は、ha-inbound-adapterです。特定のアダプタのnameの子要素は、このアダプタを例24-50で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例24-46 高可用性入力アダプタのコンポーネント構成ファイル

<ha:ha-inbound-adapter>
<name>myHaInputAdapter</name>
<heartbeat units="millis">1000</heartbeat>
<batch-size>10</batch-size>
</ha:ha-inbound-adapter>

表24-5は、Oracle Event Processingの高可用性入力アダプタに構成できるha-inbound-adapterの追加子要素を説明します。

表24-5 高可用性入力アダプタ用ha-inbound-adapterの子要素

子要素

説明

heartbeat

unitsの整数の数として時間を進めるためのハートビート・イベントを生成する前に、Oracle Event Processingの高可用性入力アダプタが待機できる時間の長さを指定します。

units属性の有効な値:

- nanos: 指定されたナノ秒数を待機します。

- millis: 指定されたミリ秒数を待機します。

- secs: 指定された秒数を待機します。

デフォルト: ハートビートが送信されません。

batch-size

プライマリがセカンダリにブロードキャストする各タイミング・メッセージにおいてイベント数を指定します。nの値は、nと{key, time}のペアが各メッセージに送信されるという意味になります。このプロパティをパフォーマンスの調整に使用できます(27.2.3項「高可用性入力アダプタの構成」を参照)。

デフォルト: 1 (バッチを無効化)。

24.2.2.2 バッファリング出力アダプタの構成方法

Oracle Event Processingの高可用性バッファリング出力アダプタは、SlidingWindowQueueTrimmingAdapterによって実装されます。

この項では、Oracle Event Processingの高可用性バッファリング出力アダプタの構成方法を次のような内容で説明します。

- 24.2.2.2.1項「バッファリング出力アダプタのEPNアセンブリ・ファイルの構成」

- 24.2.2.2.2項「バッファリング出力アダプタ・コンポーネント構成ファイルの構成」

詳細は、24.1.1.3.2項「バッファリング出力アダプタ」を参照してください。

24.2.2.2.1 バッファリング出力アダプタのEPNアセンブリ・ファイルの構成

Oracle Event Processingの高可用性バッファリング出力アダプタを宣言するためのルート要素は、例24-47で示されるように、provider要素をha-bufferingに設定したwlevs:adapterです。

例24-47 バッファリング出力アダプタのEPNアセンブリ・ファイル

<wlevs:adapter id="mySlidingWindowingAdapter" provider ="ha-buffering">
<wlevs:listener>
<bean class="com.bea.wlevs.example.cluster.ClusterAdapterBean"/>
</wlevs:listener>
<wlevs:instance-property name="windowLength" value="15000"/>
</wlevs:adapter>

表24-6は、Oracle Event Processingの高可用性バッファリング出力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表24-6 バッファリング出力アダプタ用wlevs:adapterの子要素

子要素

説明

wlevs:listener

Oracle Event Processingの高可用性バッファリング出力アダプタから、通常の出力アダプタのダウンストリームを指定します。

wlevs:instance-property

表24-7で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。

表24-7は、Oracle Event Processingの高可用性バッファリング出力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表24-7 バッファリング出力アダプタのインスタンス・プロパティ

名前

値

windowLength

スライディング・ウィンドウのサイズを整数のミリ秒で指定します。

デフォルト: 15000。

24.2.2.2.2 バッファリング出力アダプタ・コンポーネント構成ファイルの構成

Oracle Event Processingの高可用性バッファリング出力アダプタの構成用ルート要素は、ha-buffering-adapterです。特定のアダプタのnameの子要素は、このアダプタを例24-48で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例24-48 バッファリング出力アダプタのコンポーネント構成ファイル

<ha:ha-buffering-adapter >
<name>mySlidingWindowingAdapter</name>
<window-length>15000</window-length>
<warm-up-window-length units="minutes">6</warm-up-window-length>
</ha:ha-buffering-adapter >

表24-8は、Oracle Event Processingの高可用性バッファリング出力アダプタに構成できるha-buffering-adapterの追加子要素を説明します。

表24-8 バッファリング出力アダプタ用ha-buffering-adapterの子要素

子要素

説明

window-length

スライディング・ウィンドウのサイズを整数のミリ秒で指定します。

デフォルト: 15000。

warm-up-window-length

以前に失敗したセカンダリの再起動後または新しいセカンダリがunitsの整数の数として追加された後、アプリケーションが状態を再構築するのにかかる時間の長さを指定します。

units属性の有効な値:

- seconds: 指定された秒数を待機します。

- minutes: 指定された分数を待機します。

デフォルト: unitsはsecondsです。

詳細は、24.1.3.2.5項「適切なwarm-up-window-length時間の選択」を参照してください。

24.2.2.3 ブロードキャスト出力アダプタの構成方法

Oracle Event Processingの高可用性ブロードキャスト出力アダプタは、クラスGroupBroadcastQueueTrimmingAdapterによって実装されます。

この項では、Oracle Event Processingの高可用性ブロードキャスト出力アダプタの構成方法を次のような内容で説明します。

- 24.2.2.3.1項「ブロードキャスト出力アダプタのEPNアセンブリ・ファイルの構成」

- 24.2.2.3.2項「ブロードキャスト出力アダプタ・コンポーネント構成ファイルの構成」

詳細は、24.1.1.3.3項「ブロードキャスト出力アダプタ」を参照してください。

24.2.2.3.1 ブロードキャスト出力アダプタのEPNアセンブリ・ファイルの構成

Oracle Event Processingの高可用性ブロードキャスト出力アダプタを宣言するためのルート要素は、例24-49で示されるように、provider要素をha-broadcastに設定したwlevs:adapterです。

例24-49 ブロードキャスト出力アダプタのEPNアセンブリ・ファイル

<wlevs:adapter id="myBroadcastAdapter" provider="ha-broadcast">
<wlevs:listener ref="actualAdapter"/>
<wlevs:instance-property name="keyProperties" value="time"/>
<wlevs:instance-property name="monotonic" value="true"/>
</wlevs:adapter>

表24-9は、Oracle Event Processingの高可用性ブロードキャスト出力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表24-9 ブロードキャスト出力アダプタ用wlevs:adapterの子要素

子要素

説明

wlevs:listener

Oracle Event Processingの高可用性ブロードキャスト出力アダプタから、通常の出力アダプタのダウンストリームを指定します。

wlevs:instance-property

表24-10で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。

表24-10は、Oracle Event Processingの高可用性ブロードキャスト出力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表24-10 ブロードキャスト出力アダプタのインスタンス・プロパティ

名前

値

keyProperties

Oracle Event Processingの高可用性ブロードキャスト出力アダプタがイベント・インスタンスを識別するために使用する、1つ以上のイベント・プロパティのスペースで区切られたリストを指定します。

1つ以上のプロパティを指定する場合は、keyClassを指定する必要があります。

デフォルト: すべてのイベント・プロパティ。

keyClass

複合キーとして使用されるJavaクラスの完全修飾なクラス名を指定します。

デフォルトでは、keyProperties設定が使用されない場合、keyClass内のすべてのJavaBeanプロパティがkeyPropertiesとなるように仮定されます。

複合キーは、monotonicおよびtotalOrderになることがあります。

monotonic

キーの値が(時間値のように)常に増加するかどうかを指定します。

有効な値:

- true: キーは常に増加します。

- false: キーは常に増加しません。

デフォルト: false。

totalOrder

イベント・キーが一意であるかどうか指定します。インスタンス・プロパティmonotonicがtrueに設定されている場合のみ適用できます。

有効な値:

- true: イベント・キーは一意です。

- false: イベント・キーは一意ではありません。

デフォルト: true。

24.2.2.3.2 ブロードキャスト出力アダプタのコンポーネント構成ファイルの構成

Oracle Event Processingの高可用性ブロードキャスト出力アダプタの構成用ルート要素は、ha-broadcast-adapterです。特定のアダプタのnameの子要素は、このアダプタを例24-50で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例24-50 ブロードキャスト出力アダプタのコンポーネント構成ファイル

<ha:ha-broadcast-adapter>
<name>myBroadcastAdapter</name>
<trimming-interval units="events">10</trimming-interval>
<warm-up-window-length units="minutes">6</warm-up-window-length>
</ha:ha-broadcast-adapter>

表24-11は、Oracle Event Processingの高可用性ブロードキャスト出力アダプタに構成できるha-broadcast-adapterの追加子要素を説明します。

表24-11 ブロードキャスト出力アダプタ用ha-broadcast-adapterの子要素

子要素

説明

trimming-interval

トリミング・メッセージがunitsの整数の数としてブロードキャストされる間隔を指定します。このプロパティをパフォーマンスの調整に使用できます(27.2.4項「ブロードキャスト出力アダプタの構成」を参照)。

units属性の有効な値:

- events: 指定されたミリ秒数の後に、トリミング・メッセージをブロードキャストします。

- millis: 指定されたイベント数の処理後に、トリミング・メッセージをブロードキャストします。

デフォルト: unitsはeventsです。

warm-up-window-length

以前に失敗したセカンダリの再起動後または新しいセカンダリがunitsの整数の数として追加された後、アプリケーションが状態を再構築するのにかかる時間の長さを指定します。

units属性の有効な値:

- seconds: 指定された秒数を待機します。

- minutes: 指定された分数を待機します。

デフォルト: unitsはsecondsです。

詳細は、24.1.3.2.5項「適切なwarm-up-window-length時間の選択」を参照してください。

24.2.2.4 相関出力アダプタの構成方法

Oracle Event Processingの高可用性相関出力アダプタは、クラスCorrelatedQueueTrimmingAdapterによって実装されます。

この項では、Oracle Event Processingの高可用性相関出力アダプタの構成方法を次のような内容で説明します。

- 24.2.2.4.1項「相関出力アダプタのEPNアセンブリ・ファイルの構成」

- 24.2.2.4.2項「相関出力アダプタのコンポーネント構成ファイルの構成」

詳細は、24.1.1.3.4項「相関出力アダプタ」を参照してください。

24.2.2.4.1 相関出力アダプタのEPNアセンブリ・ファイルの構成

Oracle Event Processingの高可用性相関出力アダプタを宣言するためのルート要素は、例24-51で示されるように、provider要素をha-correlatingに設定したwlevs:adapterです。

例24-51 相関出力アダプタのEPNアセンブリ・ファイル

<wlevs:adapter id="myCorrelatingAdapter" provider="ha-correlating">
<wlevs:listener>
<bean class="com.bea.wlevs.example.cluster.ClusterAdapterBean"/>
</wlevs:listener>
<wlevs:instance-property name="correlatedSource" ref="clusterCorrOutstream"/>
<wlevs:instance-property name="failOverDelay" value="2000"/>
</wlevs:adapter>

表24-12は、Oracle Event Processingの高可用性相関出力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表24-12 相関出力アダプタ用wlevs:adapterの子要素

子要素

説明

wlevs:listener

Oracle Event Processingの高可用性バッファリング出力アダプタから、通常の出力アダプタのダウンストリームを指定します。

wlevs:instance-property

表24-13で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。

表24-13は、Oracle Event Processingの高可用性相関出力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表24-13 相関出力アダプタのインスタンス・プロパティ

名前

値

correlatedSource

相関対象のイベント・ソースを指定します。このソースから参照されるイベントは、トリミング・キューからパージされます。フェイルオーバーときにキュー内に留まるイベントは再生されます。

failOverDelay

フェイルオーバー後に相関関係が再起動される速さを決定するために使用される、遅延タイムアウトをミリ秒単位で指定します。

デフォルト: 0ミリ秒。

24.2.2.4.2 相関出力アダプタのコンポーネント構成ファイルの構成

Oracle Event Processingの高可用性相関出力アダプタの構成用ルート要素は、ha-correlating-adapterです。特定のアダプタのnameの子要素は、このアダプタを例24-52で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例24-52 相関出力アダプタのコンポーネント構成ファイル

<ha:ha-correlating-adapter>
<name>myCorrelatingAdapter</name>
<window-length>15000</window-length>
<warm-up-window-length units="minutes">6</warm-up-window-length>
</ha:ha-correlating-adapter>

表24-14は、Oracle Event Processingの高可用性相関出力アダプタに構成できるha-broadcast-adapterの追加子要素を説明します。

表24-14 相関出力アダプタ用ha-correlating-adapterの子要素

子要素

説明

fail-over-delay

フェイルオーバー後に相関関係が再起動される速さを決定するために使用される、遅延タイムアウトをミリ秒単位で指定します。

デフォルト: 0ミリ秒。

warm-up-window-length

以前に失敗したセカンダリの再起動後または新しいセカンダリがunitsの整数の数として追加された後、アプリケーションが状態を再構築するのにかかる時間の長さを指定します。

units属性の有効な値:

- seconds: 指定された秒数を待機します。

- minutes: 指定された分数を待機します。

デフォルト: unitsはsecondsです。

詳細は、24.1.3.2.5項「適切なwarm-up-window-length時間の選択」を参照してください。

25 スケーラブルなアプリケーションの開発

この章では、増加するイベント・ロードに従ってOracle Event Processingアプリケーションをスケールするために使用できるコンポーネントおよび設計パターンについて、およびイベントのパーティション化の設定に関する情報など、Oracle Event Processingアプリケーションのスケーラビリティの構成方法について説明します。

この章の内容は次のとおりです。

- 25.1項「スケーラビリティについて」

- 25.2項「スケーラビリティの構成」

25.1 スケーラビリティについて

この項では、増加するイベント・ロードに従ってOracle Event Processingアプリケーションをスケールするために使用できるコンポーネントおよび設計パターンについて説明します。

この節の内容は以下のとおりです。

- 25.1.1項「スケーラビリティ・オプション」

- 25.1.2項「スケーラビリティ・コンポーネント」

25.1.1 スケーラビリティ・オプション

Oracle Event Processingは、増加するイベント・ロードに従ってOracle Event Processingアプリケーションをスケールするためのオプションを提供します。

一般的に、イベントの到着時またはイベント処理ネットワーク(EPN)内で、またはその両方で入力イベント・ストリームをパーティション化し、イベントの並列処理ができるようにアプリケーションを設計できます。

イベント処理順序のできるだけ早い段階でスケーラビリティと並列処理を実行する必要があります。たとえば、通常、アプリケーションが依存する低ボリュームイベント、高価値のイベントを抽出するために、高ボリュームと低ボリュームのイベントを並列処理します。

Oracle Event Processingは、25.1.2項「スケーラビリティ・コンポーネント」の説明に従って使用できる、様々なスケーラビリティ・コンポーネントを提供します。

25.1.1.1 スケーラビリティと高可用性

スケーラビリティには多くの場合、複数のサーバーへのアプリケーションのデプロイが含まれているため、スケーラビリティのためにOracle Event Processingアプリケーションを設計するときに、高可用性のオプションも検討すると有利です。

入力ストリームのパーティション化と並列処理は、イベント順序の保存とマルチスレッドの使用の管理などで、アプリケーションの設計を制限します。

高可用性オプションの詳細は、次の項を参照してください。

- 24.1.1項「高可用性アーキテクチャ」

- 24.1.3項「高可用性用Oracle Event Processingアプリケーションの設計」

25.1.2 スケーラビリティ・コンポーネント

Oracle Event Processingでは、Oracle Event Processingアプリケーションのスケーラビリティの向上に使用できる次のコンポーネントを提供します。

- 25.1.2.1項「EventPartitioner」

- 25.1.2.2項「ActiveActiveGroupBean」

25.1.2.1 EventPartitioner

com.bea.wlevs.channel.EventPartitionerは、図25-1に示すように、出力イベント・シンク間でチャネルのイベントをパーティション化するメカニズムを提供します。

図25-1 イベント・パーティショナEPN

「図25-1 イベント・パーティショナEPN」の説明

この項では次について説明します:

- 25.1.2.1.1項「EventPartitionerの実装」

- 25.1.2.1.2項「EventPartitionerの初期化」

- 25.1.2.1.3項「EventPartitionerスレッド」

- 25.1.2.1.4項「EventPartitionerの制限事項」

詳細は、25.2.1項「チャネルEventPartitionerでのスケーラビリティの構成」を参照してください。

25.1.2.1.1 EventPartitionerの実装

Oracle Event Processingでは、チャネルで使用するよう構成可能な、デフォルトのイベント・プロパティ・ベースのEventPartitionerを提供しています。

デフォルトのEventPartitionerを使用するようチャネルを構成する場合、チャネルがイベントをパーティション化するイベント・プロパティ名を指定します。デフォルトのEventPartitionerでは、イベント・プロパティ値のObject.hashCode()を内部ハッシュ関数への入力として使用し、ハッシュ・キーを計算します。hashkey % number-of-listenersはイベントを受信するリスナーの計算に使用されます。このアルゴリズムは、新規アイテムを配置するバケットを計算する、HashMapで使用するものと同じアルゴリズムに基づいています。実際には、同じイベント・プロパティ値のイベントは、同じリスナーに送信されます。

注意:

デフォルトのイベント・プロパティ・ベースのEventPartitionerでは、ラウンド・ロビン方式でディスパッチされません。

オプションで、チャネルのリスナーへのイベントのディスパッチ方法をカスタマイズするのではなく、独自のイベント・パーティショナ・インスタンスを作成し、チャネルで使用するよう構成することができます。

詳細は、次を参照してください:

- 25.2.1.1項「デフォルト・チャネルEventPartitionerでのスケーラビリティの構成方法」

- 25.2.1.2項「カスタム・チャネルEventPartitionerでのスケーラビリティの構成方法」

25.1.2.1.2 EventPartitionerの初期化

デフォルトでは、Oracle Event Processingサーバーは、デプロイメントの際に各イベント・パーティショナを初期化し、EventPartitionerメソッドactivateConfigurationが ActivatableBean.afterConfigurationActiveの前、およびEventPartitionerクラスのpartitionメソッドの起動前に起動することによる再デプロイメントの際にはイベント・パーティショナを再初期化します。

25.1.2.1.3 EventPartitionerスレッド

表25-1では、イベント・パーティショナ・チャネルで使用可能なスレッド・オプションが一覧表示されています。

表25-1 イベント・パーティショナ・チャネルのスレッド・オプション

スレッド割当先

説明

使用するタイミング

チャネル

- チャネルmax-threadsはリスナー数に設定されます。

外部メッセージ形式の内部イベント形式への変換が容易である場合、通常は適用されます。

マルチスレッドをチャネル粒度で制御します。ボリュームが異なるため、一部のチャネルでは他のチャネルより必要なスレッド数が多くなる場合があります。

アダプタ

- チャネルmax-threadsは0に設定されます。

- パーティション・リスナーごとに1スレッド以上のマルチスレッド・アダプタを導入します。

外部メッセージ形式の内部イベント形式への変換が難しい場合、通常は推奨されます。

この手法は、アダプタがマルチスレッドであり、インバウンド・イベント・レートが高く、複数スレッドをインバウンド処理のスケールに使用できない場合にアダプタがボトルネックになる場合に最適です。

注意:

どちらの手法でも、イベント順序は保証されません。複数スレッドは随時使用されます。

25.1.2.1.4 EventPartitionerの制限事項

イベント・パーティショナを使用するようにチャネルを構成する場合、次の制限事項を考慮します。

- イベント・パーティショナでチャネルを構成した場合、バッチ処理はサポートされていません。
詳細は、10.1.6項「バッチ処理チャネル」を参照してください。

25.1.2.2 ActiveActiveGroupBean

com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanを使用して、ActiveActiveGroupBeanで作成された通知グループによって、Oracle Event Processingアプリケーションの受信JMSストリームをパーティション化できます。

例25-1で示すように、ActiveActiveGroupBeanをEPNアセンブリ・ファイルに追加します。

例25-1 ActiveActiveGroupBeanのbean要素

<bean id="clusterAdapter" class="com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean">
</bean>

デフォルトでは、ActiveActiveGroupBeanは次の名前の通知グループを作成します。

ActiveActiveGroupBean_X

Xは文字列です。

実行時に、ActiveActiveGroupBeanは、Oracle Event Processingサーバーに定義された既存のグループをスキャンし、次のデフォルトのパターン一致を適用します。

ActiveActiveGroupBean_\\w+

一致が見つかったら、その名前の通知グループを作成します。

オプションで、25.2.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」の説明に従って、独自のクラスタ・グループ・パターン一致を定義できます。

この項では次について説明します:

- 25.1.2.2.1項「高可用性なしのActiveActiveGroupBeanを使用したOracle Event Processingアプリケーションのスケーラビリティ」

- 25.1.2.2.2項「高可用性のあるActiveActiveGroupBeanを使用したOracle Event Processingアプリケーションのスケーラビリティ」

詳細は、次を参照してください:

- 24.1.1.2項「デプロイメント・グループおよび通知グループ」

- 25.2.2項「ActiveActiveGroupBeanによるスケーラビリティの構成」

25.1.2.2.1 高可用性なしのActiveActiveGroupBeanを使用したOracle Event Processingアプリケーションのスケーラビリティ

ActiveActiveGroupBeanを使用して、高可用性に対して構成されていないOracle Event Processingアプリケーション内のセレクタによって、受信JMSイベント・ストリームをパーティション化できます。

図25-2で示すように、マルチサーバー・ドメインを考慮してください。

図25-2 高可用性なしのOracle Event Processing ActiveActiveGroupBean

「図25-2 高可用性なしのOracle Event Processing ActiveActiveGroupBean」の説明

このスケーラビリティ・シナリオでは、各サーバー(ホスト1のActiveActiveGroupBean_group1、ホスト2のActiveActiveGroupBean_group2など)のOracle Event Processingサーバーconfig.xmlでクラスタ・グループを定義し、Oracle Event ProcessingアプリケーションにActiveActiveGroupBeanのインスタンスを追加して、これらのクラスタ・グループに基づく通知グループを定義します。

各通知グループは、異なるJMSセレクタにバインドされています。Oracle Event Processingアプリケーションにあるコンポーネント構成ファイルの構成は、例25-2で示すように、jms-adapterの構成と同じです。

例25-2 共通jms-adapterセレクタの定義

<jms-adapter>
<message-selector>${CONDITION}</message-selector>
<bindings>
<group-binding group-id="ActiveActiveGroupBean_group1">
<param id="CONDITION">acctid > 400</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group2">
<param id="CONDITION">acctid BETWEEN 301 AND 400</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group3">
<param id="CONDITION">acctid BETWEEN 201 AND 300</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group4">
<param id="CONDITION">acctid <= 200</param>
</group-binding>
</bindings>
</jms-adapter>

実行時に、各Oracle Event Processingサーバーにある各Oracle Event Processingアプリケーション・インスタンスのActiveActiveGroupBeanインスタンスは、ActiveActiveGroupBean_クラスタ・グループを検索し、それに基づいて通信グループを作成します。その後、Oracle Event Processingアプリケーション自体は、その通知グループと一致するgroup-idに対応するmessage-selectorに構成します。これにより、App1の各インスタンスが同時にメッセージの合計数のサブセットを処理するようにJMSトピックはパーティション化されます。

注意:

App1の各インスタンスでは、25.1.2.1項「EventPartitioner」の説明のとおり、イベント・パーティショナ・チャネルを構成して、並列処理をさらに増加することができます。

詳細は、25.2.2.1項「Oracle Event Processing高可用性なしのJMSアプリケーションでスケーラビリティを構成する方法」を参照してください。

25.1.2.2.2 高可用性のあるActiveActiveGroupBeanを使用したOracle Event Processingアプリケーションのスケーラビリティ

セレクタによる受信JMSイベント・ストリームのパーティション化に加えて、ActiveActiveGroupBeanを使用して、単一の高可用性のある単位として2つ以上のOracle Event Processingサーバーを構成できます。

図25-3で示すように、Oracle Event Processing高可用性アプリケーションがデプロイされたマルチサーバー・ドメインを考慮してください。

図25-3 高可用性のあるOracle Event Processing ActiveActiveGroupBean

「図25-3 高可用性のあるOracle Event Processing ActiveActiveGroupBean」の説明

このシナリオでは、ホスト1およびホスト2に同じActiveActiveGroupBean_クラスタ・グループ(ActiveActiveGroupBean_group1)を作成し、ホスト3およびホスト4に同じActiveActiveGroupBean_クラスタ・グループ(ActiveActiveGroupBean_group2)を作成します。

実行時に、各Oracle Event Processingサーバーにある各Oracle Event Processingアプリケーション・インスタンスのActiveActiveGroupBeanインスタンスは、ActiveActiveGroupBean_クラスタ・グループを検索し、それに基づいて通信グループを作成します。ホスト1およびホスト2両方が1つの通知グループ(ActiveActiveGroupBean_group1)に属し、ホスト3およびホスト4両方が別の通信グループ(ActiveActiveGroupBean_group2)に属します。

各Oracle Event Processingアプリケーション自体は、通知グループと一致するgroup-idに対応するmessage-selectorに構成します。これにより、App1の各インスタンスが同時にメッセージの合計数のサブセットを処理するようにJMSトピックはパーティション化されます。

2つ以上のOracle Event Processingサーバーが同じ通知グループに属する場合、ActiveActiveGroupBeanによって、各通信グループのプライマリ・サーバー-のみがイベントを出力するようにします。特定の通知グループ内でプライマリ・サーバーが停止した場合、Oracle Event Processing高可用性フェイルオーバーが発生し、その通知グループのいずれかのセカンダリ・サーバーが新しいプライマリ・サーバーとして宣言され、構成したOracle Event Processing高可用性のサービス品質に応じてイベントの出力を再開します。

注意:

App1の各インスタンスでは、25.1.2.1項「EventPartitioner」の説明のとおり、イベント・パーティショナ・チャネルを構成して、並列処理をさらに増加することができます。

詳細は、25.2.2.2項「Oracle Event Processing高可用性のあるJMSアプリケーションでスケーラビリティを構成する方法」を参照してください。

25.2 スケーラビリティの構成

この項では、イベントのパーティション化の設定に関する情報など、Oracle Event Processingアプリケーションのスケーラビリティの構成方法について説明します。

この節の内容は以下のとおりです。

- 25.2.1項「チャネルEventPartitionerでのスケーラビリティの構成」

- 25.2.2項「ActiveActiveGroupBeanによるスケーラビリティの構成」

25.2.1 チャネルEventPartitionerでのスケーラビリティの構成

この項では、図25-4に示すように、Oracle Event Processingイベント・パーティショナでチャネルを構成する次の方法について説明します。

- 25.2.1.1項「デフォルト・チャネルEventPartitionerでのスケーラビリティの構成方法」

- 25.2.1.2項「カスタム・チャネルEventPartitionerでのスケーラビリティの構成方法」

図25-4 EventPartitioner EPN

「図25-4 EventPartitioner EPN」の説明

この例では、inboundアダプタから、例25-3で定義されているタイプPriceEventのイベントが送信されると想定します。

例25-3 イベント・タイプPriceEventの定義

<wlevs:event-type-repository>
<wlevs:event-type type-name="PriceEvent">
<wlevs:properties>
<wlevs:property name="symbol" type="char" />
<wlevs:property name="price" type="long" />
</wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

詳細は、25.1.2.1項「EventPartitioner」を参照してください。

25.2.1.1 デフォルト・チャネルEventPartitionerでのスケーラビリティの構成方法

デフォルト・イベントのプロパティ・ベースのイベント・パーティショナを使用するようチャネルを構成できます。着信イベントが到着するたびに、チャネルはリスナーを選択し、各リスナーに各イベントをブロードキャストするかわりに、そのリスナーにイベントをディスパッチします。

オプションで、独自のEventPartitionerクラスを実装し、25.2.1.2項「カスタム・チャネルEventPartitionerでのスケーラビリティの構成方法」に示すとおり、チャネルのリスナーへのイベントのディスパッチ方法をカスタマイズできます。

デフォルト・チャネルEventPartitionerでスケーラビリティを構成する手順:

1. EPNにチャネルを追加します。
図25-4では、チャネルはEventPartitionerChannelです。

詳細は、第10章「チャネルを使用したEPNステージの接続」を参照してください。

2. チャネルをアップストリーム・アダプタに接続します。
図25-4では、アップストリーム・アダプタはinboundです。

詳細は、7.4.2項「ノードの接続」を参照してください。

3. チャネルを複数のリスナーに接続します。
図25-4では、チャネルはOracle CQLプロセッサprocessor1、processor2およびprocessor3に接続されます。

詳細は、7.4.2項「ノードの接続」を参照してください。

4. partitionByEventPropertyのインスタンス・プロパティをチャネル要素に追加するようにEPNアセンブリ・ファイルを編集します。
このinstance-propertyのvalueはチャネルがイベントをパーティション化するイベント・プロパティの名前です。

この例では、チャネルはイベント・プロパティsymbol別にイベントをパーティション化します。

...
<wlevs:channel id="EventPartitionerChannel" event-type="PriceEvent">
<wlevs:instance-property name="partitionByEventProperty" value="symbol" />
<wlevs:listener ref="processor1" />
<wlevs:listener ref="processor2" />
<wlevs:listener ref="processor3" />
<wlevs:source ref="inbound" />
</wlevs:channel>
...

詳細は、25.1.2.1.1項「EventPartitionerの実装」を参照してください。

5. 25.1.2.1.3項「EventPartitionerスレッド」の説明のとおり、Oracle Event Processingによるスレッドの割当方法を決定します。

1. チャネルでスレッドを割り当てる場合:

- EPNアセンブリ・ファイルを編集し、max-threadsをリスナー数に設定するようチャネルを構成します。

...
<wlevs:channel id="EventPartitionerChannel" event-type="PriceEvent"        max-threads="3" >
<wlevs:instance-property name="eventPartitioner" value="true" />
<wlevs:listener ref="processor1" />
<wlevs:listener ref="processor2" />
<wlevs:listener ref="processor3" />
<wlevs:source ref="inbound" />
</wlevs:channel>
...

2. アップストリーム・アダプタでスレッドを割り当てる場合:

- EPNアセンブリ・ファイルを編集し、max-threadsを0に設定するようチャネルを構成します。

...
<wlevs:channel id="EventPartitionerChannel" event-type="PriceEvent"         max-threads="0" >
<wlevs:instance-property name="eventPartitioner" value="true" />
<wlevs:listener ref="processor1" />
<wlevs:listener ref="processor2" />
<wlevs:listener ref="processor3" />
<wlevs:source ref="inbound" />
</wlevs:channel>
...

- Oracle Event Processingサーバーconfig.xmlファイルを編集し、work-manager要素を追加します。
このワーク・マネージャが(他のアダプタおよびJettyなど)複数のコンポーネントで共有されている場合、min-threads-constraintおよびmax-threads-constraint要素をそれぞれリスナー数より大きい値に設定します。

このワーク・マネージャが複数のコンポーネントで共有されていない場合(つまり、この構成のアップストリーム・アダプタ専用の場合)、min-threads-constraintおよび max-threads-constraint要素をリスナー数と同じ値に設定します。

...
<work-manager>
<name>adapterWorkManager</name>
<min-threads-constraint>3</min-threads-constraint>
<max-threads-constraint>3</max-threads-constraint>
</work-manager>
...

詳細は、F.45項「work-manager」を参照してください。

- コンポーネント構成ファイルを編集し、このwork-managerでアップストリーム・アダプタを構成します。

...
<adapter>
<name>inbound</name>
<work-manager-name>adapterWorkManager</work-manager-name>
...
</adapter>
...

6. アプリケーションをアセンブルし、デプロイします。
詳細は、第23章「Oracle Event Processingアプリケーションのアセンブルとデプロイ」を参照してください。

実行時は、チャネルではデフォルト・イベント・プロパティ・ベースのEventPartitionerが使用され、それぞれの着信イベントのリスナーへのディスパッチ方法が決定されます。

25.2.1.2 カスタム・チャネルEventPartitionerでのスケーラビリティの構成方法

独自のEventPartitionerクラスを実装すると、チャネルによるリスナーへのイベントのディスパッチ方法をカスタマイズできます。

25.2.1.1項「デフォルト・チャネルEventPartitionerでのスケーラビリティの構成方法」の説明のとおり、オプションで、デフォルトのイベント・プロパティ・ベースのEventPartitionerを使用できます。

カスタム・チャネルEventPartitionerでスケーラビリティを構成する手順:

1. Oracle Event Processing IDE for Eclipseを使用して、Oracle Event Processingプロジェクトを開きます。
詳細は、5.2項「Oracle Event Processingプロジェクトの作成」を参照してください。

2. MANIFEST.MFを編集し、パッケージcom.bea.wlevs.channelをインポートします。
詳細は、5.7.5項「パッケージのインポート方法」を参照してください。

3. プロジェクトのsrcフォルダを右クリックし、「新規」>「クラス」を選択します。
図25-5に示すように、「新規Javaクラス」ダイアログが表示されます。

図25-5 「新規Javaクラス」ダイアログ

「図25-5 「新規Javaクラス」ダイアログ」の説明

4. 表25-2に示すように、「新規Javaクラス」ダイアログを構成します。

表25-2 EventPartitionerの「新規Javaクラス」オプション

オプション

説明

Package

クラスのパッケージ名を入力します。

Name

クラス名を入力します。

Interfaces

「追加」をクリックして実装されているインタフェースの選択ダイアログでcom.bea.wlevs.channel.EventPartitionerインタフェースを特定し、これを「一致するアイテム」リストで選択して「OK」をクリックします。

5. 「終了」をクリックします。
例25-4に示すように、新規EventPartitionerクラスが作成されます。

例25-4 EventPartitionerクラス

package com.acme;

import com.bea.wlevs.channel.EventPartitioner;
import com.bea.wlevs.ede.api.EventProcessingException;
import com.bea.wlevs.ede.api.EventType;

public class MyEventPartitioner implements EventPartitioner {

@Override
public void activateConfiguration(int arg0, EventType arg1) {
// TODO Auto-generated method stub

}

@Override
public int partition(Object arg0) throws EventProcessingException {
// TODO Auto-generated method stub
return 0;
}

}

6. 例25-5に示すように、EventPartitionerの実装を完了します。

例25-5 EventPartitionerクラスの実装

package com.acme;

import com.bea.wlevs.channel.EventPartitioner;
import com.bea.wlevs.ede.api.EventProcessingException;
import com.bea.wlevs.ede.api.EventType;

public class MyEventPartitioner implements EventPartitioner {

private final EventType eventType;
private int numberOfPartitions;

@Override
public void activateConfiguration(int numberOfPartitions, EventType eventType) {
this.numberOfPartitions = numberOfPartitions;
this.eventType = eventType;
}

@Override
public int partition(Object event) throws EventProcessingException {
int dispatchToListener = 0;
... // Your implementation.
return dispatchToListener;
}

}

activateConfigurationメソッドは、ActivatableBean.afterConfigurationActiveの前、およびEventPartitionerクラスのpartitionメソッドの起動前にOracle Event Processingサーバーが起動するコールバックです。

このEventPartitionerをチャネルと関連付ける場合、チャネルがイベントを受信するたびに、EventPartitionerクラスのpartitionメソッドが起動されます。

partitionメソッドは、チャネルによるイベントのディスパッチ先であるリスナーの索引を返す必要があります。索引は0からnumberOfPartitions - 1の間のintである必要があります。

7. EPNにチャネルを追加します。
図25-4では、チャネルはEventPartitionerChannelです。

詳細は、第10章「チャネルを使用したEPNステージの接続」を参照してください。

8. チャネルをアップストリーム・アダプタに接続します。
図25-4では、アップストリーム・アダプタはinboundです。

詳細は、7.4.2項「ノードの接続」を参照してください。

9. チャネルを複数のリスナーに接続します。
図25-4では、チャネルはOracle CQLプロセッサprocessor1、processor2およびprocessor3に接続されます。

チャネルでロード・バランシングを実行する場合、各リスナーは同じである必要があります。

詳細は、次を参照してください:

- 7.4.2項「ノードの接続」

10. eventPartitionerのインスタンス・プロパティをチャネル要素に追加するようにEPNアセンブリ・ファイルを編集します。
このinstance-propertyのvalueはチャネルがイベントをパーティション化するためのEventPartitionerインスタンスの完全修飾クラス名です。

このクラスはOracle Event Processingアプリケーション・クラス・パスにある必要があります。

この例では、チャネルはEventPartitionerインスタンスcom.acme.MyEventPartitionerを使用してイベントをパーティション化します。

...
<wlevs:channel id="EventPartitionerChannel" event-type="PriceEvent" max-threads="0" >
<wlevs:instance-property name="eventPartitioner"             value="com.acme.MyEventPartitioner" />
<wlevs:listener ref="filterFanoutProcessor1" />
<wlevs:listener ref="filterFanoutProcessor2" />
<wlevs:listener ref="filterFanoutProcessor3" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>
...

11. 25.1.2.1.3項「EventPartitionerスレッド」の説明のとおり、Oracle Event Processingによるスレッドの割当方法を決定します。

1. チャネルでスレッドを割り当てる場合:

- EPNアセンブリ・ファイルを編集し、max-threadsをリスナー数に設定するようチャネルを構成します。

...
<wlevs:channel id="EventPartitionerChannel" event-type="PriceEvent"         max-threads="3" >
<wlevs:instance-property name="eventPartitioner" value="true" />
<wlevs:listener ref="processor1" />
<wlevs:listener ref="processor2" />
<wlevs:listener ref="processor3" />
<wlevs:source ref="inbound" />
</wlevs:channel>
...

2. アップストリーム・アダプタでスレッドを割り当てる場合:

- EPNアセンブリ・ファイルを編集し、max-threadsを0に設定するようチャネルを構成します。

...
<wlevs:channel id="EventPartitionerChannel" event-type="PriceEvent"         max-threads="0" >
<wlevs:instance-property name="eventPartitioner" value="true" />
<wlevs:listener ref="processor1" />
<wlevs:listener ref="processor2" />
<wlevs:listener ref="processor3" />
<wlevs:source ref="inbound" />
</wlevs:channel>
...

- Oracle Event Processingサーバーconfig.xmlファイルを編集し、work-manager要素を追加します。
このワーク・マネージャが(他のアダプタおよびJettyなど)複数のコンポーネントで共有されている場合、min-threads-constraintおよびmax-threads-constraint要素をそれぞれリスナー数より大きい値に設定します。

このワーク・マネージャが複数のコンポーネントで共有されていない場合(つまり、この構成のアップストリーム・アダプタ専用の場合)、min-threads-constraintおよび max-threads-constraint要素をリスナー数と同じ値に設定します。

...
<work-manager>
<name>adapterWorkManager</name>
<min-threads-constraint>3</min-threads-constraint>
<max-threads-constraint>3</max-threads-constraint>
</work-manager>
...

詳細は、F.45項「work-manager」を参照してください。

- コンポーネント構成ファイルを編集し、このwork-managerでアップストリーム・アダプタを構成します。

...
<adapter>
<name>inbound</name>
<work-manager-name>adapterWorkManager</work-manager-name>
...
</adapter>
...

12. アプリケーションをアセンブルし、デプロイします。
詳細は、第23章「Oracle Event Processingアプリケーションのアセンブルとデプロイ」を参照してください。

実行時は、チャネルではEventPartitionerが使用され、それぞれの着信イベントのリスナーへのディスパッチ方法が決定されます。

25.2.2 ActiveActiveGroupBeanでのスケーラビリティの構成

この項では、セレクタで受信JMSイベント・ストリームをパーティションするためにActiveActiveGroupBeanを使用するようにOracle Event Processingアプリケーションを構成する方法について説明します。次の項が含まれます。

- 25.2.2.1項「Oracle Event Processing高可用性なしのJMSアプリケーションでスケーラビリティを構成する方法」

- 25.2.2.2項「Oracle Event Processing高可用性のあるJMSアプリケーションでスケーラビリティを構成する方法」

- 25.2.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」

詳細は、25.1.2.2項「ActiveActiveGroupBean」を参照してください。

25.2.2.1 Oracle Event Processing高可用性なしのJMSアプリケーションでスケーラビリティを構成する方法

Oracle Event Processing高可用性を使用しないアプリケーションの場合、マルチサーバー・ドメインでセレクタを使用して受信JMSイベント・ストリームをパーティションするためにActiveActiveGroupBeanを使用できます。

Oracle Event Processing高可用性アプリケーションでActiveActiveGroupBeanを使用する方法は、25.2.2.2項「Oracle Event Processing高可用性を使用してJMSアプリケーションでスケーラビリティを構成する方法」を参照してください。

詳細は、25.1.2.2.1項「高可用性なしのActiveActiveGroupBeanを使用したOracle Event Processingアプリケーションのスケーラビリティ」を参照してください。

Oracle Event Processing高可用性なしのJMSアプリケーションでスケーラビリティを構成する手順:

1. マルチサーバー・ドメインを作成します。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のマルチサーバー・ドメインの概要に関する項を参照してください。

この例では、デプロイメント・グループの名前は、MyDeploymentGroupです。

2. 適切なActiveActiveGroupBean通知グループをcluster要素のgroups子要素に追加するように各Oracle Event ProcessingサーバーのOracle Event Processingサーバー構成ファイルを構成します。
Oracle Event Processingサーバー構成ファイルのconfig.xmlは、DOMAIN_DIR/servername/configディレクトリにあります。DOMAIN_DIRは、メイン・ドメイン・ディレクトリを示し、servernameは、特定のサーバー・インスタンスを示します。

たとえば、表25-4では、ocep-server-1、ocep-server-2、ocep-server-3およびocep-server-4のOracle Event Processingサーバーのcluster要素を示します。デプロイメント・グループはMyDeploymentGroupであり、通知グループはデフォルトのActiveActiveGroupBean通知グループ・ネーミングを使用して定義します。

オプションで、25.2.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」"に示すグループのネーミング・ルールを指定することができます。

表25-3 Oracle Event Processingサーバー構成ファイル・グループ要素構成

パーティション

cluster要素

ocep-server-1

<cluster>
<server-name>ocep-server-1</server-name>
...
<enabled>coherence</enabled>
...
<groups>MyDeploymentGroup, ActiveActiveGroupBean_group1</groups>
</cluster>

ocep-server-2

<cluster>
<server-name>ocep-server-2</server-name>
...
<enabled>coherence</enabled>
...
<groups>MyDeploymentGroup, ActiveActiveGroupBean_group2</groups>
</cluster>

ocep-server-3

<cluster>
<server-name>ocep-server-3</server-name>
...
<enabled>coherence</enabled>
...
<groups>MyDeploymentGroup, ActiveActiveGroupBean_group3</groups>
</cluster>

ocep-server-4

<cluster>
<server-name>ocep-server-4</server-name>
...
<enabled>coherence</enabled>
...
<groups>MyDeploymentGroup, ActiveActiveGroupBean_group4</groups>
</cluster>

3. Oracle Event Processingアプリケーションを作成します。

4. EPNアセンブリ・ファイルを構成し、例25-10に示すようにActiveActiveGroupBean要素を追加します。

例25-6 ActiveActiveGroupBeanのbean要素

<bean id="clusterAdapter" class="com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean">
</bean>

5. JMSインバウンド・アダプタのjms-adapter要素にパラメータ化されたmessage-selectorを定義します。
JMSインバウンド・アダプタのjms-adapter要素にgroup-binding子要素を追加するために、コンポーネント構成ファイルを編集します。

例25-12示すように、各可能JMSメッセージ・セレクタ値に対して1つのgroup-binding要素を追加します。

例25-7 ocep-server-1用のjms-adapterセレクタ定義

<jms-adapter>
<name>JMSInboundAdapter</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic1</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>true</session-transacted>
<message-selector>${CONDITION}</message-selector>
<bindings>
<group-binding group-id="ActiveActiveGroupBean_group1">
<param id="CONDITION">acctid > 400</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group2">
<param id="CONDITION">acctid BETWEEN 301 AND 400</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group3">
<param id="CONDITION">acctid BETWEEN 201 AND 300</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group4">
<param id="CONDITION">acctid <= 200</param>
</group-binding>
</bindings>
</jms-adapter>

この構成では、ActiveActiveGroupBean_group1を含むcluster要素、groups子要素でアプリケーションをOracle Event Processingサーバーにデプロイすると、CONDITIONパラメータがacctid > 400と定義され、acctidプロパティが400以上であるイベントがアプリケーションにより処理されます。

注意:

各インバウンドJMSアダプタは異なるトピックをリスニングする必要があります。

詳細は、第11章「Java Message Serviceの統合」を参照してください。

6. マルチサーバー・ドメインのデプロイメント・グループにアプリケーションをデプロイします。
詳細は、第23章「Oracle Event Processingアプリケーションのアセンブルとデプロイ」を参照してください。

実行時に、各Oracle Event ProcessingサーバーがActiveActiveGroupBean通知グループに対するmessage-selectorにアプリケーションのインスタンスを構成します。これにより、アプリケーションの各インスタンスがメッセージ総数のサブセットを並行して処理するようにJMSトピックがパーティションされます。

25.2.2.2 Oracle Event Processing高可用性のあるJMSアプリケーションでスケーラビリティを構成する方法

ActiveActiveGroupBeanを使用して、Oracle Event Processing高可用性のマルチサーバー・ドメインで受信JMSイベント・ストリームをパーティションできます。

この手順では、図25-6に示すサンプルEPN、例25-8に示す対応するEPNアセンブリ・ファイルおよび例25-9に示す対応するコンポーネント構成ファイルを含む24.2.1.4項「JMSによる正確なリカバリの構成方法」のサンプル・アプリケーションを使用します。

図25-6 JMSのEPNによる正確なリカバリ

「図25-6 JMSのEPNによる正確なリカバリ」の説明

例25-8 JMS EPNアセンブリ・ファイルを使用して精度の高いリカバリ

<?xml version="1.0" encoding="UTF-8"?>
<beans ... >

<wlevs:event-type-repository>
<wlevs:event-type type-name="StockTick">
<wlevs:properties>
<wlevs:property name="lastPrice" type="double" />
<wlevs:property name="symbol" type="char" />
</wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

<wlevs:adapter id="JMSInboundAdapter" provider="jms-inbound">
<wlevs:listener ref="myHaInputAdapter"/>
</wlevs:adapter>

<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="keyProperties" value="sequenceNo"/>
<wlevs:instance-property name="timeProperty" value="inboundTime"/>
</wlevs:adapter>

<wlevs:channel id="channel1" event-type="StockTick">
<wlevs:listener ref="processor1" />
<wlevs:source ref="myHaInputAdapter"/>
<wlevs:application-timestamped>
<wlevs:expression>inboundTime</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>

<wlevs:processor id="processor1">
<wlevs:listener ref="channel2" />
</wlevs:processor>

<wlevs:channel id="channel2" event-type="StockTick">
<wlevs:listener ref="myHaCorrelatingAdapter" />
</wlevs:channel>

<wlevs:adapter id="myHaCorrelatingAdapter" provider="ha-correlating" >
<wlevs:instance-property name="correlatedSource" ref="clusterCorrelatingOutstream"/>
<wlevs:instance-property name="failOverDelay" value="2000"/>
<wlevs:listener ref="JMSOutboundAdapter"/>
</wlevs:adapter>

<wlevs:adapter id="JMSOutboundAdapter" provider="jms-outbound">
</wlevs:adapter>

<wlevs:adapter id="JMSInboundAdapter2" provider="jms-inbound">
</wlevs:adapter>

<wlevs:channel id="clusterCorrelatingOutstream" event-type="StockTick" advertise="true">
<wlevs:source ref="JMSInboundAdapter2"/>
</wlevs:channel>
</beans>

例25-9 JMSコンポーネント構成アセンブリ・ファイルを使用して精度の高いリカバリ

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
<processor>
<name>processor1</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from channel1 [Now] ]]>
</query>
</rules>
</processor>
<jms-adapter>
<name>JMSInboundAdapter</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<session-transacted>true</session-transacted>
...
</jms-adapter>
<jms-adapter>
<name>JMSInboundAdapter2</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic2</destination-jndi-name>
<session-transacted>true</session-transacted>
...
</jms-adapter>
<jms-adapter>
<name>JMSOutboundAdapter</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic2</destination-jndi-name>
<session-transacted>true</session-transacted>
...
</jms-adapter>
</wlevs:config>

図25-7に示すように、この手順実行の結果、Oracle Event Processing高可用性構成が作成されます。

図25-7 高可用性のあるOracle Event Processing ActiveActiveGroupBean

「図25-7 高可用性のあるOracle Event Processing ActiveActiveGroupBean」の説明

詳細は、25.1.2.2.2項「高可用性のあるActiveActiveGroupBeanを使用したOracle Event Processingアプリケーションのスケーラビリティ」を参照してください。

Oracle Event Processing高可用性のあるJMSアプリケーションでスケーラビリティを構成する手順:

1. マルチサーバー・ドメインを作成します。
詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のマルチサーバー・ドメインの概要に関する項を参照してください。

この例では、デプロイメント・グループの名前は、MyDeploymentGroupです。

2. 適切なActiveActiveGroupBean通知グループをcluster要素のgroups子要素に追加するように各Oracle Event ProcessingサーバーのOracle Event Processingサーバー構成ファイルを構成します。
Oracle Event Processingサーバー構成ファイルのconfig.xmlは、DOMAIN_DIR/servername/configディレクトリにあります。DOMAIN_DIRは、メイン・ドメイン・ディレクトリを示し、servernameは、特定のサーバー・インスタンスを示します。

たとえば、表25-4では、ocep-server-1、ocep-server-2、ocep-server-3およびocep-server-4のOracle Event Processingサーバーのcluster要素を示します。デプロイメント・グループはMyDeploymentGroupであり、通知グループはデフォルトのActiveActiveGroupBean通知グループ・ネーミングを使用して定義します。

ocep-server-1とocep-server-2は同一の通知グループ名前(ActiveActiveGroupBean_group1)を使用し、ocep-server-3とocep-server-4は同一の通知グループ名前(ActiveActiveGroupBean_group2)を使用します。

オプションで、25.2.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」"に示すグループのネーミング・ルールを指定することができます。

表25-4 Oracle Event Processingサーバー構成ファイル・グループ要素構成

パーティション

cluster要素

ocep-server-1

<cluster>
<server-name>ocep-server-1</server-name>
...
<enabled>coherence</enabled>
...
<groups>MyDeploymentGroup, ActiveActiveGroupBean_group1</groups>
</cluster>

ocep-server-2

<cluster>
<server-name>ocep-server-2</server-name>
...
<enabled>coherence</enabled>
...
<groups>MyDeploymentGroup, ActiveActiveGroupBean_group1</groups>
</cluster>

ocep-server-3

<cluster>
<server-name>ocep-server-3</server-name>
...
<enabled>coherence</enabled>
...
<groups>MyDeploymentGroup, ActiveActiveGroupBean_group2</groups>
</cluster>

ocep-server-4

<cluster>
<server-name>ocep-server-4</server-name>
...
<enabled>coherence</enabled>
...
<groups>MyDeploymentGroup, ActiveActiveGroupBean_group2</groups>
</cluster>

3. Oracle Event Processing高可用性アプリケーションを作成します。
詳細は、第24章「高可用性のためのアプリケーションの開発」を参照してください。

4. EPNアセンブリ・ファイルを構成し、例25-10に示すようにActiveActiveGroupBean要素を追加します。

例25-10 ActiveActiveGroupBeanのbean要素

<bean id="clusterAdapter" class="com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean">
</bean>

5. コンポーネント構成ファイルを編集し、例25-11に示すように、インバウンドJMSアダプタ用のjms-adapter要素を構成します。

- 各インバウンドJMSアダプタは異なるトピックをリスニングする必要があります。

- session-transactedをtrueに設定します。

例25-11 インバウンドJMSアダプタ用のjms-adapter要素

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
...
<jms-adapter>
<name>JMSInboundAdapter</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<session-transacted>true</session-transacted>
...    </jms-adapter>
<jms-adapter>
<name>JMSInboundAdapter2</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic2</destination-jndi-name>
<session-transacted>true</session-transacted>
...    </jms-adapter>
</wlevs:config>

詳細は、第11章「Java Message Serviceの統合」を参照してください。

6. 各JMSインバウンド・アダプタのjms-adapter要素にパラメータ化されたmessage-selectorを定義します。
JMSインバウンド・アダプタのjms-adapter要素にgroup-binding子要素を追加するために、コンポーネント構成ファイルを編集します。

例25-12示すように、各可能JMS message-selector値に対して1つのgroup-binding要素を追加します。

例25-12 ocep-server-1用のjms-adapterセレクタ定義

<jms-adapter>
<name>JMSInboundAdapter</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<session-transacted>true</session-transacted>
<message-selector>${CONDITION}</message-selector>
<bindings>
<group-binding group-id="ActiveActiveGroupBean_group1">
<param id="CONDITION">acctid <= 1000</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group2">
<param id="CONDITION">acctid > 1000</param>
</group-binding>
</bindings>
</jms-adapter>

この構成では、ActiveActiveGroupBean_group1を含むcluster要素、groups子要素を持つアプリケーションをOracle Event Processingサーバーにデプロイすると、CONDITIONパラメータがacctid <= 1000と定義され、acctidプロパティが1000以下であるイベントがアプリケーションにより処理されます。同様に、ActiveActiveGroupBean_group2を含むcluster要素、groups子要素を持つアプリケーションをOracle Event Processingサーバーにデプロイすると、CONDITIONパラメータがacctid > 1000と定義され、acctidプロパティが1000以上であるイベントがアプリケーションにより処理されます。

7. コンポーネント構成ファイルを編集し、例25-13に示すように、アウトバウンドJMSアダプタ用のjms-adapter要素を構成します。

- 対応するインバウンド・アダプタ(この例では、JMSInboundAdapter2: ./Topic2)と同一トピックでアウトバウンドJMSアダプタを構成します。

- session-transactedをtrueに設定します。

例25-13 アウトバウンドJMSアダプタ用のjms-adapter要素

<?xml version="1.0" encoding="UTF-8"?>
<wlevs:config
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
xmlns:ha="http://www.oracle.com/ns/cep/config/cluster">
...
<jms-adapter>
<name>JMSInboundAdapter</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<session-transacted>true</session-transacted>
...    </jms-adapter>
<jms-adapter>
<name>JMSInboundAdapter2</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic2</destination-jndi-name>
<session-transacted>true</session-transacted>
...    </jms-adapter>
<jms-adapter>
<name>JMSOutboundAdapter</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic2</destination-jndi-name>
<session-transacted>true</session-transacted>
...    </jms-adapter>
</wlevs:config>

詳細は、第11章「Java Message Serviceの統合」を参照してください。

8. マルチサーバー・ドメインのデプロイメント・グループにアプリケーションをデプロイします。
詳細は、第23章「Oracle Event Processingアプリケーションのアセンブルとデプロイ」を参照してください。

実行時に、各Oracle Event ProcessingサーバーがActiveActiveGroupBean通知グループに対するmessage-selectorにアプリケーションのインスタンスを構成します。これにより、アプリケーションの各インスタンスがメッセージ総数のサブセットを並行して処理するようにJMSトピックがパーティションされます。

ActiveActiveGroupBeanグループの有効なOracle Event Processingサーバーが停止すると、そのActiveActiveGroupBeanグループのスタンバイOracle Event Processingサーバーに対してOracle Event ProcessingサーバーがOracle Event Processing高可用性フェイルオーバーを実行します。

25.2.2.3 ActiveActiveGroupBeanグループ・パターン一致の構成方法

デフォルトでは、ActiveActiveGroupBeanは次の名前の通知グループを作成します。

ActiveActiveGroupBean_X

Xは文字列です。

実行時に、ActiveActiveGroupBeanは、Oracle Event Processingサーバーに定義された既存のグループをスキャンし、次のデフォルトのパターン一致を適用します。

ActiveActiveGroupBean_\\w+

一致が見つかったら、その名前の通知グループを作成します。

オプションで、別の通知グループ・ネーミング・パターンを指定するために独自のグループ・パターンを定義できます。

ActiveActiveGroupBeanグループ・パターン一致の構成方法

1. EPNアセンブリ・ファイルを構成し、例25-14に示すように、ActiveActiveGroupBean要素にgroupPattern属性を追加します。

例25-14 groupPattern属性を持つActiveActiveGroupBeanのbean要素

<bean id="clusterAdapter" class="com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean">
<property name="groupPattern" value="MyNotificationGroupPattern*"/>
</bean>

2. 通知グループに対し使用するクラスタ・グループ・ネーミング・ルールに一致するgroupPattern属性の値を指定します。

26 コンポーネント構成の拡張

この章では、構成XMLを生成するためのJava注釈の使用に関する情報など、Oracle Event Processingで使用されるアダプタおよびイベントBeanのデフォルト構成を拡張するXMLスキーマの使用方法について説明します。

この章の内容は次のとおりです。

- 26.1項「コンポーネント構成の拡張の概要」

- 26.2項「コンポーネント構成の拡張」

- 26.3項「カスタム・アダプタまたはイベントBeanの構成へのプログラムからのアクセス

26.1 コンポーネント構成の拡張の概要

アダプタとイベントBeanにはデフォルトの構成データがあります。このデフォルト構成は通常、単純な基本的アプリケーションに適しています。

ただし、XMLスキーマ定義(XSD)スキーマの使用によってこの構成を拡張して、Oracle Event Processingで提供される組込みのXMLタイプを拡張するアダプタ構成ファイルの新しいXML形式を指定することもできます。XSDスキーマを拡張することで、任意の数の新しい要素をアダプタ構成に追加できます。新しい要素にname属性を指定する必要がある他は制限もほとんどありません。

この機能は、XSDやJava Architecture for XML Binding (JAXB)などの標準の技術に基づいています。

コンポーネント構成は、次の方法で拡張できます。

- javax.xml.bind.annotationで指定する注釈を使用した、アダプタまたはイベントBean Javaクラスへの注釈付け
26.1.1項「注釈を使用したコンポーネント構成の拡張」を参照してください。

- 手動によるXSDの生成
26.1.2項「XSDを使用したコンポーネント構成の拡張」を参照してください。

- アプリケーション・スキーマを拡張しないカスタム・スキーマの手動生成
これにより、他の要素を定義せずに、独自のネームスペースにカスタム構成を作成できます。このメカニズムは、スキーマ生成後の注釈付けの方法と同様に機能します。

詳細は、次を参照してください:

- 第15章「カスタム・アダプタを使用した外部コンポーネントの統合」

- 16.3.1項「イベントBeanとしてのJavaクラスの構成」

- B.2項「コンポーネント構成スキーマ wlevs_application_config.xsd」

26.1.1 注釈を使用したコンポーネント構成の拡張

コンポーネント構成を拡張する最も簡単で効率的な方法は、javax.xml.bind.annotationで指定する注釈を使用して、アダプタまたはイベントBean Javaクラスに注釈を付けることです。

Oracle Event Processingでは、EPN構成ファイルの複数のネームスペースの包括、およびクライアント・バンドルではなく提供されているバンドルからの構成情報のソーシングをサポートしています。Oracle Event Processingではアクセス可能なclass-spaceの複数のObjectFactoriesがスキャンされ、このそれぞれがcreateConfigによって初期化されます。

スキーマ検索には、アダプタ・バンドル内のwlevs:factory要素のprovider-schema子要素も含まれます。独自のバンドルでアダプタを定義している場合は、provider-bundleプロパティを定義していれば、そのバンドルにスキーマを格納することができます。

Oracleでは、elementFormDefault="unqualified"を使用して、ローカルで定義した要素にネームスペースを含まず、グローバル要素でtargetNamespaceを利用することをお薦めします。これによって、過剰に接頭辞を付けなくても、スキーマ間の名前の重複を回避することができます。

詳細は、http://www.xfront.com/HideVersusExpose.htmlを参照してください。

詳細は、次を参照してください:

- 26.2.1項「注釈を使用したコンポーネント構成の拡張方法」

- http://java.sun.com/javaee/6/docs/api/javax/xml/bind/annotation/package-summary.html

26.1.2 XSDを使用したコンポーネント構成の拡張

カスタム・コンポーネント構成をより詳細に制御するため、独自のXSDを作成して、コンポーネント構成を拡張することができます。

詳細は、次を参照してください:

- 26.2.2項「XSDを使用したコンポーネント構成の拡張方法」

- http://jaxb.java.net/

26.2 コンポーネント構成の拡張

次のいずれかの方法で、コンポーネント構成を拡張することができます。

詳細は、26.1項「コンポーネント構成の拡張の概要」を参照してください。

26.2.1 注釈を使用したコンポーネント構成の拡張方法

コンポーネント構成を拡張する最も簡単で効率的な方法は、アダプタまたはイベントBean Javaクラスに注釈を付けることです。

また、26.2.2項「XSDを使用したコンポーネント構成の拡張方法」の説明のとおり、独自のXSDを作成してコンポーネント構成を拡張できます。

詳細は、26.1.1項「注釈を使用したコンポーネント構成の拡張」を参照してください。

注釈を使用したコンポーネント構成を拡張する手順:

1. カスタム・アダプタまたはイベントBean Javaクラスを実装します。
詳細は、次を参照してください:

- 15.2項「カスタム・アダプタの実装」

- 第16章「Javaでのイベントの処理」

2. javax.xml.bind.annotationで指定した注釈を使用して、カスタム・アダプタまたはイベントBeanの属性に注釈を付け、コンポーネント構成を指定します。
重要なjavax.xml.bind.annotation注釈には、次のものが含まれます。

- @XmlElement: プロパティはコンポーネント構成のオプション部分です。

- @XmlElement(required=true): プロパティはコンポーネント構成の必須部分です。

- @XmlTransient: プロパティはコンポーネント構成の一部ではありません。

- @XmlJavaTypeAdapter: これで注釈を付けられたプロパティ要素によってカスタム処理を指定し、大部分のJavaデータ型を適応させることができます。

注意:

@XmlJavaTypeAdapterを幅広く活用する必要がある場合は、26.2.2項「XSDを使用したコンポーネント構成の拡張方法」の説明のとおり、独自のカスタム・スキーマの定義を考慮します。

注意:

注釈のないプロパティは、オプションの構成プロパティとみなされます(デフォルト: @XmlElement)。

例26-1では、次を指定するためjavax.xml.bind.annotation注釈によって注釈を付けられたカスタム・アダプタ実装を示します。

- count: コンポーネント構成の一部ではありません。

- doit: コンポーネント構成の必須部分です。

- size: コンポーネント構成の必須部分です。インスタンス・プロパティhowBigにマップされます。

例26-1 注釈を付けられたカスタム・アダプタ実装

@XmlType(name="SampleAdapterConfig", namespace="http://www.oracle.com/ns/cep/config/sample")
public class SampleAdapterImpl implements Adapter {
@XmlTransient
private int count;

@XmlElement(name="size")
private int howBig;

@XmlElement(required=true)
private boolean doit;

...

public void setDoit(boolean doit) {
this.doit = doit;
}

public boolean getDoit() {
return doit;
}
}

3. カスタム・アダプタまたはイベントBeanコード内で、26.3項「カスタム・アダプタまたはイベントBeanの構成へのプログラムからのアクセス」の説明のとおり、拡張された構成にアクセスします。

4. アプリケーションのカスタム・コンポーネントを記述するコンポーネント構成XMLファイルを変更します。
詳細は、15.5.2項「コンポーネント構成ファイルでのカスタム・アダプタの構成」を参照してください。

5. アプリケーションのコンポーネントを記述するコンポーネント構成XMLファイルを作成する場合は、必ず拡張されたXSDファイルを説明として使用します。また、デフォルトのスキーマではなく、必ずこのスキーマのネームスペースを識別するようにします。
例26-2は、例26-1のカスタム・アダプタのコンポーネント構成ファイルを示します。

例26-2 拡張コンポーネント構成: 注釈

<?xml version="1.0" encoding="UTF-8"?>
<app:config
xmlns:app="http://www.bea.com/ns/wlevs/config/application"
xmlns:sample="http://www.oracle.com/ns/cep/config/sample"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.bea.com/ns/wlevs/config/application
http://www.bea.com/ns/wlevs/config/application/wlevs_application_config.xsd
http://www.oracle.com/ns/cep/config/sample
http://www.oracle.com/ns/cep/config/sample/ocep_sample_config.xsd">
<processor>
<name>clusterProcessor</name>
<rules>
<query id="clusterRule"><![CDATA[ select * from clusterInstream [Now] ]]></query>
</rules>
</processor>
<sample:adapter>
<name>myadapter</name>
<config>
<size>15</size>      <!-- optional -->
<doit>true</doit>    <!-- required -->
</config>
</sample:adapter>
</app:config>

注意:

拡張コンポーネント構成スキーマでは、例26-5に示すとおり、ネストされているconfig要素が必要です。

6. アプリケーションをパッケージ化し、デプロイします。
詳細は、第23章「Oracle Event Processingアプリケーションのアセンブルとデプロイ」を参照してください。

26.2.2 XSDを使用したコンポーネント構成の拡張方法

カスタム・アダプタまたはイベントBeanのコンポーネント構成は、独自のXSDを使用して拡張できます。

また、26.2.1項「注釈を使用したコンポーネント構成の拡張方法」の説明のとおり、アダプタまたはイベントBean Javaクラスに注釈をつけて、コンポーネント構成を拡張できます。

詳細は、26.1.2項「XSDを使用したコンポーネント構成の拡張」を参照してください。

XSDを使用したコンポーネント構成を拡張する手順:

1. 拡張されたアダプタまたはイベントBean構成を記述する新規XSDスキーマ・ファイルを作成します。
このXSDファイルには、コンポーネントを記述するのにOracle Event Processingで定義されている組込みのXSDタイプを通常使用する場合でも、アプリケーションの他のコンポーネント(プロセッサやストリーム)の説明も含まれている必要があります。

26.2.2.1項「XSDスキーマ・ファイルの作成」を参照してください。

2. アプリケーション・ビルド・プロセスの一部として、SunのGlassFishリファレンス実装のcom.sun.tools.xjc.XJCTask AntタスクなどのJAXBバインディング・コンパイラを使用して、XSDスキーマ・タイプのJava表現を生成します。ユーザーの利便を図るために、このAntタスクはOracle Event Processing配布に含まれています。
次のサンプルbuild.xmlファイルは、この方法を示しています。

<property name="base.dir" value="." />
<property name="output.dir" value="output" />
<property name="sharedlib.dir" value="${base.dir}/../../../../../modules" />
<property name="wlrtlib.dir" value="${base.dir}/../../../../modules"/>
<path id="classpath">
<pathelement location="${output.dir}" />
<fileset dir="${sharedlib.dir}">
<include name="*.jar" />
</fileset>
<fileset dir="${wlrtlib.dir}">
<include name="*.jar"/>
</fileset>
</path>
<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
<classpath refid="classpath" />
</taskdef>
<target name="generate" depends="clean, init">
<copy file="../../../../xsd/wlevs_base_config.xsd"
todir="src/main/resources/extension" />
<copy file="../../../../xsd/wlevs_application_config.xsd"
todir="src/main/resources/extension" />
<xjc extension="true" destdir="${generated.dir}">
<schema dir="src/main/resources/extension"
includes="helloworld.xsd"/>
<produces dir="${generated.dir}" includes="**/*.java" />
</xjc>
</target>

この例では、拡張されたXSDファイルはhelloworld.xsdです。helloworld.xsdはOracle Event Processing XSDファイルをインポートするため、ビルド・プロセスによってOracle Event Processing XSDファイル(wlevs_base_config.xsdおよびwlevs_application_config.xsd)がhelloworld.xsdファイルと同じディレクトリにコピーされます。

詳細は、http://jaxb.java.net/nonav/2.0.2/docs/xjcTask.htmlを参照してください。

3. 生成されたこれらのJavaファイルをクラスにコンパイルします。

4. コンパイルされたJavaクラス・ファイルをアプリケーション・バンドルにパッケージ化します。
23.2項「Oracle Event Processingアプリケーションのアセンブル」を参照してください。

5. カスタム・アダプタまたはイベントBeanをプログラミングします。
詳細は、次を参照してください:

- 15.2項「カスタム・アダプタの実装」

- 第16章「Javaでのイベントの処理」

6. カスタム・アダプタまたはイベントBeanコード内で、26.3項「カスタム・アダプタまたはイベントBeanの構成へのプログラムからのアクセス」の説明のとおり、拡張された構成にアクセスします。

7. アプリケーションのコンポーネントを記述するコンポーネント構成XMLファイルを作成する場合は、必ず拡張されたXSDファイルを説明として使用します。また、デフォルトのスキーマではなく、必ずこのスキーマのネームスペースを識別するようにします。
例26-3は26.2.2.1項「XSDスキーマ・ファイルの作成」で作成したXSDのコンポーネント構成ファイルを示しています。

例26-3 拡張コンポーネント構成ファイル: XSD

<?xml version="1.0" encoding="UTF-8"?>
<helloworld:config
xmlns:helloworld="http://www.bea.com/xml/ns/wlevs/example/helloworld">
<adapter>
<name>helloworldAdapter</name>
<message>HelloWorld - the current time is:</message>
</adapter>
</helloworld:config>

26.2.2.1 XSDスキーマ・ファイルの作成

新しいXSDスキーマ・ファイルはwlevs_application_config.xsd XSDスキーマを拡張し、アダプタの新規構成要素などの新しいカスタム情報を追加します。カスタム情報には標準のXSDスキーマ構文を使用します。

26.2.2.1.1項「拡張されたXSDスキーマ・ファイルの完全な例」のXSDスキーマを基本テンプレートとして使用し、ニーズに合わせてコンテンツを変更することをお薦めします。新しい構成要素を追加するとともに、他の変更点としては、生成されたJavaコードのパッケージ名の変更やカスタム・アダプタの要素名の変更などがあります。カスタム・アダプタのみ、またはプロセッサなどの他のコンポーネントをスキーマで使用するかどうかを制御できます。

詳細は、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

新しいXSDスキーマ・ファイルを作成するには:

1. 任意のXMLエディタを使用して、特にJAXBを含む必須のネームスペースを使用して基本のXSDファイルを作成します。例:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.bea.com/xml/ns/wlevs/example/helloworld"
xmlns="http://www.bea.com/xml/ns/wlevs/example/helloworld"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
jxb:extensionBindingPrefixes="xjc" jxb:version="1.0"
elementFormDefault="unqualified" attributeFormDefault="unqualified">
...
</xs:schema>

2. wlevs_application_config.xsd XSDスキーマをインポートします。

<xs:import
namespace="http://www.bea.com/ns/wlevs/config/application"
schemaLocation="wlevs_application_config.xsd"/>

また、wlevs_application_config.xsdによりwlevs_base_config.xsd XSDファイルがインポートされます。

3. complexType> XSD要素を使用して、拡張されたアダプタ構成のXMLタイプを記述します。
新しいタイプは、wlevs_application_config.xsdに定義されたAdapterConfigタイプを拡張する必要があります。AdapterConfigはConfigurationObjectを拡張します。次に、必要に応じて、基本のアダプタ構成に新しい要素または属性を追加できます。たとえば、次のタイプHelloWorldAdapterConfigは、基本のアダプタ構成にmessage要素を追加します。

<xs:complexType name="HelloWorldAdapterConfig">
<xs:complexContent>
<xs:extension base="wlevs:AdapterConfig">
<xs:sequence>
<xs:element name="message" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

4. トップレベル要素を定義し、configという名前にする必要があります。
config要素の定義では、アプリケーションのコンポーネントに対応する子要素のシーケンスを定義します。要素名には任意の名前を付けることができますが、通常は構成するコンポーネント(adapter、processor、channel)を示している必要があります。

各要素は、明示的にbase属性値base:ConfigurationObjectでxs:extension要素を使用するか、またはそれ自身がConfigurationObjectを拡張するXMLタイプを指定するかによって、ConfigurationObject XMLタイプを拡張する必要があります。ConfigurationObject XMLタイプは、wlevs_base_config.xsdで定義され、nameという単一の属性を定義します。

アダプタ要素のタイプは、この方法の上記の手順で作成されたカスタム・タイプである必要があります。

プロセッサまたはストリームに対応するconfigの子要素には、wlevs_application_config.xsdに記述されている次の組込みXMLタイプを使用できます。

- DefaultProcessorConfig—デフォルト・プロセッサ構成の説明については、次を参照してください。

- 17.1項「Oracle CQLプロセッサ構成の概要」

- 19.1項「EPLプロセッサ・コンポーネント構成の概要」

- DefaultStreamConfig—デフォルトのチャネル構成の記述は、10.1項「チャネル構成の概要」を参照してください。

例:

<xs:element name="config">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="adapter" type="HelloWorldAdapterConfig"/>
<xs:element name="processor" type="wlevs:DefaultProcessorConfig"/>
</xs:choice>
</xs:complexType>
</xs:element>

5. 必要に応じてjxb:schemaBindingsのjxb:package子要素を使用して、生成されたJavaコードのパッケージ名を指定します。

<xs:annotation>
<xs:appinfo>
<jxb:schemaBindings>
<jxb:package name="com.bea.adapter.wlevs.example.helloworld"/>
</jxb:schemaBindings>
</xs:appinfo>
</xs:annotation>

26.2.2.1.1 拡張されたXSDスキーマ・ファイルの完全な例

次の拡張されたXSDファイルをテンプレートとして使用します。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.bea.com/xml/ns/wlevs/example/helloworld"
xmlns="http://www.bea.com/xml/ns/wlevs/example/helloworld"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
jxb:extensionBindingPrefixes="xjc" jxb:version="1.0"
elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xs:annotation>
<xs:appinfo>
<jxb:schemaBindings>
<jxb:package name="com.bea.adapter.wlevs.example.helloworld"/>
</jxb:schemaBindings>
</xs:appinfo>
</xs:annotation>
<xs:import namespace="http://www.bea.com/ns/wlevs/config/application"
schemaLocation="wlevs_application_config.xsd"/>
<xs:element name="config">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="adapter" type="HelloWorldAdapterConfig"/>
<xs:element name="processor" type="wlevs:DefaultProcessorConfig"/>
<xs:element name="channel" type="wlevs:DefaultStreamConfig"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:complexType name="HelloWorldAdapterConfig">
<xs:complexContent>
<xs:extension base="wlevs:AdapterConfig">
<xs:sequence>
<xs:element name="message" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>

26.3 カスタム・アダプタまたはイベントBeanの構成へのプログラムからのアクセス

この節は、アダプタとイベントBeanの両方に当てはまります。簡略化のため、アダプタについてのみ説明します。

アプリケーションをデプロイする場合、Oracle Event Processingでは(コンポーネント構成XMLファイルに指定された)各コンポーネントの構成がJava Architecture for XML Binding (JAXB)標準を使用してJavaオブジェクトにマップされます(詳細は、http://jaxb.java.net/を参照)。各コンポーネントの構成データは単一のXML要素に含まれるため、JAXBでもこの構成データを表現する単一のJavaクラスが生成されます。コンポーネントの初期化時、およびコンポーネントの構成が動的に変更されるたびに、Oracle Event Processingでは実行時にこのJavaクラスのインスタンスがコンポーネント(プロセッサ、チャネル、またはアダプタ)に渡されます。

このコンポーネント構成には、実行時に次のいずれかの方法でアクセスできます。

- 26.3.1項「リソース・インジェクションを使用したコンポーネント構成へのアクセス方法」の説明のとおり、リソース・インジェクションを使用します。
これは実行時の、最も簡単で効率的なコンポーネント構成へのアクセス方法です。

- 26.3.2項「ライフサイクル・コールバックを使用したコンポーネント構成へのアクセス方法」の説明のとおり、コールバックを使用します。
これは、実行時にコンポーネント構成にアクセスするための最も柔軟な方法です。リソース・インジェクションを使用しても目的の達成が困難な場合は、このオプションを検討してください。

注意:

アダプタ・プロバイダからのスキーマ使用を必要とするクライアントは、プロバイダのバンドルから適切なパッケージをインポートし、プロバイダのObjectFactoryがクライアント・バンドルに表示されるようにする必要があります。

26.3.1 リソース・インジェクションを使用したコンポーネント構成へのアクセス方法

デフォルトでは、Oracle Event ProcessingはそのJava Beanプロパティの直接インジェクション、およびその後の通常の構成コールバックにより、アダプタを構成します。

例26-4に示すとおり、注釈付きカスタム・アダプタ実装を検討します。

例26-4 カスタム・アダプタ実装

@XmlType(name="SampleAdapterConfig", namespace="http://www.oracle.com/ns/cep/config/sample")
public class SampleAdapterImpl implements Adapter {
private boolean doit;

public void setDoit(boolean doit) {
this.doit = doit;
}

public boolean getDoit() {
return doit;
}
}

例26-5に示すように、このカスタム・アダプタのインスタンスについて、コンポーネント構成ファイルを検討します。

例26-5 拡張コンポーネントの構成

<?xml version="1.0" encoding="UTF-8"?>
<app:config
xmlns:app="http://www.bea.com/ns/wlevs/config/application"
xmlns:sample="http://www.oracle.com/ns/cep/config/sample"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.bea.com/ns/wlevs/config/application
http://www.bea.com/ns/wlevs/config/application/wlevs_application_config.xsd
http://www.oracle.com/ns/cep/config/sample
http://www.oracle.com/ns/cep/config/sample/ocep_sample_config.xsd">
<processor>
<name>clusterProcessor</name>
<rules>
<query id="clusterRule"><![CDATA[ select * from clusterInstream [Now] ]]></query>
</rules>
</processor>
<sample:adapter>
<name>myadapter</name>
<config>
<doit>true</doit>
</config>
</sample:adapter>
</app:config>

実行時に、デフォルトではOracle Event ProcessingはJava beanプロパティdoitの値(true)を直接挿入します。

注意:

拡張コンポーネント構成スキーマでは、例26-5に示すとおり、ネストされているconfig要素が必要です。

詳細は、次を参照してください:

- 26.3.2項「ライフサイクル・コールバックを使用したコンポーネント構成へのアクセス方法」

- 1.4.3項「Oracle Event Processingリソース・アクセスの構成」

26.3.2 ライフサイクル・コールバックを使用したコンポーネント構成へのアクセス方法

アダプタ実装では、メタデータ注釈を使用して、実行時にOracle Event Processingで起動されたJavaメソッドを指定することができます。

Oracle Event Processingは、構成Javaクラスのインスタンスを、指定したメソッドのインスタンスに渡します。アダプタについてこれらのメソッドをプログラミングし、指定の実行時間の構成を得ることができます。

次の例では、アダプタ構成が最初に有効化されたときに起動されるメソッドを指定するよう、@Activate注釈でactivateAdapterメソッドに注釈を付ける方法を示します。

@Activate
public void activateAdapter(HelloWorldAdapterConfig adapterConfig) {
this.message = adapterConfig.getMessage();
}

デフォルトでは、アダプタ構成のJavaクラスのデータ型はcom.bea.wlevs.configuration.application.DefaultAdapterConfigです。ただし、構成XMLファイルを記述する独自のXSDファイルを作成してアダプタの構成を拡張した場合は、XSDファイルで型を指定します。上記の例では、Java構成オブジェクトのデータ型はcom.bea.wlevs.example.helloworld.HelloWorldAdapterConfigです。

この項では次について説明します:

- 26.3.2.1項「ライフサイクル・コールバック注釈」

- 26.3.2.2項「ライフサイクル」

26.3.2.1 ライフサイクル・コールバック注釈

次のメタデータ注釈を使用して、様々なライフサイクル・コールバック・メソッドを指定できます。

- com.bea.wlevs.management.Activate: 構成がアクティブ化されたときに呼び出されるメソッドを指定します。
アダプタ・コードでこの注釈を使用する場合の詳細は、I.2項「com.bea.wlevs.configuration.Activate」を参照してください。

- com.bea.wlevs.management.Prepare: 構成が準備されたときに呼び出されるメソッドを指定します。
アダプタ・コードでこの注釈を使用する場合の詳細は、I.3項「com.bea.wlevs.configuration.Prepare」を参照してください。

- com.bea.wlevs.management.Rollback: 例外が原因でアダプタが停止した場合に呼び出されるメソッドを指定します。
アダプタ・コードでこの注釈を使用する場合の詳細は、I.4項「com.bea.wlevs.configuration.Rollback」を参照してください。

詳細は、26.3.2.2項「ライフサイクル」を参照してください。

26.3.2.2 ライフサイクル

Oracle Event Processingでは、カスタム・アダプタおよびイベントBeanのインストール中に、次のライフサイクルに従います。

1. アダプタまたはイベントBeanインスタンスの作成。

2. 静的プロパティのインジェクト。

3. afterPropertiesSetの呼出し。

4. フェーズの準備:

1. 1つ以上の構成引数のある@Prepareがある場合は、これを呼び出します。

2. ない場合は、構成プロパティを直接インジェクトします。
26.3.1項「リソース・インジェクションを使用したコンポーネント構成へのアクセス方法」を参照してください。

3. 引数のない@Prepareがある場合は、これを呼び出します。

5. フェーズの有効化:

1. 1つ以上の構成引数のある@Activateがある場合は、これを呼び出します。

2. 引数のない@Activateがある場合は、これを呼び出します。

6. afterConfigurationActiveを呼び出します。

7. その他の構成で続行します。

27 パフォーマンス・チューニング

この章では、パーティション化およびバッチ処理を使用してOracle Event Processingアプリケーションのパフォーマンスを向上するための技術について、および高可用性パフォーマンスのチューニングに固有の情報について説明します。

この章の内容は次のとおりです。

- 27.1項「EPNパフォーマンスのチューニング」

- 27.2項「高可用性パフォーマンスのチューニング」

27.1 EPNパフォーマンスのチューニング

EPNを作成する場合は、次のパフォーマンス・チューニング・オプションを検討します。

- 27.1.1項「イベント・パーティショナ・チャネル」

- 27.1.2項「チャネルのバッチ処理」

- 27.1.3項「ActiveActiveGroupBeanを使用したスケーラビリティ」

詳細は、第25章「スケーラブルなアプリケーションの開発」を参照してください。

27.1.1 イベント・パーティショナ・チャネル

イベント・パーティショナ・チャネルを構成すると、スケーラビリティを向上させることができます。イベント・パーティショナを使用するようにチャネルを構成した場合、受信イベントが到着するたびにチャネルはリスナーを選択し、各リスナーに各イベントをブロードキャストするのではなく、そのリスナーにイベントをディスパッチし、チャネルのイベントをその出力イベント・シンク全体でパーティション化します。

詳細は、25.1.2.1項「EventPartitioner」を参照してください。

27.1.2 チャネルのバッチ処理

デフォルトでは、チャネルはイベントが到達した時点でイベントを処理します。このかわりに、wlevs:channel属性batchingをtrueに設定すると、タイムスタンプが同じイベントをまとめてバッチ処理するようチャネルを構成することができます。

詳細は、10.1.6項「バッチ処理チャネル」を参照してください。

27.1.3 ActiveActiveGroupBeanを使用したスケーラビリティ

com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanを使用して、ActiveActiveGroupBeanで作成された通知グループによって、Oracle Event Processingアプリケーションの受信JMSストリームをパーティション化できます。

詳細は、25.1.2.2項「ActiveActiveGroupBean」を参照してください。

27.2高可用性パフォーマンスのチューニング

マルチサーバー・ドメインにデプロイするために高可用性アプリケーションを作成するときは、次のパフォーマンス・チューニング・オプションを考慮します。

- 27.2.1項「ホスト構成」

- 27.2.2項「高可用性入力アダプタおよびサービス品質」

- 27.2.3項「高可用性入力アダプタの構成」

- 27.2.4項「ブロードキャスト出力アダプタの構成」

- 27.2.5項「Oracle Coherenceパフォーマンス・チューニング・オプション」

詳細は、24.1.3項「高可用性用Oracle Event Processingアプリケーションの設計」を参照してください。

27.2.1 ホスト構成

リカバリ時間に関係なく、高可用性のみを必要としている場合、小規模であまり装備されていないホストをセカンダリとして使用できます。ただし、高可用性パフォーマンスを最大限にするために、マルチサーバー・ドメイン内のすべてのホストは同じ、つまり、番号とプロセッサ・タイプが同じ、メモリー・サイズ、番号とディスク領域が同じであることを確認します。

27.2.2 高可用性入力アダプタおよびサービス品質

Oracle Event Processingの高可用性入力アダプタは、すべての高可用性のサービス品質オプションに適用できます。ただし、高可用性入力アダプタはパフォーマンスのオーバーヘッドを増加するため、一部の高可用性サービス品質オプション(24.1.2.1項「シンプル・フェイルオーバー」および24.1.2.2項「バッファリングを使用するシンプル・フェイルオーバー」など)には適しません。

イベントからアプリケーション時間を使用している場合、入力アダプタを使用する必要はありません。パフォーマンスの観点からみた場合、通常はイベントからのアプリケーション時間を使用することをお薦めします。

27.2.3 高可用性入力アダプタの構成

プライマリ・サーバーがイベント・メッセージをブロードキャストするために要する時間とセカンダリ・サーバーがこれらのメッセージを処理するために要する時間を短縮するには、batch-sizeを増加することを考慮します。

プライマリ・サーバーが多数のイベントがあるイベント・メッセージをブロードキャストする前に失敗した場合、batch-sizeを増加すると、重複イベントとイベントのミスの可能性が増加します。

詳細は、表24-5「高可用性入力アダプタ用ha-inbound-adapterの子要素」を参照してください。

27.2.4 ブロードキャスト出力アダプタの構成

プライマリ・サーバーがトリミング・メッセージをブロードキャストするために要する時間とセカンダリ・サーバーがこれらのメッセージを処理するために要する時間を短縮するには、trimming-intervalを減少させることを考慮します。

trimming-intervalが減少すると、新しいプライマリ・サーバーのメモリー内キューが古いプライマリ・サーバーに対して期限切れのためにリカバリ時間が増加する場合があります。

詳細は、表24-11「ブロードキャスト出力アダプタ用ha-broadcast-adapterの子要素」を参照してください。

27.2.5 Oracle Coherenceパフォーマンス・チューニング・オプション

高可用性アーキテクチャでOracle Coherenceを構成する場合、次のパフォーマンス・チューニング・オプションを考慮します。

- 27.2.5.1項「Oracle Coherenceハートビート頻度」

- 27.2.5.2項「Oracle Coherenceシリアライズ」

詳細は、Oracle Coherence開発者ガイド(http://download.oracle.com/docs/cd/E15357_01/coh.360/e15723/tune_perftune.htm)のパフォーマンス・チューニングに関する項を参照してください。

27.2.5.1 Oracle Coherenceハートビート頻度

フェイルオーバーの時間を削減するには、Coherenceハートビート・タイムアウトのマシン頻度を増加し、失敗する前のハートビート数を減少します。

27.2.5.2 Oracle Coherenceシリアライズ

メッセージングのパフォーマンスを向上するには、シリアライズ用にOracle Coherence Portable Object Format (POF)を実装します。POFは言語に依存しないバイナリ形式であり、容量と時間を効率的に使用するよう設計されています。JavaシリアライズのかわりにPOFを使用すると、パフォーマンスが大幅に向上します。

詳細は、http://coherence.oracle.com/display/COH35UG/The+Portable+Object+Formatを参照してください。

第V部

付録

第V部は、次の付録で構成されます。

- 付録A「SpringおよびOSGiに関する追加情報」

- 付録B「Oracle Event Processingスキーマ」

- 付録C「スキーマ参照: EPNアセンブリspring-wlevs-v11_1_1_6.xsd」

- 付録D「スキーマ参照: コンポーネント構成wlevs_application_config.xsd」

- 付録E「スキーマ参照: deployment.xsdのデプロイメント」

- 付録F「スキーマ参照: サーバー構成wlevs_server_config.xsd」

- 付録G「スキーマ参照: メッセージ・カタログmsgcat.dtd」

- 付録H「スキーマ参照: ロケール・メッセージ・カタログl10n_msgcat.dtd」

- 付録I「Oracle Event Processingメタデータ注釈リファレンス」

A SpringおよびOSGiに関する追加情報

この付録では、Oracle Event Processingアプリケーションを構築するSpring FrameworkおよびOSGiサービス・プラットフォームの詳細へのリンクを示します。

SpringおよびOSGiに関する追加情報については、以下を参照してください。

- Spring Framework API 2.5: http://static.springframework.org/spring/docs/2.5.x/api/index.html

- Spring Framework - 参照ドキュメント2.5: http://static.springframework.org/spring/docs/2.5.x/reference/index.html

- Spring-OSGiプロジェクト: http://www.springframework.org/osgi

- OSGiリリース4サービス・プラットフォームJavadoc: http://www.springframework.org/osgi

- OSGiリリース4コア仕様: http://www.osgi.org/osgi_technology/download_specs.asp?section=2#Release4

B Oracle Event Processingスキーマ

この付録では、Oracle Event Processingの構成およびデプロイメントのXMLファイルの背後にあるスキーマを、それぞれの簡単な例とともに示します。

この付録の内容は次のとおりです。

- B.1項「EPNアセンブリ・スキーマspring-wlevs-v11_1_1_6.xsd」

- B.2項「コンポーネント構成スキーマ wlevs_application_config.xsd」

- B.3項「deployment.xsdのデプロイメント・スキーマ」

- B.4項「サーバー構成スキーマwlevs_server_config.xsd」

B.1 EPNアセンブリ・スキーマspring-wlevs-v11_1_1_6.xsd

EPNアセンブリ・ファイルを使用して、Oracle Event Processingアプリケーションを構成するコンポーネントおよび各コンポーネントが互いに接続する方法、つまりイベント処理ネットワークを宣言します。EPNアセンブリ・ファイルは、標準のSpringコンテキスト・ファイルの拡張です。また、このファイルを使用して、アプリケーションのアダプタ・コンポーネントおよびPOJOコンポーネントを実装するJavaクラスを登録し、アプリケーションおよびEPLルール全体で使用するイベント・タイプを登録して、環境内でOracle Event Processing固有サービスを参照します。

spring-wlevs-v11_1_1_6.xsdファイルはEPNアセンブリ・ファイルの構造を説明します。

このスキーマ・ファイルはORACLE_CEP_HOME\ocep_11.1\xsdディレクトリにあります。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Event Processingのメイン・インストール・ディレクトリです。

詳細は、付録C「スキーマ参照: EPNアセンブリspring-wlevs-v11_1_1_6.xsd」を参照してください。

B.1.1 EPNアセンブリ・ファイルの例

次のXMLファイルは、HelloWorldのサンプルのEPNアセンブリ・ファイルを示しています。

<?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-v11_1_1_6.xsd">

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

<!-- Adapter can be created from a local class, without having to go through a adapter factory -->
<wlevs:adapter id="helloworldAdapter" class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message" value="HelloWorld - the current time is:"/>
</wlevs:adapter>

<wlevs:channel id="helloworldInputChannel" event-type="HelloWorldEvent" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>

<!-- The default processor for Oracle Event Processing 11.0.0.0 is CQL -->
<wlevs:processor id="helloworldProcessor" />

<wlevs:channel id="helloworldOutputChannel" event-type="HelloWorldEvent" advertise="true">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>

</beans>

B.2 コンポーネント構成スキーマwlevs_application_config.xsd

Oracle Event Processingアプリケーションには、1つ以上のコンポーネント構成ファイルがMETA-INF/wlevsディレクトリに含まれています。コンポーネント構成ファイルを使用して、アダプタ、チャネル、プロセッサなどのOracle Event Processingコンポーネントのデフォルト構成をオーバーライドします。

wlevs_application_config.xsdスキーマ・ファイルでは、コンポーネント構成ファイルの構造について説明しています。このXSDスキーマでは、次のスキーマがインポートされます。

- wlevs_base_config.xsd

- wlevs_eventstore_config.xsd

- wlevs_diagnostic_config.xsd

これらのスキーマ・ファイルはORACLE_CEP_HOME\ocep_11.1\xsdディレクトリにあります。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Event Processingのメイン・インストール・ディレクトリです。

詳細は、付録D「スキーマの参照: コンポーネント構成wlevs_application_config.xsd」を参照してください。

B.2.1 コンポーネントの構成ファイルの例

次の例は、HelloWorldサンプル・アプリケーションのコンポーネント構成ファイルを示しています。

<?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">
<processor>
<name>helloworldProcessor</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from helloworldInputChannel [Now] ]]>
</query>
</rules>
</processor>
<channel>
<name>helloworldInputChannel</name>
<max-size>10000</max-size>
<max-threads>2</max-threads>
</channel>
<channel>
<name>helloworldOutputChannel</name>
<max-size>10000</max-size>
<max-threads>2</max-threads>
</channel>
</n1:config>

B.3 デプロイメント・スキーマdeployment.xsd

Oracle Event Processingインスタンスのデプロイメント・ファイルはdeployments.xmlという名前であり、DOMAIN_DIR/servernameディレクトリにあります。DOMAIN_DIRはメイン・ドメイン・ディレクトリを指し、servernameはサーバー・インスタンスの名前を指します。このXMLファイルには、サーバーにデプロイされているOSGiバンドルがリストされます。

deployment.xsdスキーマ・ファイルはデプロイメント・ファイルの構造を説明します。

このスキーマ・ファイルはORACLE_CEP_HOME\ocep_11.1\xsdディレクトリにあります。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Event Processingのメイン・インストール・ディレクトリです。

詳細は、付録E「スキーマの参照: デプロイメントdeployment.xsd」を参照してください。

B.3.1 デプロイメントXMLファイルの例

次の例は、サンプルFXドメインのdeployments.xmlファイルを示しています。

<?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:wlevs="http://www.bea.com/ns/wlevs/deployment"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.bea.com/ns/wlevs/deployment
http://www.bea.com/ns/wlevs/deployment/deployment.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
</bean>
<wlevs:deployment id="fx" state="start"
location="file:${wlevs.domain.home}/applications/fx/com.bea.wlevs.example.fx_11.1.0.0.jar"/>
</beans>

B.4 サーバー構成スキーマwlevs_server_config.xsd

Oracle Event Processingサーバー構成ファイルのconfig.xmlは、DOMAIN_DIR/servername/configディレクトリにあります。DOMAIN_DIRは、メイン・ドメイン・ディレクトリを示し、servernameは、特定のサーバー・インスタンスを示します。Oracle Event Processingインスタンスの構成を変更する場合は、このファイルを手動で更新し、サーバー構成要素を追加または削除することができます。

welvs_server_config.xsdスキーマ・ファイルはサーバー構成ファイルの構造を説明します。

このスキーマ・ファイルはORACLE_CEP_HOME\ocep_11.1\xsdディレクトリにあります。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle Event Processingのメイン・インストール・ディレクトリです。

詳細は、付録F「スキーマ参照: サーバー構成wlevs_server_config.xsd」を参照してください。

B.4.1 サーバー構成XMLファイルの例

次に示すサンプルのconfig.xmlは、ORACLE_CEP_HOME/user_projects/domains/ocep_domain/defaultserverテンプレート・ドメインに属し、これらのいくつかのサービスを構成する方法を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<n1:config xsi:schemaLocation="
http://www.bea.com/ns/wlevs/config/server wlevs_server_config.xsd"
xmlns:n1="http://www.bea.com/ns/wlevs/config/server"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<netio>
<name>NetIO</name>
<port>9002</port>
</netio>
<netio>
<name>sslNetIo</name>
<ssl-config-bean-name>sslConfig</ssl-config-bean-name>
<port>9003</port>
</netio>
<work-manager>
<name>JettyWorkManager</name>
<min-threads-constraint>5</min-threads-constraint>
<max-threads-constraint>10</max-threads-constraint>
</work-manager>
<jetty>
<name>JettyServer</name>
<network-io-name>NetIO</network-io-name>
<work-manager-name>JettyWorkManager</work-manager-name>
<secure-network-io-name>sslNetIo</secure-network-io-name>
</jetty>
<rmi>
<name>RMI</name>
<http-service-name>JettyServer</http-service-name>
</rmi>
<jndi-context>
<name>JNDI</name>
</jndi-context>
<exported-jndi-context>
<name>exportedJndi</name>
<rmi-service-name>RMI</rmi-service-name>
</exported-jndi-context>
<jmx>
<rmi-service-name>RMI</rmi-service-name>
<jndi-service-name>JNDI</jndi-service-name>
</jmx>
<ssl>
<name>sslConfig</name>
<key-store>./ssl/dsidentity.jks</key-store>
<key-store-pass>
<password>changeit</password>
</key-store-pass>
<key-store-alias>ds</key-store-alias>
<key-manager-algorithm>SunX509</key-manager-algorithm>
<ssl-protocol>TLS</ssl-protocol>
<enforce-fips>false</enforce-fips>
<need-client-auth>false</need-client-auth>
</ssl>
<http-pubsub>
<name>pubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
<name>pubsubbean</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>
</n1:config>

C スキーマ参照: EPNアセンブリspring-wlevs-v11_1_1_6.xsd

この付録では、Oracle Event Processingイベント処理ネットワーク(EPN)を作成するコンポーネントを宣言するのに使用するアセンブリXMLファイルの背後にあるスキーマである、spring-wlevs-v11_1_1_6.xsdスキーマの要素へのリファレンスを示します。

この付録の内容は次のとおりです。

- C.1項「Oracle Event Processingアプリケーション・アセンブリ要素の概要」

- C.2項「wlevs:adapter」

- C.3項「wlevs:application-timestamped」

- C.4項「wlevs:cache」

- C.5項「wlevs:cache-listener」

- C.6項「wlevs:cache-loader」

- C.7項「wlevs:cache-source」

- C.8項「wlevs:cache-store」

- C.9項「wlevs:caching-system」

- C.10項「wlevs:channel」

- C.11項「wlevs:class」

- C.12項「wlevs:event-bean」

- C.13項「wlevs:event-type」

- C.14項「wlevs:event-type-repository」

- C.15項「wlevs:expression」

- C.16項「wlevs:factory」

- C.17項「wlevs:function」

- C.18項「wlevs:instance-property」

- C.19項「wlevs:listener」

- C.20項「wlevs:metadata」

- C.21項「wlevs:processor」

- C.22項「wlevs:properties」

- C.23項「wlevs:property」

- C.24項「wlevs:property」

- C.25項「wlevs:source」

- C.26項「wlevs:table」

- C.27項「wlevs:table-source」

C.1 Oracle Event Processingアプリケーション・アセンブリ要素の概要

Oracle Event Processingには多数のアプリケーション・アセンブリ要素が用意されており、それらの要素をアプリケーションのEPNアセンブリ・ファイル内で使用して、イベント・タイプを登録し、イベント処理ネットワークのコンポーネントを宣言し、各コンポーネントがどのように相互にリンクしているかを指定します。EPNアセンブリ・ファイルは、標準のSpringコンテキスト・ファイルの拡張です。

C.1.1要素の階層

Oracle Event Processingアプリケーション・アセンブリ要素は、次の階層で構成されます。

beans
Standard Spring and OSGi elements such as bean, osgi-service, and so on.
wlevs:event-type-repository
wlevs:event-type
wlevs:class
wlevs:metadata
wlevs:properties
wlevs:property
wlevs:adapter
wlevs:listener
wlevs:instance-property
wlevs:property
wlevs:processor
wlevs:listener
wlevs:source
wlevs:function
wlevs:instance-property
wlevs:property
wlevs:cache-source
wlevs:table-source
wlevs:channel
wlevs:listener
wlevs:source
wlevs:instance-property
wlevs:property
wlevs:application-timestamped
wlevs:expression
wlevs:event-bean
wlevs:listener
wlevs:instance-property
wlevs:property
wlevs:factory
wlevs:cache
wlevs:caching-system
wlevs:cache-loader
wlevs:cache-store
wlevs:cache-listener
wlevs:caching-system
wlevs:instance-property
wlevs:property
wlevs:table

C.1.2 Oracle Event Processing要素を使用したEPNアセンブリ・ファイルの例

次に示すサンプルのEPNアセンブリ・ファイルは、HelloWorldアプリケーションのものであり、様々なOracle Event Processing要素の使用方法を示しています。

<?xwml 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-v11_1_1_6.xsd">
<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>com.bea.wlevs.event.example.helloworld.HelloWorldEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>
<wlevs:adapter id="helloworldAdapter"
class="com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapter" >
<wlevs:instance-property name="message"
value="HelloWorld - the currenttime is:"/>
</wlevs:adapter>
<wlevs:processor id="helloworldProcessor" />
<wlevs:channel id="helloworldInstream" >
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>
<wlevs:channel id="helloworldOutstream" advertise="true">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
<wlevs:source ref="helloworldProcessor"/>
</wlevs:channel>
</beans>

C.2 wlevs:adapter

この要素を使用して、Springアプリケーション・コンテキストに対してアダプタ・コンポーネントを宣言します。

C.2.1子要素

wlevs:adapterアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:listener

- wlevs:instance-property

- wlevs:property

C.2.2属性

表C-1は、wlevs:adapterアプリケーション・アセンブリ要素の属性を示しています。

表C-1 wlevs:adapterアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

id

このコンポーネントの一意の識別子。

この識別子は、このアダプタのXML構成ファイル内の<name>要素に対応している必要があります(その要素が存在する場合)。

String

はい。

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

listeners

このコンポーネントをリスニングするコンポーネントを指定します。

この属性は、コンポーネントを宣言した要素のid属性の値に設定します。

String

いいえ。

provider

アダプタ・サービス・プロバイダを指定します。通常、この属性の値はOSGiに登録されたアダプタ・ファクトリ・サービスへの参照です。

csvgenまたはloadgenユーティリティを使用してデータ・フィードをシミュレートする場合は、ハードコードされたcsvgenまたはloadgenの値をそれぞれ使用します。たとえば、次のようになります。

provider="csvgen"

組込みのHTTPパブリッシュ/サブスクライブ・アダプタのいずれかを使用する場合は、ハード・コード化された次の値を指定します。

- パブリッシュに使用する組込みのpub-subアダプタの場合は、ハードコードされたhttppub値を次のように指定します。

provider="httppub"

- サブスクライブに使用する組込みのpub-subアダプタの場合は、ハードコードされたhttpsub値を次のように指定します。

provider="httpsub"

JMSアダプタを使用する場合は、次のいずれかのハード・コード化された値を指定します。

- インバウンドJMSアダプタの場合は、jms-inbound値を次のように指定します。

provider="jms-inbound"

- アウトバウンドJMSアダプタの場合は、jms-outbound値を次のように指定します。

provider="jms-outbound"

providerまたはclass属性のどちらかを指定する必要がありますが、両方は指定できません。両方を指定すると例外が発生します。

String

いいえ。

class

このアダプタを実装するJavaクラスを指定します。

providerまたはclass属性のどちらかを指定する必要がありますが、両方は指定できません。両方を指定すると例外が発生します。

String

いいえ

onevent-method

ライフサイクルのonEventメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle Event Processingは、アダプタがイベントを受け取ったときにこのメソッドを呼び出します。

String

いいえ

init-method

ライフサイクルのinitメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle Event Processingは、指定されたすべてのインスタンス・プロパティを設定した後、このメソッドを呼び出します。このメソッドを使用すると、アダプタ・インスタンスは、すべてのBeanプロパティが設定済であるときに限って可能な初期化を実行し、構成が正しくない場合は例外をスローできます。

String

いいえ

activate-method

ライフサイクルのactivateメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle Event Processingは、アダプタの動的構成が完了した後で、このメソッドを呼び出します。このメソッドを使用すると、アダプタ・インスタンスは、すべての動的Beanプロパティが設定済であり、かつEPNが接続済であるときに限って可能な初期化を実行できます。

String

いいえ

suspend-method

ライフサイクルのsuspendメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle Event Processingは、アプリケーションが一時停止されたときに、このメソッドを呼び出します。

String

いいえ

destroy-method

ライフサイクルのdestroyメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle Event Processingは、アプリケーションが停止したときに、このメソッドを呼び出します。

String

いいえ

C.2.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:adapter要素の使用方法を示しています。

<wlevs:adapter id="helloworldAdapter" provider="hellomsgs">
<wlevs:instance-property name="message"
value="HelloWorld - the current time is:"/>
</wlevs:adapter>

この例では、アダプタの一意の識別子はhelloworldAdapterです。プロバイダはOSGiサービスです。EPNアセンブリ・ファイルにも登録されており、参照はhellomsgsです。アダプタにはmessageという静的なプロパティがあります。これは、アダプタJavaファイルにsetMessageメソッドがあることを示します。

C.3 wlevs:application-timestamped

wlevs:channelはアプリケーション・タイムスタンプであるかを指定するためにこの要素を使用します(アプリケーションはいずれかの時間ドメインで各イベントに対してタイムスタンプを割り当てます)。

その他の場合、wlevs:channelはシステム・タイムスタンプです(Oracle Event ProcessingサーバーはSystem.nanoTimeで各イベントに対してタイムスタンプ割り当てます)。

C.3.1子要素

wlevs:application-timestampedアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:expression: イベント処理のためにアプリケーション・タイムスタンプとして使用する式を指定します。

C.3.2属性

表C-2は、wlevs:application-timestampedアプリケーション・アセンブリ要素の属性を示しています。

表C-2 wlevs:application-timestampedアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

is-total-order

パブリッシュされたアプリケーション時間が常に前回使用された値よりも大きくなる場合に指定します。

有効な値は、trueまたはfalseです。デフォルト: false。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』の時間に関する項を参照してください。

Boolean

いいえ。

C.3.3 例

次の例は、暗黙的にアプリケーション・タイムスタンプのチャネルを指定するために、EPNアセンブリ・ファイルでのwlevs:application-timestamped要素を使用する方法について説明します。

<wlevs:channel id="fxMarketAmerOut" >
<wlevs:application-timestamped>
</wlevs:application-timestamped>
</wlevs:channel>

この例では、アプリケーションはイベント・タイムスタンプを内部的に処理します。

次の例は、明示的にアプリケーション・タイムスタンプのチャネルを指定するために、wlevs:expression要素を指定することにより、EPNアセンブリ・ファイルでのwlevs:application-timestamped要素を使用する方法について説明します。

<wlevs:channel id="fxMarketAmerOut" >
<wlevs:application-timestamped>
<wlevs:expression>mytime+10</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>

この例では、wlevs:expression要素は各イベントにタイムスタンプを割り当てるために使用する算術式を定義します。

C.4 wlevs:cache

この要素を使用して、Springアプリケーション・コンテキストに対してキャッシュを宣言します。

C.4.1子要素

wlevs:cacheアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:caching-system: このキャッシュが属するキャッシング・システムを指定します。

注意:

この子要素は、キャッシング・システムを宣言するために使用するwlevs:caching-system要素とは異なります。wlevs:cache要素の子要素は、refという単一の属性を持ちます。この属性は、宣言されたキャッシング・システムのid属性を参照します。

- wlevs:cache-loader: このキャッシュのキャッシュ・ローダーを指定します。

- wlevs:cache-store: このキャッシュのキャッシュ・ストアを指定します。

- wlevs:cache-listener: このキャッシュのリスナー、またはキャッシュのイベントの送信先コンポーネントを指定します。

C.4.2属性

表C-3は、wlevs:cacheアプリケーション・アセンブリ要素の属性を示しています。

表C-3 wlevs:cacheアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

id

このコンポーネントの一意の識別子。

この識別子は、このキャッシュのXML構成ファイル内の<name>要素に対応している必要があります。

String

はい。

name

このキャッシュの代替名を指定します。指定しない場合、キャッシュの名前はid属性と同じになります。

String

いいえ。

key-properties

プロパティの名前のカンマ区切りリストを指定します。これらのプロパティがまとまって、キャッシュ内のオブジェクトの一意キー値、またはキャッシュ・キーを形成します。キャッシュ・キーは単一のプロパティまたは複数のプロパティで構成されます。キャッシュをイベント処理ネットワーク内のリスナーとして構成すると、Oracle Event Processingは、一意キー値をキーとして使用してキャッシュに到達するイベントを挿入します。

key-class属性を使用してキー・クラスを指定した場合、この属性はオプションです。key-propertiesとkey-classのどちらも指定しない場合、Oracle Event Processingは、イベント・オブジェクトをキャッシュに挿入するときにキーと値の両方としてイベント・オブジェクトそのものを使用します。

String

いいえ。

key-class

キーが複合キーである場合に、キャッシュのキーに使用するJavaクラスの名前を指定します。

key-properties属性を指定しない場合、key-classのすべてのプロパティはキー・プロパティであると想定されます。key-propertiesとkey-classのどちらも指定しない場合、Oracle Event Processingは、イベント・オブジェクトをキャッシュに挿入するときにキーと値の両方としてイベント・オブジェクトそのものを使用します。

String

いいえ。

value-type

キャッシュに含まれる値の型を指定します。イベント・タイプ・リポジトリの有効な型の名前である必要があります。

この属性は、キャッシュがOracle CQLまたはEPL問合せで参照されている場合にのみ必須です。これは、問合せプロセッサはキャッシュ内のイベントのタイプを意識している必要があるからです。

String

いいえ。

caching-system

このキャッシュが含まれているキャッシング・システムを指定します。

この属性の値は、適切なwlevs:caching-system要素のid属性に対応します。

String

はい。

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

C.4.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:cache要素の使用方法を示しています。

<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
<wlevs:cache-listener ref="tradeListener" />
</wlevs:cache>

この例では、キャッシュの一意の識別子はcache-idで、代替名はalternative-cache-nameです。キャッシュが属しているキャッシング・システムのidはcaching-system-idです。キャッシュにはリスナーがあり、キャッシュはそのリスナーにイベントを送信します。キャッシュにリスニングするコンポーネントのidはtradeListenerです。

C.5 wlevs:cache-listener

この要素を使用して、リスニング・コンポーネントに対するイベントのソースとしてキャッシュを指定します。リスニング・コンポーネントはcom.bea.cache.jcache.CacheListenerインタフェースを実装する必要があります。

この要素は常にwlevs:cacheの子です。

C.5.1属性

表C-4は、wlevs:cache-listenerアプリケーション・アセンブリ要素の属性を示しています。

表C-4 wlevs:cache-listenerアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

ref

このキャッシュをリスニングするコンポーネントを指定します。

この属性は、リスニング・コンポーネントのid属性の値に設定します。リスニング・コンポーネントは、アダプタまたはSpring Beanです。

String

いいえ。

C.5.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:cache-listener要素の使用方法を示しています。

<wlevs:caching-system id="caching-system-id"/>
...
<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
<wlevs:cache-listener ref="cache-listener-id" />
</wlevs:cache>
...
<bean id="cache-listener-id" class="wlevs.example.MyCacheListener"/>

この例では、cache-listener-idのSpring Beanはキャッシュからのイベントをリスニングし、このコンポーネントを実装するクラス、wlevs.example.MyCacheListenerは、com.bea.jcache.CacheListenerインタフェースを実装する必要があります。wlevs.example.MyCacheListenerクラスは自分でプログラムする必要があります。

C.6 wlevs:cache-loader

spring-wlevs-v11_1_1_6.xsdデータをキャッシュにロードするオブジェクトを実装するSpring Beanを指定します。

この要素は常にwlevs:cacheの子です。

C.6.1属性

表C-5は、wlevs:cache-loaderアプリケーション・アセンブリ要素の属性を示しています。

表C-5 wlevs:cache-loaderアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

ref

データをキャッシュにロードするクラスを実装するSpring Beanを指定します。

この属性は、Spring Beanの id 属性の値に設定します。

Spring Beanはcom.bea.cache.jcache.CacheLoaderインタフェースを実装する必要があります。

String

はい。

C.6.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:cache-loader要素の使用方法を示しています。

<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
<wlevs:cache-loader ref="cache-loader-id" />
</wlevs:cache>
...
<bean id="cache-loader-id" class="wlevs.example.MyCacheLoader"/>

この例では、com.bea.cache.jcache.CacheLoaderインタフェースを実装するwlevs.example.MyCacheLoaderクラスによって実装されるcache-loader-id Spring Beanは、データをキャッシュにロードするBeanです。キャッシュは、wlevs:cache-loader子要素のref属性で参照することによって、このローダーを指定します。

C.7 wlevs:cache-source

このプロセッサ・コンポーネントにデータを提供するキャッシュを指定します。プロセッサ・コンポーネントは、キャッシュを直接参照するOracle CQLまたはEPL問合せに関連付けられます。

wlevs:cache要素のvalue-type属性を使用して、キャッシュによって提供されるデータのイベント・タイプを宣言します。

この要素は、wlevs:processor要素のみの子です。

C.7.1属性

表C-6は、wlevs:cache-sourceアプリケーション・アセンブリ要素の属性を示しています。

表C-6 wlevs:cache-sourceアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

ref

プロセッサ・コンポーネントのデータのソースであるキャッシュを指定します。

この属性は、キャッシュのid属性の値に設定します。

String

はい。

C.7.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:cache-source要素の使用方法を示しています。

<wlevs:caching-system id="caching-system-id"/>
...
<wlevs:cache id="cache-id"
name="alternative-cache-name"
value-type="Company">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>
<wlevs:channel id="stream-id"/>
<wlevs:processor id="processor-id">
<wlevs:cache-source ref="cache-id">
<wlevs:source ref="stream-id">
</wlevs:processor>

この例では、通常どおりstream-idチャネルからプロセッサにデータがプッシュされます。ただし、プロセッサ内で実行されるOracle CQLまたはEPL問合せは、cache-idキャッシュからデータをプルできます。問合せプロセッサがFROM句のイベント・タイプとキャッシュによって提供されたイベント・タイプ(Companyなど)を照合するとき、プロセッサはそのイベント・タイプのインスタンスをキャッシュからプルします。

C.8 wlevs:cache-store

キャッシュからバッキング・ストア(データベース内の表など)へのデータの書込みを処理するカスタム・ストアを実装するSpring Beanを指定します。

この要素は常にwlevs:cacheの子です。

C.8.1属性

表C-7は、wlevs:cache-storeアプリケーション・アセンブリ要素の属性を示しています。

表C-7 wlevs:cache-storeアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

ref

カスタム・ストアを実装するSpring Beanを指定します。

この属性は、Spring Beanのid属性の値に設定します。

Spring Beanはcom.bea.cache.jcache.CacheStoreインタフェースを実装する必要があります。

String

はい。

C.8.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:cache-store要素の使用方法を示しています。

<wlevs:cache id="cache-id" name="alternative-cache-name">
<wlevs:caching-system ref="caching-system-id"/>
<wlevs:cache-store ref="cache-store-id" />
</wlevs:cache>
...
<bean id="cache-store-id" class="wlevs.example.MyCacheStore"/>

この例では、com.bea.cache.jcache.CacheStoreインタフェースを実装するwlevs.example.MyCacheStoreクラスによって実装されるcache-store-id Spring Beanは、データベースなどのようなカスタム・ストアのBeanです。キャッシュは、wlevs:cache-store子要素のref属性で参照することによって、このストアを指定します。

C.9 wlevs:caching-system

アプリケーションで使用するキャッシング・システムを指定します。

C.9.1子要素

wlevs:caching-systemアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:instance-property

- wlevs:property

C.9.2属性

表C-8は、wlevs:caching-systemアプリケーション・アセンブリ要素の属性を示しています。

表C-8 wlevs:caching-systemアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

id

このキャッシング・システムの一意の識別子を指定します。

この識別子は、このキャッシング・システムのXML構成ファイル内の<name>要素に対応している必要があります。

String

はい。

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

provider

Oracle Coherenceなどのサード・パーティの実装を使用する場合は、キャッシング・システムのプロバイダを指定します。

<wlevs:caching-system id="myCachingSystem" provider=coherence" />

通常、この属性は、サード・パーティ・キャッシング・システムのインスタンスを作成するファクトリ・クラスを指定する<factory> Spring要素のprovider-name属性に対応します。

providerとclassのどちらの属性も指定しない場合、デフォルト値はローカルな単一JVMキャッシュ用Oracle Event Processingネイティブ・キャッシングの実装であり、この実装ではインメモリー・ストアを使用します。

String

いいえ。

class

このキャッシング・システムを実装するJavaクラスを指定します。この属性を使用して、Oracle Event Processingのネイティブの実装ではないサード・パーティの実装を指定します。

この属性を指定した場合、サード・パーティの実装コードがOracle Event Processingアプリケーション・バンドル自体の内部に存在すると想定されます。この属性が参照するクラス・ファイルは、com.bea.wlevs.cache.api.CachingSystemインタフェースを実装する必要があります。

providerとclassのどちらの属性も指定しない場合、デフォルト値はローカルな単一JVMキャッシュ用Oracle Event Processingネイティブ・キャッシングの実装であり、この実装ではインメモリー・ストアを使用します。

String

いいえ

C.9.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:caching-system要素の最も簡単な使用方法を示しています。

<wlevs:caching-system id="caching-system-id"/>

次の例は、ファクトリをプロバイダとして使用するサード・パーティの実装を指定する方法を示しています。

<wlevs:caching-system id ="caching-system-id" provider="caching-provider"/>
<factory id="factory-id" provider-name="caching-provider">
<class>the.factory.class.name</class>
</factory>

この例では、the.factory.class.nameは、サード・パーティ・キャッシング・システムを作成するためのファクトリです。wlevs:caching-systemのプロバイダ属性は、アプリケーションのキャッシング・システムの実装としてこのファクトリを参照します。

C.10 wlevs:channel

この要素を使用して、Springアプリケーション・コンテキストに対してチャネルを宣言します。

デフォルトでは、チャネルはイベントがシステム・タイムスタンプであることを想定します。アプリケーション・タイムスタンプのイベントを構成するには、wlevs:application-timestamped子要素を参照してください。

C.10.1子要素

wlevs:channelアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:listener

- wlevs:source

- wlevs:instance-property

- wlevs:property

- wlevs:application-timestamped

C.10.2属性

表C-9は、wlevs:channelアプリケーション・アセンブリ要素の属性を示しています。

表C-9 wlevs:channelアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

batching

イベントのバッチをイベント・チャネルで有効にするかどうかを指定します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

詳細は、10.1.6項「バッチ処理チャネル」を参照してください。

Boolean

いいえ。

event-type

イベント・チャネルを通過できるイベントのタイプを指定します。

String

はい。

id

このコンポーネントの一意の識別子。

この識別子は、このチャネルのXML構成ファイル内の<name>要素に対応している必要があります(その要素が存在する場合)。

String

はい。

is-relation

イベント・チャネルをパススルーできるイベントの種類を指定します。streamsおよびrelationsの2種類のイベントがサポートされています。Streamsは追加のみです。Relationsは、挿入、削除および更新処理をサポートします。

この属性のデフォルト値はfalseです。

Boolean

いいえ。

listeners

このコンポーネントをリスニングするコンポーネントを指定します。複数のコンポーネントはカンマを使用して区切ります。

この属性は、リスニング・コンポーネントを定義する要素(wlevs:adapter、wlevs:channelまたはwlevs:processor)のid属性に設定します。

String

いいえ。

max-size

このチャネルのFIFOバッファの最大サイズは、max-sizeイベント数と指定します。

max-size = 0の場合、チャネルはイベントを同期的にパススルーします。

max-size > 0の場合は、チャネルはリクエストされたサイズでイベントをバッファリングし、イベントを非同期で処理します。

max-threadsが0の場合、max-sizeは0です。

この属性のデフォルト値は1024です。

integer

いいえ。

max-threads

このチャネルのイベントを処理するために使用されるスレッドの最大数を指定します。

max-threads = 0の場合、チャネルはパススルーとして機能します。イベントの順序が維持されます。

max-threads > 0の場合、チャネルは従来のブロッキング・キューのように機能し、アップストリーム・コンポーネントがイベントのプロデューサ、ダウンストリーム・コンポーネントがイベントのコンシューマになります。キューのサイズはmax-sizeの構成によって定義されます。キューからイベントを消費するスレッドは、最大でmax-threadsの数までとなります。イベントの順序は確定できません。

max-threadsは、再デプロイすることなく0から正の整数に(つまり、パス・スルーから複数スレッドに)変更できます。しかし、max-threadsを正の整数から0に(つまり、複数スレッドからパス・スルーに)変更する場合は、アプリケーションを再デプロイする必要があります。

max-size属性が0の場合は、max-threadsの値の設定には影響がありません。

この属性のデフォルト値は1です。

integer

いいえ。

primary-key

リレーションの主キーを「,」または空白で区切ったイベント・プロパティ名のリストとして指定します。

詳細は、10.1.2.2項「リレーションとしてのチャネル」を参照してください。

String

いいえ。

provider

ストリーム・プロバイダを指定します。

有効な値:

- oracle.channel

デフォルト値は、すぐに使用できるように用意されているストリーミング・プロバイダであるoracle.channelです。

String

いいえ。

source

チャネルのイベント・ソースとなるコンポーネントを指定します。

この属性は、ソース・コンポーネントを定義する要素(wlevs:adapter、wlevs:channelまたはwlevs:processor)のid属性に設定します。

String

いいえ。

C.10.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:channel要素の使用方法を示しています。

<wlevs:channel id="fxMarketAmerOut" />

この例は、fxMarketAmerOutという一意の識別子を持つチャネル・サービスを宣言する方法を示しています。

C.11 wlevs:class

この要素を使用して、イベント・タイプ実装として使用するJavaBeanクラスの完全修飾名を指定します。この要素は、wlevs:event-type要素の子である必要があります。

C.11.1 例

次の例は、EPNアセンブリ・ファイルでのwlevs:class要素の使用方法を示しています。

<wlevs:event-type-repository>
<wlevs:event-type type-name="SimpleEvent">
<wlevs:class>com.example.myapp.MyEventType</wlevs:class>
</wlevs:event-type>
...
</wlevs:event-type-repository>

C.12 wlevs:event-bean

この要素を使用して、イベントBeanがイベント処理ネットワーク(EPN)の一部であることをSpringアプリケーション・コンテキストに対して宣言します。イベントBeanはOracle Event Processingコンテナによって管理されます。これは、Spring BeanがSpringフレームワークによって管理されるのと似ています。多くの点で、イベントBeanとSpring Beanは類似しており、EPNでどちらを使用するかは開発者の判断に任されています。Springへのレガシー統合にはSpring Beanを使用します。Oracle Event Processingの追加機能を最大限活用するには、イベントBeanを使用します。

たとえば、Oracle Event Processingモニタリング・フレームワークを使用してイベントBeanをモニターできます。また、構成フレームワーク・メタデータ注釈を利用したり、イベントBeanで渡されるイベントを記録および再生することもできます。イベントBeanは、Oracle Event Processing APIインタフェースを実装するのではなく、EPNアセンブリ・ファイル宣言にメソッドを指定することによって、Oracle Event Processing Beanライフサイクルに参加することもできます。

C.12.1子要素

wlevs:event-beanアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:listener

- wlevs:instance-property

- wlevs:property

C.12.2属性

表C-10は、wlevs:event-beanアプリケーション・アセンブリ要素の属性を示しています。

表C-10 wlevs:event-beanアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

id

このコンポーネントの一意の識別子。

この識別子は、このイベントBeanのXML構成ファイル内の<name>要素に対応している必要があります(その要素が存在する場合)。

String

はい。

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

listeners

このコンポーネントをリスニングするコンポーネントを指定します。

この属性は、コンポーネントを宣言した要素のid属性の値に設定します。

String

いいえ。

class

このイベントBeanを実装するJavaクラスを指定します。BeanによるOracle Event Processingインタフェースの実装は必要ありません。

providerまたはclass属性のどちらかを指定する必要がありますが、両方は指定できません。両方を指定すると例外が発生します。

provider

サービス・プロバイダを指定します。

この場合、この特定のプロバイダ名で登録されたEDEファクトリがアプリケーション内に存在する必要があります。

providerまたはclass属性のどちらかを指定する必要がありますが、両方は指定できません。両方を指定すると例外が発生します。

String

いいえ。

onevent-method

ライフサイクルのonEventメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle Event Processingは、イベントBeanがイベントを受け取ったときにこのメソッドを呼び出します。

このライフサイクル属性を使用すると、イベントBean実装によるOracle Event Processingインタフェースの明示的な実装は必要ありません。

String

いいえ

init-method

ライフサイクルのinitメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle Event Processingは、指定されたすべてのインスタンス・プロパティを設定した後、このメソッドを呼び出します。このメソッドを使用すると、Beanインスタンスは、すべてのBeanプロパティが設定済であるときに限って可能な初期化を実行し、構成が正しくない場合は例外をスローできます。

このライフサイクル属性を使用すると、イベントBean実装によるOracle Event Processingインタフェースの明示的な実装は必要ありません。

String

いいえ

activate-method

ライフサイクルのactivateメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle Event Processingは、Beanの動的構成が完了した後で、このメソッドを呼び出します。このメソッドを使用すると、Beanインスタンスは、すべての動的Beanプロパティが設定済であり、かつEPNが接続済であるときに限って可能な初期化を実行できます。

このライフサイクル属性を使用すると、イベントBean実装によるOracle Event Processingインタフェースの明示的な実装は必要ありません。

String

いいえ

suspend-method

ライフサイクルのsuspendメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle Event Processingは、アプリケーションが一時停止されたときに、このメソッドを呼び出します。

このライフサイクル属性を使用すると、イベントBean実装によるOracle Event Processingインタフェースの明示的な実装は必要ありません。

String

いいえ

destroy-method

ライフサイクルのdestroyメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle Event Processingは、アプリケーションが停止したときに、このメソッドを呼び出します。

このライフサイクル属性を使用すると、イベントBean実装によるOracle Event Processingインタフェースの明示的な実装は必要ありません。

String

いいえ

C.12.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:event-bean要素の使用方法を示しています。

<wlevs:event-bean id="myBean" class="com.customer.SomeEventBean" >
<wlevs:listener ref="myProcessor" />
</wlevs:event-bean>

この例では、myBeanというイベントBeanがクラスcom.customer.SomeEventBeanを使用して実装されています。myProcessorというコンポーネントがmyBeanイベントBeanからイベントを受け取ります。

C.13 wlevs:event-type

Oracle Event Processingアプリケーションで使用するイベント・タイプの定義を指定します。アプリケーションのイベント・タイプを定義したら、定義したイベント・タイプをアダプタ・クラスおよびビジネス・クラスのPOJO内で、またOracle CQLルールで参照できます。

次の方法でイベント・タイプを定義できます。

- イベント・タイプを表現するJavaBeanクラスを作成し、その完全修飾したクラス名を、wlevs:class子要素を使用して指定します。

- wlevs:properties子要素を使用して、イベント・タイプのプロパティを宣言的に指定します。

wlevs:classまたはwlevs:propertiesのどちらかをwlevs:event-typeの子として指定できますが、両方を同時に指定できません。

ベスト・プラクティスは、wlevs:class子要素を使用してイベント・タイプを定義することです。そうすることで、指定したJavaBeanクラスを再利用でき、イベント・タイプの形を正確に制御できます。

C.13.1子要素

wlevs:event-typeアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:class

- wlevs:metadata (非推奨)

- wlevs:properties

- wlevs:property

C.13.2属性

表C-11は、wlevs:event-typeアプリケーション・アセンブリ要素の属性を示しています。

表C-11 wlevs:event-typeアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

id

このイベント・タイプの一意の識別子を指定します。

この属性を指定しない場合は、Oracle Event Processingによって識別子が自動的に生成されます。

String

いいえ。

type-name

このイベント・タイプの名前を指定します。

これは、アダプタ、ビジネスPOJO、またはOracle CQLやEPLルール内でイベント・タイプを参照するときに使用する名前です。

String

はい。

object-support

Javaオブジェクトを完全にサポートするかどうかを指定します。設定できる値はtrue、falseおよびobject-relationalで、デフォルト値はobject-relationalです。

falseに設定すると、Javaプリミティブ・ラッパー(java.lang.Integerなど)およびjava.lang.Stringはプリミティブ・タイプとしてのみ処理されます。

trueに設定すると、Javaプリミティブ・ラッパーはクラスとして処理されます。

object-relationalに設定すると、

String

いいえ。

C.13.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:event-type要素の使用方法を示しています。

<wlevs:event-type-repository>
<wlevs:event-type type-name="SimpleEvent">
<wlevs:properties>
<wlevs:property name="msg" type="char" />
<wlevs:property name="count" type="long" />
<wlevs:property name="time_stamp" type="timestamp" />
</wlevs:properties>
</wlevs:event-type>
...
</wlevs:event-type-repository>

この例では、イベント・タイプの名前はSimpleEventで、その定義はwlevs:propertyによって決定されます。type属性の値はcom.bea.wlevs.ede.api.Typeクラスに適合する必要があります。

詳細は、9.2.2項「イベント・タイプのデータ型の選択」を参照してください。

C.14 wlevs:event-type-repository

この要素を使用して、複数のwlevs:event-type要素をまとめてグループ化します。各要素は、アプリケーション全体で使用するイベント・タイプを登録するために使用されます。

この要素には、属性はありません。

C.14.1子要素

wlevs:event-type-repositoryアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:event-type

C.14.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:event-type-repository要素の使用方法を示しています。

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:class>
com.bea.wlevs.event.example.helloworld.HelloWorldEvent
</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>

この例では、wlevs:event-type-repository要素で単独のwlevs:event-type要素をグループ化し、HelloWorldEventという1つのイベント・タイプを宣言しています。詳細は、C.13項「wlevs:event-type」を参照してください。

C.15 wlevs:expression

イベント処理のアプリケーション・タイムスタンプとして使用するwlevs:application-timestampedに算術式を指定するためにこの要素を使用します。

詳細は、『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のarith_exprに関する項を参照してください。

C.15.1 例

次の例は、明示的にアプリケーション・タイムスタンプのチャネルを指定するために、EPNアセンブリ・ファイルでのwlevs:expression要素を使用する方法について説明します。

<wlevs:channel id="fxMarketAmerOut" >
<wlevs:application-timestamped>
<wlevs:expression>mytime + 10</wlevs:expression>
</wlevs:application-timestamped>
</wlevs:channel>

この例では、wlevs:expression要素は各イベントにタイムスタンプを割り当てるために使用する算術式を定義します。

C.16 wlevs:factory

この要素を使用して、ファクトリ・クラスをサービスとして登録します。この要素を使用することによりアプリケーションのSpring-OSGiインタフェースへの依存を軽減します。

このファクトリのJavaソースでcom.bea.wlevs.ede.api.Factoryインタフェースを実装する必要があります。

ファクトリ要素ではサービスのプロパティを指定できません。サービスのプロパティを指定する必要がある場合は、かわりにSpring- OSGi osgi:service要素を使用する必要があります。

この要素には、子要素はありません。

C.16.1属性

表C-12は、wlevs:factoryアプリケーション・アセンブリ要素の属性を示しています。

表C-12 wlevs:factoryアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

class

ファクトリを実装するJavaクラスを指定します。このクラスは、com.bea.wlevs.ede.api.Factoryインタフェースを実装する必要があります。

String

はい。

provider-name

このプロバイダの名前を指定します。後で、このファクトリを使用するコンポーネント内でこの名前を参照します。

String

はい。

C.16.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:factory要素の使用方法を示しています。

<wlevs:factory provider-name="myEventSourceFactory"
class="com.customer.MyEventSourceFactory" />

この例では、com.customer.MyEventSourceFactoryによって実装されたファクトリは、myEventSourceFactoryというプロバイダ名になっています。

C.17 wlevs:function

この要素を使用して、プロセッサ用のユーザー定義の関数を含むBeanを指定します。Oracle Event Processingは「単一行」および「集計」関数の両方をサポートします。

この要素は常に、ユーザー定義の関数を実装するSpringbeanを指定する参照または子としてSpringの標準bean要素を持ちます。

Oracle CQLプロセッサ上の単一行関数については、exec-method属性を使用して、実装クラスに1つのメソッドを関数として指定します。この場合は、メソッドはパブリックであり、一意の名前を持つ(つまり、メソッドをオーバーライドできない状態である)ことが必要です。function-name属性を使用して、exec-method名の別名を指定できます。Oracle CQL問合せでは、exec-method (名前またはfunction-name別名による)のみをコールします。

EPLプロセッサ上の単一行関数については、function-name属性を使用して、実装クラス名の別名を指定できます。この場合、exec-method名は適用できません。EPL問合せでは、実装クラス名またはfunction-name別名を使用して実装クラスにいずれかのパブリックまたは静的メソッドをコールします。

Oracle CQLまたはEPLプロセッサ上の集計関数については、Spring beanはcom.bea.wlevs.processorパッケージからの次のインタフェースを実装する必要があります。

- AggregationFunctionFactory

- AggregationFunction

集計関数については、Oracle CQLおよびEPLの両方のプロセッサに対してexec-method属性は適用できません。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のユーザー定義関数に関する項

- 『Oracle Fusion Middleware Oracle Event Processing EPL言語リファレンス』のEPL参照: 関数に関する項

C.17.1属性

表C-13は、wlevs:functionアプリケーション・アセンブリ要素の属性を示しています。

表C-13 wlevs:functionアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

exec-method

Oracle CQLプロセッサ上のユーザー定義の「単一行」関数について、この要素は、関数を実装するSpring beanのメソッド名を指定します。この場合は、メソッドはパブリックであり、一意の名前を持つ(つまり、メソッドをオーバーライドできない状態である)ことが必要です。

EPLプロセッサ上のユーザー定義の単一行または集計関数あるいはOracle CQLプロセッサ上のユーザー定義の集計関数については、この属性は適用できません。

String

いいえ。

function-name

Oracle CQLプロセッサ上のユーザー定義の単一行関数については、この属性を使用してexec-method名の別名を定義します。そうすると、Oracle CQL問合せでは、exec-nameのかわりにfunction-nameが使用できます。

EPLプロセッサ上のユーザー定義の単一行関数については、この属性を使用して実装のSpring beanクラス名の別名を定義します。そうすると、EPL問合せでは、Spring beanクラス名のかわりにfunction-nameが使用でき、Spring beanクラスが実装するいずれかのパブリックまたは静的メソッドを呼び出すこともできます。

Oracle CQLまたはEPLプロセッサ上のユーザー定義の集計関数については、この属性を使用して実装のSpring beanクラス名の別名を定義します。そうすると、EPL問合せでは、Spring beanクラス名のかわりにfunction-nameが使用できます。

デフォルト値はSpring Bean名です。

String

いいえ。

ref

関数を実装するSpringbeanを指定します。

この属性は、Springbeanのid属性の値に設定します。

Spring bean要素をwlevs:function要素の子とするかわりに使用できます。

String

いいえ。

C.17.2 例

次の例は、Oracle CQLおよびEPLプロセッサでのwlevs:function要素およびその属性の使用方法を示しています。

- C.17.2.1項「Oracle CQLプロセッサ上の単一行のユーザー定義関数」

- C.17.2.2項「EPLプロセッサ上の単一行のユーザー定義関数」

- C.17.2.3項「Oracle CQLプロセッサ上の集計のユーザー定義関数」

- C.17.2.4項「EPLプロセッサ上の集計のユーザー定義関数」

- C.17.2.5項「実装クラスの指定: ネストしたBeanまたはリファレンス」

C.17.2.1Oracle CQLプロセッサ上の単一行のユーザー定義関数

例C-1では、Oracle CQLプロセッサ上の単一行のユーザー定義関数の実装方法について説明します。

例C-1 単一行のユーザー定義関数実装クラス

package com.bea.wlevs.example.function;

public class MyMod {
public Object execute(int arg0, int arg1) {
return new Integer(arg0 % arg1);
}
}

例C-2では、EPNアセンブリ・ファイルでのOracle CQLプロセッサ上の単一行関数を定義するためにwlevs:functionを使用する方法について説明します。

例C-2 Oracle CQLプロセッサ上の単一行のユーザー定義関数

<wlevs:processor id="testProcessor">
<wlevs:listener ref="providerCache"/>
<wlevs:listener ref="outputCache"/>
<wlevs:cache-source ref="testCache"/>
<wlevs:function function-name="mymod" exec-method=”execute” />
<bean class="com.bea.wlevs.example.function.MyMod"/>
</wlevs:function>
</wlevs:processor>

例C-3では、Oracle CQL問合せでの関数の呼び出し方法について説明します。

例C-3 Oracle CQLプロセッサ上の単一行のユーザー定義関数の呼び出し

...
<view id="v1" schema="c1 c2 c3 c4"><![CDATA[
select
mymod(c1, 100), c2, c3, c4
from
S1
]]></view>
...
<query id="q1"><![CDATA[
select * from v1 [partition by c1 rows 1] where c4 - c3 = 2.3
]]></query>
...

C.17.2.2 EPLプロセッサ上の単一行のユーザー定義関数

例C-4では、EPLプロセッサ上の単一行のユーザー定義関数の実装方法について説明します。

例C-4 単一行のユーザー定義関数実装クラス

package com.bea.wlevs.example.function;

public class LegacyMathBean {
public Object square(Object[] args) {
...
}
public Object cube(Object[] args) {
...
}
}

例C-5では、EPNアセンブリ・ファイルでのEPLプロセッサ上の単一行関数を定義するためにwlevs:functionを使用する方法について説明します。

例C-5 EPLプロセッサ上の単一行のユーザー定義関数

<wlevs:processor id="testProcessor" provider="epl">
<wlevs:listener ref="providerCache"/>
<wlevs:listener ref="outputCache"/>
<wlevs:cache-source ref="testCache"/>
<wlevs:function function-name="math" />
<bean class="com.bea.wlevs.example.function.LegacyMathBean"/>
</wlevs:function>
</wlevs:processor>

C-6例では、EPL問合せでの関数の呼び出し方について説明します。

例C-6 EPLプロセッサ上の単一行のユーザー定義関数の呼び出し

<rule><![CDATA[
select math.square(inputValue) ...
]]></rule>

C.17.2.3 Oracle CQLプロセッサ上の集計のユーザー定義関数

例C-7では、Oracle CQLプロセッサに対するユーザー定義の集計関数の実装方法について説明します。

例C-7 集計のユーザー定義関数実装クラス

package com.bea.wlevs.test.functions;

import com.bea.wlevs.processor.AggregationFunction;
import com.bea.wlevs.processor.AggregationFunctionFactory;

public class Variance implements AggregationFunctionFactory, AggregationFunction {

private int count;
private float sum;
private float sumSquare;

public Class<?>[] getArgumentTypes() {
return new Class<?>[] {Integer.class};
}

public Class<?> getReturnType() {
return Float.class;
}

public AggregationFunction newAggregationFunction() {
return new Variance();
}

public void releaseAggregationFunction(AggregationFunction function) {
}

public Object handleMinus(Object[] params) {
if (params != null && params.length == 1) {
Integer param = (Integer) params[0];
count--;
sum -= param;
sumSquare -= (param * param);
}

if (count == 0) {
return null;
} else {
return getVariance();
}
}

public Object handlePlus(Object[] params) {
if (params != null && params.length == 1) {
Integer param = (Integer) params[0];
count++;
sum += param;
sumSquare += (param * param);
}

if (count == 0) {
return null;
} else {
return getVariance();
}
}

public Float getVariance() {
float avg = sum / (float) count;
float avgSqr = avg * avg;
float var = sumSquare / (float)count - avgSqr;
return var;
}

public void initialize() {
count = 0;
sum = 0.0F;
sumSquare = 0.0F;
}

}

例C-8では、EPNアセンブリ・ファイルでのOracle CQLプロセッサ上の集計関数を定義するためにwlevs:functionを使用する方法について説明します。

例C-8 Oracle CQLプロセッサ上の集計のユーザー定義関数

<wlevs:processor id="testProcessor">
<wlevs:listener ref="providerCache"/>
<wlevs:listener ref="outputCache"/>
<wlevs:cache-source ref="testCache"/>
<wlevs:function function-name="var">
<bean class="com.bea.wlevs.test.functions.Variance"/>
</wlevs:function>
</wlevs:processor>

例C-9では、Oracle CQL問合せでの関数の呼び出し方法について説明します。

例C-9 Oracle CQLプロセッサ上の集計のユーザー定義関数の呼び出し

...
<query id="uda6"><![CDATA[
select var(c2) from S4[range 3]
]]></query>
...

C.17.2.4 EPLプロセッサ上の集計のユーザー定義関数

例C-10では、EPLプロセッサに対するユーザー定義の集計関数の実装方法について説明します。

例C-10 集計のユーザー定義関数実装クラス

package com.bea.wlevs.test.functions;

import com.bea.wlevs.processor.AggregationFunction;
import com.bea.wlevs.processor.AggregationFunctionFactory;

public class Variance implements AggregationFunctionFactory, AggregationFunction {

private int count;
private float sum;
private float sumSquare;

public Class<?>[] getArgumentTypes() {
return new Class<?>[] {Integer.class};
}

public Class<?> getReturnType() {
return Float.class;
}

public AggregationFunction newAggregationFunction() {
return new Variance();
}

public void releaseAggregationFunction(AggregationFunction function) {
}

public Object handleMinus(Object[] params) {
if (params != null && params.length == 1) {
Integer param = (Integer) params[0];
count--;
sum -= param;
sumSquare -= (param * param);
}

if (count == 0) {
return null;
} else {
return getVariance();
}
}

public Object handlePlus(Object[] params) {
if (params != null && params.length == 1) {
Integer param = (Integer) params[0];
count++;
sum += param;
sumSquare += (param * param);
}

if (count == 0) {
return null;
} else {
return getVariance();
}
}

public Float getVariance() {
float avg = sum / (float) count;
float avgSqr = avg * avg;
float var = sumSquare / (float)count - avgSqr;
return var;
}

public void initialize() {
count = 0;
sum = 0.0F;
sumSquare = 0.0F;
}

}

例C-11では、EPNアセンブリ・ファイルでのEPLプロセッサ上の集計関数を定義するためにwlevs:functionを使用する方法について説明します。

例C-11 EPLプロセッサ上の集計のユーザー定義関数

<wlevs:processor id="testProcessor" provider="epl">
<wlevs:listener ref="providerCache"/>
<wlevs:listener ref="outputCache"/>
<wlevs:cache-source ref="testCache"/>
<wlevs:function function-name="var">
<bean class="com.bea.wlevs.test.functions.Variance"/>
</wlevs:function>
</wlevs:processor>

C-12例では、EPL問合せでの関数の呼び出し方について説明します。

例C-12 EPLプロセッサ上の集計のユーザー定義関数の呼び出し

...
<rule><![CDATA[
select var(c2) from S4
]]></rule>
...

C.17.2.5実装クラスの指定: ネストしたBeanまたはリファレンス

C-13例は、EPNアセンブリ・ファイルでのネストされたbeanを持つwlevs:function要素の使用方法を示しています。

例C-13 ネストしたBean要素を使用するユーザー定義関数

<wlevs:processor id="testProcessor">
<wlevs:listener ref="providerCache"/>
<wlevs:listener ref="outputCache"/>
<wlevs:cache-source ref="testCache"/>
<wlevs:function function-name="testfunction">
<bean class="com.bea.wlevs.example.cache.function.TestFunction"/>
</wlevs:function>
</wlevs:processor>

例C-14では、EPNアセンブリ・ファイルでのwlevs:function要素以外で定義されたbean要素を参照するために、wlevs:function要素とそのref属性を使用する方法について説明します。

例C-14 リファレンスを使用するユーザー定義関数

<wlevs:processor id="testProcessor">
<wlevs:listener ref="providerCache"/>
<wlevs:listener ref="outputCache"/>
<wlevs:cache-source ref="testCache"/>
<wlevs:function function-name="testfunction" ref="testFunctionID" />
</wlevs:processor>
...
<bean id="testFunctionID" class="com.bea.wlevs.example.cache.function.TestFunction"/>

C.18 wlevs:instance-property

この要素は子要素であるコンポーネントのcreateステージ・インスタンスに適用するプロパティを指定します。これにより、ユーザー定義のステージ・プロパティの宣言的な構成が可能になります。

たとえば、wlevs:instance-propertyをwlevs:event-beanに指定する場合、Oracle Event Processingでは該当するsetterメソッドはクラスをインスタンス化するcom.bea.wlevs.spring.EventBeanFactoryBeanではなく、実装するJavaクラスで検索されます。ファクトリのプロパティを指定するには、wlevs:propertyを使用します。

この要素は、wlevs:adapter、wlevs:event-bean、wlevs:processor、wlevs:channelまたはwlevs:caching-systemの子としてのみ使用されます。

wlevs:instance-property要素は、Spring propertyType型として定義されます。このSpringデータ型の詳細や、使用可能な子要素の定義などは、http://www.springframework.org/schema/beans/spring-beans-2.0.xsdを参照してください。

C.18.1子要素

次のいずれかのSpring標準要素をwlevs:instance-property要素の子要素として指定できます。

- meta

- bean

- ref

- idref

- value

- null

- list

- set

- map

- props

C.18.2属性

表C-14は、wlevs:instance-propertyアプリケーション・アセンブリ要素の属性を示しています。

表C-14 wlevs:instance-propertyアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

name

JavaBeanのネーミング・ルールに従ってプロパティの名前を指定します。

String

はい。

ref

ネストされた<ref bean='...'/>要素へのショートカットです。

String

いいえ。

value

ネストされた<value>...</value>要素へのショートカットです。

String

いいえ。

C.18.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:instance-property要素の使用方法を示しています。

<wlevs:event-bean id="pubsubCounterBeanRemote"
class="com.oracle.cep.example.httppubsub.RemoteEventCounter">
<wlevs:listener ref="pubsubRemote" />
<wlevs:instance-property name="expectedEvents" value="4000" />
</wlevs:event-bean>

この例では、イベントBean com.oracle.cep.example.httppubsub.RemoteEventCounterクラスから該当するsetterメソッドが提供されます。

...
private int expectedEvents;

public void setExpectedEvents(String expectedEvents) {
this.expectedEvents = new Integer(expectedEvents).intValue();
}
...

instance-propertyはStringタイプです。これは必要に応じてsetterメソッドで変換します。この例では、Stringはint値に変換されます。

setterメソッドの名前はJavaBeanネーミング・ルールに準拠している必要があります。この例では、setter名はsetExpectedEventsであり、これはJavaBeanのルールにより、wlevs:instance-property要素のname属性値expectedEventsに対応しています。name属性値がobjであり、setterメソッド名がsetObjectの場合、Oracle Event Processingから「無効なプロパティ」例外がスローされます。その場合、setter名はsetObjになります。

C.19 wlevs:listener

この要素を子とするコンポーネントにリスニングするコンポーネントを指定します。他の任意のコンポーネントのインスタンスをリスナーにできます。また、特定のwlevs:listenerコンポーネント内にコンポーネントの定義をネストして、親にリスニングするコンポーネントを指定できます。

注意:

ネストされた定義は、動的構成または動的モニターには使用できません。

この要素は、常にwlevs:adapter、wlevs:processor、wlevs:channelまたはwlevs:caching-systemの子です。

C.19.1属性

表C-15は、wlevs:listenerアプリケーション・アセンブリ要素の属性を示しています。

表C-15 wlevs:listenerアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

ref

親コンポーネントをリスニングするコンポーネントを指定します。

この属性は、リスナー・コンポーネントのid属性の値に設定します。

リスナーをネストする場合は、この属性を指定しないでください。

String

いいえ。

C.19.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:listener要素の使用方法を示しています。

<wlevs:processor id="helloworldProcessor">
<wlevs:listener ref="helloworldOutstream"/>
</wlevs:processor>

この例では、hellworldOutstreamコンポーネントはhelloworldProcessorコンポーネントにリスニングします。このEPNアセンブリ・ファイルには、一意の識別子がhelloworldOutstreamであるwlevs:adapter、wlevs:channelまたはwlevs:processor要素の宣言も含まれていると想定しています。

C.20 wlevs:metadata

フィールドをSpring entry要素のグループとしてリストし、イベント・タイプの定義を指定します。イベント・タイプをこの方法で定義すると、Oracle Event ProcessingによりJavaクラスが自動的に生成されます。

entry要素のkey属性を使用してフィールドの名前を指定し、value属性を使用して、フィールドのデータ型を表現するJavaクラスを指定します。

この要素はwlevs:event-type要素の子としてのみ使用されます。

wlevs:metadata要素は、Spring mapType型として定義されます。このSpringデータ型の詳細は、http://www.springframework.org/schema/beans/spring-beans-2.0.xsdを参照してください。

C.20.1子要素

wlevs:metadata要素は、1つ以上の標準Spring entry子要素を含むことができます。詳細は、http://www.springframework.org/schema/beans/spring-beans-2.0.xsdを参照してください。

C.20.2属性

表C-16は、wlevs:metadataアプリケーション・アセンブリ要素の属性を示しています。

表C-16 wlevs:metadataアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

key-type

ネストされたentry要素のJavaデータ型を表現するデフォルトの完全修飾したクラス名です。

この属性は、entry要素をネストした場合にのみ使用できます。

String

いいえ。

C.20.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:metadata要素の使用方法を示しています。

<wlevs:event-type type-name="ForeignExchangeEvent">
<wlevs:metadata>
<entry key="symbol" value="java.lang.String"/>
<entry key="price" value="java.lang.Double"/>
<entry key="fromRate" value="java.lang.String"/>
<entry key="toRate" value="java.lang.String"/>
</wlevs:metadata>
...
</wlevs:event-type>

この例では、wlevs:metadata要素は4つの標準Springentry要素をグループ化しています。これらの4つの要素は、ForeignExchangeEventの4つのフィールド、つまりsymbol、price、fromRateおよびtoRateを表現します。これらのフィールドのデータ型は、それぞれ、java.lang.String、java.lang.Double、java.lang.Stringおよびjava.lang.Stringです。

C.21 wlevs:processor

この要素を使用して、Springアプリケーション・コンテキストに対してプロセッサを宣言します。

C.21.1子要素

wlevs:processor Spring要素は、次の子要素をサポートします。

- wlevs:instance-property

- wlevs:listener

- wlevs:property

- wlevs:cache-source

- wlevs:table-source

- wlevs:function

C.21.2属性

表C-17は、wlevs:processorアプリケーション・アセンブリ要素の属性を示しています。

表C-17 wlevs:processorアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

id

このコンポーネントの一意の識別子。

この識別子は、このプロセッサのXML構成ファイルでの<name>要素に対応している必要があります。そうすることで、ネットワークのどのプロセッサ・コンポーネントに対してどのOracle CQLまたはEPLルールを実行するかをOracle Event Processingに指定します。

String

はい。

advertise

このサービスをOSGiレジストリに公開します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

listeners

このコンポーネントをリスニングするコンポーネントを指定します。

この属性は、コンポーネントを宣言した要素のid属性の値に設定します。

String

いいえ。

provider

Oracle CQL (Oracle Continuous Query Language)やEPL (Event Processor Language)など、プロセッサの言語プロバイダを指定します。

有効な値:

- epl

- cql

デフォルト値はcqlです。

String

いいえ。

queryURL

このプロセッサのOracle CQLまたはEPLルール定義ファイルを示すURLを指定します。

String.

いいえ。

C.21.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:processor要素の使用方法を示しています。

<wlevs:processor id="spreader" />

この例は、spreaderというIDを持つプロセッサを宣言する方法を示しています。つまり、このプロセッサのOracle CQLルールを含むプロセッサ構成ファイル内で、name要素に値spreaderが含まれている必要があります。そうすることで、この特定のプロセッサに対してどのOracle CQLまたはEPLルールを登録する必要があるかをOracle Event Processingに指定します。

C.22 wlevs:properties

イベント・タイプのプロパティのリストを定義します。この要素は、タプルまたはjava.util.Mapに基づくタイプなどのイベント・タイプを宣言的に定義するときに使用します。JavaBeanクラスから作成されたイベント・タイプの場合、クラスでアクセッサ・メソッドによってプロパティを定義できます。

C.22.1子要素

wlevs:propertiesアプリケーション・アセンブリ要素は、次の子要素をサポートしています。

- wlevs:property

C.22.2属性

表C-18は、wlevs:event-typeアプリケーション・アセンブリ要素の属性を示しています。

表C-18 wlevs:propertiesアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

type

このイベント・タイプの作成元のタイプを指定します。使用できる値はタプルとマップで、デフォルト値はタプルです。

この属性の値がmapの場合、Oracle Event Processingはイベント・タイプをjava.util.Mapインスタンスとしてインスタンス化します。それ以外の場合、タイプはタプルとしてインスタンス化されます。

String

いいえ。

C.22.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:properties要素の使用方法を示しています。

<wlevs:event-type-repository>
<wlevs:event-type type-name="SimpleEvent">
<wlevs:properties>
<wlevs:property name="msg" type="char" />
<wlevs:property name="count" type="long" />
<wlevs:property name="time_stamp" type="timestamp" />
</wlevs:properties>
</wlevs:event-type>
...
</wlevs:event-type-repository>

この例では、イベント・タイプの名前はSimpleEventで、その定義はwlevs:propertyによって決定されます。type属性の値はcom.bea.wlevs.ede.api.Typeクラスに適合する必要があります。

詳細は、9.2.2項「イベント・タイプのデータ型の選択」を参照してください。

C.23 wlevs:property

タプルまたはjava.util.Mapに基づくイベント・タイプなど、宣言的に作成するイベント・タイプのプロパティを定義します。このwlevs:property要素は、wlevs:properties要素の子として使用します。

この要素は、Spring beanプロパティ要素の拡張であるwlevs:property要素とは異なることに注意してください。この要素は常にwlevs:properties要素の子として使用する必要があります。

C.23.1属性

表C-19は、wlevs:propertyアプリケーション・アセンブリ要素の属性を示しています。

表C-19 wlevs:propertyアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

name

イベント・プロパティの名前。

String

はい。

type

イベント・プロパティのタイプ。

このイベント・タイプがタプルとして定義されている場合、タイプの属性値はcom.bea.wlevs.ede.api.Typeによって定義されているいずれかのOCEPネイティブ・タイプである必要があります。たとえば、bigint、boolean、byte, char、double、float、int、interval、object、sqlxml、timestamp、unknown、xmltypeなどです。

このイベント・タイプがマップとして定義されている場合、タイプの属性値は、イベント・タイプを定義するアプリケーションのクラス・ローダーで使用できるJavaクラスの完全修飾名です。Javaクラス名として使用する文字列は、Class.forName()と同じ規則に準拠する必要があります。さらに、Javaプリミティブも使用できます(int、floatなど)。

最後に、Javaクラス名に文字「[]」を追加して配列を指定できます。

String

はい。

length

プロパティが配列タイプの場合、これによって配列の長さが指定されます。タイプが配列ではない場合、および長さが指定されている場合、これは無視されます。

.

String

いいえ。

C.23.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:property要素の使用方法を示しています。

<wlevs:event-type-repository>
<wlevs:event-type type-name="SimpleEvent">
<wlevs:properties>
<wlevs:property name="msg" type="char" />
<wlevs:property name="count" type="long" />
<wlevs:property name="time_stamp" type="timestamp" />
</wlevs:properties>
</wlevs:event-type>
...
</wlevs:event-type-repository>

この例では、イベント・タイプの名前はSimpleEventで、その定義はwlevs:propertyによって決定されます。type属性の値はcom.bea.wlevs.ede.api.Typeクラスに適合する必要があります。

C.24 wlevs:property

イベント・タイプに適用するカスタム・プロパティを指定します。

たとえば、wlevs:propertyをwlevs:event-beanに指定する場合、Oracle Event Processingでは該当するsetterメソッドは実装するJavaクラスではなく、Javaクラスをインスタンス化するcom.bea.wlevs.spring.EventBeanFactoryBeanで検索されます。Javaクラスのプロパティを指定するには、wlevs:instance-propertyを使用します。

この要素は、wlevs:adapter、wlevs:event-bean、wlevs:event-type、wlevs:processor、wlevs:channelまたはwlevs:caching-systemの子としてのみ使用されます。

wlevs:property要素は、Spring propertyType型として定義されます。このSpringデータ型の詳細や、使用可能な子要素の定義などは、http://www.springframework.org/schema/beans/spring-beans-2.0.xsdを参照してください。

C.24.1子要素

次のいずれかのSpring標準要素をwlevs:property要素の子要素として指定できます。

- meta

- bean

- ref

- idref

- value

- null

- list

- set

- map

- props

C.24.2属性

表C-20は、wlevs:propertyアプリケーション・アセンブリ要素の属性を示しています。

表C-20 wlevs:propertyアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

name

JavaBeanのネーミング・ルールに従ってプロパティの名前を指定します。

String

はい。

ref

ネストされた<ref bean='...'/>要素へのショートカットです。

String

いいえ。

value

ネストされた<value>...</value>要素へのショートカットです。

String

いいえ。

C.24.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:property要素の使用方法を示しています。

<wlevs:event-type type-name="ForeignExchangeEvent">
<wlevs:metadata>
<entry key="symbol" value="java.lang.String"/>
<entry key="price" value="java.lang.Double"/>
</wlevs:metadata>
<wlevs:property name="builderFactory">
<bean id="builderFactory"
class="com.bea.wlevs.example.fx.ForeignExchangeBuilderFactory"/>
</wlevs:property>
</wlevs:event-type>

この例では、wlevs:property要素を使用して、ForeignExchangeEventのカスタム・プロパティbuilderFactoryを定義しています。このプロパティでは、Spring標準のbean要素を使用して、ForeignExchangeEventsを作成するためのファクトリとして使用されるSpring Beanを指定します。

C.25 wlevs:source

このコンポーネントのイベント・ソース、つまりイベントの発生元であるコンポーネントを指定します。イベント・ソースを指定することは、このコンポーネントを別のコンポーネントのイベント・リスナーとして指定するのと同等です。

また、特定のwlevs:sourceコンポーネント内にコンポーネントの定義をネストして、コンポーネント・ソースを指定できます。

注意:

ネストされた定義は、動的構成または動的モニターには使用できません。

この要素は、wlevs:channelまたはwlevs:processorの子です。

C.25.1属性

表C-21は、wlevs:sourceアプリケーション・アセンブリ要素の属性を示しています。

表C-21 wlevs:sourceアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

ref

この要素が子であるチャネルのソースを指定します。

この属性は、ソース・コンポーネントのid属性の値に設定します。

この属性は、ソースをネストする場合には指定しません。

String

いいえ。

C.25.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:source要素の使用方法を示しています。

<wlevs:channel id="helloworldInstream">
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>

この例では、idがhelloworldAdapterであるコンポーネントが、helloworldInstreamというチャネル・コンポーネントのソースです。

C.26 wlevs:table

1つ以上のプロセッサ・コンポーネントにデータを提供するリレーショナル・データベース表を指定します。プロセッサ・コンポーネントは、表を直接参照するOracle CQL問合せに関連付けられます。

C.26.1属性

表C-22は、wlevs:tableアプリケーション・アセンブリ要素の属性を示しています。

表C-22 wlevs:tableアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

id

このコンポーネントの一意の識別子。

この識別子は、この表のXML構成ファイル内の<name>要素に対応している必要があります。

String

はい。

event-type

イベント・タイプ・リポジトリで定義されているようにこの表に関連付けられているイベント・タイプです。

String

はい。

data-source

このデータベース表へのアクセスに使用されるOracle Event Processingサーバーの構成ファイルで定義されるリレーショナル・データ・ソース名です。

String

はい。

C.26.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:table要素の使用方法を示しています。

<wlevs:table id="Stock" event-type="StockEvent" data-source="StockDs" />

<wlevs:processor id="proc">
<wlevs:table-source ref="Stock" />
</wlevs:processor>

この例では、wlevs:processorはwlevs:table-source要素を使用して表を参照しています。

C.27 wlevs:table-source

このプロセッサ・コンポーネントにデータを提供するリレーショナル・データベース表を指定します。プロセッサ・コンポーネントは、表を直接参照するOracle CQL問合せに関連付けられます。

この要素は、wlevs:processor要素のみの子です。

C.27.1属性

表C-23は、wlevs:table-sourceアプリケーション・アセンブリ要素の属性を示しています。

表C-23 wlevs:table-sourceアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

ref

プロセッサ・コンポーネントのデータのソースであるリレーショナル・データベース表を指定します。

この属性は、wlevs:table要素のid属性の値に設定します。

String

はい。

C.27.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:table-source要素の使用方法を示しています。

<wlevs:table id="Stock" event-type="StockEvent" data-source="StockDs" />

<wlevs:processor id="proc">
<wlevs:table-source ref="Stock" />
</wlevs:processor>

D スキーマ参照: コンポーネント構成wlevs_application_config.xsd

この付録では、アダプタ、チャネル、キャッシュ・システムおよびイベントBeanなどのOracle Event Processingのアプリケーション・コンポーネントを構成するのに使用するXMLファイルの背後にあるスキーマである、wlevs_application_config.xsdスキーマの要素へのリファレンスを示します。

この付録の内容は次のとおりです。

- D.1項「Oracle Event Processingコンポーネント構成要素の概要」

- D.2項「accept-backlog」

- D.3項「active」

- D.4項「adapter」

- D.5項「amount」

- D.6項「application」

- D.7項「average-interval」

- D.8項「average-latency」

- D.9項「batch-size」

- D.10項「batch-time-out」

- D.11項「binding」

- D.12項「bindings (jms-adapter)」

- D.13項「bindings (processor)」

- D.14項「buffer-size」

- D.15項「buffer-write-attempts」

- D.16項「buffer-write-timeout」

- D.17項「cache」

- D.18項「caching-system」

- D.19項「channel」

- D.20項「channel (http-pub-sub-adapterの子要素)」

- D.21項「channel-name」

- D.22項「coherence-cache-config」

- D.23項「coherence-caching-system」

- D.24項「coherence-cluster-config」

- D.25項「collect-interval」

- D.26項「concurrent-consumers」

- D.27項「connection-jndi-name」

- D.28項「connection-encrypted-password」

- D.29項「connection-password」

- D.30項「connection-user」

- D.31項「database」

- D.32項「dataset-name」

- D.33項「delivery-mode」

- D.34項「destination-jndi-name」

- D.35項「destination-name」

- D.36項「destination-type」

- D.37項「diagnostic-profiles」

- D.38項「direction」

- D.39項「durable-subscription」

- D.40項「durable-subscription-name」

- D.41項「duration」

- D.42項「enabled」

- D.43項「encrypted-password」

- D.44項「end」

- D.45項「end-location」

- D.46項「event-bean」

- D.47項「event-type」

- D.48項「event-type-list」

- D.49項「eviction-policy」

- D.50項「fail-when-rejected」

- D.51項「group-binding」

- D.52項「heartbeat」

- D.53項「http-pub-sub-adapter」

- D.54項「idle-time」

- D.55項「inject-parameters」

- D.56項「jms-adapter」

- D.57項「jndi-factory」

- D.58項「jndi-provider-url」

- D.59項「listeners」

- D.60項「location」

- D.61項「max-latency」

- D.62項「max-size」

- D.63項「max-threads」

- D.64項「message-selector」

- D.65項「name」

- D.66項「netio」

- D.67項「num-threads」

- D.68項「offer-timeout」

- D.69項「param」

- D.70項「parameter」

- D.71項「params」

- D.72項「partition-order-capacity」

- D.73項「password」

- D.74項「playback-parameters」

- D.75項「playback-speed」

- D.76項「processor (EPL)」

- D.77項「processor (Oracle CQL)」

- D.78項「profile」

- D.79項「provider-name」

- D.80項「query」

- D.81項「record-parameters」

- D.82項「repeat」

- D.83項「rule」

- D.84項「rules」

- D.85項「schedule-time-range」

- D.86項「schedule-time-range-offset」

- D.87項「selector」

- D.88項「server-context-path」

- D.89項「server-url」

- D.90項「session-ack-mode-name」

- D.91項「session-transacted」

- D.92項「stage」

- D.93項「start」

- D.94項「start-location」

- D.95項「start-stage」

- D.96項「store-policy-parameters」

- D.97項「stream」

- D.98項「symbol」

- D.99項「symbols」

- D.100項「threshold」

- D.101項「throughput」

- D.102項「throughput-interval」

- D.103項「time-range」

- D.104項「time-range-offset」

- D.105項「time-to-live」

- D.106項「trace-parameters」

- D.107項「unit」

- D.108項「user」

- D.109項「value」

- D.110項「view」

- D.111項「work-manager」

- D.112項「work-manager-name」

- D.113項「write-behind」

- D.114項「write-none」

- D.115項「write-through」

D.1 Oracle Event Processingコンポーネント構成要素の概要

Oracle Event ProcessingはEPNアセンブリ・ファイルで宣言するコンポーネントの特性を定義するために使用する多数のコンポーネント構成要素を提供します。

D.1.1 要素の階層

最上位レベルのOracle Event Processingコンポーネント構成要素は次の階層で構成されます。

- config

- adapter(例D-1を参照)

- http-pub-sub-adapter (例D-2を参照)

- jms-adapter (例D-3を参照)

- processor (例D-4および例D-5を参照)

- stream (例D-6を参照)

- channel (例D-7を参照)

- event-bean (例D-8を参照)

- caching-system (例D-9を参照)

- coherence-caching-system (例D-10を参照)

- diagnostic-profiles (例D-11を参照)

例D-1 adapter要素の階層

adapter
name
record-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
batch-size
batch-time-out
playback-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
schedule-time-range
start
end
schedule-time-range-offset
start
duration
symbols
symbol
work-manager-name
netio
provider-name
num-threads
accept-backlog

例D-2 http-pub-sub-adapter要素の階層

http-pub-sub-adapter
name
record-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
batch-size
batch-time-out
playback-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
schedule-time-range
start
end
schedule-time-range-offset
start
duration
symbols
symbol
work-manager-name
netio
provider-name
num-threads
accept-backlog
One of:
server-context-path
server-url
channel (http-pub-sub-adapter Child Element)
event-type
user
One of:
password
encrypted-password

例D-3 jms-adapter要素の階層

jms-adapter
name
record-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
batch-size
batch-time-out
playback-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
schedule-time-range
start
end
schedule-time-range-offset
start
duration
event-type
jndi-provider-url
jndi-factory
connection-jndi-name
One of:
destination-jndi-name
destination-name
user
One of:
password
encrypted-password
connection-user
One of:
connection-password
connection-encrypted-password
work-manager
concurrent-consumers
message-selector
session-ack-mode-name
session-transacted
delivery-mode
bindings (jms-adapter)
group-binding
param
destination-type
durable-subscription
durable-subscription-name

例D-4 processor (EPL)要素の階層

processor (EPL)
name
record-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
batch-size
batch-time-out
playback-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
schedule-time-range
start
end
schedule-time-range-offset
start
duration
rules
rule
query
view
database
bindings (processor)
binding
params

例D-5 processor (Oracle CQL)要素の階層

processor (Oracle CQL)
name
record-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
batch-size
batch-time-out
playback-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
schedule-time-range
start
end
schedule-time-range-offset
start
duration
rules
rule
query
view
bindings (processor)
binding
params

例D-6 stream要素の階層

stream
name
record-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
batch-size
batch-time-out
playback-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
schedule-time-range
start
end
schedule-time-range-offset
start
duration
max-size
max-threads

例D-7 channel要素の階層

channel
name
record-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-threads
max-size
time-range
start
end
time-range-offset
start
duration
batch-size
batch-time-out
playback-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
schedule-time-range
start
end
schedule-time-range-offset
start
duration
inject-parameters
trace-parameters
max-size
max-threads
selector
heartbeat
partition-order-capacity
offer-timeout
fail-when-rejected

例D-8 event-bean要素の階層

event-bean
name
record-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
batch-size
batch-time-out
playback-parameters
dataset-name
event-type-list
event-type
provider-name
store-policy-parameters
parameter
name
value
max-size
max-threads
time-range
start
end
time-range-offset
start
duration
schedule-time-range
start
end
schedule-time-range-offset
start
duration

例D-9 caching-system要素の階層

caching-system
name
cache
name
max-size
eviction-policy
time-to-live
idle-time
One of:
write-none
write-through
write-behind
work-manager-name
batch-size
buffer-size
buffer-write-attempts
buffer-write-timeout
work-manager-name
listeners

例D-10 coherence-caching-system要素の階層

coherence-caching-system
name
coherence-cache-config
coherence-cluster-config

例D-11 diagnostic-profiles要素の階層

diagnostic-profiles
name
profile
name
enabled
start-stage
max-latency
name
collect-interval
amount
unit
start-location
application
stage
direction
end-location
application
stage
direction
average-latency
name
collect-interval
amount
unit
start-location
application
stage
direction
end-location
application
stage
direction
threshold
throughput
name
throughput-interval
amount
unit
average-interval
amount
unit
location
application
stage
direction

D.1.2 Oracle Event Processingコンポーネント構成ファイルの例

次に示すサンプルのコンポーネント構成ファイルはHellowWorldアプリケーションのものであり、様々なOracle Event Processing要素の使用方法を示しています。

<?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">
<processor>
<name>helloworldProcessor</name>
<rules>
<query id="helloworldRule">
<![CDATA[ select * from helloworldInputChannel [Now] ]]>
</query>
</rules>
</processor>
<channel>
<name>helloworldInputChannel</name>
<max-size>10000</max-size>
<max-threads>2</max-threads>
</channel>
<channel>
<name>helloworldOutputChannel</name>
<max-size>10000</max-size>
<max-threads>2</max-threads>
</channel>
</n1:config>

D.2 accept-backlog

この要素を使用すると、ソケット上で許可される待機中の接続の最大数を定義できます。この要素はnetio要素内でのみ適用できます。

D.2.1 子要素

accept-backlogコンポーネント構成要素には子要素はありません。

D.2.2 属性

accept-backlogコンポーネントには属性はありません。

D.2.3 例

次の例は、コンポーネント構成ファイル内のaccept-backlog要素の使用方法を示します。

<netio>        <provider-name>providerCache</provider-name>
<num-threads>1000</num-threads>
<accept-backlog>50</accept-backlog>
</netio>

D.3 active

イベント・トレースまたはイベント・インジェクションをオンにすることを指定するには、この要素をtrueに指定します。デフォルトはtrueです。

active要素の値がfalseの場合、channel-name値は無視されます。

イベント・トレースおよびイベント・インジェクションの詳細は、次を参照してください。

- 22.4項「イベントのトレース」

- 22.3項「イベントのインジェクト」

D.3.1 子要素

activeコンポーネント構成要素には子要素はありません。

D.3.2 属性

activeコンポーネント構成要素には属性はありません。

D.3.3 例

次の例に示すコンポーネント構成の一部は、イベント・トレース用にプロセッサを構成する方法を示しています。trace-parameters要素のactive子要素はトレースをオンにすることを指定し、channel-name要素はトレースされる要素の送信先のHTTPパブリッシュ・サブスクライブ(HTTP pub-sub)チャネルを指定します。

<processor>
<name>FindCrossRates</name>
<trace-parameters>
<active>true</active>
<channel-name>/NonClusteredServer/fx/FindCrossRates/output</channel-name>
</trace-parameters>
<rules>
<!-- Query rules omitted. -->
</rules>
</processor>

D.4 adapter

この要素を使用すると、カスタム・アダプタ・コンポーネントを定義できます。HTTPパブリッシュ・サブスクライバまたはJMSアダプタでは、特定のhttp-pub-sub-adapterおよびjms-adapter要素を使用します。

詳細は、第15章「カスタム・アダプタを使用した外部コンポーネントの統合」を参照してください。

D.4.1 子要素

adapterコンポーネント構成要素は、次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- symbols

- work-manager-name

- netio

D.4.2 属性

adapterコンポーネント構成要素には属性はありません。

D.4.3 例

次の例は、コンポーネント構成ファイル内のadapter要素の使用方法を示します。

<adapter>
<name>trackdata</name>
<symbols>
<symbol>BEAS</symbol>
<symbol>IBM</symbol>
</symbols>
</adapter>

この例では、adapterの一意の識別子はtrackdataです。

D.5 amount

この要素を使用すると、診断プロファイルの期間を定義できます。この要素は、次の要素のいずれかに適用できます。

- average-interval

- collect-interval

- throughput-interval

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.5.1 子要素

amountコンポーネント構成には子要素はありません。

D.5.2 属性

amountコンポーネントには属性はありません。

D.5.3 例

次の例は、コンポーネント構成ファイル内のamount要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<collect-interval>
<amount>1000</amount>
<unit>s</unit>
</collect-interval>
<name>testProfile0MaxLat</name>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.6 application

Oracle Event Processingサーバーが外部ステージに適用するアプリケーションのタイプを定義するためにこの要素を使用します。診断プロファイルでは、この要素は常にdiagnosticの値を持ちます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.6.1 子要素

applicationコンポーネント構成には子要素はありません。

D.6.2 属性

applicationコンポーネントには属性はありません。

D.6.3 例

次の例は、コンポーネント構成ファイル内のapplication要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<collect-interval>
<amount>1000</amount>
<unit>s</unit>
</collect-interval>
<name>testProfile0MaxLat</name>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.7 average-interval

メトリックを収集対象の時間間隔を定義するためにこの要素を使用します。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.7.1 子要素

average-intervalコンポーネント構成要素は次の子要素をサポートします。

- amount

- unit

D.7.2 属性

average-intervalコンポーネントには属性はありません。

D.7.3 例

次の例は、コンポーネント構成ファイル内のaverage-interval要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<throughput>
<throughput-interval>
<amount>100000</amount>
<unit>MICROSECONDS</unit>
</throughput-interval>
<average-interval>
<amount>100000000</amount>
<unit>NANOSECONDS</unit>
</average-interval>
<location>
<application>diagnostic</application>
<stage>AlertEventStream</stage>
<direction>INBOUND</direction>
</location>
</throughput>
</profile>
</diagnostic-profiles>

D.8 average-latency

診断プロファイルにおける平均待機時間の計算を定義するためにこの要素を使用します。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.8.1 子要素

average-latencyコンポーネント構成要素は、次の子要素をサポートします。

- name

- collect-interval

- start-location

- end-location

- threshold

D.8.2 属性

average-latencyコンポーネントには属性はありません。

D.8.3 例

次の例はコンポーネント構成ファイル内のaverage-latency要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<average-latency>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
<threshhold>
<amount>100</amount>
<unit>MILLISECONDS</unit>
</threshhold>
</average-latency>
</profile>
</diagnostic-profiles>

D.9 batch-size

この要素を使用すると、バッキング・ストアにライト・バックするためのストア・バッファから選択される更新数を定義できます。この要素は動的に変更されます。

D.9.1 子要素

batch-sizeコンポーネント構成要素には子要素はありません。

D.9.2 属性

batch-sizeコンポーネントには属性はありません。

D.9.3 例

次の例はコンポーネント構成ファイル内のbatch-size要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.10 batch-time-out

この要素を使用すると、イベント・ストアに書きこむ前にbatch-size回のイベントを累積するために、イベント・バッファが待機する秒数を定義できます。

D.10.1 子要素

batch-time-outコンポーネント構成要素には子要素はありません。

D.10.2 属性

batch-time-outコンポーネントには属性はありません。

D.10.3 例

次の例はコンポーネント構成ファイル内のbatch-time-out要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.11 binding

この要素を使用すると、EPLプロセッサ・コンポーネントにおいてパラメータ化されたOracle CQLまたはEPLルールの値を定義できます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のパラメータ化された問合せに関する項

- 『Oracle Fusion Middleware Oracle Event Processing EPL言語リファレンス』のパラメータ化された問合せに関する項

D.11.1 子要素

bindingコンポーネント構成要素は、次の子要素をサポートしています。

- params

D.11.2 属性

表D-1ではbindingコンポーネント構成要素の属性が一覧表示されています。

表D-1 bindingコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

このbindingを適用する対象のEPLルールの識別子です。

String

はい。

D.11.3 例

次の例は、コンポーネント構成ファイル内のbinding要素の使用方法を示します。

<processor>
<name>processor1</name>
<record-parameters>
<dataset-name>test1data</dataset-name>
<event-type-list>
<event-type>SimpleEvent</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>
<rules>
<rule id="rule1"><![CDATA[
select stockSymbol, avg(price) as percentage
from StockTick retain 5 events
where stockSymbol=?
having avg(price)  > ? or avg(price)  < ?
]]></rule>
</rules>
<bindings>
<binding id="rule1">
<params>BEAS,10.0,-10.0</params>
<params id="IBM">IBM,5.0,5.0</params>
</binding>
</bindings>
</processor>

D.12 bindings (jms-adapter)

com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanを使用して、ActiveActiveGroupBeanで作成された通知グループによって、Oracle Event Processingアプリケーションの受信JMSストリームをパーティション化できます。

この要素を使用して、通知グループを特定のmessage-selector値と関連付けます。

詳細は、25.1.2.2項「ActiveActiveGroupBean」を参照してください。

D.12.1 子要素

bindingsコンポーネント構成要素は、次の子要素をサポートしています。

- group-binding

D.12.2 属性

bindingsコンポーネントには属性はありません。

D.12.3 例

次の例は、コンポーネント構成ファイル内のbindings要素の使用方法を示します。

<jms-adapter>
<name>JMSInboundAdapter</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic1</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>true</session-transacted>
<message-selector>${CONDITION}</message-selector>
<bindings>
<group-binding group-id="ActiveActiveGroupBean_group1">
<param id="CONDITION">acctid > 400</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group2">
<param id="CONDITION">acctid BETWEEN 301 AND 400</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group3">
<param id="CONDITION">acctid BETWEEN 201 AND 300</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group4">
<param id="CONDITION">acctid <= 200</param>
</group-binding>
</bindings>
</jms-adapter>

この構成では、ActiveActiveGroupBean_group1を含むcluster要素、groups子要素でアプリケーションをOracle Event Processingサーバーにデプロイすると、CONDITIONパラメータがacctid > 400と定義され、acctidプロパティが400以上であるイベントがアプリケーションにより処理されます。

D.13 bindings (processor)

この要素を使用すると、プロセッサ・コンポーネントにおいて1つ以上のパラメータ化されたOracle CQLまたはEPLルールのバインドを定義できます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のパラメータ化された問合せに関する項

- 『Oracle Fusion Middleware Oracle Event Processing EPL言語リファレンス』のパラメータ化された問合せに関する項

D.13.1 子要素

bindingsコンポーネント構成要素は、次の子要素をサポートしています。

- binding

D.13.2 属性

bindingsコンポーネントには属性はありません。

D.13.3 例

次の例は、コンポーネント構成ファイル内のbindings要素の使用方法を示します。

<processor>
<name>processor1</name>
<record-parameters>
<dataset-name>test1data</dataset-name>
<event-type-list>
<event-type>SimpleEvent</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>
<rules>
<rule id="rule1"><![CDATA[
select stockSymbol, avg(price) as percentage
from StockTick retain 5 events
where stockSymbol=?
having avg(price)  > ? or avg(price)  < ?
]]></rule>
</rules>
<bindings>
<binding id="rule1">
<params>BEAS,10.0,-10.0</params>
<params id="IBM">IBM,5.0,5.0</params>
</binding>
</bindings>
</processor>

D.14 buffer-size

この要素を使用すると、内部ストア・バッファのサイズを定義できます。このバッファは、ストアに書き込む必要がある非同期更新を一時的に保存するために使用されます。動的更新はサポートしていません。

D.14.1 子要素

buffer-sizeコンポーネント構成要素には子要素はありません。

D.14.2 属性

buffer-sizeコンポーネントには属性はありません。

D.14.3 例

次の例はコンポーネント構成ファイル内のbuffer-size要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-behind>
<work-manager-name>JettyWorkManager</work-manager-name>
<batch-size>100</batch-size>
<buffer-size>100</buffer-size>
<buffer-write-attempts>100</buffer-write-attempts>
<buffer-write-timeout>100</buffer-write-timeout>
</write-behind>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

D.15 buffer-write-attempts

この要素を使用すると、ユーザー・スレッドがストア・バッファに書き込むために行う試行回数を定義できます。ユーザー・スレッドとは、キャッシュ・エントリの作成または更新を行うスレッドです。ユーザー・スレッドがストア・バッファに書き込むことができない場合(すべての書き込み試行が失敗した場合)、同期的にストアを起動します。この要素は動的に変更されます。

D.15.1 子要素

buffer-write-attemptsコンポーネント構成要素には子要素はありません。

D.15.2 属性

buffer-write-attemptsコンポーネントには属性はありません。

D.15.3 例

次の例は、コンポーネント構成ファイル内のbuffer-write-attempts要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-behind>
<work-manager-name>JettyWorkManager</work-manager-name>
<batch-size>100</batch-size>
<buffer-size>100</buffer-size>
<buffer-write-attempts>100</buffer-write-attempts>
<buffer-write-timeout>100</buffer-write-timeout>
</write-behind>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

D.16 buffer-write-timeout

この要素を使用するとユーザー・スレッドがストア・バッファへの書き込み試行を中断する前の待機時間をミリ秒単位で定義できます。ストア・バッファへの書き込み試行が失敗するのは、バッファがいっぱいの場合のみです。タイムアウト後は以降のバッファへの書き込み試行はbuffer-write-attemptsの値に基づいて行われます。この要素は動的に変更されます。

D.16.1 子要素

buffer-write-timeoutコンポーネント構成要素には子要素はありません。

D.16.2 属性

buffer-write-timeoutコンポーネントには属性はありません。

D.16.3 例

次の例はコンポーネント構成ファイル内のbuffer-write-timeout要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-behind>
<work-manager-name>JettyWorkManager</work-manager-name>
<batch-size>100</batch-size>
<buffer-size>100</buffer-size>
<buffer-write-attempts>100</buffer-write-attempts>
<buffer-write-timeout>100</buffer-write-timeout>
</write-behind>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

D.17 cache

この要素を使用するとコンポーネントのキャッシュを定義できます。キャッシュとはイベントの一時保存領域で、Oracle Event Processingアプリケーションの全体のパフォーマンスを向上するために排他的に作成されます。アプリケーションが正常に機能するためには必要ありません。Oracle Event Processingアプリケーションはオプションでイベントをキャッシュにパブリッシュしたりキャッシュから消費したりして、イベントの可用性およびアプリケーションのパフォーマンスを向上させることができます。

詳細は、13.3項「Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュの構成」を参照してください。

D.17.1 子要素

cacheコンポーネント構成要素は次の子要素をサポートしています。

- name

- max-size

- eviction-policy

- 存続時間

- idle-time

- 次のうちの1つ:

- write-none

- write-through

- write-behind

- work-manager-name

- listeners

D.17.2 属性

cacheコンポーネントには属性はありません。

D.17.3 例

次の例はコンポーネント構成ファイル内のcache要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-none/>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

D.18 caching-system

この要素を使用するとOracle Event Processingローカル・キャッシュ・システム・コンポーネントを定義できます。キャッシュ・システムとは、キャッシュ実装の構成されたインスタンスです。キャッシュ・システムは構成されたキャッシュの名前付きセットを定義すると共に任意のキャッシュが複数のマシンに渡って配信される場合、リモート通信用の構成を定義します。

詳細は、13.5.3項「イベント・リスナーとしてのキャッシュの構成」を参照してください。

D.18.1 子要素

caching-systemコンポーネント構成要素は次の子要素をサポートしています。

- name

- cache

D.18.2 属性

caching-systemコンポーネントには属性はありません。

D.18.3 例

次の例はコンポーネント構成ファイル内のcaching-system要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-none/>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

この例ではchannelの一意の識別子はproviderCachingSystemです。

D.19 channel

この要素を使用するとチャネル・コンポーネントを定義できます。Oracle Event Processingアプリケーションには1つ以上のチャネル・コンポーネントが含まれます。このコンポーネントはアダプタとプロセッサ間やプロセッサとイベントBean(ビジネス・ロジックPOJO)間のような他のコンポーネント同士をイベントが往来する物理的なパイプを表します。

D.19.1 子要素

channelコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- max-size

- max-threads

- selector

- heartbeat

- partition-order-capacity

D.19.2 属性

channelコンポーネントには属性はありません。

D.19.3 例

次の例は、コンポーネント構成ファイル内のchannel要素の使用方法を示します。

<channel>
<name>MatchOutputChannel</name>
<max-size>0</max-size>
<max-threads>0</max-threads>
<selector>match</selector>
</channel>

この例ではchannelの一意の識別子はMatchOutputChannelです。

D.20 channel (http-pub-sub-adapterの子要素)

channel要素を使用するとhttp-pub-sub-adapterがパブリッシュまたはサブスクライブする対象のチャネルを指定できます。いずれのチャネルもローカル/リモートであろうとパブリッシュ用/サブスクライブ用であろうとすべてのhttp-pub-sub-adapterに割り当てられます。

D.20.1 子要素

channelコンポーネント構成要素には子要素はありません。

D.20.2 属性

channelコンポーネントには属性はありません。

D.20.3 例

次の例は、コンポーネント構成ファイル内のchannel要素の使用方法を示します。

<http-pub-sub-adapter>
<name>localPublisher</name>
<server-context-path>/pubsub</server-context-path>
<channel>/channel2</channel>
</http-pub-sub-adapter>

この例ではlocalPublisherパブリッシュ/サブスクライブ・アダプタはパターン/channel2を用いてローカル・チャネルにパブリッシュします。

D.21 channel-name

この要素を使用すると、イベントをインジェクトするチャネルまたはトレースされたイベントを送信するチャネルの名前を指定できます。要素の値は、チャネルへのパスにする必要があります。次のデフォルト値のようなで形式で指定します(パスはスラッシュで始まる必要があります)。

- イベント・トレースの場合:
/serverID/appID/stageID/output

- イベント・インジェクションの場合:
/serverID/appID/stageID/input

active要素の値がfalseの場合、channel-name値は無視されます。

イベント・トレースおよびイベント・インジェクションの詳細は、次を参照してください。

- 22.4項「イベントのトレース」

- 22.3項「イベントのインジェクト」

D.21.1 子要素

channel-nameコンポーネント構成要素には子要素はありません。

D.21.2 属性

channel-nameコンポーネント構成要素には属性はありません。

D.21.3 例

次の例に示すコンポーネント構成の一部は、イベント・トレース用にプロセッサを構成する方法を示しています。trace-parameters要素のactive子要素はトレースをオンにすることを指定し、channel-name要素はトレースされる要素の送信先のHTTPパブリッシュ・サブスクライブ(HTTP pub-sub)チャネルを指定します。

<processor>
<name>FindCrossRates</name>
<trace-parameters>
<active>true</active>
<channel-name>/NonClusteredServer/fx/FindCrossRates/output</channel-name>
</trace-parameters>
<rules>
<!-- Query rules omitted. -->
</rules>
</processor>

D.22 coherence-cache-config

この要素を使用するとcoherence-caching-system用のOracle Coherenceキャッシュ構成を定義できます。

詳細は、13.3項「Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュの構成」を参照してください。

D.22.1 子要素

coherence-cache-configコンポーネント構成要素には子要素はありません。

D.22.2 属性

coherence-cache-configコンポーネントには属性はありません。

D.22.3 例

次の例は、コンポーネント構成ファイル内のcoherence-cache-config要素の使用方法を示します。

<coherence-caching-system>
<name>nativeCachingSystem</name>
<coherence-cache-config>
applications/cache_cql/coherence/coherence-cache-config.xml
</coherence-cache-config></coherence-caching-system>

D.23 coherence-caching-system

この要素を使用すると、Oracle Coherenceキャッシュ・システム・コンポーネントを定義できます。キャッシュ・システムとは、キャッシュ実装の構成されたインスタンスです。キャッシュ・システムは構成されたキャッシュの名前付きセットを定義すると共に任意のキャッシュが複数のマシンに渡って配信される場合、リモート通信用の構成を定義します。

詳細は、13.2項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」を参照してください。

D.23.1 子要素

coherence-caching-systemコンポーネント構成要素は次の子要素をサポートしています。

- name

- coherence-cache-config

- coherence-cluster-config

D.23.2 属性

coherence-caching-systemコンポーネントには属性はありません。

D.23.3 例

次の例はコンポーネント構成ファイル内のcoherence-caching-system要素の使用方法を示します。

<coherence-caching-system>
<name>nativeCachingSystem</name>
<coherence-cache-config>
applications/cache_cql/coherence/coherence-cache-config.xml
</coherence-cache-config>
</coherence-caching-system>

この例ではchannelの一意の識別子はnativeCachingSystemです。

D.24 coherence-cluster-config

この要素を使用するとcoherence-caching-system用のOracle Coherenceクラスタ構成を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingマルチサーバー・ドメイン管理の概要に関する項を参照してください。

D.24.1 子要素

coherence-cache-configコンポーネント構成要素には子要素はありません。

D.24.2 属性

coherence-cache-configコンポーネントには属性はありません。

D.24.3 例

次の例は、コンポーネント構成ファイル内のcoherence-cache-config要素の使用方法を示します。

<coherence-caching-system>
<name>nativeCachingSystem</name>
<coherence-cluster-config>
applications/cluster_cql/coherence/coherence-cluster-config.xml
</coherence-cluster-config></coherence-caching-system>

D.25 collect-interval

この要素を使用すると診断プロファイルにおいてaverage-latencyまたはmax-latency要素の収集間隔を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.25.1 子要素

collect-intervalコンポーネント構成要素は次の子要素をサポートしています。

- amount

- unit

D.25.2 属性

collect-intervalコンポーネントには属性はありません。

D.25.3 例

次の例はコンポーネント構成ファイル内のcollect-interval要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<collect-interval>
<amount>1000</amount>
<unit>s</unit>
</collect-interval>
<name>testProfile0MaxLat</name>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.26 concurrent-consumers

この要素を使用して、作成するコンシューマ数を定義します。デフォルト値は1です。

この値を1より大きい数字に設定した場合は、コンバータBeanがスレッド・セーフであることを確認してください。これは、コンバータBeanがコンシューマ間で共有されるためです。

concurrent-consumersが1より大きく、すべてのコンシューマを同時に実行する場合、このJMSアダプタと関連付けるwork-managerの構成方法を検討する必要があります。

- work-managerが他のコンポーネント(その他のアダプタおよびJetty)と共有されている場合、work-manager属性max-threads-constraintをconcurrent-consumersの設定以上に設定します。

- work-managerが共有されていない場合(つまり、この受信JMSアダプタ専用の場合)、work-manager属性max-threads-constraintをconcurrent-consumersと同じ設定にします。

詳細は、次を参照してください:

- 11.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」

- D.111項「work-manager」

D.26.1 子要素

concurrent-consumersコンポーネント構成要素には子要素はありません。

D.26.2 属性

concurrent-consumersコンポーネントには属性はありません。

D.26.3 例

次の例はコンポーネント構成ファイル内のconcurrent-consumers要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<connection-jndi-name>weblogic.jms.ConnectionFactory</connection-jndi-name>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

D.27 connection-jndi-name

この要素を使用するとJMS接続ファクトリのJNDI名を定義できます。Oracle Event ProcessingサーバーJMSのデフォルト値は、weblogic.jms.ConnectionFactoryです。

D.27.1 子要素

connection-jndi-nameコンポーネント構成要素には子要素はありません。

D.27.2 属性

connection-jndi-nameコンポーネントには属性はありません。

D.27.3 例

次の例はコンポーネント構成ファイル内のconnection-jndi-name要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<connection-jndi-name>weblogic.jms.ConnectionFactory</connection-jndi-name>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

D.28 connection-encrypted-password

connection-encrypted-password要素を使用すると、Oracle Event ProcessingがJMSサービス・プロバイダへの接続取得時に使用する暗号化されたjms-adapterパスワードを定義できます。

Oracle Event ProcessingがJMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合はconnection-encrypted-password要素を使用します。それ以外の場合は、Oracle Event Processingはuserおよびpassword(またはencrypted-password)要素を使用します。

connection-encrypted-passwordまたはconnection-passwordのいずれかを使用します。ただし、両方を使用することはできません。

詳細は、11.4項「JMSアダプタ構成ファイルでのパスワードの暗号化」を参照してください。

D.28.1 子要素

connection-encrypted-passwordコンポーネント構成要素には子要素はありません。

D.28.2 属性

connection-encrypted-passwordコンポーネントには属性はありません。

D.28.3 例

次の例はコンポーネント構成ファイル内のconnection-encrypted-password要素の使用方法を示します。

<http-pub-sub-adapter>
<name>remotePub</name>
<server-url>http://localhost:9002/pubsub</server-url>
<channel>/test1</channel>
<event-type>com.bea.wlevs.tests.httppubsub.PubsubTestEvent</event-type>
<user>wlevs</user>
<password>wlevs</password>
<connection-user>wlevscon</user>
<encrypted-password>{Salted-3DES}s4YUEvH4Wl2DAjb45iJnrw==</encrypted-password>
</http-pub-sub-adapter>

D.29 connection-password

connection-password要素を使用するとOracle Event ProcessingがJMSサービス・プロバイダへの接続取得時に使用するjms-adapterパスワードを定義できます。

Oracle Event ProcessingがJMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合はconnection-encrypted-password要素を使用します。それ以外の場合は、Oracle Event Processingはuserおよびpassword(またはencrypted-password)要素を使用します。

connection-passwordまたはconnection-encrypted-passwordのいずれかを使用します。ただし、両方を使用することはできません。

D.29.1 子要素

connection-passwordコンポーネント構成要素には子要素はありません。

D.29.2 属性

connection-passwordコンポーネントには属性はありません。

D.29.3 例

次の例はコンポーネント構成ファイル内のconnection-password要素の使用方法を示します。

<http-pub-sub-adapter>
<name>remotePub</name>
<server-url>http://localhost:9002/pubsub</server-url>
<channel>/test1</channel>
<event-type>com.bea.wlevs.tests.httppubsub.PubsubTestEvent</event-type>
<user>wlevs</user>
<password>wlevs</password>
<connection-user>wlevscon</user>
<connection-password>wlevscon</password>
</http-pub-sub-adapter>

D.30 connection-user

connection-user要素を使用するとOracle Event ProcessingがJMSサービス・プロバイダへの接続取得時に使用するjms-adapterのユーザー名を定義できます。

Oracle Event ProcessingがJMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合はconnection-encrypted-password要素を使用します。それ以外の場合は、Oracle Event Processingはuserおよびpassword(またはencrypted-password)要素を使用します。

アプリケーションでconnection-userおよびconnection-password(またはconnection-encrypted-password)の設定を使用できます。その場合、一方のセキュリティ・プロバイダはJNDIアクセスに使用され、JMSアクセスには別のセキュリティ・プロバイダが使用されます。

D.30.1 子要素

connection-userコンポーネント構成要素には子要素はありません。

D.30.2 属性

connection-userコンポーネントには属性はありません。

D.30.3 例

次の例はコンポーネント構成ファイル内のconnection-user要素の使用方法を示します

<http-pub-sub-adapter>
<name>remotePub</name>
<server-url>http://localhost:9002/pubsub</server-url>
<channel>/test1</channel>
<event-type>com.bea.wlevs.tests.httppubsub.PubsubTestEvent</event-type>
<user>wlevs</user>
<password>wlevs</password>
<connection-user>wlevscon</user>
<connection-password>wlevscon</password>
</http-pub-sub-adapter>

D.31 database

この要素を使用するとEPLプロセッサ・コンポーネントのデータベース参照を定義できます。

詳細は、第19章「Oracle EPLでのイベント・ストリームの問合せ」を参照してください。

D.31.1 子要素

databaseコンポーネント構成要素には子要素はありません。

D.31.2 属性

表D-2ではdatabaseコンポーネント構成要素の属性が一覧表示されています。

表D-2 databaseコンポーネント構成要素の属性

属性

説明

データ型

必須?

name

この問合せの一意の識別子です。

String

はい。

data-source-name

Oracle Event Processingサーバーのconfig.xmlファイルで定義されるデータ・ソース名です。

String

はい。

D.31.3 例

次の例は、コンポーネント構成ファイル内のdatabase要素の使用方法を示します。

<processor>
<name>proc</name>
<rules>
<rule id="rule1"><![CDATA[
SELECT symbol, price
FROM ExchangeEvent retain 1 event,
StockDb ('SELECT symbol FROM Stock WHERE symbol = ${symbol}')
]]></rule>
</rules>

<database name="StockDb" data-source-name="StockDs" />

</processor>

D.32 dataset-name

この要素を使用すると、ユーザーがグループ化する対象のデータのグループを定義できます。Oracle RDBMSベースのプロバイダの場合は、記録されたイベントを格納する表が作成されるデータベース領域またはスキーマを指定します。Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。

D.32.1 子要素

dataset-nameコンポーネント構成要素には子要素はありません。

D.32.2 属性

dataset-nameコンポーネントには属性はありません。

D.32.3 例

次の例は、コンポーネント構成ファイル内のdataset-name要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.33 delivery-mode

この要素を使用すると、jms-adapter用の配信モードを定義できます。

有効な値:

- persistent (デフォルト)

- nonpersistent

D.33.1 子要素

delivery-modeコンポーネント構成要素には子要素はありません。

D.33.2 属性

delivery-modeコンポーネントには属性はありません。

D.33.3 例

次の例は、コンポーネント構成ファイル内のdelivery-mode要素の使用方法を示します。

<jms-adapter>
<name>jmsOutbound-map</name>
<event-type>JMSTestEvent</event-type>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Topic1</destination-jndi-name>
<delivery-mode>nonpersistent</delivery-mode>
</jms-adapter>

D.34 destination-jndi-name

この必須要素を使用すると、jms-adapter用のJMS宛先名を定義できます。

JNDI名または実際のdestination-nameのいずれかを指定します。ただし、両方は指定できません。

D.34.1 子要素

destination-jndi-nameコンポーネント構成要素には子要素はありません。

D.34.2 属性

destination-jndi-nameコンポーネントには属性はありません。

D.34.3 例

次の例は、コンポーネント構成ファイル内のdestination-jndi-name要素の使用方法を示します。

<jms-adapter>
<name>jmsOutbound-map</name>
<event-type>JMSTestEvent</event-type>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-jndi-name>Topic1</destination-jndi-name>
<delivery-mode>nonpersistent</delivery-mode>
</jms-adapter>

D.35 destination-name

この必須要素を使用すると、jms-adapter用のJMS宛先名を定義できます。

実際の宛先名またはdestination-jndi-nameのいずれかを指定します。ただし、両方は指定できません。

D.35.1 子要素

destination-nameコンポーネント構成要素には子要素はありません。

D.35.2 属性

destination-nameコンポーネントには属性はありません。

D.35.3 例

次の例は、コンポーネント構成ファイル内のdestination-name要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<connection-jndi-name>weblogic.jms.ConnectionFactory</connection-jndi-name>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

D.36 destination-type

この要素を使用すると、jms-adapter用のJMS宛先タイプを定義できます。有効な値はTOPICまたはQUEUEです。durable-subscriptionプロパティがtrueに設定されている場合は常に、このプロパティをTOPICに設定する必要があります。

D.36.1 子要素

destination-typeコンポーネント構成要素には子要素はありません。

D.36.2 属性

destination-typeコンポーネントには属性はありません。

D.36.3 例

次の例は、コンポーネント構成ファイル内のdestination-type要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<connection-jndi-name>weblogic.jms.ConnectionFactory</connection-jndi-name>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<destination-type>TOPIC</destination-name>
<durable-subscription>true</durable-subscription>
<durable-subscription-name>JmsDurableSubscription</durable-subscription-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

D.37 diagnostic-profiles

この要素を使用すると、1つ以上のOracle Event Processing診断プロファイルを定義できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.37.1 子要素

diagnostics-profilesコンポーネント構成要素は、次の子要素をサポートしています。

- name

- profile

D.37.2 属性

diagnostics-profilesコンポーネントには属性はありません。

D.37.3 例

次の例は、コンポーネント構成ファイル内のdiagnostics-profiles要素の使用方法を示します。

<diagnostics-profiles>
<name>myDiagnosticProfiles</name>
<profile>
...
</profile>
</diagnostics-profiles>

この例ではchannelの一意の識別子はmyDiagnosticProfilesです。

D.38 direction

この要素を使用すると、診断プロファイルのend-location またはstart-locationに関する方向を定義できます。

有効な値:

- INBOUND

- OUTBOUND

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.38.1 子要素

directionコンポーネント構成には子要素はありません。

D.38.2 属性

directionコンポーネントには属性はありません。

D.38.3 例

次の例は、コンポーネント構成ファイル内のdirection要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<collect-interval>
<amount>1000</amount>
<unit>s</unit>
</collect-interval>
<name>testProfile0MaxLat</name>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.39 durable-subscription

この要素を使用すると、jms-adapterのJMSトピック・サブスクリプションが恒久的であるかどうか、つまりサブスクライバが非アクティブになった場合も永続化できるかどうかを指定できます。有効な値は、trueまたはfalseです。このプロパティは、destination-typeがTOPICに設定されている場合にのみ有効です。

D.39.1 子要素

durable-subscriptionコンポーネント構成要素には子要素はありません。

D.39.2 属性

durable-subscriptionコンポーネントには属性はありません。

D.39.3 例

次の例は、コンポーネント構成ファイル内のdurable-subscription要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<connection-jndi-name>weblogic.jms.ConnectionFactory</connection-jndi-name>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<destination-type>TOPIC</destination-name>
<durable-subscription>true</durable-subscription>
<durable-subscription-name>JmsDurableSubscription</durable-subscription-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

D.40 durable-subscription-name

この要素を使用すると、jms-adapterの恒久サブスクリプションを一意に識別するための名前を指定できます。恒久サブスクリプションは、サブスクライバが非アクティブになった場合も永続化できます。

D.40.1 子要素

durable-subscription-nameコンポーネント構成要素には子要素はありません。

D.40.2 属性

durable-subscription-nameコンポーネントには属性はありません。

D.40.3 例

次の例は、コンポーネント構成ファイル内のdurable-subscription-name要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<connection-jndi-name>weblogic.jms.ConnectionFactory</connection-jndi-name>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<destination-type>TOPIC</destination-name>
<durable-subscription>true</durable-subscription>
<durable-subscription-name>JmsDurableSubscription</durable-subscription-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

D.41 duration

この要素を使用すると、schedule-time-range-offsetまたはtime-range-offset要素の期間を次の形式で定義できます。

HH:MM:SS

ここで、HHは時間数、MMは分数、SSは秒数です。

D.41.1 子要素

durationコンポーネント構成要素には子要素はありません。

D.41.2 属性

durationコンポーネントには属性はありません。

D.41.3 例

次の例はコンポーネント構成ファイル内のduration要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<time-range-offset>
<start>2010-01-20T05:00:00</start>
<duration>03:00:00</duration>
</time-range-offset>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.42 enabled

この要素を使用すると、診断プロファイルを有効化するかどうかを定義できます。

有効な値:

- true

- false

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.42.1 子要素

enabledコンポーネント構成要素には子要素はありません。

D.42.2 属性

enabledコンポーネントには属性はありません。

D.42.3 例

次の例はコンポーネント構成ファイル内のenabled要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.43 encrypted-password

encrypted-password要素は次の親要素で使用します。

- http-pub-sub-adapter:encrypted-password要素を使用するとOracle Event Processingアプリケーションがパブリッシュする対象となるHTTPパブリッシュ/サブスクライブ・サーバーがユーザー認証を要求する場合に暗号化されたパスワードを定義できます。

- jms-adapter:Oracle Event ProcessingがJNDI InitialContextを取得するときuserおよびpassword(またはencrypted-password)要素を使用します。Oracle Event ProcessingがJMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合はconnection-encrypted-password要素を使用します。それ以外の場合は、Oracle Event Processingはuserおよびpassword(またはencrypted-password)要素を使用します。

encrypted-passwordまたはpasswordのいずれかを使用します。ただし、両方を使用することはできません。

詳細は、11.4項「JMSアダプタ構成ファイルでのパスワードの暗号化」を参照してください。

D.43.1 子要素

encrypted-passwordコンポーネント構成要素には子要素はありません。

D.43.2 属性

encrypted-passwordコンポーネントには属性はありません。

D.43.3 例

次の例は、コンポーネント構成ファイル内のencrypted-password要素の使用方法を示します。

<http-pub-sub-adapter>
<name>remotePub</name>
<server-url>http://localhost:9002/pubsub</server-url>
<channel>/test1</channel>
<event-type>com.bea.wlevs.tests.httppubsub.PubsubTestEvent</event-type>
<user>wlevs</user>
<encrypted-password>{Salted-3DES}s4YUEvH4Wl2DAjb45iJnrw==</encrypted-password>
</http-pub-sub-adapter>

D.44 end

この要素を使用するとtime-rangeまたはschedule-time-range要素の終了時間を定義できます。

終了時間を次のXMLスキーマのdateTime値の形式として表します。

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スキーマのdateTime形式の完全な詳細は、http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation を参照してください。

D.44.1 子要素

endコンポーネント構成要素には子要素はありません。

D.44.2 属性

endコンポーネントには属性はありません。

D.44.3 例

次の例はコンポーネント構成ファイル内のend要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<time-range>
<start>2010-01-20T05:00:00</start>
<end>2010-01-20T18:00:00</end>
</time-range>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.45 end-location

この要素を使用すると診断プロファイルにおいてaverage-latencyまたはmax-latency要素の終了位置を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.45.1 子要素

end-locationコンポーネント構成要素は、次の子要素をサポートしています。

- application

- stage

- direction

D.45.2 属性

end-locationコンポーネントには属性はありません。

D.45.3 例

次の例はコンポーネント構成ファイル内のend-location要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<collect-interval>
<amount>1000</amount>
<unit>s</unit>
</collect-interval>
<name>testProfile0MaxLat</name>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.46 event-bean

この要素を使用するとイベントBeanコンポーネントを定義できます。

詳細は、第16章「イベントBeanとしてのJavaクラスの構成」を参照してください。

D.46.1 子要素

event-beanコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

D.46.2 属性

event-beanコンポーネントには属性はありません。

D.46.3 例

次の例はコンポーネント構成ファイル内のevent-bean要素の使用方法を示します。

<event-bean>
<name>myEventBean</name>
</event-bean>

この例ではchannelの一意の識別子はmyEventBeanです。

D.47 event-type

event-type要素は次の親要素で使用します。

- http-pub-sub-adapter:

- パブリッシュ: オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、パブリッシュされるイベントのタイプを制限するために、JavaBeanイベントの完全修飾クラス名を指定します。指定しない場合、HTTP pub-subアダプタに送信されたすべてのイベントがパブリッシュされます。

- サブスクライブ: オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、着信メッセージがマップされるJavaBeanの完全修飾クラス名を指定します。実行時、Oracle Event Processingはメッセージ内の受信キー/値のペアを使用し、メッセージ・データを指定されたイベント型にマップします。

このクラスをEPNアセンブリ・ファイルにwlevs:event-type-repository要素、wlevs:class子要素として登録する必要があります。詳細は、9.3.1項「JavaBeanとしてのOracle Event Processingイベント・タイプの作成」を参照してください。

- jms-adapter: event-type要素を使用すると、プロパティがJMSメッセージのプロパティに一致するイベント型を指定できます。Oracle Event ProcessingにJMSメッセージとイベント間の変換を自動的に行わせる場合のみ、この子要素を指定します。独自のカスタム・コンバータBeanを作成済の場合はこの要素を指定しません。

- record-parameters: event-type要素を使用すると、記録するイベントを指定できます。

event-type要素の値はイベント型のリポジトリで定義したいずれかのイベント型にします。詳細は、9.1項「Oracle Event Processingイベント・タイプの概要」を参照してください。

D.47.1 子要素

event-typeコンポーネント構成要素には子要素はありません。

D.47.2 属性

event-typeコンポーネントには属性はありません。

D.47.3 例

次の例はコンポーネント構成ファイル内のevent-type要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.48 event-type-list

この要素を使用すると、1つ以上の記録用イベントまたはコンポーネントの再生用イベントを定義できます。

D.48.1 子要素

event-type-listコンポーネント構成要素は次の子要素をサポートしています。

- event-type

D.48.2 属性

event-type-listコンポーネントには属性はありません。

D.48.3 例

次の例は、コンポーネント構成ファイル内のevent-type-list要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.49 eviction-policy

この要素を使用すると、max-sizeの到着時にキャッシュが使用する削除ポリシーを定義できます。

有効な値:

- FIFO: 先入れ先出し。

- LRU: 最も長い期間使用されていない

- LFU: 最も使用頻度が低い(デフォルト)

- NRU: 最近使用されていない

D.49.1 子要素

eviction-policyコンポーネント構成要素には子要素はありません。

D.49.2 属性

eviction-policyコンポーネントには属性はありません。

D.49.3 例

次の例はコンポーネント構成ファイル内のeviction-policy要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-none/>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

D.50 fail-when-rejected

この要素を使用すると、オファー・タイムアウトが発生したときにイベント・キューが一杯の場合、com.bea.wlevs.ede.api.EventProcessingExceptionを生成するかどうかを指定できます。falseに設定すると、または何も設定しないと、例外が生成されるのではなく、イベントが削除されます。この構成は、max-size値が0より大きいイベント・キューにのみ適用されます。デフォルト値はfalseです。

オファー・タイムアウトの設定の詳細は、D.68項「offer-timeout」を参照してください。

D.50.1 子要素

fail-when-rejectedコンポーネント構成要素には子要素はありません。

D.50.2 属性

The fail-when-rejectedコンポーネント構成要素には属性はありません。

D.50.3 例

次の例では、イベント・キューが一杯の間に15秒経過するとEventProcessingExceptionを生成するように、チャネルを構成しています。

<channel>
<name>QueuedChannel</name>
<max-size>1000</max-size>
<max-threads>1</max-threads>
<offer-timeout>15000000000</offer-timeout>
<fail-when-rejected>true</fail-when-rejected>
</channel>

D.51 group-binding

JMSインバウンド・アダプタのjms-adapter要素にgroup-binding子要素を追加するために、コンポーネント構成ファイルを編集します。

各可能JMSメッセージ・セレクタ値に対して1つのgroup-binding要素を追加します。

詳細は、D.12項「bindings (jms-adapter)」を参照してください。

D.51.1 子要素

group-bindingコンポーネント構成要素は次の子要素をサポートしています。

- param

D.51.2 属性

表D-3ではgroup-bindingコンポーネント構成要素の属性が一覧表示されています。

表D-3 group-bindingコンポーネント構成要素の属性

属性

説明

データ型

必須?

group-id

cluster要素、groups子要素の名前。

String

はい。

D.51.3 例

次の例はコンポーネント構成ファイル内のgroup-binding要素の使用方法を示します。

<jms-adapter>
<name>JMSInboundAdapter</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic1</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>true</session-transacted>
<message-selector>${CONDITION}</message-selector>
<bindings>
<group-binding group-id="ActiveActiveGroupBean_group1">
<param id="CONDITION">acctid > 400</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group2">
<param id="CONDITION">acctid BETWEEN 301 AND 400</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group3">
<param id="CONDITION">acctid BETWEEN 201 AND 300</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group4">
<param id="CONDITION">acctid <= 200</param>
</group-binding>
</bindings>
</jms-adapter>

この構成では、ActiveActiveGroupBean_group1を含むcluster要素、groups子要素でアプリケーションをOracle Event Processingサーバーにデプロイすると、CONDITIONパラメータがacctid > 400と定義され、acctidプロパティが400以上であるイベントがアプリケーションにより処理されます。

D.52 heartbeat

この要素を使用すると、システムがタイムスタンプを付けたchannelコンポーネントの新規ハートビート・タイムアウトを定義できます。デフォルトでは、タイムアウト値は100ミリ秒または100,000,000ナノ秒です。

システムがタイムスタンプを付けた関係またはストリームでは、時間は、関係またはストリームのソース上のデータの到着に依存します。Oracle Event Processingは、この設定の値を超えてアクションがない場合(ストリームまたは関係のソースにデータが到着しない場合)、システムがタイムスタンプを付けた関係またはストリーム上でハートビートを生成します。関係またはストリームのいずれかがその指定されたソースから移入されるか、またはOracle Event Processingがheartbeatのナノ秒数ごとにハートビートを生成します。

heartbeatの子要素は、プロセッサに送信を行うイベント・チャネルにイベントが到着しない場合のみ、システムがタイムスタンプを付けた関係またはストリームに適用されます。プロセッサは、時間ベースのウィンドウや期間のパターン照合などの、一時的な演算子をいくつか含む文を用いて構成されています。

D.52.1 子要素

heartbeatコンポーネント構成要素には子要素はありません。

D.52.2 属性

heartbeatコンポーネント構成要素には属性はありません。

D.52.3 例

次の例はコンポーネント構成ファイル内のheartbeat要素の使用方法を示します。

<channel>
<name>MatchOutputChannel</name>
<max-size>0</max-size>
<max-threads>0</max-threads>
<selector>match</selector>
<heartbeat>10000</heartbeat>
</channel>

この例ではchannelの一意の識別子はMatchOutputChannelです。

D.53 http-pub-sub-adapter

この要素を使用すると、HTTPパブリッシュ/サブスクライブ・サーバー・アダプタを定義できます。

詳細は、第12章「HTTPパブリッシュ/サブスクライブ・サーバーの統合」を参照してください。

D.53.1 子要素

http-pub-sub-adapterコンポーネント構成要素は、次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- symbols

- work-manager-name

- netio

- 次のうちの1つ:

- server-context-path

- server-url

- event-type

- user

- 次のうちの1つ:

- password

- encrypted-password

D.53.2 属性

http-pub-sub-adapterコンポーネント構成要素には属性はありません。

D.53.3 例

次の例はコンポーネント構成ファイル内のhttp-pub-sub-adapter要素の使用方法を示します。

<http-pub-sub-adapter>
<name>remotePub</name>
<server-url>http://localhost:9002/pubsub</server-url>
<channel>/test1</channel>
<event-type>com.bea.wlevs.tests.httppubsub.PubsubTestEvent</event-type>
<user>wlevs</user>
<password>wlevs</password>
</http-pub-sub-adapter>

この例ではadapterの一意の識別子はremotePubです。

D.54 idle-time

この要素を使用するとキャッシュ・エントリが能動的にキャッシュから削除される前にキャッシュ・エントリがアクセスされない時間をミリ秒数で定義できます。デフォルトではidle-timeは設定されていません。この要素は動的に変更されます。

D.54.1 子要素

idle-timeコンポーネント構成要素には子要素はありません。

D.54.2 属性

idle-timeコンポーネントには属性はありません。

D.54.3 例

次の例はコンポーネント構成ファイル内のidle-time要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-none/>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

D.55 inject-parameters

この要素を使用すると、イベント処理ネットワークのステージにイベント・インジェクションを構成できます。

イベント・インジェクションの詳細は、22.3項「イベントのインジェクト」を参照してください。

D.55.1 子要素

inject-parametersコンポーネント構成要素は、次の子要素をサポートしています。

- channel-name

- active

D.55.2 属性

inject-parametersコンポーネント構成要素には属性はありません。

D.55.3 例

次の例に示すコンポーネント構成の一部は、イベント・インジェクション用にプロセッサを構成する方法を示しています。inject-parameters要素のactive子要素はインジェクションをオンにすることを指定し、channel-name要素はインジェクトされる要素の送信先のHTTPパブリッシュ・サブスクライブ(HTTP pub-sub)チャネルを指定します。

<processor>
<name>FindCrossRates</name>
<inject-parameters>
<active>true</active>
<channel-name>/NonClusteredServer/fx/FindCrossRates/input</channel-name>
</inject-parameters>
<rules>
<!-- Query rules omitted. -->
</rules>
</processor>

D.56 jms-adapter

この要素を使用するとJMSアダプタ・コンポーネントを定義できます。

詳細は、第11章「Java Message Serviceの統合」を参照してください。

D.56.1 子要素

jms-adapterコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- event-type

- jndi-provider-url

- connection-jndi-name

- 次のうちの1つ:

- destination-jndi-name

- destination-name

- user
次のうちの1つ:

- password

- encrypted-password

- connection-user
次のうちの1つ:

- connection-password

- connection-encrypted-password

- work-manager

- concurrent-consumers

- message-selector

- session-ack-mode-name

- session-transacted

- delivery-mode

D.56.2 属性

jms-adapterコンポーネント構成要素には属性はありません。

D.56.3 例

次の例はコンポーネント構成ファイル内のjms-adapter要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

この例ではadapterの一意の識別子はjmsInbound-textです。

D.57 jndi-factory

このオプション要素を使用するとjms-adapterのJNDIファクトリを定義できます。JNDIファクトリ名。Oracle Event ProcessingサーバーJMSのデフォルト値は、weblogic.jndi.WLInitialContextFactoryです。

D.57.1 子要素

jndi-factoryコンポーネント構成要素には子要素はありません。

D.57.2 属性

jndi-factoryコンポーネントには属性はありません。

D.57.3 例

次の例はコンポーネント構成ファイル内のjndi-provider-url要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<jndi-factory>weblogic.jndi.WLInitialContextFactory</jndi-factory>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

D.58 jndi-provider-url

この必須要素を使用するとjms-adapterのJNDIプロバイダURLを定義できます。

D.58.1 子要素

jndi-provider-urlコンポーネント構成要素には子要素はありません。

D.58.2 属性

jndi-provider-urlコンポーネントには属性はありません。

D.58.3 例

次の例はコンポーネント構成ファイル内のjndi-provider-url要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

D.59 listeners

この要素を使用するとキャッシュ・リスナーの動作を定義できます。

listeners要素にはwork-manager-nameという単一の子要素があり、これが非同期的なリスナーの起動に使用されるワーク・マネージャを指定します。この値は、同期的起動が有効化されている場合は無視されます。ワーク・マネージャがキャッシュそのものに指定されている場合、この値はリスナーのみを起動するためにオーバーライドします。

D.59.1 子要素

listenersコンポーネント構成要素は次の子要素をサポートしています。

- work-manager-name

D.59.2 属性

表D-4ではlistenersコンポーネント構成要素の属性が一覧表示されています。

表D-4 listenersコンポーネント構成要素の属性

属性

説明

データ型

必須?

asynchronous

リスナーを非同期的に実行します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

D.59.3 例

次の例はコンポーネント構成ファイル内のlisteners要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-behind>
<work-manager-name>JettyWorkManager</work-manager-name>
<batch-size>100</batch-size>
<buffer-size>100</buffer-size>
<buffer-write-attempts>100</buffer-write-attempts>
<buffer-write-timeout>100</buffer-write-timeout>
</write-behind>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

D.60 location

この要素を使用すると診断プロファイルにおいてthroughput要素の位置を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.60.1 子要素

locationコンポーネント構成要素は次の子要素をサポートしています。

- application

- stage

- direction

D.60.2 属性

locationコンポーネントには属性はありません。

D.60.3 例

次の例はコンポーネント構成ファイル内のlocation要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<throughput>
<throughput-interval>
<amount>100000</amount>
<unit>MICROSECONDS</unit>
</throughput-interval>
<average-interval>
<amount>100000000</amount>
<unit>NANOSECONDS</unit>
</average-interval>
<location>
<application>diagnostic</application>
<stage>AlertEventStream</stage>
<direction>INBOUND</direction>
</location>
</throughput>
</profile>
</diagnostic-profiles>

D.61 max-latency

この要素を使用すると診断プロファイルの最大待機時間計算を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.61.1 子要素

max-latencyコンポーネント構成要素は次の子要素をサポートしています。

- name

- collect-interval

- start-location

- end-location

D.61.2 属性

max-latencyコンポーネントには属性はありません。

D.61.3 例

次の例はコンポーネント構成ファイル内のmax-latency要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.62 max-size

max-size要素は次の親要素で使用します。

- channelまたはstream:max-sizeの子要素を使用するとチャネルの最大サイズを指定できます。サイズがゼロのチャネルは、同期的にイベントを受け渡します。サイズがゼロでないチャネルはイベントを非同期的に処理し、リクエストされたサイズに従ってイベントをバッファリングします。max-threadsがゼロの場合、max-sizeはゼロになります。デフォルト値は0です。

- cache:max-size要素を使用すると削除またはページングが発生した後のメモリー内のキャッシュ要素数を定義できます。現状では最大キャッシュサイズは2^31-1エントリです。この要素は動的に変更されます。

D.62.1 子要素

max-sizeコンポーネント構成要素には子要素はありません。

D.62.2 属性

max-sizeコンポーネントには属性はありません。

D.62.3 例

次の例はコンポーネント構成ファイル内のmax-size要素の使用方法を示します。

<stream>
<name>monitoring-control-stream</name>
<max-size>10000</max-size>
<max-threads>1</max-threads>
</stream>

D.63 max-threads

この要素を使用するとOracle Event Processingサーバーがchannelまたはstreamのイベントを処理するために使用するスレッドの最大数を定義できます。デフォルト値は0です。

0に指定する場合、チャネルは受渡しのように機能します。max-threads > 0の場合、チャネルは従来のブロッキング・キューのように機能し、アップストリーム・コンポーネントがイベントのプロデューサ、ダウンストリーム・コンポーネントがイベントのコンシューマになります。キューのサイズはmax-sizeの構成によって定義されます。キューからイベントを消費するスレッドは、最大でmax-threadsの数までとなります。

max-threadsは、再デプロイすることなく0から正の整数に(つまり、パス・スルーから複数スレッドに)変更できます。しかし、max-threadsを正の整数から0に(つまり、複数スレッドからパス・スルーに)変更する場合は、アプリケーションを再デプロイする必要があります。

max-size属性が0の場合は、max-threadsの値の設定には影響がありません。

この属性のデフォルト値は0です。

max-sizeが0の場合は、この値の設定に影響はありません。

D.63.1 子要素

max-threadsコンポーネント構成要素には子要素はありません。

D.63.2 属性

max-threadsコンポーネントには属性はありません。

D.63.3 例

次の例は、ンポーネント構成ファイル内のmax-threads要素の使用方法を示します。

<channel>
<name>monitoring-control-stream</name>
<max-size>10000</max-size>
<max-threads>1</max-threads>
</channel>

D.64 message-selector

この必須要素を使用するとjms-adapterでメッセージをフィルタするのに使用するJMSメッセージ・セレクタを定義できます。

メッセージ・セレクタ式の構文はSQL92の条件式構文、メッセージ・ヘッダー、およびプロパティのサブセットに基づきます。たとえば、EventTypeプロパティに基づいたメッセージを選択するには次を使用します。

EventType = 'News' OR 'Commentary'

D.64.1 子要素

message-selectorコンポーネント構成要素には子要素はありません。

D.64.2 属性

message-selectorコンポーネントには属性はありません。

D.64.3 例

次の例はコンポーネント構成ファイル内のmessage-selector要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<connection-jndi-name>weblogic.jms.ConnectionFactory</connection-jndi-name>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<message-selector>EventType = 'News' OR 'Commentary'</message-selector>
<session-transacted>false</session-transacted>
</jms-adapter>

D.65 name

name要素は次の親要素で使用します。

- adapter、http-pub-sub-adapter、jms-adapter、processor (EPL)、processor (Oracle CQL)、stream、channel、event-bean、caching-system、およびcoherence-caching-system:name要素を使用するとこのアプリケーションの構成要素をEPNアセンブリ・ファイル内の対応する要素に関連付けることができます。有効な値は対応するEPNアセンブリ・ファイル要素のid属性です。

- diagnostic-profiles:name要素を使用するとdiagnostic-profiles要素およびそのprofile子要素のそれぞれを一意で識別できます。

- parameter:name要素を使用するとname/valueペアの名前を定義できます。

D.65.1 子要素

nameコンポーネント構成要素には子要素はありません。

D.65.2 属性

nameコンポーネントには属性はありません。

D.65.3 例

次の例はコンポーネント構成ファイル内のname要素の使用方法を示します。

<diagnostics-profiles>
<name>myDiagnosticProfiles</name>
<profile>
...
</profile>
</diagnostics-profiles>

この例ではchannelの一意の識別子はmyDiagnosticProfilesです。

D.66 netio

この要素を使用するとコンポーネントのネットワーク入力/出力ポートを定義できます。

注意:

adapter要素の子である場合、この要素は内部使用のみ可能です。

D.66.1 子要素

netioコンポーネント構成要素は次の子要素をサポートしています。

- provider-name

- num-threads

- accept-backlog

D.66.2 属性

netioコンポーネントには属性はありません。

D.66.3 例

次の例はコンポーネント構成ファイル内のnetio要素の使用方法を示します。

<netio>
<provider-name>providerCache</provider-name>
<num-threads>1000</num-threads>
</netio>

D.67 num-threads

この要素を使用するとコンポーネントのネットワーク入力/出力ポートにおけるスレッド数を定義できます。

D.67.1 子要素

num-threadsコンポーネント構成要素には子要素はありません。

D.67.2 属性

num-threadsコンポーネントには属性はありません。

D.67.3 例

次の例はコンポーネント構成ファイル内のnum-threads要素の使用方法を示します。

<netio>
<provider-name>providerCache</provider-name>
<num-threads>1000</num-threads>
</netio>

D.68 offer-timeout

この要素を使用すると、イベント・キューが一杯で保留中の挿入(「オファー」)がブロックされている場合に、保留中のイベントが削除されるか例外が生成されるまでの時間を指定できます。fail-when-rejected値がtrueに設定されている場合は例外が生成され、それ以外の場合はイベントが削除されます。この設定は、max-size値が0より大きいイベント・キューにのみ適用されます。offer-timeout値はナノ秒で指定する必要があります。デフォルトでは60秒です。

D.68.1 子要素

offer-timeoutコンポーネント構成要素には子要素はありません。

D.68.2 属性

offer-timeoutコンポーネントに属性はありません。

D.68.3 例

次の例では、イベント・キューが一杯の間に15秒経過するとEventProcessingExceptionを生成するように、チャネルを構成しています。

<channel>
<name>QueuedChannel</name>
<max-size>1000</max-size>
<max-threads>1</max-threads>
<offer-timeout>15000000000</offer-timeout>
<fail-when-rejected>true</fail-when-rejected>
</channel>

D.69 param

このparam要素を使用して、メッセージ・セレクタ値をmessage-selector要素で指定されたパラメータ名と関連付けます。

詳細は、D.12項「bindings (jms-adapter)」を参照してください。

D.69.1 子要素

paramコンポーネント構成要素には子要素はありません。

D.69.2 属性

表D-5ではparamコンポーネント構成要素の属性が一覧表示されています。

表D-5 paramコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

message-selectorで指定されたパラメータ名。

String

はい。

D.69.3 例

次の例はコンポーネント構成ファイル内のparam要素の使用方法を示します。

<jms-adapter>
<name>JMSInboundAdapter</name>
<event-type>StockTick</event-type>
<jndi-provider-url>t3://ppurich-pc:7001</jndi-provider-url>
<destination-jndi-name>./Topic1</destination-jndi-name>
<user>weblogic</user>
<password>weblogic1</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>true</session-transacted>
<message-selector>${CONDITION}</message-selector>
<bindings>
<group-binding group-id="ActiveActiveGroupBean_group1">
<param id="CONDITION">acctid > 400</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group2">
<param id="CONDITION">acctid BETWEEN 301 AND 400</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group3">
<param id="CONDITION">acctid BETWEEN 201 AND 300</param>
</group-binding>
<group-binding group-id="ActiveActiveGroupBean_group4">
<param id="CONDITION">acctid <= 200</param>
</group-binding>
</bindings>
</jms-adapter>

この構成では、ActiveActiveGroupBean_group1を含むcluster要素、groups子要素でアプリケーションをOracle Event Processingサーバーにデプロイすると、CONDITIONパラメータがacctid > 400と定義され、acctidプロパティが400以上であるイベントがアプリケーションにより処理されます。

D.70 parameter

この要素を使用するとコンポーネントのname/valueパラメータを定義できます。

D.70.1 子要素

parameterコンポーネント構成要素は次の子要素をサポートしています。

- name

- value

D.70.2 属性

parameterコンポーネントには属性はありません。

D.70.3 例

次の例はコンポーネント構成ファイル内のparameter要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.71 params

この要素を使用するとbinding要素のパラメータを定義できます。

この要素の値は単純型の値のカンマ区切りリストです。値の順序はこのbindingに関連するEPLルールにおけるパラメータの順序に対応している必要があります。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Event Processing CQL言語リファレンス』のパラメータ化された問合せに関する項

- 『Oracle Fusion Middleware Oracle Event Processing EPL言語リファレンス』のパラメータ化された問合せに関する項

D.71.1 子要素

paramsコンポーネント構成要素には子要素はありません。

D.71.2 属性

表D-6ではparamsコンポーネント構成要素の属性が一覧表示されています。

表D-6 paramsコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

このparams要素の一意の識別子です。

String

いいえ。

D.71.3 例

次の例はコンポーネント構成ファイル内のparams要素の使用方法を示します。

<processor>
<name>processor1</name>
<record-parameters>
<dataset-name>test1data</dataset-name>
<event-type-list>
<event-type>SimpleEvent</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>
<rules>
<rule id="rule1"><![CDATA[
select stockSymbol, avg(price) as percentage
from StockTick retain 5 events
where stockSymbol=?
having avg(price)  > ? or avg(price)  < ?
]]></rule>
</rules>
<bindings>
<binding id="rule1">
<params>BEAS,10.0,-10.0</params>
<params id="IBM">IBM,5.0,5.0</params>
</binding>
</bindings>
</processor>

D.72 partition-order-capacity

この要素を使用すると、ordering-constraint属性がPARTITION_ORDEREDに設定されている場合に問合せパーティションの最大容量を定義できます。これはchannelコンポーネントに設定します。パラレル実行用の問合せプロセッサが構成されていて、問合せのordering-constraint属性がPARTITION_ORDEREDに設定されている場合に、この要素の値を設定することを検討してください。

この値を設定できる場所(優先順位など)に関するベスト・プラクティスおよび情報などの詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」の「問合せのパーティション化でのpartition-order-capacityの使用」を参照してください。

容量の値をより広い範囲に適用するために、サーバー構成ファイル内にこれを設定できます。詳細は、付録F「スキーマ参照: サーバー構成wlevs_server_config.xsd」の「partition-order-capacity」を参照してください。

D.72.1 子要素

partition-order-capacityコンポーネント構成要素には子要素はありません。

D.72.2 属性

The partition-order-capacityコンポーネント構成要素には属性はありません。

D.72.3 例

次の例は、コンポーネント構成ファイル内のpartition-order-capacity要素の使用方法を示します。

<channel>
<name>MatchOutputChannel</name>
<max-size>0</max-size>
<max-threads>0</max-threads>
<selector>match</selector>
<partition-order-capacity>20</partition-order-capacity>
</channel>

D.73 password

password要素は次の親要素で使用します。

- http-pub-sub-adapter:password要素を使用するとOracle Event Processingアプリケーションがパブリッシュする対象となるHTTPパブリッシュ/サブスクライブ・サーバーがユーザー認証を要求する場合にユーザー・パスワードを定義できます。

- jms-adapter:Oracle Event ProcessingがJNDI InitialContextを取得するときuserおよびpassword(またはencrypted-password)要素を使用します。Oracle Event ProcessingがJMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合はconnection-encrypted-password要素を使用します。それ以外の場合は、Oracle Event Processingはuserおよびpassword(またはencrypted-password)要素を使用します。

encrypted-passwordまたはpasswordのいずれかを使用します。ただし、両方を使用することはできません。

D.73.1 子要素

passwordコンポーネント構成要素には子要素はありません。

D.73.2 属性

passwordコンポーネントには属性はありません。

D.73.3 例

次の例はコンポーネント構成ファイル内のpassword要素の使用方法を示します。

<http-pub-sub-adapter>
<name>remotePub</name>
<server-url>http://localhost:9002/pubsub</server-url>
<channel>/test1</channel>
<event-type>com.bea.wlevs.tests.httppubsub.PubsubTestEvent</event-type>
<user>wlevs</user>
<password>wlevs</password>
</http-pub-sub-adapter>

D.74 playback-parameters

この要素を使用するとコンポーネントのイベント再生パラメータを定義できます。

詳細は、第20章「イベント・レコードと再生の構成」を参照してください。

D.74.1 子要素

playback-parametersコンポーネント構成要素は次の子要素をサポートしています。

- dataset-name

- event-type-list

- provider-name

- store-policy-parameters

- max-size

- max-threads

- 次のうちの1つ:

- time-range

- time-range-offset

- 次のうちの1つ:

- schedule-time-range

- schedule-time-range-offset

- playback-speed

- repeat

D.74.2 属性

playback-parametersコンポーネントには属性はありません。

D.74.3 例

次の例はコンポーネント構成ファイル内のplayback-parameters要素の使用方法を示します。

<playback-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
</playback-parameters>

D.75 playback-speed

この要素を使用すると正の浮動小数点として再生速度を定義できます。デフォルト値は1で、これは通常速度に相当します。2の値は、イベントが元の記録速度の倍の速度で再生されることを意味します。同様に、0.5の値は、イベントが半分の速度で再生されることを意味します。

D.75.1 子要素

playback-speedコンポーネント構成要素には子要素はありません。

D.75.2 属性

playback-speedコンポーネントには属性はありません。

D.75.3 例

次の例はコンポーネント構成ファイル内のduration要素の使用方法を示します。

<playback-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<time-range-offset>
<start>2010-01-20T05:00:00</start>
<duration>03:00:00</duration>
</time-range-offset>
<playback-speed>100</playback-speed>
</playback-parameters>

D.76 processor (EPL)

この要素を使用するとOracle CQLまたはEPLプロセッサ・コンポーネントを定義できます。

詳細は、第19章「Oracle EPLでのイベント・ストリームの問合せ」を参照してください。

Oracle CQLプロセッサのプロセッサ要素に関する詳細は、processor (Oracle CQL)を参照してください。

D.76.1 子要素

processorコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- rules

- database

- bindings (processor)

D.76.2 属性

processorコンポーネントには属性はありません。

D.76.3 例

次の例はコンポーネント構成ファイル内のprocessor要素の使用方法を示します。

<processor>
<name>processor1</name>
<record-parameters>
<dataset-name>test1data</dataset-name>
<event-type-list>
<event-type>SimpleEvent</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>
<rules>
<rule id="rule1"><![CDATA[
select stockSymbol, avg(price) as percentage
from StockTick retain 5 events
where stockSymbol=?
having avg(price)  > ? or avg(price)  < ?
]]></rule>
</rules>
<bindings>
<binding id="rule1">
<params>BEAS,10.0,-10.0</params>
<params id="IBM">IBM,5.0,5.0</params>
</binding>
</bindings>
</processor>

この例ではprocessorの一意の識別子はprocessor1です。

D.77 processor (Oracle CQL)

この要素を使用するとOracle CQLプロセッサ・コンポーネントを定義できます。

詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

EPLプロセッサのprocessor要素に関する詳細は、processor (EPL)を参照してください。

D.77.1 子要素

processorコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- rules

- bindings (processor)

D.77.2 属性

processorコンポーネントには属性はありません。

D.77.3 例

次の例はコンポーネント構成ファイル内のprocessor要素の使用方法を示します。

<processor>
<name>cqlProcessor</name>
<rules>
<view id="lastEvents" schema="cusip bid srcId bidQty ask askQty seq"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from inputChannel[partition by srcId, cusip rows 1]
]]></view>
<view id="bidask" schema="cusip bid ask"><![CDATA[
select cusip, max(bid), min(ask)
from lastEvents
group by cusip
]]></view>
<view ...><![CDATA[
...
]]></view>
...
<view id="MAXBIDMINASK" schema="cusip bidseq bidSrcId bid askseq askSrcId ask bidQty askQty"><![CDATA[
select bid.cusip, bid.seq, bid.srcId as bidSrcId, bid.bid, ask.seq,
ask.srcId as askSrcId, ask.ask, bid.bidQty, ask.askQty
from BIDMAX as bid, ASKMIN as ask
where bid.cusip = ask.cusip
]]></view>
<query id="BBAQuery"><![CDATA[
ISTREAM(select bba.cusip, bba.bidseq, bba.bidSrcId, bba.bid, bba.askseq,
bba.askSrcId, bba.ask, bba.bidQty, bba.askQty,
"BBAStrategy" as intermediateStrategy, p.seq as correlationId, 1 as priority
from MAXBIDMINASK as bba, inputChannel[rows 1] as p where bba.cusip = p.cusip)
]]></query>
<query id="MarketRule"><![CDATA[
SELECT symbol, AVG(price) AS average, :1 AS market
FROM StockTick [RANGE 5 SECONDS]
WHERE symbol = :2
]]></query>
</rules>
<bindings>
<binding id="MarketRule">
<params id="nasORCL">NASDAQ, ORCL</params>
<params id="nyJPM">NYSE, JPM</params>
<params id="nyWFC">NYSE, WFC</params>
</binding>
</bindings>
</processor>

この例ではprocessorの一意の識別子はcqlProcessorです。

D.78 profile

この要素を使用すると診断プロファイルを定義できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.78.1 子要素

profileコンポーネント構成要素は次の子要素をサポートしています。

- name

- enabled

- start-stage

- max-latency

- average-latency

- throughput

D.78.2 属性

profileコンポーネントには属性はありません。

D.78.3 例

次の例はコンポーネント構成ファイル内のprofile要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
<average-latency>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
<threshhold>
<amount>100</amount>
<unit>MILLISECONDS</unit>
</threshhold>
</average-latency>
<throughput>
<throughput-interval>
<amount>100000</amount>
<unit>MICROSECONDS</unit>
</throughput-interval>
<average-interval>
<amount>100000000</amount>
<unit>NANOSECONDS</unit>
</average-interval>
<location>
<application>diagnostic</application>
<stage>AlertEventStream</stage>
<direction>INBOUND</direction>
</location>
</throughput>
</profile>
</diagnostic-profiles>

D.79 provider-name

provider-name要素は次の親要素で使用します。

- netio:provider-name要素を使用すると基礎となるソケット実装にどのプロバイダを使用するか定義できます。有効な値はOracle Event Processingサーバーのconfig.xmlファイルのnetio子要素のprovider-typeです。

- record-parameters:provider-name要素を使用するとイベント・ストア・プロバイダの名前を定義できます。この要素の値は、Oracle Event Processingサーバー・インスタンスのconfig.xmlファイル内のrdbms-event-store-provider要素のname子要素に対応している必要があります。
Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。

これはデフォルトのBerkeleyデータベース・プロバイダを使用するように構成するために空白のままにします。

D.79.1 子要素

provider-nameコンポーネント構成要素には子要素はありません。

D.79.2 属性

provider-nameコンポーネントには属性はありません。

D.79.3 例

次の例はコンポーネント構成ファイル内のprovider-name要素の使用方法を示します。

<netio>
<provider-name>providerCache</provider-name>
<num-threads>1000</num-threads>
</netio>

D.80 query

この要素を使用するとコンポーネントのOracle CQL問合せを定義できます。

詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

D.80.1 子要素

queryコンポーネント構成要素には子要素はありません。

D.80.2 属性

表D-7ではqueryコンポーネント構成要素の属性が一覧表示されています。

表D-7 queryコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

この問合せの一意の識別子です。

String

はい。

active

アプリケーションのデプロイ時および実行時にこの問合せを実行します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

ordering-constraint

イベントをシリアルではなくパラレルに処理できるパラレル問合せ実行を有効または無効にします。

この属性は、次の3つの値をサポートします。

- ORDEREDは、問合せはイベントをシリアルに処理する必要があることを意味します。これはデフォルトの動作です。

- UNORDEREDは、可能であれば常に、CQLプロセッサは複数のスレッドでパラレルに実行して、イベントを処理することを意味します。

- PARTITION_ORDEREDは、問合せがイベントをパーティション化している場合にパーティション内の全体順序を確保し、可能な場合、パーティション間の順序を無視することを意味します。

詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

partition-expression

パーティション間の順序付けの制約を緩和するための基準となるパーティション式(CQLコードで使用)。

詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

D.80.3 例

次の例はコンポーネント構成ファイル内のquery要素の使用方法を示します。

<processor>
<name>cqlProcessor</name>
<rules>
<view id="lastEvents" schema="cusip bid srcId bidQty ask askQty seq"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from inputChannel[partition by srcId, cusip rows 1]
]]></view>
<view id="bidask" schema="cusip bid ask"><![CDATA[
select cusip, max(bid), min(ask)
from lastEvents
group by cusip
]]></view>
<view ...><![CDATA[
...
]]></view>
...
<view id="MAXBIDMINASK" schema="cusip bidseq bidSrcId bid askseq askSrcId ask bidQty askQty"><![CDATA[
select bid.cusip, bid.seq, bid.srcId as bidSrcId, bid.bid, ask.seq,
ask.srcId as askSrcId, ask.ask, bid.bidQty, ask.askQty
from BIDMAX as bid, ASKMIN as ask
where bid.cusip = ask.cusip
]]></view>
<query id="BBAQuery"><![CDATA[
ISTREAM(select bba.cusip, bba.bidseq, bba.bidSrcId, bba.bid, bba.askseq,
bba.askSrcId, bba.ask, bba.bidQty, bba.askQty, "BBAStrategy" as intermediateStrategy,
p.seq as correlationId, 1 as priority
from MAXBIDMINASK as bba, inputChannel[rows 1] as p where bba.cusip = p.cusip)
]]></query>
</rules>
</processor>

D.81 record-parameters

この要素を使用するとコンポーネントのイベント・レコード・パラメータを定義できます。

詳細は、第20章「イベント・レコードと再生の構成」を参照してください。

D.81.1 子要素

record-parametersコンポーネント構成要素は次の子要素をサポートしています。

- dataset-name

- event-type-list

- provider-name

- store-policy-parameters

- max-size

- max-threads

- 次のうちの1つ:

- time-range

- time-range-offset

- batch-size

- batch-time-out

D.81.2 属性

record-parametersコンポーネントには属性はありません。

D.81.3 例

次の例はコンポーネント構成ファイル内のrecord-parameters要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.82 repeat

この要素を使用するとplayback-parametersを繰り返すかどうかを定義できます。

有効な値:

- true

- false

D.82.1 子要素

repeatコンポーネント構成要素には子要素はありません。

D.82.2 属性

repeatコンポーネントには属性はありません。

D.82.3 例

次の例はコンポーネント構成ファイル内のduration要素の使用方法を示します。

<playback-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<time-range-offset>
<start>2010-01-20T05:00:00</start>
<duration>03:00:00</duration>
</time-range-offset>
<repeat>true</repeat>
</playback-parameters>

D.83 rule

この要素を使用するとコンポーネントのEPLルールを定義できます。

この要素はrules要素内でのみ適用できます。

D.83.1 子要素

ruleコンポーネント構成要素には子要素はありません。

D.83.2 属性

表D-8ではruleコンポーネント構成要素の属性が一覧表示されています。

表D-8 ruleコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

このルールの一意の識別子です。

String

はい。

active

アプリケーションのデプロイときおよび実行時にこのルールを実行します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

ordering-constraint

イベントをシリアルではなくパラレルに処理できるパラレル問合せ実行を有効または無効にします。

この属性は、次の3つの値をサポートします。

- ORDEREDは、問合せはイベントをシリアルに処理する必要があることを意味します。これはデフォルトの動作です。

- UNORDEREDは、可能であれば常に、CQLプロセッサは複数のスレッドでパラレルに実行して、イベントを処理することを意味します。

- PARTITION_ORDEREDは、問合せがイベントをパーティション化している場合にパーティション内の全体順序を確保し、可能な場合、パーティション間の順序を無視することを意味します。

詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

partition-expression

パーティション間の順序付けの制約を緩和するための基準となるパーティション式(CQLコードで使用)。

詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

D.83.3 例

次の例はコンポーネント構成ファイル内のrule要素の使用方法を示します。

<processor>
<name>rvSampleProcessor</name>
<rules>
<rule id="rvSampleRule1"><![CDATA[
select * from RVSampleEvent retain 1 event
]]></rule>
</rules>
</processor>

D.84 rules

この要素を使用すると1つ以上のOracle CQL問合せ、processor (Oracle CQL)のビュー、またはprocessor (EPL)のEPLルールを定義できます。

D.84.1 子要素

rulesコンポーネント構成要素は次の子要素をサポートしています。

- rule

- query

- view

D.84.2 属性

rulesコンポーネントには属性はありません。

D.84.3 例

次の例はコンポーネント構成ファイル内のrules要素の使用方法を示します。

<processor>
<name>cqlProcessor</name>
<rules>
<view id="lastEvents" schema="cusip bid srcId bidQty ask askQty seq"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from inputChannel[partition by srcId, cusip rows 1]
]]></view>
<view id="bidask" schema="cusip bid ask"><![CDATA[
select cusip, max(bid), min(ask)
from lastEvents
group by cusip
]]></view>
<view ...><![CDATA[
...
]]></view>
...
<view id="MAXBIDMINASK" schema="cusip bidseq bidSrcId bid askseq askSrcId ask bidQty askQty"><![CDATA[
select bid.cusip, bid.seq, bid.srcId as bidSrcId, bid.bid, ask.seq,
ask.srcId as askSrcId, ask.ask, bid.bidQty, ask.askQty
from BIDMAX as bid, ASKMIN as ask
where bid.cusip = ask.cusip
]]></view>
<query id="BBAQuery"><![CDATA[
ISTREAM(select bba.cusip, bba.bidseq, bba.bidSrcId, bba.bid, bba.askseq,
bba.askSrcId, bba.ask, bba.bidQty, bba.askQty,
"BBAStrategy" as intermediateStrategy, p.seq as correlationId, 1 as priority
from MAXBIDMINASK as bba, inputChannel[rows 1] as p where bba.cusip = p.cusip)
]]></query>
</rules>
</processor>

D.85 schedule-time-range

この要素を使用するとイベントがステージに再生される期間を指定できます。再生は指定した開始時間に始まり、すべてのイベントが再生されるか、または指定した終了時間まで継続されます。repeatがtrueに設定されている場合、再生は指定した終了時間またはユーザーが明らかに再生を中断するまで継続します。

この要素はplayback-parameters要素内でのみ適用できます。

D.85.1 子要素

schedule-time-rangeコンポーネント構成要素は次の子要素をサポートしています。

- start

- end

D.85.2 属性

schedule-time-rangeコンポーネントには属性はありません。

D.85.3 例

次の例はコンポーネント構成ファイル内のschedule-time-range要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<schedule-time-range>
<start>2010-01-20T05:00:00</start>
<end>2010-01-20T18:00:00</end>
</schedule-time-range>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.86 schedule-time-range-offset

この要素を使用するとイベントがステージに再生される期間を指定できます。再生は指定した開始時間に始まり、すべてのイベントが再生されるか、または指定した終了時間まで継続されます。repeatがtrueに設定されている場合、再生は指定した終了時間またはユーザーが明らかに再生を中断するまで継続します。

この要素はplayback-parameters要素内でのみ適用できます。

D.86.1 子要素

schedule-time-range-offsetコンポーネント構成要素は次の子要素をサポートしています。

- start

- duration

D.86.2 属性

schedule-time-range-offsetコンポーネントには属性はありません。

D.86.3 例

次の例はコンポーネント構成ファイル内のschedule-time-range-offset要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<schedule-time-range-offset>
<start>2010-01-20T05:00:00</start>
<duration>03:00:00</duration>
</schedule-time-range-offset>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.87 selector

この要素を使用するとどのアップストリームOracle CQLプロセッサの問合せがダウンストリームchannelに結果を出力することを許可されるかを指定できます。

図D-1はアップストリームOracle CQLプロセッサfilteredFanoutProcessorに接続されたチャネルfilteredStreamを備えたEPNを示します。

図D-1 Oracle CQLプロセッサおよびダウンストリーム・チャネルがあるEPN

「図D-1 Oracle CQLプロセッサおよびダウンストリーム・チャネルを備えたEPN」の説明

例D-12は、Oracle CQLプロセッサに構成された問合せを示します。

例D-12 filterFanoutProcessor Oracle CQL問合せ

<processor>
<name>filterFanoutProcessor</name>
<rules>
<query id="Yr3Sector"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from priceStream where sector="3_YEAR"
]]></query>
<query id="Yr2Sector"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from priceStream where sector="2_YEAR"
]]></query>
<query id="Yr1Sector"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from priceStream where sector="1_YEAR"
]]></query>
</rules>
</processor>

例D-12に示すようにOracle CQLプロセッサに1つ以上の問合せを指定する場合、デフォルトではすべての問合せ結果がプロセッサのアウトバウンド・チャネルに出力されます(図D-1のfilteredStream)。オプションでコンポーネント構成ソースでchannel要素のselector子要素を使用し、例D-13が示すようにチャネルに結果を出力する1つ以上のOracle CQL問合せ名のスペース区切りのリストを指定できます。この例では、問合せYr3SectorおよびYr2Sectorの問合せ結果はfilteredStreamに出力されますが、問合せYr1Sectorの問合せ結果は出力されません。

例D-13 どの問合せ結果を出力するか制御するためのselectorの使用

<channel>
<name>filteredStream</name>
<selector>Yr3Sector Yr2Sector</selector>
</channel>

アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

注意:

selector属性はアップストリーム・ノードがOracle CQLプロセッサの場合のみ該当します。詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

D.87.1 子要素

selectorコンポーネント構成要素には子要素はありません。

D.87.2 属性

selectorコンポーネントには属性はありません。

D.87.3 例

次の例はコンポーネント構成ファイル内のselector要素の使用方法を示します。

<processor>
<name>PatternProcessor</name>
<rules>
<query id="match"><![CDATA[
select T.firstW as firstw, T.lastZ as lastz, T.price as price
from StockInputsStream
MATCH_RECOGNIZE (
MEASURES A.c1 as firstW, last(Z.c1) as lastZ, A.c2 as price
PATTERN(A W+ X+ Y+ Z+)
DEFINE  A as A.c1 = A.c1,
W as W.c2 < prev(W.c2),
X as X.c2 > prev(X.c2),
Y as Y.c2 < prev(Y.c2),
Z as Z.c2 > prev(Z.c2))
as T
]]></query>
<query id="stock"><![CDATA[
select c1 as ts, c2 as price from StockInputsStream
]]></query>
</rules>
</processor>
<channel>
<name>StockOutputChannel</name>
<selector>stock</selector>
</channel>
<channel>
<name>MatchOutputChannel</name>
<selector>match</selector>
</channel>

D.88 server-context-path

必須。パブリッシュする各ローカルhttp-pub-sub-adapterに対して、現在Oracle Event ProcessingアプリケーションをホストしているOracle Event Processingインスタンスに関連付けられているローカルHTTPパブリッシュ・サブスクライブ・サーバーの、Oracle Event Processingサーバーconfig.xmlファイル要素http-pubsub、子要素pathを指定します。

デフォルト: /pubsub

新たにローカルHTTPパブリッシュ・サブスクライブ・サーバーを作成、またはデフォルトの構成を変更した場合は、該当するpath子要素の値を指定します。

注意:

このオプションはリモートHTTPパブリッシュ・サブスクライブ・アダプタには指定しないでください。

D.88.1 子要素

server-context-pathコンポーネント構成要素には子要素はありません。

D.88.2 属性

server-context-pathコンポーネントには属性はありません。

D.88.3 例

次の例はコンポーネント構成ファイル内のserver-context-path要素の使用方法を示します。

<http-pub-sub-adapter>
<name>localPub</name>
<server-context-path>/pubsub</server-context-path>
<channel>/test1</channel>
</http-pub-sub-adapter>

D.89 server-url

必須。パブリッシュまたはサブスクライブする各リモートhttp-pub-sub-adapterに対して、Oracle Event Processingアプリケーションからのパブリッシュ先であるリモートHTTPパブリッシュ・サブスクライブ・サーバーのURLを指定します。リモートHTTPパブリッシュ・サブスクライブ・サーバーには、Oracle Event Processingの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTPパブリッシュ・サブスクライブ・サーバーを指定できます。例:

http://myhost.com:9102/pubsub

注意:

このオプションはローカルHTTPパブリッシュ・サブスクライブ・アダプタには指定しないでください。

D.89.1 子要素

server-urlコンポーネント構成要素には子要素はありません。

D.89.2 属性

server-urlコンポーネントには属性はありません。

D.89.3 例

次の例はコンポーネント構成ファイル内のserver-url要素の使用方法を示します。

<http-pub-sub-adapter>
<name>remotePub</name>
<server-url>http://myhost.com:9102/pubsub</server-url>
<channel>/test1</channel>
<event-type>com.bea.wlevs.tests.httppubsub.PubsubTestEvent</event-type>
<user>wlevs</user>
<password>wlevs</password>
</http-pub-sub-adapter>

この例ではremotePublisherアダプタがイベントをパブリッシュする対象のリモートHTTPパブリッシュ/サブスクライブ・サーバーのURLはhttp://myhost.com:9102/pubsub となります。

D.90 session-ack-mode-name

この要素を使用するとjms-adapterのセッション確認モードを定義できます。

javax.jms.Sessionからの有効な値。

- AUTO_ACKNOWLEDGE: この確認モードを使用するとセッションが受信コールから正常に戻された場合か、またはセッションがメッセージ処理のためにコールしたメッセージ・リスナーが正常に戻る場合のいずれでもセッションは自動的にクライアントがメッセージを受信したことを確認します。

- CLIENT_ACKNOWLEDG: この確認モードを使用するとメッセージの確認メソッドをコールすることによって、クライアントは消費されたメッセージを確認します。

- DUPS_OK_ACKNOWLEDGE: この確認モードはセッションにメッセージ送信の確認を遅延するように命令します。

デフォルト: AUTO_ACKNOWLEDGE

D.90.1 子要素

session-ack-mode-nameコンポーネント構成要素には子要素はありません。

D.90.2 属性

session-ack-mode-nameコンポーネントには属性はありません。

D.90.3 例

次の例はコンポーネント構成ファイル内のsession-ack-mode-name要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<connection-jndi-name>weblogic.jms.ConnectionFactory</connection-jndi-name>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<session-ack-mode-name>AUTO_ACKNOWLEDGE</session-ack-mode-name>
<session-transacted>false</session-transacted>
</jms-adapter>

D.91 session-transacted

この要素を使用するとセッションをインバウンドまたはアウトバウンドのjms-adapter用に処理するかどうかを定義できます。

有効な値:

- true

- false

D.91.1 子要素

session-transactedコンポーネント構成要素には子要素はありません。

D.91.2 属性

session-transactedコンポーネントには属性はありません。

D.91.3 例

次の例はコンポーネント構成ファイル内のsession-transacted要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<connection-jndi-name>weblogic.jms.ConnectionFactory</connection-jndi-name>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<session-ack-mode-name>AUTO_ACKNOWLEDGE</session-ack-mode-name>
<session-transacted>false</session-transacted>
</jms-adapter>

D.92 stage

この要素を使用すると診断プロファイルのstart-locationまたはend-locationのステージを定義できます。

有効な値はイベント処理ネットワーク( EPN )における既存ステージ名です。

D.92.1 子要素

stageコンポーネント構成には子要素はありません。

D.92.2 属性

stageコンポーネントには属性はありません。

D.92.3 例

次の例はコンポーネント構成ファイル内のstage要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<collect-interval>
<amount>1000</amount>
<unit>s</unit>
</collect-interval>
<name>testProfile0MaxLat</name>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.93 start

この要素を使用するとtime-range、time-range-offset、またはschedule-time-range-offset要素の開始時間を定義できます。

開始時間を次のXMLスキーマのdateTime値の形式として表します。

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スキーマのdateTime形式の完全な詳細は、http://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representation を参照してください。

D.93.1 子要素

startコンポーネント構成要素には子要素はありません。

D.93.2 属性

startコンポーネントには属性はありません。

D.93.3 例

次の例はコンポーネント構成ファイル内のstart要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<time-range>
<start>2010-01-20T05:00:00</start>
<end>2010-01-20T18:00:00</end>
</time-range>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.94 start-location

この要素を使用すると診断プロファイルの開始位置を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.94.1 子要素

start-locationコンポーネント構成要素は次の子要素をサポートしています。

- application

- stage

- direction

D.94.2 属性

start-locationコンポーネントには属性はありません。

D.94.3 例

次の例はコンポーネント構成ファイル内のstart-location要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<collect-interval>
<amount>1000</amount>
<unit>s</unit>
</collect-interval>
<name>testProfile0MaxLat</name>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.95 start-stage

この要素を使用すると診断プロファイルの開始ステージを定義できます。

有効な値はイベント処理ネットワーク( EPN )における既存ステージ名です。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.95.1 子要素

start-stageコンポーネント構成要素には子要素はありません。

D.95.2 属性

start-stageコンポーネントには属性はありません。

D.95.3 例

次の例はコンポーネント構成ファイル内のstart-stage要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.96 store-policy-parameters

この要素を使用するとイベント・ストア・プロバイダ専用の1つ以上のストア・ポリシー・パラメータを定義できます。

D.96.1 子要素

store-policy-parameterコンポーネント構成要素は次の子要素をサポートしています。

- [parameter]

D.96.2 属性

store-policy-parameterコンポーネントには属性はありません。

D.96.3 例

次の例はコンポーネント構成ファイル内のstore-policy-parameter要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.97 stream

この要素を使用するとストリーム・コンポーネントを定義できます。

注意:

streamコンポーネントは11g リリース1 (11.1.1)では非推奨です。channel要素をかわりに使用します。

D.97.1 子要素

streamコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- max-size

- max-threads

D.97.2 属性

streamコンポーネントには属性はありません。

D.97.3 例

次の例はコンポーネント構成ファイル内のstream要素の使用方法を示します。

<stream>
<name>fxMarketEuroOut</name>
<max-size>0</max-size>
<max-threads>0</max-threads>
</stream>

この例ではstreamの一意の識別子はfxMarketEuroOutです。

D.98 symbol

この要素を使用するとadapter、http-pub-sub-adapter、またはjms-adapter要素のシンボルを定義できます。

注意:

symbolコンポーネントは11g リリース1 (11.1.1)では非推奨です。

D.98.1 子要素

symbolコンポーネント構成には子要素はありません。

D.98.2 属性

symbolコンポーネントには属性はありません。

D.98.3 例

次の例はコンポーネント構成ファイル内のsymbol要素の使用方法を示します。

<adapter>
<name>trackdata</name>
<symbols>
<symbol>BEAS</symbol>
<symbol>IBM</symbol>
</symbols>
</adapter>

D.99 symbols

この要素を使用すると1つ以上のコンポーネントのsymbol要素を定義できます。

注意:

symbolコンポーネントは11g リリース1 (11.1.1)では非推奨です。

D.99.1 子要素

symbolsコンポーネント構成要素は次の子要素をサポートしています。

- symbol

D.99.2 属性

symbolsコンポーネントには属性はありません。

D.99.3 例

次の例はコンポーネント構成ファイル内のsymbols要素の使用方法を示します。

<adapter>
<name>trackdata</name>
<symbols>
<symbol>BEAS</symbol>
<symbol>IBM</symbol>
</symbols>
</adapter>

D.100 threshold

この要素を使用すると、Oracle Event Processingサーバーがログを記録する監視イベントのしきい値を定義できます。

この要素は診断プロファイルのaverage-latency内でのみ適用できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.100.1 子要素

thresholdコンポーネント構成要素は次の子要素をサポートしています。

- amount

- unit

D.100.2 属性

threshholdコンポーネントには属性はありません。

D.100.3 例

次の例はコンポーネント構成ファイル内のthreshhold要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<average-latency>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
<threshhold>
<amount>100</amount>
<unit>MILLISECONDS</unit>
</threshhold>
</average-latency>
</profile>
</diagnostic-profiles>

D.101 throughput

この要素を使用すると診断プロファイルのスループットを定義できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.101.1 子要素

throughputコンポーネント構成要素は次の子要素をサポートしています。

- name

- throughput-interval

- average-interval

- [location]

D.101.2 属性

throughputコンポーネントには属性はありません。

D.101.3 例

次の例はコンポーネント構成ファイル内のthroughput要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<throughput>
<throughput-interval>
<amount>100000</amount>
<unit>MICROSECONDS</unit>
</throughput-interval>
<average-interval>
<amount>100000000</amount>
<unit>NANOSECONDS</unit>
</average-interval>
<location>
<application>diagnostic</application>
<stage>AlertEventStream</stage>
<direction>INBOUND</direction>
</location>
</throughput>
</profile>
</diagnostic-profiles>

D.102 throughput-interval

この要素を使用すると診断プロファイルのスループット間隔を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.102.1 子要素

throughput-intervalコンポーネント構成要素は次の子要素をサポートしています。

- amount

- unit

D.102.2 属性

throughput-intervalコンポーネントには属性はありません。

D.102.3 例

次の例はコンポーネント構成ファイル内のthroughput-interval要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<throughput>
<throughput-interval>
<amount>100000</amount>
<unit>MICROSECONDS</unit>
</throughput-interval>
<average-interval>
<amount>100000000</amount>
<unit>NANOSECONDS</unit>
</average-interval>
<location>
<application>diagnostic</application>
<stage>AlertEventStream</stage>
<direction>INBOUND</direction>
</location>
</throughput>
</profile>
</diagnostic-profiles>

D.103 time-range

この要素を使用するとOracle Event Processingサーバーがイベント・ストアでイベントに適用するフィルタを定義できます。この時間範囲内のrecord-timeを持つイベントのみステージに再生されます。

time-range-offsetまたはtime-rangeのいずれかを使用します。ただし、両方を使用することはできません。

詳細は、第20章「イベント・レコードと再生の構成」を参照してください。

D.103.1 子要素

time-rangeコンポーネント構成要素は次の子要素をサポートしています。

- start

- end

D.103.2 属性

time-rangeコンポーネントには属性はありません。

D.103.3 例

次の例はコンポーネント構成ファイル内のtime-range要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<time-range>
<start>2010-01-20T05:00:00</start>
<end>2010-01-20T18:00:00</end>
</time-range>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.104 time-range-offset

この要素を使用するとOracle Event Processingサーバーがイベント・ストアでイベントに適用するフィルタを定義できます。この時間範囲内のrecord-timeを持つイベントのみステージに再生されます。

time-rangeまたはtime-range-offsetのいずれかを使用します。ただし、両方を使用することはできません。

詳細は、第20章「イベント・レコードと再生の構成」を参照してください。

D.104.1 子要素

time-range-offsetコンポーネント構成要素は次の子要素をサポートしています。

- start

- duration

D.104.2 属性

time-range-offsetコンポーネントには属性はありません。

D.104.3 例

次の例はコンポーネント構成ファイル内のtime-range-offset要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<time-range-offset>
<start>2010-01-20T05:00:00</start>
<duration>03:00:00</duration>
</time-range-offset>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.105 time-to-live

この要素を使用するとエントリがキャッシュされる時間の最大数をミリ秒で定義できます。デフォルト値は無限大です。

詳細は、13.3項「Oracle Event Processingローカル・キャッシュ・システムおよびキャッシュの構成」を参照してください。

D.105.1 子要素

存続時間コンポーネント構成要素には子要素はありません。

D.105.2 属性

存続時間コンポーネントには属性はありません。

D.105.3 例

次の例はコンポーネント構成ファイル内の存続時間要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-none/>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

D.106 trace-parameters

この要素を使用すると、イベント処理ネットワークのステージにイベント・トレースを構成できます。

イベント・トレースの詳細は、22.4項「イベントのトレース」を参照してください。

D.106.1 子要素

trace-parametersコンポーネント構成要素は、次の子要素をサポートしています。

- channel-name

- active

D.106.2 属性

trace-parametersコンポーネント構成要素には属性はありません。

D.106.3 例

次の例に示すコンポーネント構成の一部は、イベント・トレース用にプロセッサを構成する方法を示しています。trace-parameters要素のactive子要素はトレースをオンにすることを指定し、channel-name要素はトレースされる要素の送信先のHTTPパブリッシュ・サブスクライブ(HTTP pub-sub)チャネルを指定します。

<processor>
<name>FindCrossRates</name>
<trace-parameters>
<active>true</active>
<channel-name>/NonClusteredServer/fx/FindCrossRates/output</channel-name>
</trace-parameters>
<rules>
<!-- Query rules omitted. -->
</rules>
</processor>

D.107 unit

この要素を使用するとamount要素の期間の単位を定義できます。

有効な値:

- NANOSECONDS

- MICROSECONDS

- MILLISECONDS

- SECONDS

- MINUTES

- HOURS

- DAYS

D.107.1 子要素

unitコンポーネント構成には子要素はありません。

D.107.2 属性

unitコンポーネントには属性はありません。

D.107.3 例

次の例はコンポーネント構成ファイル内のunit要素の使用方法を示します。

<diagnostic-profiles>
<name>myselfprofiles</name>
<profile>
<name>testProfile0</name>
<enabled>true</enabled>
<start-stage>MetricSubscriber</start-stage>
<max-latency>
<collect-interval>
<amount>1000</amount>
<unit>s</unit>
</collect-interval>
<name>testProfile0MaxLat</name>
<start-location>
<application>diagnostic</application>
<stage>MetricSubscriber</stage>
<direction>INBOUND</direction>
</start-location>
<end-location>
<application>diagnostic</application>
<stage>MonitorProcessor</stage>
<direction>OUTBOUND</direction>
</end-location>
</max-latency>
</profile>
</diagnostic-profiles>

D.108 user

user要素は次の親要素で使用します。

- http-pub-sub-adapter:user要素を使用するとOracle Event Processingアプリケーションがパブリッシュする対象となるHTTPパブリッシュ/サブスクライブ・サーバーがユーザー認証を要求する場合に、ユーザー名を定義できます。

- jms-adapter: Oracle Event ProcessingがJNDI InitialContextを取得するときuserおよびpassword(またはencrypted-password)要素を使用します。Oracle Event ProcessingがJMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合はconnection-encrypted-password要素を使用します。それ以外の場合は、Oracle Event Processingはuserおよびpassword(またはencrypted-password)要素を使用します。

D.108.1 子要素

userコンポーネント構成要素には子要素はありません。

D.108.2 属性

userコンポーネントには属性はありません。

D.108.3 例

次の例はコンポーネント構成ファイル内のuser要素の使用方法を示します。

<http-pub-sub-adapter>
<name>remotePub</name>
<server-url>http://localhost:9002/pubsub</server-url>
<channel>/test1</channel>
<event-type>com.bea.wlevs.tests.httppubsub.PubsubTestEvent</event-type>
<user>wlevs</user>
<password>wlevs</password>
</http-pub-sub-adapter>

D.109 value

この要素を使用するとparameter要素の値を定義できます。

D.109.1 子要素

valueコンポーネント構成要素には子要素はありません。

D.109.2 属性

valueコンポーネントには属性はありません。

D.109.3 例

次の例はコンポーネント構成ファイル内のvalue要素の使用方法を示します。

<record-parameters>
<dataset-name>tuple1</dataset-name>
<event-type-list>
<event-type>TupleEvent1</event-type>
</event-type-list>
<provider-name>test-rdbms-provider</provider-name>
<store-policy-parameters>
<parameter>
<name>timeout</name>
<value>300</value>
<parameter>
</store-policy-parameters>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>

D.110 view

この要素を使用するとコンポーネントのOracle CQLビューを定義できます。

詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」を参照してください。

D.110.1 子要素

viewコンポーネント構成要素には子要素はありません。

D.110.2 属性

表D-9ではviewコンポーネント構成要素の属性が一覧表示されています。

表D-9 viewコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

この問合せの一意の識別子です。

String

はい。

active

アプリケーションのデプロイ時および実行時にこの問合せを実行します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

ordering-constraint

イベントをシリアルではなくパラレルに処理できるパラレル問合せ実行を有効または無効にします。

この属性は、次の3つのうち1つの値をサポートします。

- ORDEREDは、問合せはイベントをシリアルに処理する必要があることを意味します。これはデフォルトの動作です。

- UNORDEREDは、可能であれば常に、CQLプロセッサは複数のスレッドでパラレルに実行して、イベントを処理することを意味します。

- PARTITION_ORDEREDは、問合せがイベントをパーティション化している場合にパーティション内の全体順序を確保し、可能な場合、パーティション間の順序を無視することを意味します。

詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

partition-expression

パーティション間の順序付けの制約を緩和するための基準となるパーティション式(CQLコードで使用)。

詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

schema

ビューで使用されるstream要素のスペース区切りのリストです。

スペース区切りのトークンのStringです。

いいえ。

D.110.3 例

次の例はコンポーネント構成ファイル内のview要素の使用方法を示します。

<processor>
<name>cqlProcessor</name>
<rules>
<view id="lastEvents" schema="cusip bid srcId bidQty ask askQty seq"><![CDATA[
select cusip, bid, srcId, bidQty, ask, askQty, seq
from inputChannel[partition by srcId, cusip rows 1]
]]></view>
<view id="bidask" schema="cusip bid ask"><![CDATA[
select cusip, max(bid), min(ask)
from lastEvents
group by cusip
]]></view>
<view ...><![CDATA[
...
]]></view>
...
<view id="MAXBIDMINASK" schema="cusip bidseq bidSrcId bid askseq askSrcId ask bidQty askQty"><![CDATA[
select bid.cusip, bid.seq, bid.srcId as bidSrcId, bid.bid, ask.seq,
ask.srcId as askSrcId, ask.ask, bid.bidQty, ask.askQty
from BIDMAX as bid, ASKMIN as ask
where bid.cusip = ask.cusip
]]></view>
<query id="BBAQuery"><![CDATA[
ISTREAM(select bba.cusip, bba.bidseq, bba.bidSrcId, bba.bid, bba.askseq,
bba.askSrcId, bba.ask, bba.bidQty, bba.askQty,
"BBAStrategy" as intermediateStrategy, p.seq as correlationId, 1 as priority
from MAXBIDMINASK as bba, inputChannel[rows 1] as p where bba.cusip = p.cusip)
]]></query>
</rules>
</processor>

D.111 work-manager

この要素を使用するとjms-adapterのワーク・マネージャ名を定義できます。

有効な値はOracle Event Processingサーバーのconfig.xmlファイルのwork-manager要素のname子要素で指定される名前です。デフォルト値はアプリケーション自体に構成されたワーク・マネージャです。

詳細は、F.45項「work-manager」を参照してください。

D.111.1 子要素

work-managerコンポーネント構成要素には子要素はありません。

D.111.2 属性

work-managerコンポーネントには属性はありません。

D.111.3 例

次の例はコンポーネント構成ファイル内のwork-manager要素の使用方法を示します。

<jms-adapter>
<name>jmsInbound-text</name>
<jndi-provider-url>t3://localhost:7001</jndi-provider-url>
<destination-name>JMSServer-0/Module1!Queue1</destination-name>
<user>weblogic</user>
<password>weblogic</password>
<work-manager>JettyWorkManager</work-manager>
<concurrent-consumers>1</concurrent-consumers>
<session-transacted>false</session-transacted>
</jms-adapter>

D.112 work-manager-name

この要素を使用するとcacheのワーク・マネージャを定義できます。

listeners要素にはwork-manager-nameという単一の子要素があり、これが非同期的なリスナーの起動に使用されるワーク・マネージャを指定します。この値は、同期的起動が有効化されている場合は無視されます。ワーク・マネージャがキャッシュそのものに指定されている場合、この値はリスナーのみを起動するためにオーバーライドします。

有効な値はOracle Event Processingサーバーのconfig.xmlファイルのwork-manager要素のname子要素で指定される名前です。デフォルト値はアプリケーション自体に構成されたワーク・マネージャです。

D.112.1 子要素

work-manager-nameコンポーネント構成要素には子要素はありません。

D.112.2 属性

work-manager-nameコンポーネントには属性はありません。

D.112.3 例

次の例はコンポーネント構成ファイル内のwork-manager-name要素の使用方法を示します。

<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-none/>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>

D.113 write-behind

この要素を使用するとキャッシュ・ストアへの非同期的な書込みを指定できます。キャッシュ・ストアはキャッシュ・エントリの作成または更新の後で各スレッドから起動されます。この要素は動的に変更されます。

D.113.1 子要素

write-behindコンポーネント構成要素は次の子要素をサポートしています。

- work-manager-name

- batch-size

- buffer-size

- buffer-write-attempts

- buffer-write-timeout

D.113.2 属性

write-behindコンポーネントには属性はありません。

D.113.3 例

次の例はコンポーネント構成ファイル内のwrite-behind要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-behind>
<work-manager-name>JettyWorkManager</work-manager-name>
<batch-size>100</batch-size>
<buffer-size>100</buffer-size>
<buffer-write-attempts>100</buffer-write-attempts>
<buffer-write-timeout>100</buffer-write-timeout>
</write-behind>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

D.114 write-none

この要素を使用するとキャッシュ・ストアへ書込みを行わないように指定できます。これはデフォルトの書込みポリシーです。この要素は動的に変更されます。

D.114.1 子要素

write-noneコンポーネント構成には子要素はありません。

D.114.2 属性

write-noneコンポーネントには属性はありません。

D.114.3 例

次の例はコンポーネント構成ファイル内のwrite-none要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-none/>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

D.115 write-through

この要素を使用するとキャッシュ・ストアへの同期的な書込みを指定できます。エントリが作成または更新されると書込みが発生します。この要素は動的に変更されます。

D.115.1 子要素

write-throughコンポーネント構成には子要素はありません。

D.115.2 属性

write-throughコンポーネントには属性はありません。

D.115.3 例

次の例はコンポーネント構成ファイル内のwrite-through要素の使用方法を示します。

<caching-system>
<name>providerCachingSystem</name>
<cache>
<name>providerCache</name>
<max-size>1000</max-size>
<eviction-policy>FIFO</eviction-policy>
<time-to-live>60000</time-to-live>
<idle-time>120000</idle-time>
<write-through/>
<work-manager-name>JettyWorkManager</work-manager-name>
<listeners asynchronous="false">
<work-manager-name>JettyWorkManager</work-manager-name>
</listeners>
</cache>
</caching-system>

E スキーマの参照: deployment.xsdのデプロイメント

この付録では、Oracle Event Processingのアプリケーション・デプロイメントを構成するのに使用するXMLの背後にあるスキーマである、deployment.xsdスキーマの要素へのリファレンスを示します。

この付録の内容は次のとおりです。

- E.1項「Oracle Event Processingデプロイメント要素の概要」

- E.2項「wlevs:deployment」

E.1 Oracle Event Processingデプロイメント要素の概要

Oracle Event Processingには多数のアプリケーション・アセンブリ要素が用意されており、それらの要素をアプリケーションのEPNアセンブリ・ファイル内で使用して、イベント・タイプを登録し、イベント処理ネットワークのコンポーネントを宣言し、各コンポーネントがどのように相互にリンクしているかを指定します。EPNアセンブリ・ファイルは、標準のSpringコンテキスト・ファイルの拡張です。

E.1.1 要素の階層

Oracle Event Processingコンポーネント構成要素は次の階層で構成されます。

beans
Standard Spring and OSGi elements such as bean, osgi-service, and so on.

E.1.2 Oracle Event Processingデプロイメント構成ファイルの例

次のfxアプリケーションのサンプル・デプロイメント構成ファイルは、様々なOracle Event Processing要素の使用方法を示しています。

<?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:wlevs="http://www.bea.com/ns/wlevs/deployment" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.bea.com/ns/wlevs/deployment
http://www.bea.com/ns/wlevs/deployment/deployment.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
</bean>
<wlevs:deployment
id="fx"
state="start"
location="file:${wlevs.domain.home}/applications/fx/com.bea.wlevs.example.fx_11.1.0.0.jar"/>
</beans>

E.2 wlevs:deployment

この要素を使用して、Springアプリケーション・コンテキストに対してアダプタ・コンポーネントを宣言します。

E.2.1 子要素

wlevs:deploymentのデプロイメント要素には子要素がありません。

E.2.2 属性

表E-1には、wlevs:deploymentデプロイメント要素の属性がリストされています。

表E-1 wlevs:deploymentデプロイメント要素の属性

属性

説明

データ型

必須?

id

このデプロイされたアプリケーションの固有の識別子です。

String

はい。

depends-on

このデプロイメントBeanが依存するBeanの名前が初期化中です。このBeanの前にこれらのBeanが初期化されることがBeanファクトリにより保証されます。

String

はい。

location

デプロイするバンドルの場所を指定するURLです。相対URLが指定されている場合、locationは相対DOMAIN_DIRドメイン・ディレクトリです。

例:

location="file:applications/simpleApp/simpleApp.jar"

DOMAIN_DIR/applications/simpleAppのディレクトリにあるsimpleApp.jarバンドルをOracle Event Processingサーバーにデプロイすることを指定します。

String

いいえ。

state

Oracle Event Processingサーバーにデプロイした後、バンドルのあるべき状態を指定します。この属性の値は次のいずれかである必要があります。

- start: クライアント・リクエストの取得をただちに開始するようにバンドルをインストールし起動します。

- install: バンドルをインストールしますが、起動はしません。

- update: 既存のバンドルを更新します。

デフォルト値: start

String

いいえ。

E.2.3 例

次の例は、デプロイメント・ファイルでのwlevs:deployment要素の使用方法を示しています。

<?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:wlevs="http://www.bea.com/ns/wlevs/deployment" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.bea.com/ns/wlevs/deployment
http://www.bea.com/ns/wlevs/deployment/deployment.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
</bean>
<wlevs:deployment
id="fx"
state="start"
location="file:${wlevs.domain.home}/applications/fx/com.bea.wlevs.example.fx_11.1.0.0.jar"/>
</beans>

F スキーマ参照: サーバー構成wlevs_server_config.xsd

この付録では、ロギング、Oracle Continuous Query Language (CQL)、Secure Sockets Layer (SSL)、Java Management Extensions (JMX)、HTTPパブリッシュ・サブスクライブなどのOracle Event Processingサーバーの属性およびサービスを構成するのに使用するXMLの背後にあるスキーマである、welvs_server_config.xsdスキーマの要素へのリファレンスを示します。

この付録の内容は次のとおりです。

- F.1項「Oracle Event Processingサーバー構成要素の概要」

- F.2項「auth-constraint」

- F.3項「bdb-config」

- F.4項「channels」

- F.5項「channel-constraints」

- F.6項「channel-resource-collection」

- F.7項「cluster」

- F.8項「connection-pool-params」

- F.9項「cql」

- F.10項「data-source」

- F.11項「data-source-params」

- F.12項「driver-params」

- F.13項「domain」

- F.14項「debug」

- F.15項「event-store」

- F.16項「exported-jndi-context」

- F.17項「http-pubsub」

- F.18項「jetty」

- F.19項「jetty-web-app」

- F.20項「jmx」

- F.21項「jndi-context」

- F.22項「log-file」

- F.23項「log-stdout」

- F.24項「logging-service」

- F.25項「message-filters」

- F.26項「name」

- F.27項「netio」

- F.28項「netio-client」

- F.29項「partition-order-capacity」

- F.30項「path」

- F.31項「pubsub-bean」

- F.32項「rdbms-event-store-provider」

- F.33項「rmi」

- F.34項「scheduler」

- F.35項「server-config」

- F.36項「services」

- F.37項「show-detail-error-message」

- F.38項「ssl」

- F.39項「timeout-seconds」

- F.40項「transaction-manager」

- F.41項「use-secure-connections」

- F.42項「weblogic-instances」

- F.43項「weblogic-jta-gateway」

- F.44項「weblogic-rmi-client」

- F.45項「work-manager」

- F.46項「xa-params」

F.1 Oracle Event Processingサーバー構成要素の概要

Oracle Event Processingには、Oracle Event Processingサーバー専用の属性およびサービスの構成に使用する、多数のサーバー構成要素が用意されています。

F.1.1 要素の階層

最上位レベルのOracle Event Processingサーバー構成要素は、次の階層で構成されます。

- config

- domain

- rmi

- jndi-context

- exported-jndi-context

- jmx

- transaction-manager

- work-manager

- logging-service

- log-stdout

- log-file

- jetty-web-app

- netio

- jetty

- netio-client

- debug

- data-source

- http-pubsub

- event-store

- cluster

- bdb-config

- rdbms-event-store-provider

- ssl

- weblogic-rmi-client

- weblogic-jta-gateway

- use-secure-connections

- show-detail-error-message

- cql

F.1.2 Oracle Event Processingサーバー構成ファイルの例

次に示すサンプルOracle Event Processingサーバー構成ファイルはHellowWorldアプリケーションのものであり、様々なOracle Event Processing要素の使用方法を示しています。

<?xml version="1.0" encoding="UTF-8"?>
<n1:config xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/server wlevs_server_config.xsd"
xmlns:n1="http://www.bea.com/ns/wlevs/config/server"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<domain>
<name>WLEventServerDomain</name>
</domain>

<netio>
<name>NetIO</name>
<port>9002</port>
</netio>

<netio>
<name>sslNetIo</name>
<ssl-config-bean-name>sslConfig</ssl-config-bean-name>
<port>9003</port>
</netio>

<work-manager>
<name>JettyWorkManager</name>
<min-threads-constraint>5</min-threads-constraint>
<max-threads-constraint>10</max-threads-constraint>
</work-manager>

<jetty>
<name>JettyServer</name>
<network-io-name>NetIO</network-io-name>
<work-manager-name>JettyWorkManager</work-manager-name>
<secure-network-io-name>sslNetIo</secure-network-io-name>
</jetty>

<rmi>
<name>RMI</name>
<http-service-name>JettyServer</http-service-name>
</rmi>

<jndi-context>
<name>JNDI</name>
</jndi-context>

<exported-jndi-context>
<name>exportedJndi</name>
<rmi-service-name>RMI</rmi-service-name>
</exported-jndi-context>

<jmx>
<rmi-service-name>RMI</rmi-service-name>
<rmi-jrmp-port>9999</rmi-jrmp-port>
<jndi-service-name>JNDI</jndi-service-name>
<rmi-registry-port>9004</rmi-registry-port>
</jmx>

<ssl>
<name>sslConfig</name>
<key-store>./ssl/evsidentity.jks</key-store>
<key-store-pass>
<password>{Salted-3DES}s4YUEvH4Wl2DAjb45iJnrw==</password>
</key-store-pass>
<key-store-alias>evsidentity</key-store-alias>
<key-manager-algorithm>SunX509</key-manager-algorithm>
<ssl-protocol>TLS</ssl-protocol>
<enforce-fips>false</enforce-fips>
<need-client-auth>false</need-client-auth>
</ssl>

<http-pubsub>
<name>pubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
<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>

<!-- Sample cluster configuration -->
<!--
<cluster>
<server-name>myServer</server-name>
<multicast-address>239.255.0.1</multicast-address>
<enabled>coherence</enabled>
<security>none</security>
<groups></groups>
</cluster>
-->

<logging-service>
<name>myLogService</name>
<log-file-config>myFileConfig</log-file-config>
<stdout-config>myStdoutConfig</stdout-config>
<logger-severity>Notice</logger-severity>
<!-- logger-severity-properties is used to selectively enable logging for
individual categories -->
<!--logger-severity-properties>
<entry>
<key>org.springframework.osgi.extender.internal.dependencies.startup</key>
<value>Debug</value>
</entry>
</logger-severity-properties-->
</logging-service>

<log-file>
<name>myFileConfig</name>
<rotation-type>none</rotation-type>
</log-file>

<log-stdout>
<name>myStdoutConfig</name>
<stdout-severity>Debug</stdout-severity>
</log-stdout>

</n1:config>

F.2 auth-constraint

この要素を使用すると、channel-constraints要素の認可制約を構成できます。

チャネルの詳細は、「channels」を参照してください。

F.2.1 子要素

auth-constraintサーバー構成要素は、表F-1で一覧表示される子要素をサポートします。

表F-1 auth-constraintの子要素

XMLタグ

タイプ

説明

description

string

ロールの説明。

role-name

string

有効なロール名。

『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のユーザー、グループおよびロールに関する項

F.2.2 属性

auth-constraintサーバー構成要素には属性がありません。

F.2.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のauth-constraint要素の使用方法を示します。

<http-pubsub>
<name>myPubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
...
<channel-constraints>
<element>
...
<auth-constraint>
<description>Administrators</description>
<role-name>admin</role-name>
</auth-constraint>
</element>
</channel-constraints>
</pub-sub-bean>
</http-pubsub>

F.3 bdb-config

この要素を使用すると、Berkeleyデータベース・インスタンスを使用するデフォルトのイベント・ストア・プロバイダを構成できます。

オプションで、F.32項「rdbms-event-store-provider」で説明するように、イベント・ストア・プロバイダとしてリレーショナル・データベースのインスタンスを使用するようにOracle Event Processingサーバーを構成できます。

F.3.1 子要素

bdb-configサーバー構成要素は、表F-2で一覧表示される子要素をサポートします。

表F-2 bdb-configの子要素

XMLタグ

タイプ

説明

db-env-path

string

Oracle Event Processingサーバーは、サブディレクトリ内でサーバーのDOMAIN_DIR/servername/configディレクトリに関連するBerkeleyデータベースのインスタンスを作成しますが、このサブディレクトリを指定します。ここで、DOMAIN_DIRは、/oracle_cep/user_projects/domains/myDomainなどのドメイン・ディレクトリを参照し、servernameはdefaultserverなどのサーバー名を参照します。

デフォルト: bdb

cache-size

long

Berkeleyデータベースのキャッシュ・エントリに使用可能なメモリー量をバイト単位で指定します。キャッシュ・サイズを調整し、Berkeleyデータベースのパフォーマンスをチューニングできます。

詳細は、次を参照してください:

- http://www.oracle.com/technology/documentation/berkeley-db/je/GettingStartedGuide/cachesize.html

- http://www.oracle.com/technology/documentation/berkeley-db/je/java/com/sleepycat/je/EnvironmentMutableConfig.html#setCacheSize(long)

デフォルト: je.maxMemoryPercent * JVM最大メモリー

F.3.2 属性

bdb-configサーバー構成要素には属性がありません。

F.3.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のbdb-config要素の使用方法を示します。

<bdb-config>
<db-env-path>bdb</db-env-path>
<cache-size>1000</cache-size>
</bdb-config>

F.4 channels

この要素を使用すると、pubsub-bean要素の1つ以上のチャネルを構成できます。

チャネル・パターンは、常にスラッシュ(/)で開始します。クライアントはこれらのチャネルをサブスクライブし、メッセージのパブリッシュまたは受信のいずれかを行います。

F.4.1 子要素

channelsサーバー構成要素には、1つ以上のelement子要素が含まれ、それぞれの子要素はchannel-pattern子要素およびゼロ以上のmessage-filters子要素を持ちます。各message-filters子要素には、message-filters要素に対応するmessage-filter-nameのstring値を持つelement子要素が含まれます。

F.4.2 属性

channelsサーバー構成要素には属性がありません。

F.4.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のchannels要素の使用方法を示します。

<http-pubsub>
<name>myPubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
<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>

F.5 channel-constraints

この要素を使用すると、pubsub-bean要素の1つ以上のチャネル制約を構成できます。

チャネルの詳細は、「channels」を参照してください。

F.5.1 子要素

channel-constraintsサーバー構成要素には、1つ以上のelement子要素が含まれ、それぞれの子要素は次の子要素をサポートします。

- channel-resource-collection

- auth-constraint

F.5.2 属性

channel-constraintsサーバー構成要素には属性がありません。

F.5.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のchannel-constraints要素の使用方法を示します。

<http-pubsub>
<name>myPubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
...
<channel-constraints>
<element>
<channel-resource-collection>
<element>
<channel-resource-name>Foo</channel-resource-name>
<descriptions>
<element>Foo</element>
</descriptions>
<channel-patterns>
<element>Foo</element>
</channel-patterns>
<channel-operations>
<element>Foo</element>
</channel-operations>
</element>
</channel-resource-collection>
<auth-constraint>
<description>Foo</description>
<role-name>Foo</role-name>
</auth-constraint>
</element>
</channel-constraints>
</pub-sub-bean>
</http-pubsub>

F.6 channel-resource-collection

この要素を使用すると、channel-constraints要素の1つ以上のチャネル・リソース・コレクションを構成できます。

チャネルの詳細は、「channels」を参照してください。

F.6.1 子要素

channel-resource-collectionサーバー構成要素には、表F-3で一覧表示されている子要素をサポートするゼロ以上のelement子要素が含まれます。

表F-3 channel-resource-collectionの子要素

XMLタグ

タイプ

説明

channel-resource-name

string

このチャネル・リソース名。

descriptions

string

このチャネル・リソース・コレクションの説明。

この要素には、string値を持つelement子要素が含まれます。

channel-patterns

string

チャネル・パターンを指定します。

この要素には、string値を持つelement子要素が含まれます。

channel-operations

string

チャネルへの操作を指定し、次を含む値を検証します。

- create

- delete

- subscribe

- publish

この要素には、string値を持つelement子要素が含まれます。

F.6.2 属性

channel-resource-collectionサーバー構成要素には属性がありません。

F.6.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のchannel-resource-collection要素の使用方法を示します。

<http-pubsub>
<name>myPubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
...
<channel-constraints>
<element>
<channel-resource-collection>
<element>
<channel-resource-name>Foo</channel-resource-name>
<descriptions>
<element>Foo</element>
</descriptions>
<channel-patterns>
<element>Foo</element>
</channel-patterns>
<channel-operations>
<element>Foo</element>
</channel-operations>
</element>
</channel-resource-collection>
<auth-constraint>
<description>Foo</description>
<role-name>Foo</role-name>
</auth-constraint>
</element>
</channel-constraints>
</pub-sub-bean>
</http-pubsub>

F.7 cluster

>この要素を使用すると、Oracle Event Processingサーバーでクラスタ・コンポーネントを構成できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processingネイティブ・クラスタリングによるマルチサーバー・ドメインの管理に関する項を参照してください。

F.7.1 子要素

clusterサーバー構成要素は、表F-4で一覧表示される子要素をサポートします。

表F-4 クラスタの子要素

XMLタグ

タイプ

説明

name

string

このクラスタの名前。詳細は、「name」を参照してください。

server-name

string

一意のサーバー名を指定します。Oracle Event Processing Visualizerは、サーバーをコンソールで表示するときにこの要素の値を使用します。

デフォルト値:

- Oracle Event Processingネイティブ・クラスタリング: WLEvServer-identity。ここで、identityはidentity要素の値です。

- Oracle Coherence:WLEvServer-identity。ここで、identityはOracle Coherenceによって決定されるメンバーIDです。

server-host-name

string

ポイント・ツー・ポイントHTTPマルチサーバー通信に使用されるホスト・アドレスまたはIPを指定します。デフォルト値は、マシンのデフォルトNICに関連付けられたIPアドレスです。

multicast-address

string

この子要素は、マルチサーバー・ドメインのすべてのサーバーが同一のコンピュータにホストされていない場合に必要となります。この場合、multicast-address要素を省略することができ、Oracle Event ProcessingはコンピュータのIPアドレスに基づいて自動的にマルチキャスト・アドレスをマルチサーバー・ドメインに割り当てます。

ただし、サーバーが異なるコンピュータ上でホストされる場合、適切なドメイン・ローカル・アドレスを提供する必要があります。Oracleは、239.255.X.X形式のアドレスを使用することをお薦めします。自動で割り当てられたマルチキャスト・アドレスは、このアドレスに基づきます。

このmulticast-addressを使用するすべてのOracle Event Processingサーバーは、同じサブセット上で稼働する必要があります。

Oracle Coherenceを使用すると、拡張機能もあります。ユニキャスト・アドレスを使用する場合、Oracle CoherenceはWell Knownアドレス(WKA)モードで構成されます。これは、マルチキャストをサポートしない環境で必要です。

multicast-interface

string

マルチキャスト・アドレスのバインド先のインタフェース名。次のいずれかになります。

- eth0などの単純な名前です。

- 192.168.1.2などの、NICのバインド先のIPアドレス。

- NICのバインド先のIPアドレスおよびネットワーク・マスク。192.68.1.2/255.255.255.0のように、/で区切られます。

multicast-port

int

マルチキャスト・トラフィックに使用されるポートを指定します。デフォルト値は9100です。

identity

string

Oracle Event Processingネイティブ・クラスタリングにのみ適用可能: サーバーのアイデンティティを指定し、1からINT_MAXまでの整数にする必要があります。Oracle Event Processingは、マルチサーバー操作中にサーバー・アイデンティティを数値的に比較し、最小のアイデンティティを持つサーバーがドメイン・コーディネータになります。マルチサーバー・ドメイン内の各サーバーは、必ず異なるアイデンティティを持つようにしてください。サーバーが同一のアイデンティティを持つ場合、マルチサーバー操作の結果は予測できなくなります。

Oracle Coherenceには適用できません。

enabled

説明を参照

クラスタが有効かどうかを指定します。有効な値:

- coherence

- evs4j

- true: クラスタは有効(Oracle Coherenceモード)

- false: クラスタは無効(デフォルト)

security

説明を参照

このクラスタのセキュリティ・タイプを指定します。有効な値:

- none: デフォルト値。マルチサーバー・ドメインにセキュリティを構成しないことを指定します。

- encrypt: マルチサーバー・メッセージが暗号化されるように指定します。

groups

string

このクラスタが属するグループ名のカンマ区切りのリストを指定します。詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のグループに関する項を参照してください。

operation-timeout

int

ポイント・ツー・ポイントHTTPマルチサーバー・リクエストのタイムアウトをミリ秒単位で指定します。デフォルト値は30000です。

F.7.2 属性

clusterサーバー構成要素には属性がありません。

F.7.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のcluster要素の使用方法を示します。

<cluster>
<name>MyCluster</name>
<server-name>myServer1</server-name>
<multicast-address>239.255.0.1</multicast-address>
<identity>1</identity>
<enabled>true</enabled>
</cluster>

この例では、cluster要素の一意の識別子はMyClusterです。

F.8 connection-pool-params

この要素を使用すると、接続プール関連のdata-sourceパラメータを指定できます。

F.8.1 子要素

connection-pool-paramsサーバー構成要素は、表F-5で一覧表示される子要素をサポートします。

表F-5 connection-pool-paramsの子要素

XMLタグ

タイプ

説明

statement-timeout

int

現在実行中の文がタイムアウトする時間です。statement-timeoutは、基礎となるJDBCドライバ・サポートに依存します。サーバーは、java.sql.Statement.setQueryTimeoutメソッドを使用することによって、JDBCドライバに指定された時間を渡します。JDBCドライバがこのメソッドをサポートしない場合、例外がスローされることがあり、タイムアウト値が無視されます。値を-1に指定すると、この機能は無効になります。値を0に指定すると、文はタイムアウトしないことになります。

デフォルト: -1

profile-harvest-frequency-seconds

int

診断プロファイルの収集操作中の秒数。

デフォルト: 300

inactive-connection-timeout-seconds

int

接続が再要求され、接続プールに解放される前に予約された接続で非アクティブになる秒数。

デフォルト: 0

shrink-frequency-seconds

int

要求を満たすために徐々に増加した接続プールが縮小する前に待機する秒数。

デフォルト: 900

driver-interceptor

string

JDBCドライバへのメソッド・コールを補足するために使用されるアプリケーション・クラスの絶対名を指定します。指定されるアプリケーションは、weblogic.jdbc.extensions.DriverInterceptorインタフェースを実装する必要があります。

seconds-to-trust-an-idle-pool-connection

int

接続がアプリケーションに渡される前、または定期的な接続テストの処理中に、その接続がまだ有効であると信頼されて接続テストがスキップされる接続使用の秒数。

デフォルト: 10

pinned-to-thread

boolean

このオプションは、アプリケーションが論理接続を終了した後でさえもプールされたデータベース接続を維持するための実行スレッドを有効化することによって、パフォーマンスを向上できます。

デフォルト: false。

test-connections-on-reserve

boolean

クライアントに渡す前に接続をテストします。test-table-nameを指定する必要があります。

デフォルト: false。

profile-type

int

収集対象のプロファイル・データの種類を指定します。

statement-cache-type

string

文キャッシュに格納されたプリコンパイルされた文の管理に使用するアルゴリズム有効な値:

- LRU: 新しいプリコンパイルされた文または呼出し可能な文が使用されるときに、最も長い期間使用されていない文がキャッシュ内で置換されます。

- FIXED: プリコンパイルされた文および呼出し可能な文の最初の固定数がキャッシュされます。

デフォルト: LRU

connection-reserve-timeout-seconds

int

接続プールからの接続を予約するコールがタイムアウトするまでの秒数。0に設定すると、コールはタイムアウトしません。-1に設定すると、コールはすぐにタイムアウトします。

デフォルト: -1

credential-mapping-enabled

boolean

アプリケーションがデータベース接続をリクエストするとき、サーバーがデータベースIDのマップに基づいてデータベース接続上で軽量クライアントIDを設定することを有効化します。

デフォルト: false。

login-delay-seconds

int

各物理データベース接続を作成するまでにかかる遅延時間の秒数。この遅延により、短時間に連続する複数の接続リクエストを処理できないデータベース・サーバーがサポートされます。遅延は、物理データベース接続が作成されるときは常に、初期データ・ソースの作成時およびデータ・ソースの存続期間中に発生します。

デフォルト: 0

test-table-name

string

物理データベース接続のテスト時に使用するデータベース表の名前。この名前は、test-frequency-secondsを指定し、test-reserved-connectionsを有効化するときに必要になります。接続テストに使用されるデフォルトのSQLコードはselect count(*) from test-table-nameです。ここで、test-table-nameはtest-table-name要素の値です。大半のデータベース・サーバーは、表スキャンを回避するためにこのSQLを最適化しますが、表名にtest-table-nameを設定してもよいでしょう。この表は、行をほとんど持たないか、あるいはまったく持ちません。test-table-nameがSQLで始まる場合、その先行トークンに続く残りの文字列は、標準の問合せのかわりに接続テストに使用されるリテラルのSQL文と解釈されます。

statement-cache-size

int

キャッシュに保存されるプリコンパイルされた文および呼出し可能な文の数で、1から1024までになります。これによって、サーバーのパフォーマンスが向上することがあります。

デフォルト: 10

init-sql

string

これを実行するためのSQL文は、新しく作成された物理データベース接続を初期化します。文はSQLで開始し、次にスペースを入れます。

connection-creation-retry-frequency-seconds

int

データベースへの接続確立を試行する間隔の秒数。この値を設定しないと、データ・ソース作成はデータベースが使用できない場合に失敗します。値を設定し、データ・ソースの作成時にデータベースが使用できない場合、サーバーは、指定する秒数後にもう一度プール内で接続の作成を試行し、成功するまで接続の作成を試行し続けます。0に設定すると、接続の再試行は無効化されます。

デフォルト: 0

test-frequency-seconds

int

未使用の接続がサーバーにテストされる秒間隔。(「テスト対象の表名」を指定する必要があります)テストに失敗した接続は閉じられ、再度開かれて有効な物理接続が再確立されます。テストが再度失敗すると、その接続は閉じられます。マルチ・データ・ソースでは、サーバーが以前に異常とマークしたデータ・ソースの状態をチェックする頻度をこの属性が制御します。0に設定すると、この機能は無効化されます。

デフォルト: 120

jdbc-xa-debug-level

int

XAドライバのJDBCデバッグ・レベルを指定します。

デフォルト: 10

initial-capacity

int

データ・ソースで接続プールの作成時に作成する物理接続数。この接続数を作成できない場合、データ・ソースの作成は失敗します。

デフォルト: 1

max-capacity

int

この接続プールが保持可能な物理接続の最大数。

デフォルト: 15

capacity-increment

int

新規接続の接続プールへの追加時に作成される接続数。

デフォルト: 1

highest-num-waiters

int

データ・ソースの接続プールから接続を予約するために待機している間に、スレッドを同時実行的にブロックできる接続リクエストの最大数。

デフォルト: Integer.MAX_VALUE。

F.8.2 属性

connection-pool-paramsサーバー構成要素には属性がありません。

F.8.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のconnection-pool-params要素の使用方法を示します。

<data-source>
<name>orads</name>
<xa-params>
<keep-xa-conn-till-tx-complete>true</keep-xa-conn-till-tx-complete>
</xa-params>
<driver-params>
<url>jdbc:oracle:thin:@localhost:1521:ce102</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<element>
<name>user</name>
<value>wlevs</value>
</element>
<element>
<name>password</name>
<value>wlevs</value>
</element>
</properties>
</driver-params>
<connection-pool-params>
<initial-capacity>5</initial-capacity>
<max-capacity>10</max-capacity>
<test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
<test-frequency-seconds>5</test-frequency-seconds>
</connection-pool-params>
<data-source-params>
<jndi-names>
<element>orads</element>
</jndi-names>
<global-transactions-protocol>None</global-transactions-protocol>
</data-source-params>
</data-source>

F.9 cql

この要素を使用すると、Oracle Event ProcessingサーバーでOracle CQL専用オプションを構成できます。

F.9.1 子要素

cqlサーバー構成要素は、次の子要素をサポートしています。

- name

- scheduler

- partition-order-capacity

F.9.2 属性

cqlサーバー構成要素には属性がありません。

F.9.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のcql要素の使用方法を示します。

<cql>
<name>myCQL</name>
<storage>
<folder>myfolder</folder>
<metadata-name>myname</metadata-name>
</storage>
<scheduler>
<class-name>myclass</class-name>
<threads>10</threads>
<direct-interop>false</direct-interop>
</scheduler>
</cql>

この例では、cql要素の一意の識別子はmyCQLです。

F.10 data-source

この構成タイプは、DataSourceサービスの構成を定義します。

F.10.1 子要素

data-sourceサーバー構成要素は、次の子要素をサポートしています。

- name

- xa-params

- data-source-params

- connection-pool-params

- driver-params

F.10.2 属性

data-sourceサーバー構成要素には属性がありません。

F.10.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のdata-source要素の使用方法を示します。

<data-source>
<name>orads</name>
<driver-params>
<url>jdbc:oracle:thin:@localhost:1521:ce102</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<element>
<name>user</name>
<value>wlevs</value>
</element>
<element>
<name>password</name>
<value>wlevs</value>
</element>
</properties>
</driver-params>
<connection-pool-params>
<initial-capacity>5</initial-capacity>
<max-capacity>10</max-capacity>
<test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
<test-frequency-seconds>5</test-frequency-seconds>
</connection-pool-params>
<data-source-params>
<jndi-names>
<element>orads</element>
</jndi-names>
<global-transactions-protocol>None</global-transactions-protocol>
</data-source-params>
</data-source>

この例では、data-source要素の一意の識別子はoradsです。

F.11 data-source-params

この要素を使用すると、データ・ソース関連のdata-sourceパラメータを指定できます。

F.11.1 子要素

data-source-paramsサーバー構成要素は、表F-6で一覧表示される子要素をサポートします。

表F-6 data-source-paramsの子要素

XMLタグ

タイプ

説明

algorithm-type

説明を参照

マルチ・データ・ソースの接続リクエスト処理を決定するアルゴリズム。有効な値:

- Failover

- Load-Balancing

デフォルト: Failover

stream-chunk-size

int

ストリーム・データ型のデータ・チャンク・サイズを1から65536まで指定します。

デフォルト: 256

row-prefetch

boolean

1回のサーバー・アクセスで複数の行がプリフェッチされる(つまり、サーバーからクライアントに送信される)かどうかを指定します。

デフォルト: false。

data-source-list

string

マルチ・データ・ソースが接続リクエストをルーティングする対象のデータ・ソースのリスト。リスト内のデータ・ソースの順序は、フェイルオーバーの順序を決定します。

failover-request-if-busy

boolean

フェイルオーバー・アルゴリズムを使用するマルチ・データ・ソースでは、現在のデータ・ソースのすべての接続が使用中である場合に、接続リクエストを次のデータ・ソースにフェイルオーバーできます。

デフォルト: false。

row-prefetch-size

int

行のプリフェッチが有効化されている場合、クライアント用にプリフェッチする結果セットの行数を2から65536まで指定します。

デフォルト: 48

jndi-names

説明を参照

このデータ・ソースのバインド先のJNDIパス。デフォルトでは、JNDI名はデータ・ソースの名前です。この要素には、次の子要素が含まれます。

- element: 有効なdata-source要素の文字列名を含みます。詳細は、「data-source」を参照してください。

- config-data-source-DataSourceParams-JNDINames.

scope

boolean

データ・ソースの範囲を指定します。GlobalのみはMSAでサポートされる範囲なので注意してください。

デフォルト: Global

connection-pool-failover-callback-handler

string

マルチ・データ・ソースがマルチ・データ・ソース内の別のデータ・ソースに接続リクエストをフェイルオーバーまたはフェイルバックする準備ができているときに、送られたコールバックを処理するアプリケーション・クラスの名前。この名前は、weblogic.jdbc.extensions.ConnectionPoolFailoverCallbackインタフェースを実装するアプリケーション・クラスの絶対名です。

global-transactions-protocol

int

データ・ソースのトランザクション・プロトコル(グローバル・トランザクション処理動作)を決定します。有効な値:

- TwoPhaseCommit: 標準XA トランザクション処理。XAドライバが必要です。

- LoggingLastResource: 1つの非XAリソースに対するパフォーマンス強化。

- EmulateTwoPhaseCommit: 1つの非XAリソースがグローバル・トランザクションに参加することを有効化します。ただし、データにリスクが発生することがあります。

- OnePhaseCommit: 非XAドライバを使用した、1フェーズXAトランザクション処理。これはデフォルト設定です。

- None: ローカル・トランザクションのみサポートします。

デフォルト: OnePhaseCommit

F.11.2 属性

data-source-paramsサーバー構成要素には属性がありません。

F.11.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のdata-source-params要素の使用方法を示します。

<data-source>
<name>orads</name>
<xa-params>
<keep-xa-conn-till-tx-complete>true</keep-xa-conn-till-tx-complete>
</xa-params>
<driver-params>
<url>jdbc:oracle:thin:@localhost:1521:ce102</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<element>
<name>user</name>
<value>wlevs</value>
</element>
<element>
<name>password</name>
<value>wlevs</value>
</element>
</properties>
</driver-params>
<connection-pool-params>
<initial-capacity>5</initial-capacity>
<max-capacity>10</max-capacity>
<test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
<test-frequency-seconds>5</test-frequency-seconds>
</connection-pool-params>
<data-source-params>
<jndi-names>
<element>orads</element>
</jndi-names>
<global-transactions-protocol>None</global-transactions-protocol>
</data-source-params>
</data-source>

F.12 driver-params

この要素を使用すると、JDBCドライバ関連のdata-sourceパラメータを指定できます。

F.12.1 子要素

driver-paramsサーバー構成要素は、表F-7で一覧表示される子要素をサポートします。

表F-7 driver-paramsの子要素

XMLタグ

タイプ

説明

use-xa-data-source-interface

boolean

サーバーがJDBCドライバのXAインタフェースを使用するように指定します。データベース接続の作成に使用されるJDBCドライバ・クラスが、JDBCドライバのXAおよび非XAバージョンの両方を実装する場合、この属性を設定して、サーバーがJDBCドライバをXAドライバまたは非XAドライバとして処理することを指定するようにできます。

デフォルト: true。

password

string

物理データベース接続の作成時にJDBCドライバに渡されるパスワード属性。

driver-name

string

データ・ソースの接続プールで物理データベース接続の作成に使用するJDBCドライバ・クラスの完全パッケージ名。

url

string

データベースの接続先のURL。URLの書式は、使用するJDBCドライバによって異なります。このURLは、物理データベース接続を作成するためにJDBCドライバに渡されます。

properties

string

物理データベース接続の作成時にJDBCドライバに渡されるプロパティのリストを指定します。この要素には、次の子要素を持つ1つ以上のelement子要素が含まれます。

- name: プロパティ名。

- value: プロパティ値。

F.12.2 属性

driver-paramsサーバー構成要素には属性がありません。

F.12.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のdriver-params要素の使用方法を示します。

<data-source>
<name>orads</name>
<xa-params>
<keep-xa-conn-till-tx-complete>true</keep-xa-conn-till-tx-complete>
</xa-params>
<driver-params>
<url>jdbc:oracle:thin:@localhost:1521:ce102</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<element>
<name>user</name>
<value>wlevs</value>
</element>
<element>
<name>password</name>
<value>wlevs</value>
</element>
</properties>
</driver-params>
<connection-pool-params>
<initial-capacity>5</initial-capacity>
<max-capacity>10</max-capacity>
<test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
<test-frequency-seconds>5</test-frequency-seconds>
</connection-pool-params>
<data-source-params>
<jndi-names>
<element>orads</element>
</jndi-names>
<global-transactions-protocol>None</global-transactions-protocol>
</data-source-params>
</data-source>

F.13 domain

この要素を使用すると、Oracle Event Processingサーバーでドメイン名を構成できます。

F.13.1 子要素

domainサーバー構成要素は、次の子要素をサポートしています。

- name

F.13.2 属性

domainサーバー構成要素には属性がありません。

F.13.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のdomain要素の使用方法を示します。

<domain>
<name>WLEventServerDomain</name>
</domain>

この例では、domainの一意の識別子はWLEventServerDomainです。

F.14 debug

この要素を使用すると、Oracle Event Processingサーバーの1つ以上のデバッグ・プロパティを構成できます。

F.14.1 子要素

debugサーバー構成要素は、表F-8で一覧表示される子要素をサポートします。

表F-8 debugの子要素

XMLタグ

タイプ

説明

name

string

このdebug構成の名前。詳細は、「name」を参照してください。

debug-properties

string

デバッグ・フラグ名(そのパッケージ名は使用せずに)を使用し、値をtrueに指定することによって、1つ以上の子要素が形成されます。

すべてのデバッグ・フラグの完全リストに関する詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』の構成ファイルを使用したOracle Event Processingデバッグ・オプションの構成方法に関する項を参照してください。

F.14.2 属性

debugサーバー構成要素には属性がありません。

F.14.3 例

次の例では、Oracle Event Processingサーバー構成ファイル内でデバッグ・フラグcom.bea.core.debug.DebugSDSを使用して、Simple Declarative Services (SDS) デバッグ処理を有効にするためのdebug要素の使用方法を示します。

<debug>
<name>myDebug</name>
<debug-properties>
<DebugSDS>true</DebugSDS>
...
</debug-properties>
</debug>

F.15 event-store

この要素を使用すると、Oracle Event Processingサーバーのイベント・ストアを構成できます。

F.15.1 子要素

event-storeサーバー構成要素は、表F-9で一覧表示される子要素をサポートします。

表F-9 event-storeの子要素

XMLタグ

タイプ

説明

name

string

このdebug構成の名前。詳細は、「name」を参照してください。

provider-order

string

Oracle Event Processingサーバーがアクセスする順序で1つ以上のprovider子要素の名前を指定します。

詳細は、次を参照してください:

- rdbms-event-store-provider

F.15.2 属性

event-storeサーバー構成要素には属性がありません。

F.15.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のevent-store要素の使用方法を示します。

<config>
<event-store>
<name>myEventStore</name>
<provider-order>
<provider>provider1</provider>
<provider>provider2</provider>
</provider-order>
</event-store>
</config>

この例では、adapterの一意の識別子はmyEventStoreです。

F.16 exported-jndi-context

この構成タイプは、RMIを使用してクライアントからアクセス可能なリモートJNDIサービスをエクスポートするために使用されます。これによってRMIサービスを使用するJNDIコンテキストが登録されるため、InitialContextオブジェクトの作成時にプロバイダURLパラメータを渡すクライアントによってリモートからアクセスできます。このサービスでは、jndi-context構成オブジェクトも指定される必要があります。指定されない場合、このサービスを開始できません。

F.16.1 子要素

exported-jndi-contextサーバー構成要素は、表F-10で一覧表示される子要素をサポートします。

表F-10 exported-jndi-contextの子要素

XMLタグ

タイプ

説明

name

string

このdebug構成の名前。詳細は、「name」を参照してください。

rmi-service-name

string

ネットワークでこのJNDIコンテキストを処理するために使用されるRMIサービスの名前。構成内の既存のRMIオブジェクトと一致する必要があります。詳細は、「rmi」を参照してください。

F.16.2 属性

exported-jndi-contextサーバー構成要素には属性がありません。

F.16.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のexported-jndi-context要素の使用方法を示します。

<rmi>
<name>myRMI</name>
<http-service-name>TestJetty</http-service-name>
</rmi>

<exported-jndi-context>
<name>RemoteJNDI</name>
<rmi-service-name>myRMI</rmi-service-name>
</exported-jndi-context>

この例では、adapterの一意の識別子はRemoteJNDIです。

F.17 http-pubsub

この要素を使用すると、HTTPパブリッシュ/サブスクライブ・サービスを構成できます。

F.17.1 子要素

http-pubsubサーバー構成要素は、次の子要素をサポートしています。

- name

- path

- pubsub-bean

F.17.2 属性

http-pubsubサーバー構成要素には属性がありません。

F.17.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のhttp-pubsub要素の使用方法を示します。

<http-pubsub>
<name>myPubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
<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>

この例では、http-pubsub要素の一意の識別子はmyPubsubです。

F.18 jetty

この要素を使用すると、Jetty HTTPサーバーのインスタンスを構成できます。

F.18.1 子要素

jettyサーバー構成要素は、表F-11で一覧表示される子要素をサポートします。

表F-11 jettyの子要素

XMLタグ

タイプ

説明

name

string

このjetty要素の名前。詳細は、「name」を参照してください。

network-io-name

string

使用されるネットワークI/Oサービス名。これは、サーバーがどのポートでリスニングするかも定義します。このパラメータは、有効な「netio」構成オブジェクトの名前を参照する必要があります。

work-manager-name

string

スレッドのプールに使用されるワーク・マネージャの名前。このパラメータが指定されない場合、Jettyはデフォルトのワーク・マネージャを使用します。詳細は、「work-manager」を参照してください。

scratch-directory

string

Webアプリケーション、JSP、およびその他のWebアーティファクトに必要な一時ファイルが保持されるディレクトリ名。このパラメータは、jetty-web-app要素上のscratch-directoryパラメータによってオーバーライドされます。このディレクトリが存在しない場合、作成されます。

debug-enabled

boolean

Jettyコードにおけるデバッグ処理を有効にします。指定されたデバッグ・メッセージは、ログ・サービスにおけるすべての他のDebugレベル・メッセージと同じ方法でログに記録されます。

listen-port

int

設定されるネットワーク・ポートの名前。このパラメータは、network-io-nameパラメータが指定されない場合には設定できません。このパラメータがnetwork-io-nameのかわりに使用されるとき、netioモジュールを必要としない指定されたソケットI/Oサブシステムが使用されます。

secure-network-io-name

string

セキュアな通信に使用されるネットワークI/Oサービス名。指定されたサービスは、SSL暗号化をサポートするために構成される必要があります。このパラメータは、有効なnetio構成オブジェクトの名前を参照する必要があります。

F.18.2 属性

jettyサーバー構成要素には属性がありません。

F.18.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のjetty要素の使用方法を示します。

<jetty>
<name>TestJetty</name>
<work-manager-name>WM</work-manager-name>
<network-io-name>Netio</network-io-name>
<secure-network-io-name>SecureNetio</secure-network-io-name>
<debug-enabled>false</debug-enabled>
<scratch-directory>JettyWork</scratch-directory>
</jetty>

この例では、jetty要素の一意の識別子はTestJettyです。

F.19 jetty-web-app

この要素を使用すると、Jettyによって使用されるWebアプリケーションを表示できます。このオブジェクトの各インスタンスは、Jettyサービスを使用することによってデプロイされる必要があるWebアプリケーションを表します。

F.19.1 子要素

jetty-web-appサーバー構成要素は、表F-12で一覧表示される子要素をサポートします。

表F-12 jetty-web-appの子要素

XMLタグ

タイプ

説明

name

string

このjetty-web-app要素の名前。詳細は、「name」を参照してください。

context-path

string

このWebアプリケーションがWebサーバーのネームスペースにデプロイされるコンテキスト・パス。

デフォルト: /

scratch-directory

string

JettyがこのWebアプリケーションの一時ファイルを保存する場所。このパラメータは、jetty要素上のscratch-directoryパラメータをオーバーライドします。このディレクトリが存在しない場合、作成されます。

path

string

サーバー上のWebアプリケーションの場所を指すファイル名。ディレクトリまたはWARファイルを指定できます。

jetty-name

string

このWebアプリケーションがデプロイされるJettyサービス名。この名前は、既存のjetty構成オブジェクトの名前に一致する必要があります。詳細は、「jetty」を参照してください。

F.19.2 属性

jetty-web-appサーバー構成要素には属性がありません。

F.19.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のjetty-web-app要素の使用方法を示します。

<jetty-web-app>
<name>financial</name>
<context-path>/financial</context-path>
<path>../testws2/financialWS.war</path>
<jetty-name>TestJetty</jetty-name>
</jetty-web-app>

この例では、jetty-web-app要素の一意の識別子はfinancialです。

F.20 jmx

この要素を使用すると、Oracle Event ProcessingサーバーでJava Management Extension (JMX)のプロパティを構成できます。

F.20.1 子要素

jmxサーバー構成要素は、表F-13で一覧表示される子要素をサポートします。

表F-13 jmxの子要素

XMLタグ

タイプ

説明

name

string

このdebug構成の名前。詳細は、「name」を参照してください。

rmi-service-name

string

ネットワークでこのJNDIコンテキストを処理するために使用されるRMIサービスの名前。構成内の既存のRMIオブジェクトと一致する必要があります。詳細は、「rmi」を参照してください。

jndi-service-name

string

JMXサーバーがそのオブジェクトをバインドする先のJNDIサービス名。

F.20.2 属性

jmxサーバー構成要素には属性がありません。

F.20.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のjmx要素の使用方法を示します。

<jmx>
<name>myJMX</name>
<jndi-service-name>JNDI</jndi-service-name>
<rmi-service-name>RMI</rmi-service-name>
</jmx>

この例では、jmx要素の一意の識別子はmyJMXです。

F.21 jndi-context

この構成オブジェクトは、JNDIプロバイダの構成に使用されます。構成内に配置されると、MSA JNDIコンテキストが初期化されます。この構成タイプの1つのインスタンスは、JNDIサービスが使用される場合に、exported-jndi-context構成タイプによってローカルまたはリモートのいずれかで構成内に配置される必要があります。

F.21.1 子要素

jndi-contextサーバー構成要素は、表F-14で一覧表示される子要素をサポートします。

表F-14 jndi-contextの子要素

XMLタグ

タイプ

説明

name

string

このdebug構成の名前。詳細は、「name」を参照してください。

default-provider

string

このパラメータのデフォルトは、trueです。falseに設定される場合、プロバイダはデフォルトとしてインストールされません。プロバイダは、DefaultProviderがtrueに設定されている構成で1つ以上のJNDIContextType Beanが存在するかぎり、デフォルトとして設定されます。構成内に複数のJNDIContextTypeオブジェクトが配置されている場合、その影響は1つのオブジェクトが起動された場合と同一になります。

F.21.2 属性

jndi-contextサーバー構成要素には属性がありません。

F.21.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のjndi-context要素の使用方法を示します。

<jndi-context>
<name>myJNDI</name>
<default-provider>true</default-provider>
</jndi-context>

この例では、adapterの一意の識別子はmyJNDIです。

F.22 log-file

この要素を使用すると、Oracle Event Processingサーバーでファイルへのロギングを構成できます。

F.22.1 子要素

log-fileサーバー構成要素は、表F-15で一覧表示される子要素をサポートします。

表F-15 log-fileの子要素

XMLタグ

タイプ

説明

name

string

このwork-manager要素の名前。詳細は、「name」を参照してください。

number-of-files-limited

boolean

ローテーションされたファイルを永久に保存するかどうかを決定します。

デフォルト: false。

rotation-type

string

ログ・ファイルのローテーション方法をサイズ・ベースまたは時間ベースで行うか、あるいはまったく行わないかを決定します。有効な値:

- bySize

- byTime

- none

デフォルト: bySize

rotation-time

string

最初のローテーションが発生したときの時間(k:mm形式)。ここで、kは24時間表記の時刻、mmは分を示します。

デフォルト: 00:00

rotated-file-count

int

ローテーションされた古いファイルを削除する場合、このパラメータによって最新のファイルを常に保存する数が決定されます。

デフォルト: 7

rotation-size

int

ログ・ファイルがローテーションされるときのサイズのしきい値(単位はKB)。

デフォルト: 500

rotation-time-span-factor

long

時間ベースのログ・ローテーションの頻度となる一定のミリ秒に到達すると期間に適用される倍率。

デフォルト: (long)(3600 * 1000)

rotation-time-span

int

各時間ベースのログ・ローテーションの間隔。

デフォルト: 24

base-log-file-name

string

ログ・ファイル名。

デフォルト: server.log

rotate-log-on-startup-enabled

boolean

起動時にログ・ファイルをローテーションするかどうかを指定します。

デフォルト: true。

log-file-severity

string

ハンドラに伝播されるメッセージのしきい値の重要度を指定します。デフォルトはInfoで、重大度がDebugまたはTraceのいずれかに設定されていることを保証する必要があるDebugおよびTraceメッセージを確認できます。有効な値:

- Emergency

- Alert

- Critical

- Error

- Warning

- Notice

- Info

- Debug

- Trace

デフォルト: Notice

log-file-rotation-dir

string

ローテーションされた古いファイルが保存されているディレクトリ。設定しない場合、古いファイルはベース・ログ・ファイルとして同一ディレクトリ内に保存されます。

F.22.2 属性

log-fileサーバー構成要素には属性がありません。

F.22.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のlog-file要素の使用方法を示します。

<log-file>
<name>logFile</name>
<number-of-files-limited>true</number-of-files-limited>
<rotated-file-count>4</rotated-file-count>
<rotate-log-on-startup-enabled>true</rotate-log-on-startup-enabled>
</log-file>

この例では、log-file要素の一意の識別子はlogFileです。

F.23 log-stdout

この要素を使用すると、Oracle Event Processingサーバーで標準出力(コンソール)へのロギングを構成できます。

F.23.1 子要素

log-stdoutサーバー構成要素は、表F-16で一覧表示される子要素をサポートします。

表F-16 log-stdoutの子要素

XMLタグ

タイプ

説明

name

string

このwork-manager要素の名前。詳細は、「name」を参照してください。

stack-trace-depth

int

標準出力に表示するスタック・トレース・フレーム数を決定します。すべてのフレームはログ・ファイルに表示されます。値を-1に設定すると、すべてのフレームが表示されます。

デフォルト: -1

stack-trace-enabled

boolean

ログ記録されたメッセージに含まれるとき、スタック・トレースをコンソールにダンプするかどうかを指定します。

デフォルト: true。

stdout-severity

string

ハンドラに伝播されるメッセージのしきい値の重要度を定義します。デフォルトはInfoで、重大度がDebugまたはTraceのいずれかに設定されていることを保証する必要があるDebugおよびTraceメッセージを確認できます。有効な値:

- Emergency

- Alert

- Critical

- Error

- Warning

- Notice

- Info

- Debug

- Trace

デフォルト: Notice

F.23.2 属性

log-stdoutサーバー構成要素には属性がありません。

F.23.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のlog-stdout要素の使用方法を示します。

<log-stdout>
<name>logStdout</name>
<stdout-severity>Debug</stdout-severity>
</log-stdout>

この例では、log-stdout要素の一意の識別子はlogStdoutです。

F.24 logging-service

この要素を使用すると、Oracle Event Processingサーバーでロギング・サービスを構成できます。

F.24.1 子要素

logging-serviceサーバー構成要素は、表F-17で一覧表示される子要素をサポートします。

表F-17 logging-serviceの子要素

XMLタグ

タイプ

説明

name

string

このwork-manager要素の名前。詳細は、「name」を参照してください。

log-file-config

string

ログ・ファイルとそのローテーション・ポリシーの構成。

stdout-config

string

stdout出力の構成。

logger-severity

string

ハンドラに伝播されるメッセージのしきい値の重要度を定義します。デフォルトはInfoで、重大度がDebugまたはTraceのいずれかに設定されていることを保証する必要があるDebugおよびTraceメッセージを確認できます。有効な値:

- Emergency

- Alert

- Critical

- Error

- Warning

- Notice

- Info

- Debug

- Trace

デフォルト: Info

logger-severity-properties

説明を参照

ロガー・ツリーにおける異なるノードの重大度の値で、それぞれがkeyおよびvalue子要素を含む1つ以上のentry子要素から構成されます。

F.24.2 属性

logging-serviceサーバー構成要素には属性がありません。

F.24.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のlogging-service要素の使用方法を示します。

<logging-service>
<name>myLogService</name>
<stdout-config>myStdoutConfig</stdout-config>
<logger-severity>Notice</logger-severity>
<logger-severity-properties>
<entry>
<key>FileAdapter</key>
<value>Debug</value>
</entry>
<entry>
<key>CQLProcessor</key>
<value>Debug</value>
</entry>
</logger-severity-properties>
</logging-service>

この例では、logging-service要素の一意の識別子はmyLogServiceです。

F.25 message-filters

この要素を使用すると、pubsub-bean要素の1つ以上のメッセージ・フィルタを構成できます。

F.25.1 子要素

message-filtersサーバー構成要素には、それぞれがmessage-filter-nameおよびmessage-filter-class子要素を持つ1つ以上のelement子要素が含まれます。

F.25.2 属性

message-filtersサーバー構成要素には属性がありません。

F.25.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のmessage-filters要素の使用方法を示します。

<http-pubsub>
<name>pubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
...
<message-fitlers>
<element>
<message-filter-name>Foo</message-filter-name>
<message-filter-class>Foo</message-filter-class>
</element>
<element>
<message-filter-name>Foo</message-filter-name>
<message-filter-class>Foo</message-filter-class>
</element>
</message-filters>
...
</pub-sub-bean>
</http-pubsub>

F.26 name

この要素を使用すると、Oracle Event Processingサーバー構成要素の一意の識別子を宣言できます。

F.26.1 子要素

nameサーバー構成要素には、子要素がありません。

F.26.2 属性

nameサーバー構成要素には属性がありません。

F.26.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のname要素の使用方法を示します。

<http-pubsub>
<name>pubsub</name>
<path>/pubsub</path>
...
</http-pubsub>

F.27 netio

この要素を使用すると、ネットワーク入力/出力(IO)サービスを表示できます。このサービスは、ネットワークIO用サーバーとして機能させるために他のサービスによって使用されます。

F.27.1 子要素

netioサーバー構成要素は、表F-18で一覧表示される子要素をサポートします。

表F-18 netioの子要素

XMLタグ

タイプ

説明

name

string

このnetio要素の名前。詳細は、「name」を参照してください。

ssl-config-bean-name

string

使用するSSL構成オブジェクト名。nullではない場合、このクライアントは指定したSSL構成を使用してセキュア・ソケットを作成します。設定しない場合、SSLはサポートされません。

provider-type

string

基礎となるソケット実装にどのプロバイダを使用するかを指定します。有効なプロバイダ・タイプのリストは、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のネットワークI/Oプロバイダに関する項を参照してください。

io-threads

int

ソケットの処理に使用するスレッド数に関するプロバイダへのヒント。値を0に指定すると、プロバイダはデフォルト設定に基づいて選択を行うようになります。デフォルト: 0。

port

int

リスニングする元となるポート。サーバーはこのポート上で受信接続へのリスニングをただちに開始します。

listen-address

string

受信接続へのリスニングを行う元となるNetioのインスタンスのアドレス。a.b.c.d形式で数値のIPアドレスに設定されるか、またはホスト名に設定されます。設定しない場合、netioはすべてのネットワーク・インタフェース上でリスニングします。このパラメータの値は、サーバーが実際に起動するまで検証できないので注意してください。

F.27.2 属性

netioサーバー構成要素には属性がありません。

F.27.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のnetio要素の使用方法を示します。

<netio>
<name>myNetio</name>
<port>12345</port>
</netio>

この例では、netio要素の一意の識別子はmyNetioです。

F.28 netio-client

この要素を使用すると、非ブロック・ネットワークIOを実行するために使用されるネットワーク入力/出力(IO)サービスを登録できます。ただし、このサービスはサーバーとして機能せず、受信接続をリスニングしません。

F.28.1 子要素

netio-clientサーバー構成要素は、表F-19で一覧表示される子要素をサポートします。

表F-19 netio-clientの子要素

XMLタグ

タイプ

説明

name

string

このnetio要素の名前。詳細は、「name」を参照してください。

ssl-config-bean-name

string

使用するSSL構成オブジェクト名。nullではない場合、このクライアントは指定したSSL構成を使用してセキュア・ソケットを作成します。設定しない場合、SSLはサポートされません。

provider-type

string

基礎となるソケット実装にどのプロバイダを使用するかを指定します。有効なプロバイダ・タイプのリストは、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のネットワークI/Oプロバイダに関する項を参照してください。

F.28.2 属性

netio-clientサーバー構成要素には属性がありません。

F.28.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のnetio-client要素の使用方法を示します。

<netio-client>
<name>netiossl</name>
<ssl-config-bean-name>sslConfig</ssl-config-bean-name>
<provider-type>NIO</provider-type>
</netio-client>

この例では、netio-client要素の一意の識別子はnetiosslです。

F.29 partition-order-capacity

この要素を使用すると、ordering-constraint属性がPARTITION_ORDEREDに設定されている場合に問合せパーティションの最大容量を定義できます。これはcqlコンポーネントに設定します。パラレル実行用の問合せプロセッサが構成されていて、問合せのordering-constraint属性がPARTITION_ORDEREDに設定されている場合に、この要素の値を設定することを検討してください。

要素のデフォルト値は4です。

この値を設定できる場所(優先順位など)に関するベスト・プラクティスおよび情報などの詳細は、第17章「Oracle CQLでのイベント・ストリームの問合せ」の「問合せのパーティション化でのpartition-order-capacityの使用」を参照してください。

F.29.1 子要素

partition-order-capacity要素には子要素はありません。

F.29.2 属性

partition-order-capacity要素には属性はありません。

F.29.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のpartition-order-capacity要素の使用方法を示します。

<cql>
<name>myCQL</name>
<partition-order-capacity>20</partition-order-capacity>
</cql>

F.30 path

この要素を使用すると、http-pubsub要素のパスを構成できます。

F.30.1 子要素

path要素には子要素がありません。

F.30.2 属性

path要素には属性がありません。

F.30.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のpath要素の使用方法を示します。

<http-pubsub>
<name>myPubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
<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>

F.31 pubsub-bean

この要素を使用すると、http-pubsub要素のpublish-subscribe Beanを構成できます。

F.31.1 子要素

pubsub-beanサーバー構成要素は、次の子要素をサポートしています。

- name

- server-config

- message-filters

- channels

- channel-constraints

- services

F.31.2 属性

pubsub-beanサーバー構成要素には属性がありません。

F.31.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のpubsub-bean要素の使用方法を示します。

<http-pubsub>
<name>myPubsub</name>
<path>/pubsub</path>
<pub-sub-bean>
<server-config>
<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>

F.32 rdbms-event-store-provider

この要素を使用すると、Oracle Event Processingサーバーでリレーショナル・データベース管理システムを使用するイベント・ストア・プロバイダを構成できます。

デフォルトでは、Oracle Event ProcessingサーバーはF.3項「bdb-config」で説明されているように、Berkeleyデータベースのインスタンスをイベント・ストア・プロバイダとして使用します。

F.32.1 子要素

rdbms-event-store-providerサーバー構成要素は、表F-20で一覧表示される子要素をサポートします。

表F-20 rdbms-event-store-providerの子要素

XMLタグ

タイプ

説明

name

string

このdebug構成の名前。詳細は、「name」を参照してください。

init-timeout

int

このプロバイダが初期化するのをOracle Event Processingサーバーが待機する最大時間(ミリ秒)。

デフォルト: 10000ミリ秒。

data-source-name

string

データ・ソース要素の名前。詳細は、「data-source」を参照してください。

user-policy-attributes

説明を参照

追加のデータ・ソース・プロパティの指定に使用するkeyおよびvalue子要素をそれぞれが含む1つ以上のentry子要素。

F.32.2 属性

rdbms-event-store-providerサーバー構成要素には属性がありません。

F.32.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のrdbms-event-store-provider要素の使用方法を示します。

<rdbms-event-store-provider>
<name>test-rdbms-provider</name>
<init-timeout>10000</init-timeout>
<data-source-name>derby1</data-source-name>
<user-policy-attributes>
<entry>
<key>key1</key>
<value>value1</value>
</entry>
<key>key1</key>
<value>value1</value>
<entry>
</entry>
</user-policy-attributes>
</rdbms-event-store-provider>

この例では、rdbms-event-store-provider要素の一意の識別子はtest-rdbms-providerです。

F.33 rmi

この要素を使用すると、RMIサービスを構成できます。このサービスによって、サーバー側のオブジェクトをリモート・クライアントにエクスポートすることができます。

F.33.1 子要素

rmiサーバー構成要素は、表F-21で一覧表示される子要素をサポートします。

表F-21 rmiの子要素

XMLタグ

タイプ

説明

name

string

このrmi要素の名前。詳細は、「name」を参照してください。

heartbeat-period

int

切断通知をすべての登録済リスナーにトリガーする前に失敗したハートビートの試行回数。デフォルト値: 4。

http-service-name

string

HTTPサービス名で、このサービスがリモート・オブジェクトの登録に使用します。このサービスは、同名のJettyまたはTomcatのインスタンスによって提供されます。

heartbeat-interval

int

ハートビート間の時間(ミリ秒)。失敗したハートビートの試行回数がHeartbeatPeriod属性によって指定された値に到達したら、すべての登録済DisconnectListenerのインスタンスが通知されます。

デフォルト値: 5000

F.33.2 属性

rmiサーバー構成要素には属性がありません。

F.33.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のrmi要素の使用方法を示します。

<rmi>
<name>myRMI</name>
<http-service-name>TestJetty</http-service-name>
</rmi>

この例では、rmi要素の一意の識別子はmyRMIです。

F.34 scheduler

この要素を使用すると、Oracle Event Processingサーバーでcqlスケジューラ・オプションを構成できます。

F.34.1 子要素

schedulerサーバー構成要素は、表F-22で一覧表示される子要素をサポートします。

表F-22 schedulerの子要素

XMLタグ

タイプ

説明

class-name

string

sched_nameスケジュール・オプションの1つの値を、Oracle Event Processingサービス・エンジンのスケジュール・アルゴリズムを実装するJavaクラスの完全修飾パッケージ名として指定します。このクラスによって、Oracle Event Processingサービス・エンジンのスケジューラがOracle CQL問合せを実行する順序が決定されます。有効な値:

- oracle.cep.execution.scheduler.RoundRobinScheduler: このアルゴリズムは、時間スライスを平等な割合で順序通りに各Oracle CQL問合せに割り当て、すべてのプロセスを優先度なしに処理します。このオプションは、Oracle CQL問合せの数が大きく変動しない傾向の場合に適切です。

- oracle.cep.execution.scheduler.FIFOScheduler: このアルゴリズムは、時間スライスを作成された順序で各Oracle CQL問合せに割り当てます。このアルゴリズムは、Oracle CQL問合せの数が大きく変動する傾向の場合に適切です。

デフォルト: oracle.cep.execution.scheduler.RoundRobinScheduler

runtime

long

Oracle Event Processingサービス・エンジンのスケジューラが実行される秒数の合計。

デフォルト: 1000000ミリ秒。

time-slice

int

Oracle Event Processingサービス・エンジンのスケジューラがOracle CQL問合せを実行する頻度。

デフォルト: 1000ミリ秒

schedule-on-new-thread

boolean

Oracle Event Processingサービス・エンジンのスケジューラが個別のスレッドを使用するかどうか。オプション:

- true: スケジューラは個別のスレッドで実行されます。

- false: スケジューラは、Oracle Event Processingサービス・エンジンと同一のスレッドで実行されます(デフォルト)。

F.34.2 属性

schedulerサーバー構成要素には属性がありません。

F.34.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のscheduler要素の使用方法を示します。

<cql>
<name>myCQL</name>
<scheduler>
<class-name>oracle.cep.execution.scheduler.FIFOScheduler</class-name>
</scheduler>
</cql>

F.35 server-config

この要素を使用すると、pubsub-bean要素のサーバー専用プロパティを構成できます。

F.35.1 子要素

server-configサーバー構成要素は、表F-23で一覧表示される子要素をサポートします。

表F-23 server-configの子要素

XMLタグ

タイプ

説明

name

string

このserver-config要素の名前。詳細は、「name」を参照してください。

supported-transport

説明を参照

この要素には、1つ以上のtypes子要素が含まれます。子要素は各サポート対象トランスポートです。各types子要素には、stringの値としてトランスポート名を持つelement子要素が含まれます。有効な値:

- long-polling: このトランスポートを使用すると、クライアントはOracle Event Processingサーバーから情報をリクエストし、Oracle Event Processingサーバーが使用可能な情報を持たない場合、情報を持つまで応答しません。Oracle Event Processingサーバーが応答するとき、クライアントは通常、別のリクエストをただちに送信します。

- callback-polling: このトランスポートは、クロス・ドメイン構成を使用するHTTPパブリッシュ/サブスクライブ・アプリケーションに使用します。この構成では、ブラウザが1つのWebサーバー(JavaScriptコードを含む)からページをダウンロードし、HTTPパブリッシュ/サブスクライブ・クライアントとして別のサーバーに接続します。これは、Bayeuxプロトコルに必要です。Bayeuxプロトコルの詳細は、http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.html を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のHTTP Pub-Subサーバーの動作に関する項を参照してください。

client-timeout-secs

int

クライアントが接続/再接続のメッセージを送信しなかった場合に、HTTPパブリッシュ/サブスクライブ・サーバーがクライアントとの接続を切断してからの秒数を指定します。

デフォルト: 60

persistent-client-timeout-secs

int

永続クライアントが接続または再接続メッセージを送信しない間に、永続クライアントが切断されてパブリッシュ/サブスクライブ・サーバーによって削除されてからの秒数を指定します。この値は、client-timeout-secsよりも大きくする必要があります。永続クライアントが永続タイムアウトに到達する前に再接続する場合、クライアントは永続チャネルにパブリッシュされたすべてのメッセージをこの間に受信します。クライアントがタイムアウト後に再接続する場合は、メッセージを受信しません。

デフォルト: 600秒

interval-millisecs

int

クライアントが/meta/connectチャネルへの後続リクエストを遅延できる期間(ミリ秒)を指定します。

デフォルト: 500ミリ秒。

work-manager

string

メッセージをクライアントに配信するワーク・マネージャの名前を指定します。この要素の値は、割り当てるwork-managerのname子要素の値に対応します。

詳細は、「work-manager」を参照してください。

publish-without-connect-allowed

boolean

HTTPパブリッシュ/サブスクライブ・サーバーに明示的に接続せずに、クライアントがメッセージをパブリッシュできるかどうかを指定します。有効な値:

- true

- false

F.35.2 属性

server-configサーバー構成要素には属性がありません。

F.35.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のserver-config要素の使用方法を示します。

<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>

F.36 services

この要素を使用すると、pubsub-bean要素のサービス・プロパティを構成できます。

F.36.1 子要素

servicesサーバー構成要素には、表F-24で一覧表示されている子要素をそれぞれサポートする1つ以上のelement子要素が含まれます。

表F-24 servicesの子要素

XMLタグ

タイプ

説明

service-channel

string

サービス・チャネルを指定します。例: /service/echo。

service-class

string

このサービスを使用するクラスを指定します。例: EchoService。

service-method

string

サービス・クラスにおけるサービス・メソッドを定義します。このサービス・メソッドは、タイプObjectの唯一のペイロード・パラメータを持つ必要があります。例: Object echo(Object payload)。

F.36.2 属性

servicesサーバー構成要素には属性がありません。

F.36.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のservices要素の使用方法を示します。

<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>
<services>
<element>
<service-channel>Foo</service-channel>
<service-class>Foo</service-class>
<service-method>Foo</service-method>
</element>
</services>
</pub-sub-bean>
</http-pubsub>

F.37 show-detail-error-message

この要素を使用すると、Oracle Event Processingサーバーがセキュア接続を使用するかどうかを構成できます。

F.37.1 子要素

show-detail-error-messageサーバー構成要素は、表F-25で一覧表示される子要素をサポートします。

表F-25 show-detail-error-messageの子要素

XMLタグ

タイプ

説明

name

string

このshow-detail-error-message要素の名前。詳細は、「name」を参照してください。

value

boolean

詳細エラー・メッセージを表示するかどうか。有効な値:

- true: Oracle Event Processingサーバーが詳細エラー・メッセージを表示します。

- false: Oracle Event Processingサーバーが省略エラー・メッセージを表示します(デフォルト)。

F.37.2 属性

show-detail-error-messageサーバー構成要素には属性がありません。

F.37.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のshow-detail-error-message要素の使用方法を示します。

<show-detail-error-message>
<name>myShowDetail</name>
<value>true</value>
</show-detail-error-message>

この例では、show-detail-error-message要素の一意の識別子はmyShowDetailです。

F.38 ssl

この要素を使用すると、Oracle Event ProcessingサーバーでSecure Sockets Layer専用プロパティを構成できます。

F.38.1 子要素

sslサーバー構成要素は、表F-26で一覧表示される子要素をサポートします。

表F-26 sslの子要素

XMLタグ

タイプ

説明

name

string

このクラスタの名前。詳細は、「name」を参照してください。

key-store

string

./ssl/evsidentity.jksなどのキーストアへのファイル・パスを指定します。

key-store-pass

説明を参照

この要素には、キーストアへのアクセスに使用されるパスワードを指定するstringの値を持つpassword子要素が含まれます。

key-store-alias

string

キーストアの別名を指定します。

key-manager-algorithm

string

SunX509などのキー・マネージャ・アルゴリズムを指定します。

ssl-protocol

string

TLSなどのSSLプロトコルを指定します。

trust-store

string

./ssl/evstrust.jksなどのトラスト・ストアへのファイル・パスを指定します。

trust-store-pass

説明を参照

この要素には、トラスト・ストアへのアクセスに使用されるパスワードを指定するstringの値を持つpassword子要素が含まれます。

trust-store-alias

string

トラスト・ストアの別名を指定します。

trust-store-type

string

JKSなどのトラスト・ストア・タイプを指定します。

trust-manager-algorithm

string

SunX509などのトラスト・マネージャ・アルゴリズムを指定します。

enforce-fips

boolean

Oracle Event ProcessingサーバーがFederal Information Processing Standards (FIPS)認証済の擬似乱数ジェネレータを使用するかどうかを指定します。

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のFIPSに関する項を参照してください。

need-client-auth

boolean

クライアント証明書認可が必要かどうかを指定します。

ciphers

説明を参照

この要素には1つ以上のcipher子要素が含まれ、それぞれはciphersが必要であると指定するstringの値を持ちます。

secure-random-algorithm

string

enforce-fipsがtrueに設定されるとき、使用するセキュア・ランダム・アルゴリズムを指定します。有効な値:

- FIPS186PRNG

secure-random-provider

string

enforce-fipsがtrueに設定されるとき、使用するセキュア・ランダム・プロバイダを指定します。有効な値:

- JsafeJCE

F.38.2 属性

sslサーバー構成要素には属性がありません。

F.38.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のssl要素の使用方法を示します。

<ssl>
<name>sslConfig</name>
<key-store>./ssl/evsidentity.jks</key-store>
<key-store-pass>
<password>{Salted-3DES}s4YUEvH4Wl2DAjb45iJnrw==</password>
</key-store-pass>
<key-store-alias>evsidentity</key-store-alias>
<key-manager-algorithm>SunX509</key-manager-algorithm>
<ssl-protocol>TLS</ssl-protocol>
<enforce-fips>false</enforce-fips>
<need-client-auth>false</need-client-auth>
</ssl>

この例では、ssl要素の一意の識別子はsslConfigです。

F.39 timeout-seconds

この要素を使用すると、Oracle Event Processingサーバーでweblogic-jta-gatewayのデフォルト・トランザクション・タイムアウトを秒単位で構成できます。

デフォルト: 60

F.39.1 子要素

timeout-secondsサーバー構成要素には属性がありません。

F.39.2 属性

timeout-secondsサーバー構成要素には属性がありません。

F.39.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のtimeout-seconds要素の使用方法を示します。

<weblogic-jta-gateway>
<name>myJTAGateway</name>
<timeout-seconds>90</timeout-seconds>
<weblogic-instances>
<weblogic-instance>
<domain-name>ocep_domain</domain-name>
<server-name>fxserver</server-name>
<protocol>t3</protocol>
<host-address>ariel</host-address>
<port>9002</port>
</weblogic-instance>
</weblogic-instances>
</weblogic-jta-gateway>

F.40 transaction-manager

この要素を使用すると、Oracle Event Processingサーバーでトランザクション・マネージャ・プロパティを構成できます。

F.40.1 子要素

transaction-managerサーバー構成要素は、表F-27で一覧表示される子要素をサポートします。

表F-27 transaction-managerの子要素

XMLタグ

タイプ

説明

name

string

このtransaction-manager要素の名前。詳細は、「name」を参照してください。

max-resource-requests-on-server

int

各サーバーで許可されるリソースへの同時実行性リクエストの最大数。

デフォルト: 50

max-resource-unavailable-millis

long

リソースが失効を宣言される最大期間(ミリ秒)。この期間後、リソース・プロバイダが明示的にリソースを再登録する場合でも、リソースはもう一度使用可能を宣言されます。デフォルト: 1800000。

security-interop-mode

string

グローバル・トランザクションに参加するサーバー間のXAコールに使用される通信チャネルのセキュリティ・モードを指定します。ドメイン内のすべてのサーバー・インスタンスは、同一のセキュリティ・モード設定にする必要があります。有効な値:

- default: トランザクション・コーディネータは、有効化されている場合、管理チャネルからカーネル・アイデンティティを使用してコールします。それ以外は無名を使用してコールします。管理チャネルが有効化されていない場合、man-in-the-middle攻撃が可能です。

- Performance: トランザクション・コーディネータは、常に無名を使用してコールします。これは、悪質なサードパーティがman-in-the-middle攻撃を使用してトランザクションの結果に影響を与えようとする可能性があるため、黙示的にセキュリティ・リスクがあることを示唆します。

- Compatibility: トランザクション・コーディネータは、セキュアでないチャネルからカーネル・アイデンティティとしてコールします。これは、man-in-the-middle攻撃が成功すると、攻撃者によって両ドメインへの管理制御が取得されてしまうため、セキュリティ・リスクが高くなります。この設定は、強固なネットワーク・セキュリティが設置されているときにのみ使用します。

デフォルト: default

parallel-xa-enabled

boolean

使用可能なスレッドが存在する場合に、XAコールを並列で実行します。

デフォルト: true。

tlog-location

string

トランザクション・ログを含むファイル・ストアの場所。この属性は、ファイルシステム内の絶対パスまたは相対パスのいずれかにすることができます。

max-xa-call-millis

long

リソースへのXAコールが許可される最大存続期間。リソースへの特定のXAコールが限度を超える場合、リソースは使用不可能を宣言されます。

デフォルト: 120000

timeout-seconds

int

デフォルトのトランザクション・タイムアウト(秒単位)。

デフォルト: 30

checkpoint-interval-seconds

int

トランザクション・マネージャがトランザクション・ログ・チェックポイント操作を実行する間隔。

デフォルト: 300

forget-heuristics

boolean

トランザクション・マネージャが自動的にヒューリスティック・トランザクション完了のXAResource放棄操作を実行するかどうかを指定します。有効化すると、トランザクション・マネージャは、トランザクションがヒューリスティックな結果を認識するとすべてのリソースのXA Resource forget操作を自動的に実行します。リソースがヒューリスティックな決定をレポートするときに、リソースを使用した操作を把握している場合にのみ、この機能を無効にします。

デフォルト: true。

before-completion-iteration-limit

int

トランザクション・マネージャが、完了前の同期コールバック処理を実行するサイクルの最大数。

デフォルト: 10

abandon-timeout-seconds

int

2フェーズ・コミット(準備およびその後)の第2フェーズにおけるトランザクションのトランザクション中止タイムアウト秒数。2フェーズ・コミット処理の第2フェーズ中に、すべてのリソース・マネージャがトランザクションの完了を示すまで、トランザクション・マネージャがトランザクションを完了させようとします。このタイムアウトを使用することによって、トランザクションの第2フェーズ中にトランザクションを完了させようとする試行をトランザクション・マネージャが永続する最大時間を設定できます。中止トランザクション・タイマーの期限が切れた後、トランザクションを解決するための試行は行われなくなります。中止される前にトランザクションが準備状態にある場合は、トランザクション・マネージャがトランザクションをロールバックし、中止されたトランザクションのかわりに保持されたロックを解放します。

デフォルト: 86400

serialize-enlistments-gc-interval-millis

long

リソースの登録のシリアライズに使用される内部オブジェクトがクリーンアップされる間隔。

デフォルト: 30000

unregister-resource-grace-period

int

トランザクション・マネージャがリソースの登録解除前に完了するリソースを含むトランザクションを待機する猶予期間(秒数)。猶予期間は、アプリケーションにパッケージ化されたJDBCデータ・ソース・モジュールなどの、登録解除されたリソースのために中止されたトランザクションのリスクを最小化するのに役立ちます。指定された猶予期間中、コールが戻されるまでunregisterResourceコールがブロックされ、関連するリソースに対して新しいトランザクションは開始されません。リソースの処理中のトランザクション数が0になると、unregisterResourceコールがただちに戻されます。猶予期間の終了時、リソースに関連する処理中のトランザクションが残っている場合、unregisterResourceコールが戻され、リソースが以前に登録されたサーバー上でログ・メッセージが書き込まれます。

デフォルト: 30

rmi-service-name

string

分散型トランザクション調整に使用されるRMIサービス名。

詳細は、「rmi」を参照してください。

max-unique-name-statistics

int

統計情報が保持される一意のトランザクション名の最大数。

デフォルト: 1000

purge-resource-from-checkpoint-interval-seconds

int

チェックポイント・レコードに含まれるように、特定のリソースがアクセスされる必要がある間隔。

デフォルト: 86400

max-transactions

int

このサーバー上で許可される同時進行中のトランザクションの最大数。

デフォルト: 10000

migration-checkpoint-interval-seconds

int

移行されたトランザクション・ログ(TLOG)にチェックポイントが実行される間隔。

デフォルト: 60

recovery-threshold-millis

long

リソースが使用可能になるまでリカバリが試行される間隔。

デフォルト: 300000

max-transactions-health-interval-millis

long

JTAサブシステムがCRITICALの状態を宣言するために、トランザクション・マップがフルになる必要がある間隔。

デフォルト: 60000

parallel-xa-dispatch-policy

string

XA操作を並列に実行するときに使用するディスパッチ・ポリシー。デフォルトでは、トランザクションを調整するスレッドのポリシーが使用されます。

F.40.2 属性

transaction-managerサーバー構成要素には属性がありません。

F.40.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のtransaction-manager要素の使用方法を示します。

<transaction-manager>
<name>My_tm</name>
<timeout-seconds>30</timeout-seconds>
<abandon-timeout-seconds>86400</abandon-timeout-seconds>
<forget-heuristics>true</forget-heuristics>
<before-completion-iteration-limit>12</before-completion-iteration-limit>
<max-transactions>10100</max-transactions>
<max-unique-name-statistics>500</max-unique-name-statistics>
<max-resource-requests-on-server>50</max-resource-requests-on-server>
<max-resource-unavailable-millis>1800000</max-resource-unavailable-millis>
<recovery-threshold-millis>300000</recovery-threshold-millis>
<max-transactions-health-interval-millis>
60000
</max-transactions-health-interval-millis>
<purge-resource-from-checkpoint-interval-seconds>
86400
</purge-resource-from-checkpoint-interval-seconds>
<checkpoint-interval-seconds>300</checkpoint-interval-seconds>
<parallel-xa-enabled>true</parallel-xa-enabled>
<unregister-resource-grace-period>30</unregister-resource-grace-period>
<security-interop-mode>default</security-interop-mode>
<rmi-service-name>RMI_ce1</rmi-service-name>
</transaction-manager>

この例では、transaction-manager要素の一意の識別子はMy_tmです。

F.41 use-secure-connections

この要素を使用すると、Oracle Event Processingサーバーがセキュア接続を使用するかどうかを構成できます。

詳細は、『Oracle Fusion Middleware Oracle Event Processing管理者ガイド』のOracle Event Processing Visualizerのマルチサーバー・ドメインでSSLを構成する方法に関する項を参照してください。

F.41.1 子要素

use-secure-connectionsサーバー構成要素は、表F-28で一覧表示される子要素をサポートします。

表F-28 use-secure-connectionsの子要素

XMLタグ

タイプ

説明

name

string

このuse-secure-connections要素の名前。詳細は、「name」を参照してください。

value

boolean

セキュア接続を使用するかどうか。有効な値:

- true: Oracle Event Processingサーバーがセキュア接続のみを使用します。

- false: Oracle Event Processingサーバーがセキュアでない接続を承諾します。

F.41.2 属性

use-secure-connectionsサーバー構成要素には属性がありません。

F.41.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のuse-secure-connections要素の使用方法を示します。

<use-secure-connections>
<name>myUseSecConn</name>
<value>true</value>
</use-secure-connections>

この例では、use-secure-connections要素の一意の識別子はmyUseSecConnです。

F.42 weblogic-instances

この要素を使用すると、weblogic-jta-gateway要素のOracle Event Processingサーバー・インスタンスを構成できます。

F.42.1 子要素

weblogic-instancesサーバー構成要素は、表F-29で一覧表示されている子要素をそれぞれ持つゼロ以上のweblogic-instance子要素をサポートしています。

表F-29 weblogic-instancesの子要素

XMLタグ

タイプ

説明

domain-name

string

Oracle Event Processingサーバーのドメイン名を指定します。

server-name

string

Oracle Event Processingサーバーの名前を指定します。

protocol

string

JTAプロトコルを指定します。

デフォルト: t3

host-address

string

Oracle Event Processingサーバーのホスト名またはIPアドレス。

port

int

Oracle Event Processingサーバーのnetioポート。

F.42.2 属性

weblogic-instancesサーバー構成要素には属性がありません。

F.42.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のweblogic-instances要素の使用方法を示します。

<weblogic-jta-gateway>
<name>myJTAGateway</name>
<timeout-seconds>90</timeout-seconds>
<weblogic-instances>
<weblogic-instance>
<domain-name>ocep_domain</domain-name>
<server-name>fxserver</server-name>
<protocol>t3</protocol>
<host-address>ariel</host-address>
<port>9002</port>
</weblogic-instance>
</weblogic-instances>
</weblogic-jta-gateway>

F.43 weblogic-jta-gateway

この要素を使用すると、シングルトンOracle Event Processingサーバー・クライアントのJTAゲートウェイ・サービスの属性を構成できます。

F.43.1 子要素

weblogic-jta-gatewayサーバー構成要素は、次の子要素をサポートしています。

- name

- timeout-seconds

- weblogic-instances

F.43.2 属性

weblogic-jta-gatewayサーバー構成要素には属性がありません。

F.43.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のweblogic-jta-gateway要素の使用方法を示します。

<weblogic-jta-gateway>
<name>myJTAGateway</name>
<timeout-seconds>90</timeout-seconds>
<weblogic-instances>
<weblogic-instance>
<domain-name>ocep_domain</domain-name>
<server-name>fxserver</server-name>
<protocol>t3</protocol>
<host-address>ariel</host-address>
<port>9002</port>
</weblogic-instance>
</weblogic-instances>
</weblogic-jta-gateway>

この例では、weblogic-jta-gateway要素の一意の識別子はmyJTAGatewayです。

F.44 weblogic-rmi-client

この要素を使用すると、シングルトンOracle Event ProcessingサーバーのRMIクライアントの属性を構成できます。

F.44.1 子要素

weblogic-rmi-clientサーバー構成要素は、表F-30で一覧表示される子要素をサポートします。

表F-30 weblogic-rmi-clientの子要素

XMLタグ

タイプ

説明

name

string

このweblogic-rmi-client要素の名前。詳細は、「name」を参照してください。

netio-name

string

使用するnetio-client要素の名前を指定します。詳細は、「netio-client」を参照してください。

secure-netio-name

string

SSLに構成されるnetio-client要素の名前を指定します。詳細は、「netio-client」を参照してください。

F.44.2 属性

weblogic-rmi-clientサーバー構成要素には属性がありません。

F.44.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のweblogic-rmi-client要素の使用方法を示します。

<netio-client>
<name>netio</name>
<provider-type>NIO</provider-type>
</netio-client>

<netio-client>
<name>netiossl</name>
<provider-type>NIO</provider-type>
<ssl-config-bean-name>sslConfig</ssl-config-bean-name>
</netio-client>

<weblogic-rmi-client>
<name>wlclient</name>
<netio-name>netio</netio-name>
<secure-netio-name>netiossl</secure-netio-name>
</weblogic-rmi-client>

この例では、 weblogic-rmi-client要素の一意の識別子はwlclientです。

F.45 work-manager

この要素を使用すると、Oracle Event Processingサーバーでワーク・マネージャを構成できます。

F.45.1 子要素

work-managerサーバー構成要素は、表F-31で一覧表示される子要素をサポートします。

表F-31 work-managerの子要素

XMLタグ

タイプ

説明

name

string

このwork-manager要素の名前。詳細は、「name」を参照してください。

min-threads-constraint

int

このワーク・マネージャが使用する最小スレッド制約。

デフォルト: -1

fairshare

int

このワーク・マネージャが使用するフェア・シェア値。

デフォルト: -1

max-threads-constraint

int

このワーク・マネージャが使用する最大スレッド制約。

デフォルト: -1

F.45.2 属性

work-managerサーバー構成要素には属性がありません。

F.45.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のwork-manager要素の使用方法を示します。

<work-manager>
<name>WM</name>
<fairshare>5</fairshare>
<min-threads-constraint>1</min-threads-constraint>
<max-threads-constraint>4</max-threads-constraint>
</work-manager>

この例では、work-manager要素の一意の識別子はWMです。

F.46 xa-params

この要素を使用すると、分散型トランザクション関連のdata-sourceパラメータを指定できます。

F.46.1 子要素

xa-paramsサーバー構成要素は、表F-32で一覧表示される子要素をサポートします。

表F-32 xa-paramsの子要素

XMLタグ

タイプ

説明

keep-xa-conn-till-tx-complete

boolean

トランザクションが完了するまで、接続プールからグローバル・トランザクションへの同一のXAデータベース接続にサーバーが関連できるようにします。XAドライバを使用する接続プールにのみ適用されます。この設定を使用すると、JDBC XAドライバに関する特定の問題に対処できます。

デフォルト: true。

xa-transaction-timeout

int

トランザクション・ブランチのタイムアウトとして設定する秒数。設定すると、この値がXAリソース・マネージャ(通常はJDBCドライバ)上のXAResource.setTransactionTimeoutコールのトランザクション・タイムアウト値として渡されます。この値が0に設定されると、トランザクション・マネージャは、メソッド内でグローバル・サーバーのトランザクション・タイムアウトを秒単位で渡します。設定する場合、この値はグローバル・サーバーのトランザクション・タイムアウト以上にする必要があります。注意: トランザクション・ブランチのタイムアウトを設定できるようにxa-set-transaction-timeoutを有効化する必要があります。

デフォルト: 0

rollback-local-tx-upon-conn-close

boolean

サーバーが、接続を接続プールに戻す前に接続上でrollbackをコールするようにできます。この属性を有効にすると、ロールバック・コールがデータベース・サーバーとの通信を要求するときのパフォーマンスに影響があります。

デフォルト: false。

xa-retry-duration-seconds

int

トランザクション・マネージャがリソース上で復元操作を実行する際の持続時間を秒単位で決定します。値をゼロに指定すると、再試行は実行されません。

デフォルト: 60

xa-set-transaction-timeout

boolean

サーバーが、xa-transaction-timeoutの値に基づいてトランザクション・ブランチのタイムアウトを設定できるようにします。有効化すると、トランザクション・マネージャはXAResource.startの前にXAResource.setTransactionTimeoutをコールし、XAトランザクション・タイムアウト値またはグローバル・トランザクション・タイムアウトのいずれかを渡します。XAリソース上でデフォルトのタイムアウト値を超える長期間実行中のトランザクションがある場合、トランザクション・ブランチのタイムアウトを設定できます。

デフォルト: false。

keep-logical-conn-open-on-release

boolean

物理XA接続が接続プールに戻されるときに、サーバーが、グローバル・トランザクションに対して論理JDBC接続を開いたまま保持できるようにします。データベース接続の作成に使用されるXAドライバまたはDBMSが、トランザクション処理の継続中に(物理XA接続は接続プールに戻されても)論理JDBC接続を開いたまま保持できるように求める場合、このオプションを選択します。XAドライバを使用するデータ・ソースにのみ適用されます。この設定を使用すると、JDBC XAドライバに関する特定の問題に対処できます。

デフォルト: false。

resource-health-monitoring

boolean

JTAリソースがXAデータ・ソースの状態を監視できるようにします。有効化すると、XAリソースがMaxXACallMillisで指定された期間中にXAコールに応答できない場合に、サーバーがデータ・リソースを正常でないとマークし、リソースに対する以降のコールをブロックします。このプロパティはXAデータ・リソースのみに適用され、XAドライバ以外を使用するデータ・リソースは無視されます。

デフォルト: true。

new-xa-conn-for-commit

boolean

専用のXA接続がグローバル・トランザクションのコミットおよびロールバック処理に使用されることを指定します。XAドライバを使用するデータ・ソースにのみ適用されます。この設定を使用すると、JDBC XAドライバに関する特定の問題に対処できます。

デフォルト: false。

xa-end-only-once

boolean

保留中の各XAResource.startに対してXAResource.endを1回のみコールされることを指定します。このオプションによって、XAドライバはXAResource.end(TMSUSPEND)およびXAResource.end(TMSUCCESS)を連続してコールできなくなります。XAドライバを使用するデータ・ソースにのみ適用されます。この設定を使用すると、JDBC XAドライバに関する特定の問題に対処できます。

デフォルト: false。

xa-retry-interval-seconds

int

XARetryDurationSecondsが正の値に指定される場合のXA再試行操作間の秒数。

デフォルト: 60

recover-only-once

boolean

トランザクション・マネージャがリソース上で1回のみ復元をコールすることを指定します。XAドライバを使用するデータ・ソースにのみ適用されます。この設定を使用すると、JDBC XAドライバに関する特定の問題に対処できます。

デフォルト: false。

need-tx-ctx-on-close

boolean

各種JDBCオブジェクト(結果セット、文、接続など)を終了するときにXAドライバが分散型トランザクション・コンテキストを要求するかどうかを指定します。XAドライバを使用する接続プールにのみ適用されます。有効化すると、トランザクション・コンテキストを持たないJDBCオブジェクトを終了中にスローされるSQLの例外が抑止されます。この設定を使用すると、JDBC XAドライバに関する特定の問題に対処できます。

デフォルト: false。

F.46.2 属性

xa-paramsサーバー構成要素には属性がありません。

F.46.3 例

次の例は、Oracle Event Processingサーバー構成ファイル内のxa-params要素の使用方法を示します。

<data-source>
<name>orads</name>
<xa-params>
<keep-xa-conn-till-tx-complete>true</keep-xa-conn-till-tx-complete>
</xa-params>
<driver-params>
<url>jdbc:oracle:thin:@localhost:1521:ce102</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<element>
<name>user</name>
<value>wlevs</value>
</element>
<element>
<name>password</name>
<value>wlevs</value>
</element>
</properties>
</driver-params>
<connection-pool-params>
<initial-capacity>5</initial-capacity>
<max-capacity>10</max-capacity>
<test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
<test-frequency-seconds>5</test-frequency-seconds>
</connection-pool-params>
<data-source-params>
<jndi-names>
<element>orads</element>
</jndi-names>
<global-transactions-protocol>None</global-transactions-protocol>
</data-source-params>
</data-source>

G スキーマ参照: メッセージ・カタログmsgcat.dtd

この付録では、ローカライズ可能なログ・メッセージのメッセージ・カタログ要素の構成に使用するXMLの背後にあるスキーマである、msgcat.dtdスキーマの要素へのリファレンスを示します。

この付録の内容は次のとおりです。

- G.1項「メッセージ・カタログ要素の概要」

- G.2項「message_catalog」

- G.3項「logmessage」

- G.4項「message」

- G.5項「messagebody」

- G.6項「messagedetail」

- G.7項「cause」

- G.8項「action」

G.1 メッセージ・カタログ要素の概要

Oracle Event Processingでは、ローカライズできるログ・メッセージの定義に使用する、多数のメッセージ・カタログ要素が提供されます。

G.1.1 要素の階層

最上位Oracle Event Processingメッセージ・カタログ要素は、メッセージのカタログ・タイプに応じて次の階層で構成されます。

- 例G-1「ログ・メッセージ・カタログの階層」

- 例G-2「シンプル・テキスト・カタログの階層」

例G-1 ログ・メッセージ・カタログの階層

message_catalog
log_message
messagebody
messagedetail
cause
action

例G-2 シンプル・テキスト・カタログの階層

message_catalog
message
messagebody

G.1.2 例

この項では、次のメッセージ・カタログの例を示します。

- 例G-3「ログ・メッセージ・カタログ」

- 例G-4「シンプル・テキスト・カタログ」

例G-3 ログ・メッセージ・カタログ

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
baseid="600000"
endid="600100">
<logmessage
messageid="600001"
severity="warning"
method="logNoAuthorization(String arg0, java.util.Date arg1,int arg2)">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

例G-4 シンプル・テキスト・カタログ

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog>
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0">
<message messageid="FileMenuTitle">
<messagebody>
File
</messagebody>
</message>
</message_catalog>

G.2 message_catalog

この要素はログ・メッセージ・カタログを表します。

G.2.1 子要素

message_catalog要素は、次の子要素をサポートしています。

- message

- logmessage

G.2.2 属性

表G-1では、message_catalog要素の属性を示します。

表G-1 message_catalog要素の属性

属性

説明

データ型

必須?

i18n_package

このカタログのLoggerクラスを含むJavaパッケージ。クラスの名前はカタログ・ファイルの名前に基づいて付けられます。たとえば、カタログの名前がmycat.xmlの場合、生成される Loggerクラスの名前はi18n_package.mycatLogger.classになります。

構文: 標準のJavaパッケージ構文。

例: i18n_package="programs.utils"

デフォルト: weblogic.i18n

String

いいえ。

I10n_package

カタログ用に生成したLogLocalizerプロパティを含むJavaパッケージ。たとえば、カタログの名前がmycat.xmlの場合、次のプロパティ・ファイルが生成されます。

- l10n_package.mycatLogLocalizer.properties

- l10n_packagemycatLogLocalizerDetail.properties

構文: 標準のJavaパッケージ構文。

例: l10n_package="programs.utils"

デフォルト: weblogic.i18n

String

いいえ。

subsystem

このカタログと関連付けられているサブシステムを識別する頭字語。サブシステムの名前はサーバー・ログに含まれ、メッセージの分離を目的として使用されます。

例: subsystem="MYUTIL"

String

はい。

version

使用されるmsgcat.dtdのバージョンを指定します。

使用方法: "1.0"である必要があります。

構文: x.y - ここで、xおよびyは数値です。

例: version="1.0"

String

はい。

baseid

このカタログで使用される最低のメッセージIDを指定します。構文: 1から6桁。例: baseid="600000"

有効な値:

- 000000はOracle Event Processingサーバー・カタログ

- 500000 :ユーザー定義のカタログ

String

いいえ。

endid

このカタログで使用される最高のメッセージIDを指定します。

構文: 1桁から6桁の数値。

例: endid="600100"

有効な値:

- 499999はOracle Event Processingサーバー・カタログ

- 999999 :ユーザー定義のカタログ

String

いいえ。

loggables

Loggableオブジェクトを返す追加メソッドを生成するかどうかを示します。

例: loggable="true"

有効な値:

- true

- false

デフォルト: false

String

prefix

ログに記録されるときにメッセージIDの先頭に追加するStringを指定します。Oracle Event Processingサーバー・メッセージは、接頭辞のデフォルトは「CEP」で、別の接頭辞を指定することはできません。ユーザー・メッセージは、任意の接頭辞を指定することが可能です。接頭辞が付いたメッセージIDは、ログ・エントリで次のように表示されます。

<[prefix-]id>

ここで、prefixはこの属性であり、idは特定のメッセージに関連付けられた6桁のメッセージIDです。

たとえば、接頭辞が"XYZ"の場合、メッセージ987654はログ・エントリでは <XYZ-987654>として表示されます。prefixが定義されていない場合、ログ・エントリは<987654>となります。

構文: 任意のString (5文字まで)

例: prefix="CEP"

有効な値:

- "CEP"はOracle Event Processingサーバー・カタログ

- nullはユーザー定義カタログ

String

いいえ。

description

カタログの内容を説明する省略可能な属性。

例: description="Contains messages logged by the foobar application"

String

いいえ。

G.2.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のmessage_catalog要素の使用方法を示します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
baseid="600000"
endid="600100">
<logmessage
messageid="600001"
severity="warning"
method="logNoAuthorization(String arg0, java.util.Date arg1,int arg2)">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

G.3 logmessage

この要素を使用して正式なログ・メッセージを定義します。

G.3.1 子要素

logmessageコンポーネント構成要素では、次の子要素をサポートしています。

- messagebody

- messagedetail

- cause

- action

G.3.2 属性

表G-2ではlogmessageコンポーネント構成要素の属性が一覧表示されています。

表G-2 logmessage要素の属性

属性

説明

データ型

必須?

messageid

このログ・メッセージのユニークな識別子。識別子は、すべてのカタログにわたりユニークである必要があります。値は、baseid属性とendid属性で定義された範囲で指定する必要があります。

使用方法: 値は、message_catalog要素に定義されているbaseidおよびendid属性で定義された範囲内である必要があります。

構文: 1桁から6桁の数値。

例: messageid="600001"

String

はい。

datelastchanged

このメッセージの修正管理に使用される日付と時刻のスタンプ。日付は、カタログで動作するユーティリティによって提供されます。

使用方法: 日付はカタログで動作するユーティリティによって提供されます。

構文: Long.toString(new Date().getTime());

String

いいえ。

severity

ログ・メッセージの重大度を示します。ユーザー定義カタログでは、debug、info、warningおよびerrorのみを使用します。

有効な値:

- error

- warning

- info

- debug

例: severity="warning"

String

はい。

method

このメッセージをログに記録するためのメソッド・シグネチャ。

構文は標準のJavaメソッド・シグネチャから修飾子、セミコロン、および拡張子を除いたもの。引数の型にはJavaプリミティブまたはJavaクラスを使用できます。クラスはjava.langにない場合は完全修飾である必要があります。また、クラスはjava.text.MessageFormatの規約に準拠している必要があります。たいていの場合、クラス引数は便利なtoString()メソッドを備えています。

引数には有効であればどのような名前でも指定できますが、argn (nは0から9) の規則に従っている必要があります。指定できる引数は10個までです。各argnについて、G.3.1項「子要素」で説明されているテキスト要素に少なくとも1つの対応するプレースホルダーが存在している必要があります。プレースホルダーの形式は{n}、{n,number}または{n,date}です。

String

はい。

methodtype

生成するメソッドのタイプを指定します。メソッドは次のとおりです。

- メッセージ本文をデフォルトのロケールにフォーマットし、結果をログに記録するloggerメソッド。

- subsystemおよびmessageidの接頭辞の付いたメッセージ本文を[susbsystem:msgid]textのように戻すgetterメソッド。

有効な値:

- logger

- getter

デフォルト: logger

String

いいえ。

stacktrace

Throwableの引数としてスタック・トレースを生成するかどうかを示します。値がtrueの場合はトレースが生成されます。

有効な値:

- true

- false

デフォルト: true。

String

いいえ。

retired

メッセージがリタイアされているかどうかを示します。リタイアされたメッセージとは、前のリリースで使用されていたが、今は古くなり、現在のバージョンでは使用されないメッセージです。リタイアされたメッセージは、クラスまたはリソースの生成で使用しません。

有効な値:

- true

- false

デフォルト: false。

String

いいえ。

G.3.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のlogmessage要素の使用方法を示します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
baseid="600000"
endid="600100">
<logmessage
messageid="600001"
severity="warning"
method="logNoAuthorization(String arg0, java.util.Date arg1,int arg2)">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

G.4 message

この要素を使用して非公式のログ・メッセージを定義します。

G.4.1 子要素

message要素は、次の子要素をサポートしています。

- messagebody

G.4.2 属性

表G-3では、message要素の属性を示します。

表G-3 message要素の属性

属性

説明

データ型

必須?

messageid

このログ・メッセージの、英数字文字列での一意の識別子。このカタログでのみ、一意である必要があります。

String

はい。

datelastchanged

このメッセージの修正管理に使用される日付と時刻のスタンプ。日付は、カタログで動作するユーティリティによって提供されます。

使用方法: 日付はカタログで動作するユーティリティによって提供されます。

構文: Long.toString(new Date().getTime());

String

いいえ。

method

このメッセージをフォーマットするためのメソッド・シグネチャ。

構文は標準のJavaメソッド・シグネチャから戻り値の型、修飾子、セミコロン、および拡張子を除いたものです。戻り値の型は常にStringです。引数の型にはJavaプリミティブまたはJavaクラスを使用できます。クラスはjava.langにない場合は完全修飾である必要があります。また、クラスはjava.text.MessageFormatの規約に準拠している必要があります。一般的にクラス引数は便利なtoString()メソッドを備えており、対応するMessageFormatプレースホルダーは文字列である(つまり、{n}の形式である)ことが必要です。引数には有効であればどのような名前でも指定できます。指定できる引数は10個までです。

各引数について、次に説明するmessagebody要素に少なくとも1つの対応するプレースホルダーが存在する必要があります。プレースホルダーの形式は{n}、{n,number}または{n,date}です。

例: method="getNoAuthorization(String filename, java.util.Date creDate)"

この例は、次のようにTextFormatterクラスのメソッドになります。

public String getNoAuthorization(String filename, java.util.Date creDate)

String

いいえ。

retired

メッセージがリタイアされているかどうかを示します。リタイアされたメッセージとは、前のリリースで使用されていたが、今は古くなり、現在のバージョンでは使用されないメッセージです。リタイアされたメッセージは、クラスまたはリソースの生成で使用しません。

有効な値:

- true

- false

デフォルト: false。

String

いいえ。

G.4.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のmessage要素の使用方法を示します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog>
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0">
<message messageid="FileMenuTitle">
<messagebody>
File
</messagebody>
</message>
</message_catalog>

G.5 messagebody

この要素を使用して、このメッセージの簡略説明を定義します。

messagebody要素では、0から10のプレースホルダー{n}を使用できます。プレースホルダーは、ログ・メッセージがローカライズされるときに適切な引数で置き換えられます。

最後の引数がThrowableまたはサブクラスでない場合、メッセージ本文には、対応するメソッド属性にリストされたすべての引数に対するプレースホルダーを含める必要があります。

一重引用符は、java.text.MessageFormatによって特別に解析されるため、使用は慎重に行います。メッセージ引数に引用符を付けた方がよい場合は、(G.5.3項「例」のように)二重引用符を使用します。メッセージが1つ以上のプレースホルダーを持つ場合、一重引用符が正しく表示されるようにするには(たとえば、アポストロフィとして)、もう1つ一重引用符を付ける必要があります。

構文: String

G.5.1 子要素

messagebody要素には子要素はありません。

G.5.2 属性

messagebody要素には属性はありません。

G.5.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のmessagebody要素の使用方法を説明します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
baseid="600000"
endid="600100">
<logmessage
messageid="600001"
severity="warning"
method="logNoAuthorization(String arg0, java.util.Date arg1,int arg2)">
<messagebody>
Could not open file, "{0}" on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

G.6 messagedetail

この要素を使用して、イベントの詳しい説明を定義します。この要素には、任意のプレースホルダーを含めることができます。

構文: String

G.6.1 子要素

messagedetail要素は子要素をサポートしていません。

G.6.2 属性

messagedetail要素には属性はありません。

G.6.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のmessagedetail要素の使用方法を説明します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
baseid="600000"
endid="600100">
<logmessage
messageid="600001"
severity="warning"
method="logNoAuthorization(String arg0, java.util.Date arg1,int arg2)">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

G.7 cause

この要素を使用して、イベントの主な原因を定義します。この要素には、任意のプレースホルダーを含めることができます。

構文: String

G.7.1 子要素

cause要素は子要素をサポートしていません。

G.7.2 属性

cause要素には属性はありません。

G.7.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のcause要素の使用方法を説明します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
baseid="600000"
endid="600100">
<logmessage
messageid="600001"
severity="warning"
method="logNoAuthorization(String arg0, java.util.Date arg1,int arg2)">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

G.8 action

この要素を使用して、推奨の解決方法を定義します。この要素には、任意のプレースホルダーを含めることができます。

構文: String

G.8.1 子要素

action要素は子要素をサポートしていません。

G.8.2 属性

action要素には属性はありません。

G.8.3 例

次の図は、ログ・メッセージ・カタログ・ファイル内のaction要素の使用方法を説明します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC "weblogic-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
i18n_package="programs.utils"
subsystem="MYUTIL"
version="1.0"
baseid="600000"
endid="600100">
<logmessage
messageid="600001"
severity="warning"
method="logNoAuthorization(String arg0, java.util.Date arg1,int arg2)">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

H スキーマ参照: ロケール・メッセージ・カタログl10n_msgcat.dtd

この付録では、特定のJavaロケールに対してローカライズされたログ・メッセージの定義に使用するXMLの背後にあるスキーマである、l10n_msgcat.dtdスキーマの要素へのリファレンスを示します。

この付録の内容は次のとおりです。

- H.1項「ロケール・メッセージ・カタログ要素の概要」

- H.2項「locale_message_catalog」

- H.3項「logmessage」

- H.4項「message」

- H.5項「messagebody」

- H.6項「messagedetail」

- H.7項「cause」

- H.8項「action」

H.1 ロケール・メッセージ・カタログ要素の概要

Oracle Event Processingでは、特定Javaロケールに対してローカライズされたログ・メッセージの定義に使用できる、多数のロケール・メッセージ・カタログ要素が提供されます。

H.1.1 要素の階層

最上位Oracle Event Processingロケール・メッセージ・カタログ要素は、メッセージのカタログ・タイプに応じて次の階層で構成されます。

- 例H-1「ロケール固有のログ・メッセージ・カタログの階層」

- 例H-2「ロケール固有のシンプル・テキスト・カタログの階層」

例H-1 ロケール固有のログ・メッセージ・カタログの階層

locale_message_catalog
logmessage
messagebody
messagedetail
cause
action

例H-1 ロケール固有のログ・メッセージ・カタログの階層

message_catalog
message
messagebody

H.1.2 例

この項では、次のメッセージ・カタログの例を示します。

- 例H-3「ロケール固有のログ・メッセージ・カタログ」

- 例H-4「ロケール固有のシンプル・テキスト・カタログ」

例H-3 ロケール固有のログ・メッセージ・カタログ

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
version="1.0">
<logmessage
messageid="600001">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</log_message>
</message_catalog>

例H-4 ロケール固有のログ・メッセージ・カタログ

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<locale_message_catalog
l10n_package="programs.utils"
subsystem="MYUTIL"
version="1.0">
<message>
<messageid="FileMenuTitle">
<messagebody> Fichier </messagebody>
</message>
</locale_message_catalog>

H.2 locale_message_catalog

この要素を使用すると、EPLプロセッサ・コンポーネントにおいてパラメータ化されたOracle CQLまたはEPLルールの値を定義できます。

H.2.1 子要素

locale_message_catalog要素は次の子要素をサポートしています。

- message

- logmessage

H.2.2 属性

表H-1では、locale_message_catalog要素の属性を示します。

表H-1 locale_message_catalog要素の属性

属性

説明

データ型

必須?

I10n_package

このカタログに対して生成された LogLocalizer または TextLocalizer プロパティを含むJavaパッケージ。プロパティ・ファイルの名前はカタログ・ファイル名に基づいて設定されます。

たとえば、mycat.xml という名前のフランス語版のログ・メッセージ・カタログでは、<l10n_package>.mycatLogLocalizer_fr_FR.propertiesというプロパティ・ファイルが生成されます。

String

いいえ。

version

使用されるI10n_msgcat.dtdのバージョンを指定します。

使用方法: "1.0"である必要があります。

構文: x.y - ここで、xおよびyは数値です。

例: version="1.0"

String

はい。

H.2.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のmessage_catalog要素の使用方法を示します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
version="1.0">
<logmessage
messageid="600001">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

H.3 logmessage

この要素を使用して正式なログ・メッセージを定義します。

H.3.1 子要素

logmessageコンポーネント構成要素では、次の子要素をサポートしています。

- messagebody

- messagedetail

- cause

- action

H.3.2 属性

表H-6ではlogmessageコンポーネント構成要素の属性が一覧表示されています。

表H-2 logmessage要素の属性

属性

説明

データ型

必須?

messageid

このログ・メッセージのユニークな識別子。識別子は、すべてのカタログにわたりユニークである必要があります。値は、baseid属性とendid属性で定義された範囲で指定する必要があります。

使用方法: 値は、message_catalog要素に定義されているbaseidおよびendid属性で定義された範囲内である必要があります。

構文: 1桁から6桁の数値。

例: messageid="600001"

String

はい。

datelastchanged

このメッセージの修正管理に使用される日付と時刻のスタンプ。日付は、カタログで動作するユーティリティによって提供されます。

使用方法: 日付はカタログで動作するユーティリティによって提供されます。

構文: Long.toString(new Date().getTime());

String

いいえ。

H.3.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のlogmessage要素の使用方法を示します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
version="1.0">
<logmessage
messageid="600001">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

H.4 message

この要素を使用して非公式のログ・メッセージを定義します。

H.4.1 子要素

message要素は、次の子要素をサポートしています。

- messagebody

H.4.2 属性

表H-3では、message要素の属性を示します。

表H-3 message要素の属性

属性

説明

データ型

必須?

messageid

このログ・メッセージの、英数字文字列での一意の識別子。このカタログでのみ、一意である必要があります。

String

はい。

datelastchanged

このメッセージの修正管理に使用される日付と時刻のスタンプ。日付は、カタログで動作するユーティリティによって提供されます。

使用方法: 日付はカタログで動作するユーティリティによって提供されます。

構文: Long.toString(new Date().getTime());

String

いいえ。

H.4.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のmessage要素の使用方法を示します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<locale_message_catalog
l10n_package="programs.utils"
version="1.0">
<message messageid="FileMenuTitle">
<messagebody>
File
</messagebody>
</message>
</message_catalog>

H.5 messagebody

この要素を使用して、簡潔な1行ログ・メッセージの本文を定義します。

H.5.1 子要素

messagebody要素には子要素はありません。

H.5.2 属性

messagebody要素には属性はありません。

H.5.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のmessagebody要素の使用方法を説明します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
version="1.0">
<logmessage
messageid="600001">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

H.6 messagedetail

この要素を使用して、ログに記録される問題の詳細な説明を定義します。

H.6.1 子要素

messagedetail要素は子要素をサポートしていません。

H.6.2 属性

messagedetail要素には属性はありません。

H.6.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のmessagedetail要素の使用方法を説明します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
version="1.0">
<logmessage
messageid="600001">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

H.7 cause

この要素を使用して、ログに記録される問題の根本的な原因を定義します。

H.7.1 子要素

cause要素は子要素をサポートしていません。

H.7.2 属性

cause要素には属性はありません。

H.7.3 例

次の例は、ログ・メッセージ・カタログ・ファイル内のcause要素の使用方法を説明します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
version="1.0">
<logmessage
messageid="600001">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

H.8 action

この要素を使用して、該当する場合に、ログに記録される問題の解決方法を定義します。

H.8.1 子要素

action要素は子要素をサポートしていません。

H.8.2 属性

action要素には属性はありません。

H.8.3 例

次の図は、ログ・メッセージ・カタログ・ファイル内のaction要素の使用方法を説明します。

<?xml version="1.0"?>
<!DOCTYPE message_catalog PUBLIC
"weblogic-locale-message-catalog-dtd"
"http://www.bea.com/servers/wls90/dtd/l10n_msgcat.dtd">
<message_catalog
l10n_package="programs.utils"
version="1.0">
<logmessage
messageid="600001">
<messagebody>
Could not open file, {0} on {1,date} after {2,number} attempts.
</messagebody>
<messagedetail>
The configuration for this application will be defaulted to
factory settings. Custom configuration information resides
in file, {0}, created on {1,date}, but is not readable.
</messagedetail>
<cause>
The user is not authorized to use custom configurations. Custom
configuration information resides in file, {0}, created on
{1,date}, but is not readable.The attempt has been logged to
the security log.
</cause>
<action>
The user needs to gain approriate authorization or learn to
live with the default settings.
</action>
</logmessage>
</message_catalog>

I Oracle Event Processingメタデータ注釈リファレンス

この付録では、アダプタ・ライフサイクルの段階を処理するメソッド、OSGiサービス参照が挿入されたメソッドを指定し、設計時にリソース・アクセスを構成するのに使用できるOracle Event ProcessingのJava注釈へのリファレンスを示します。

この付録の内容は次のとおりです。

- I.1項「Oracle Event Processingメタデータ注釈の概要」

- I.2項「com.bea.wlevs.configuration.Activate」

- I.3項「com.bea.wlevs.configuration.Prepare」

- I.4項「com.bea.wlevs.configuration.Rollback」

- I.5項「com.bea.wlevs.util.Service」

I.1 Oracle Event Processingメタデータ注釈の概要

Oracle Event Processingメタデータ注釈は、Oracle Event Processingコンポーネントの構成にアクセスするために使用します。Oracle Event Processingでは、次の注釈が用意されています。

- I.1.1項「アダプタ・ライフサイクル注釈」

- I.1.2項「OSGiサービス参照注釈」

- I.1.3項「リソース・アクセス注釈」

詳細は、次を参照してください:

- 1.7項「Oracle Event Processingアプリケーション・ライフサイクル」

- 1.4.3項「Oracle Event Processingリソース・アクセスの構成」

I.1.1 アダプタ・ライフサイクル注釈

次の注釈を使用して、アダプタのライフサイクルの様々な段階で(具体的には、アダプタの構成が準備されたとき、構成がアクティブ化されたとき、および例外のためにアダプタが終了したときに)処理を行う、アダプタのJava実装のメソッドを指定します。

- com.bea.wlevs.configuration.Activate

- com.bea.wlevs.configuration.Prepare

- com.bea.wlevs.configuration.Rollback

I.1.2 OSGiサービス参照注釈

com.bea.wlevs.util.Service注釈では、OSGiサービス参照が挿入されたコンポーネントのメソッドを指定します。

I.1.3 リソース・アクセス注釈

次の注釈では、設計時にリソース・アクセス、およびその対応するデプロイメントXMLを構成し、デプロイ時にこの構成をオーバーライドします。

- javax.annotation.Resource

詳細は、1.4.3項「Oracle Event Processingリソース・アクセスの構成」を参照してください。

I.2 com.bea.wlevs.configuration.Activate

対象:メソッド

@Activate注釈は、Javaファイル内で使用するアダプタ・ライフサイクル注釈の1つであり、Oracle Event Processingでアダプタへの構成情報の送信に使用されるメソッドを明示的に指定するカスタム・アダプタを実装します。

Oracle Event Processingで@Activate注釈を付けたメソッドが呼び出されるのは、@Prepare注釈を付けたすべてのメソッドがサーバーによって呼び出された後、正常に実行された場合に限ります。通常、@Activateメソッドは、アダプタ実装の残りの部分で使用するためにアダプタの構成データを実際に取得する場合に使用します。

この注釈を付けるメソッドは、シグネチャを次のようにする必要があります。

public void methodName(AdapterConfigObject adapterConfig)

methodNameはユーザーがメソッドに付ける名前であり、AdapterConfigObjectはアプリケーションと共にデプロイされるアダプタの構成XMLファイルのJava表現です。このクラスのタイプは、デフォルトではcom.bea.wlevs.configuration.application.DefaultAdapterConfigですが、アダプタの構成を拡張した場合には、拡張したXMLファイルを記述しているXSDで指定したタイプになります。たとえば、HelloWorldのサンプルでは、タイプはcom.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigです。

実行時、Oracle Event Processingはこのクラスのインスタンスを自動的に作成し、作成したインスタンスに実際のXMLファイルからデータを設定して、インスタンスをアダプタに渡します。その後、アダプタ・ライフサイクル注釈を付けたアダプタ・メソッドでクラスを使用して、アダプタの構成に関する情報を取得できます。

このメタデータ注釈に属性はありません。

I.2.1 例

例I-1では、HelloWorldの例のアダプタ・コンポーネントにおける@Activate注釈の使用方法について説明します。関連するコードのみを示します。

例I-1 @Activate注釈

package com.bea.wlevs.adapter.example.helloworld;
...
import com.bea.wlevs.configuration.Activate;
import com.bea.wlevs.ede.api.RunnableBean;
import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.event.example.helloworld.HelloWorldEvent;

public class HelloWorldAdapter implements RunnableBean, StreamSource {
...
@Activate
public void activateAdapter(HelloWorldAdapterConfig adapterConfig) {
this.message = adapterConfig.getMessage();
}
...
}

com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigクラスは、アダプタの構成XMLファイルのJava表現です。HelloWorldのサンプルでは、構成が拡張されています。つまり、カスタムXSDファイルでXMLファイルを記述しています。例I-2では、XSDファイルでは、結果のJava構成オブジェクトの完全修飾名(太字の部分)も指定しています。

例I-2 HelloWorldAdapterConfig

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.bea.com/ns/wlevs/example/helloworld"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:wlevs="http://www.bea.com/ns/wlevs/config/application"
targetNamespace="http://www.bea.com/ns/wlevs/example/helloworld"
elementFormDefault="unqualified" attributeFormDefault="unqualified"
jxb:extensionBindingPrefixes="xjc" jxb:version="1.0">
<xs:annotation>
<xs:appinfo>
<jxb:schemaBindings>
<jxb:package name="com.bea.wlevs.adapter.example.helloworld"/>
</jxb:schemaBindings>
</xs:appinfo>
</xs:annotation>
<xs:import namespace="http://www.bea.com/ns/wlevs/config/application"
schemaLocation="wlevs_application_config.xsd"/>
<xs:element name="config">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="adapter" type="HelloWorldAdapterConfig"/>
<xs:element name="processor" type="wlevs:DefaultProcessorConfig"/>
<xs:element name="channel" type="wlevs:DefaultStreamConfig" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:complexType name="HelloWorldAdapterConfig">
<xs:complexContent>
<xs:extension base="wlevs:AdapterConfig">
<xs:sequence>
<xs:element name="message" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>

Oracle Event Processingは、アプリケーションがデプロイされるときにこのクラスのインスタンスを自動的に作成します。たとえば、helloworldAdapterの構成ファイルのアダプタ・セクションは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<helloworld:config
...
<adapter>
<name>helloworldAdapter</name>
<message>HelloWorld - the current time is:</message>
</adapter>
</helloworld:config>

上記のアダプタのJavaコードでは、activateAdapterメソッドに@Activate注釈が付いています。このメソッドは、構成オブジェクトのgetMessageメソッドを使用して、アダプタの構成XMLファイルに設定されたmessageプロパティの値を取得します。この例の場合、値はHelloWorld - the current time is:です。取得したこの値をアダプタ実装ファイルの主要部分で使用します。

I.3 com.bea.wlevs.configuration.Prepare

対象:メソッド

@Prepare注釈は、Javaファイル内で使用するアダプタ・ライフサイクル注釈の1つであり、Oracle Event Processingでアダプタへの構成情報の送信に使用されるメソッドを明示的に指定するカスタム・アダプタを実装します。

コンポーネントの状態が特定の構成変さらによって更新された場合、Oracle Event Processingは@Prepare注釈が付いたメソッドを呼び出します。

この注釈を付けるメソッドは、シグネチャを次のようにする必要があります。

public void methodName(AdapterConfigObject adapterConfig)

methodNameはユーザーがメソッドに付ける名前であり、AdapterConfigObjectはアプリケーションと共にデプロイされるアダプタの構成XMLファイルのJava表現です。このクラスのタイプは、デフォルトではcom.bea.wlevs.configuration.application.DefaultAdapterConfigですが、アダプタの構成を拡張した場合には、拡張したXMLファイルを記述しているXSDで指定したタイプになります。たとえば、HelloWorldのサンプルでは、タイプはcom.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigです。

実行時、Oracle Event Processingはこのクラスのインスタンスを自動的に作成し、作成したインスタンスに実際のXMLファイルからデータを設定して、インスタンスをアダプタに渡します。その後、アダプタ・ライフサイクル注釈を付けたアダプタ・メソッドでクラスを使用して、アダプタの構成に関する情報を取得できます。

このメタデータ注釈に属性はありません。

I.3.1 例

例I-3 次の例はHelloWorldの例のアダプタ・コンポーネントで使用しているコードであり、@Prepare注釈の使用方法を示しています。関連するコードのみを示します。

例I-3 @Prepare注釈

package com.bea.wlevs.adapter.example.helloworld;
...
import com.bea.wlevs.configuration.Prepare;
import com.bea.wlevs.ede.api.RunnableBean;
import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.event.example.helloworld.HelloWorldEvent;

public class HelloWorldAdapter implements RunnableBean, StreamSource {
...
@Prepare
public void checkConfiguration(HelloWorldAdapterConfig adapterConfig) {
if (adapterConfig.getMessage() == null
|| adapterConfig.getMessage().length() == 0) {
throw new RuntimeException("invalid message: " + message);
}
}
...
}

com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigクラスは、アダプタの構成XMLファイルのJava表現です。Oracle Event Processingはアプリケーションがデプロイされるときにこのクラスのインスタンスを自動的に作成します。HelloWorldのサンプルでは、アダプタ構成が拡張されています。詳細は、付録I 「com.bea.wlevs.configuration.Activate」の例を参照してください。

上記のアダプタのJavaコードでは、checkConfigurationメソッドに@Prepare注釈が付いています。つまり、アダプタの構成になんらかの変更が行われた場合は、このメソッドが呼び出されます。さらに、上記の例は、アダプタの構成のmessageプロパティ(拡張されたアダプタ構成ファイルで設定)がnullまたは空のいずれでもないことを確認するチェックが、このメソッドによって実行されることを示しています。このプロパティがnullまたは空である場合、メソッドは例外をスローします。

I.4 com.bea.wlevs.configuration.Rollback

対象:メソッド

@Rollback注釈は、Javaファイル内で使用するアダプタ・ライフサイクル注釈の1つであり、Oracle Event Processingでアダプタへの構成情報の送信に使用されるメソッドを明示的に指定するカスタム・アダプタを実装します。

コンポーネントの@Prepareメソッドが呼び出されて例外が送出された場合、Oracle Event Processingは@Rollback注釈が付いたメソッドを呼び出します。サーバーは、該当するコンポーネントごとに@Rollbackメソッドを呼び出します。

この注釈を付けるメソッドは、シグネチャを次のようにする必要があります。

public void methodName(AdapterConfigObject adapterConfig)

methodNameはユーザーがメソッドに付ける名前であり、AdapterConfigObjectはアプリケーションと共にデプロイされるアダプタの構成XMLファイルのJava表現です。このクラスのタイプは、デフォルトではcom.bea.wlevs.configuration.application.DefaultAdapterConfigですが、アダプタの構成を拡張した場合には、拡張したXMLファイルを記述しているXSDで指定したタイプになります。たとえば、HelloWorldのサンプルでは、タイプはcom.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigです。

実行時、Oracle Event Processingはこのクラスのインスタンスを自動的に作成し、作成したインスタンスに実際のXMLファイルからデータを設定して、インスタンスをアダプタに渡します。その後、アダプタ・ライフサイクル注釈を付けたアダプタ・メソッドでクラスを使用して、アダプタの構成に関する情報を取得できます。

このメタデータ注釈に属性はありません。

I.4.1 例

例I-4 次のサンプル・コードは、HelloWorldの例で使用しているアダプタ・コンポーネントのコードであり、@Rollback注釈の使用方法を示しています。ここでは、関連するコードのみを示します。

例I-4 @Rollback注釈

package com.bea.wlevs.adapter.example.helloworld;
...
import com.bea.wlevs.configuration.Rollback;
import com.bea.wlevs.ede.api.RunnableBean;
import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.event.example.helloworld.HelloWorldEvent;

public class HelloWorldAdapter implements RunnableBean, StreamSource {
...
@Rollback
public void rejectConfigurationChange(HelloWorldAdapterConfig adapterConfig) {
}

com.bea.wlevs.adapter.example.helloworld.HelloWorldAdapterConfigクラスは、アダプタの構成XMLファイルのJava表現です。Oracle Event Processingはアプリケーションがデプロイされるときにこのクラスのインスタンスを自動的に作成します。HelloWorldのサンプルでは、アダプタ構成が拡張されています。詳細は、付録I 「com.bea.wlevs.configuration.Activate」の例を参照してください。

このサンプルでは、rejectConfigurationChangeメソッドに@Rollback注釈が付いています。つまり、これは@Prepareメソッドが例外を送出した場合に呼び出されるメソッドです。上記の例では、実際には何も起こりません。

I.5 com.bea.wlevs.util.Service

対象:メソッド

注釈が付いたメソッド(一般的にはJavaBeanセッター・メソッド)にOSGiサービス参照が必要であることを指定します。

I.5.1 属性

表I-1では、com.bea.wlevs.util.Service JWS注釈の属性について説明します。

表I-1 com.bea.wlevs.util.Service JWS注釈タグの属性

名前

説明

データ型

必須?

serviceBeanName

挿入されたサービスをサポートするBeanの名前。nullにできます。

String

いいえ。

cardinality

この属性の有効な値は次のとおりです:

- ServiceCardinality.C0__1

- ServiceCardinality.C0__N

- ServiceCardinality.C1__1

- ServiceCardinality.C1__N

デフォルト値はServiceCardinality.C1__1です。

enum

いいえ。

contextClassloader

この属性の有効な値は次のとおりです:

- ServiceClassloader.CLIENT

- ServiceClassloader.SERVICE_PROVIDER

- ServiceClassloader.UNMANAGED

デフォルト値はServiceClassloader.CLIENTです。

enum

いいえ。

timeout

サービス解決のタイムアウト(ミリ秒単位)。

デフォルト値は30000です。

int

いいえ。

serviceType

挿入するサービスのインタフェース(またはクラス)。

デフォルト値はService.classです。

Class

いいえ。

filter

一致するサービスを絞り込むフィルタを指定します。値はnullでもかまいません。

String

いいえ。

I.5.2 例

例I-5 では、@Service注釈の使用方法について説明します。

例I-5 @Service注釈

@Service(filter = "(Name=StockDs)")
public void setDataSourceService(DataSourceService dss) {
initStockTable(dss.getDataSource());
}

その他の例は、9.4項「イベント型リポジトリにアクセス」を参照してください。

Copyright © 2007, 2013, Oracle and/or its affiliates. All rights reserved.