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

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

B61654-04(原本部品番号:E14301-08)

目次

例一覧

図一覧

表一覧

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

はじめに

- 対象読者

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

- 関連ドキュメント

- 表記規則

リリース11.1.1.6.x用のこのガイドでの新しい情報

第1部 概要

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

- 1.1 Oracle CEPプログラミング・モデルの概要

- 1.1.1 Oracle CEPイベント処理ネットワークのコンポーネント

- 1.1.1.1 アダプタ

- 1.1.1.2 チャネル

- 1.1.1.3 プロセッサ

- 1.1.1.4 イベントBean

- 1.1.1.5 Spring Bean

- 1.1.1.6 キャッシュ

- 1.1.1.7 表

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

- 1.1.1.9 外部ステージ

- 1.1.2 Oracle CEPイベント・タイプ

- 1.1.3 EPN内のイベントの送信: ストリーム、リレーション・ソースおよびシンク

- 1.1.3.1 ストリームおよび関係

- 1.1.3.2 ストリームおよび関係のソース

- 1.1.3.3 ストリームおよび関係のシンク

- 1.1.3.4 EPN内のイベントの送信: 例

- 1.1.4 EPNアセンブリ・ファイル

- 1.1.5 コンポーネント構成ファイル

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

- 1.1.6 コンポーネントを連動させる方法

- 1.1.7 EPNの拡張

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

- 1.1.9 Oracle CEPアプリケーション・ライフサイクル

- 1.1.9.1 ユーザー・アクション: アプリケーションのインストール、またはアプリケーションがすでにデプロイされた状態でサーバーの起動

- 1.1.9.2 ユーザー・アクション: アプリケーションの一時停止

- 1.1.9.3 ユーザー・アクション: アプリケーションの再開

- 1.1.9.4 ユーザー・アクション: アプリケーションのアンインストール

- 1.1.9.5 ユーザー・アクション: アプリケーションの更新

- 1.1.9.6 ユーザー・アクション: ストリームおよびリレーション・ソースおよびシンクのメソッド呼び出し

- 1.1.10 Oracle CEP API

- 1.2 Oracle CEP IDE for Eclipse

- 1.3 Oracle CEPアプリケーションの作成

- 1.4 Oracle CEPリソース・アクセスの構成

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

- 1.4.1.1 静的リソース名

- 1.4.1.2 動的リソース名

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

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

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

- 1.5 次のステップ

2 Oracle CEPイベントの概要

- 2.1 Oracle CEPイベント・タイプ

- 2.1.1 イベント・タイプのインスタンス化および不変性

- 2.1.2 イベント・タイプ・リポジトリ

- 2.1.3 イベント・タイプ・データ型

- 2.1.3.1 JavaBeanまたはJavaクラスとして指定されたイベント・タイプ

- 2.1.3.2 java.util.Mapとして指定されたイベント・タイプ

- 2.1.3.3 タプルとして指定されたイベント・タイプ

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

- 2.1.3.5 csvgenアダプタとともに使用するイベント・タイプ

- 2.1.4 Oracle CEPイベント・タイプの作成

- 2.2 JavaBeanとしてOracle CEPイベント・タイプの作成

- 2.2.1 イベント・タイプ・プロパティ値へのアクセス

- 2.2.1.1 制限事項

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

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

- 2.3 タプルとしてOracle CEPイベント・タイプの作成

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

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

- 2.4 JavaクラスとしてOracle CEPイベント・タイプの作成

- 2.4.1 JavaクラスとしてOracle CEPイベント・タイプを手動で作成する方法

- 2.5 java.util.MapとしてOracle CEPイベント・タイプの作成

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

- 2.6 イベント・タイプ・ビルダー・ファクトリの使用

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

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

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

- 2.7.3 Oracle CEP @Service注釈の使用

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

第2部 Oracle CEP IDE for Eclipse

3 Oracle CEP IDE for Eclipseの概要

- 3.1 Oracle CEP IDE for Eclipseの概要

- 3.1.1 機能

- 3.1.2 JDK要件

- 3.1.3 デフォルトのOracle CEPドメインocep_domainおよび開発

- 3.2 最新のOracle CEP IDE for Eclipseのインストール

- 3.3 Oracle CEPで配布されるOracle CEP IDE for Eclipseのインストール

- 3.4 Eclipseの構成

4 Oracle CEP IDE for Eclipseプロジェクト

- 4.1 Oracle CEPプロジェクトの概要

- 4.2 Oracle CEPプロジェクトの作成

- 4.2.1 Oracle CEPプロジェクトの作成方法

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

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

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

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

- 4.5 Oracle CEPプロジェクトのエクスポート

- 4.5.1 Oracle CEPプロジェクトのエクスポート方法

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

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

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

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

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

- 4.7.2 Oracle CEPプロジェクトへのOSGiバンドルの追加方法

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

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

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

- 4.8 Oracle CEP IDE for Eclipseプリファレンスの構成

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

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

5 Oracle CEP IDE for EclipseおよびOracle CEPサーバー

- 5.1 Oracle CEPサーバーの概要

- 5.2 Oracle CEPサーバーの作成

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

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

- 5.2.3 Oracle CEPサーバー・ランタイムの作成方法

- 5.3 Oracle CEPサーバーの管理

- 5.3.1 ローカルOracle CEPサーバーの起動方法

- 5.3.2 ローカルOracle CEPサーバーの停止方法

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

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

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

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

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

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

- 5.3.9 Oracle CEP IDE for EclipseからOracle CEP Visualizerを起動する方法

- 5.4 Oracle CEPサーバー上で実行されているOracle CEPアプリケーションのデバッグ

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

6 Oracle CEP IDE for Eclipseおよびイベント処理ネットワーク

- 6.1 EPNエディタを開く

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

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

- 6.2 EPNエディタの概要

- 6.2.1 フロー表現

- 6.2.2 フィルタ処理

- 6.2.3 ズーム

- 6.2.4 レイアウト

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

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

- 6.2.7 構成のバッジング

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

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

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

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

- 6.3.1 キャンバスの移動

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

- 6.3.3 ハイパーリンク

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

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

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

- 6.3.5 Oracle CEPタイプの参照

- 6.3.5.1 Oracle CEPタイプの参照方法

- 6.4 EPNエディタの使用

- 6.4.1 ノードの作成

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

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

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

- 6.4.2 ノードの接続

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

- 6.4.3 ノードのレイアウト

- 6.4.4 ノード名の変更

- 6.4.5 ノードの削除

第3部 Oracle CEPイベント処理ネットワークの構築

7 JMSアダプタの構成

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9 チャネルの構成

- 9.1 チャネル構成の概要

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

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

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

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

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

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

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

- 9.1.6 バッチ処理チャネル

- 9.1.7 EventPartitionerチャネル

- 9.2 チャネルの構成

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

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

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

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

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

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

10 Oracle CQLプロセッサの構成

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

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

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

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

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

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

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

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

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

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

- 10.5.2 ordering-constraint属性の使用

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

- 10.5.4 制限事項

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

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

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

11 EPLプロセッサの構成

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

- 11.2 EPLプロセッサの構成

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

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

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

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

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

12 キャッシュの構成

- 12.1 Oracle CEPキャッシュ構成の概要

- 12.1.1 キャッシュの使用ケース

- 12.1.1.1 使用ケース: イベントのキャッシュへのパブリッシュ

- 12.1.1.2 使用ケース: キャッシュからのデータの消費

- 12.1.1.3 使用ケース: キャッシュ内データの更新および削除

- 12.1.1.4 使用ケース: マルチサーバー・ドメインにおけるキャッシュの使用

- 12.1.2 追加キャッシュ機能

- 12.1.3 キャッシュAPI

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

- 12.2.1 イベント・リスナーとしてのOracle CEPローカル・キャッシュの構成

- 12.2.1.1 Oracle CEPローカル・キャッシュの索引作成に使用されるキーの指定

- 12.2.2 イベント・ソースとしてのOracle CEPローカル・キャッシュの構成

- 12.2.3 Oracle CEPローカル・キャッシュ・ローダーの構成

- 12.2.4 Oracle CEPローカル・キャッシュ・ストアの構成

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

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

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

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

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

- 12.3.2.1 Oracle Coherenceキャッシュの索引作成に使用されるキーの指定

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

- 12.3.4 Oracle Coherenceキャッシュ・ローダーまたはストアの構成

- 12.3.4.1 Oracle Coherenceキャッシュ・ローダーの構成

- 12.3.4.2 Oracle Coherenceキャッシュ・ストアの構成

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 13.1.2 イベントの記録

- 13.1.3 イベントの再生

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

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

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

- 13.2.1 Oracle CEPサーバーのイベント・ストアの構成

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

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

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

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

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

第4部 Oracle CEPイベント処理ネットワークの拡張

14 カスタム・アダプタの構成

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

- 14.1.1 カスタム・アダプタのイベント・ソースとイベント・シンク

- 14.1.1.1 イベント・ソースとしてのカスタム・アダプタ

- 14.1.1.2 イベント・シンクとしてのカスタム・アダプタ

- 14.1.2 カスタム・アダプタ・ファクトリ

- 14.1.3 シングルおよびマルチスレッド・アダプタ

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

- 14.2.1 カスタム・アダプタを手動で構成する方法

- 14.2.1.1 カスタム・アダプタをイベント・ソースとして実装

- 14.2.1.2 カスタム・アダプタをイベント・シンクとして実装

- 14.2.2 カスタム・アダプタ・ファクトリの実装

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

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

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

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

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

- 14.4.1 カスタム・アダプタ・ファクトリの登録

- 14.4.2 アプリケーションのカスタム・アダプタ・コンポーネントの宣言

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

- 14.5.1 カスタム・アダプタを手動で構成する方法

- 14.5.1.1 カスタム・アダプタ構成ファイルの例

15 カスタム・イベントBeanの構成

- 15.1 カスタム・イベントBeanの概要

- 15.1.1 カスタム・イベントBeanイベント・ソースおよびイベント・シンク

- 15.1.1.1 イベント・ソースとしてのカスタム・イベントBean

- 15.1.1.2 イベント・シンクとしてのカスタム・イベントBean

- 15.1.2 カスタム・イベントBeanファクトリ

- 15.2 カスタム・イベントBeanの実装

- 15.2.1 カスタム・イベントBeanをイベント・ソースとして実装

- 15.2.2 カスタム・イベントBeanをイベント・シンクとして実装

- 15.2.3 カスタム・イベントBeanファクトリの実装

- 15.3 カスタム・イベントBean EPNアセンブリ・ファイルの構成

- 15.3.1 カスタム・イベントBeanファクトリの登録

- 15.3.2 アプリケーションのカスタム・イベントBeanコンポーネントの宣言

- 15.4 カスタム・イベントBeanコンポーネント構成ファイルの構成

- 15.4.1 手動でカスタム・イベントBeanを構成する方法

- 15.4.1.1 カスタム・イベントBean構成ファイルの例

16 カスタムSpring Beanの構成

- 16.1 カスタムSpring Beanの概要

- 16.1.1 Spring Beanイベント・ソースおよびイベント・シンク

- 16.1.1.1 イベント・ソースとしてのSpring Bean

- 16.1.1.2 イベント・シンクとしてのSpring Bean

- 16.2 カスタムSpring Beanの実装

- 16.2.1 カスタムSpring Beanをイベント・ソースとして実装

- 16.2.2 カスタムSpring Beanをイベント・シンクとして実装

- 16.3 カスタムSpring Bean EPNファイルの構成

- 16.3.1 アプリケーションのカスタムSpring Beanコンポーネントの宣言

17 Webサービスの構成

- 17.1 Oracle CEPとWebサービスについて

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 19.3.2.2 ライフサイクル

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

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.3.1 高可用性入力アダプタ

- 20.1.3.2 バッファリング出力アダプタ

- 20.1.3.3 ブロードキャスト出力アダプタ

- 20.1.3.4 相関出力アダプタ

- 20.1.3.5 ActiveActiveGroupBean

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

- 20.1.5 高可用性およびOracle Coherence

- 20.2 サービス品質の選択

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

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

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

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

- 20.3 高可用性用Oracle CEPアプリケーションの設計

- 20.3.1 プライマリOracle CEPの高可用性のユースケース

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

- 20.3.2.1 アプリケーションが許容できる最小の高可用性の選択

- 20.3.2.2 すべての入口/出口ポイントでOracle CEP高可用性コンポーネントの使用

- 20.3.2.3 必要な項目のみ保存

- 20.3.2.4 Oracle CEPアプリケーションの状態の制限

- 20.3.2.5 適切なwarm-up-window時間の選択

- 20.3.2.6 アプリケーションが多重呼出し不変であることの保証

- 20.3.2.7 外部のソース・イベント・アイデンティティ

- 20.3.2.8 イベント順序の重要性の理解

- 20.3.2.9 高可用性を考慮したOracle CQL問合せの記述

- 20.3.2.10 サーバーのカップリングの回避

- 20.3.2.11 サーバー・リカバリの計画

- 20.3.3 Oracle CQLの問合せの制約

- 20.3.3.1 範囲ベースのウィンドウ

- 20.3.3.2 タプル・ベースのウィンドウ

- 20.3.3.3 パーティション化されたウィンドウ

- 20.3.3.4 スライディング・ウィンドウ

- 20.3.3.5 DURATION句および非イベント検出

- 20.3.3.6 アプリケーション時間の優先

21 高可用性の構成

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

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

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

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

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

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

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

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

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

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

- 21.2.2.1 バッファリング出力アダプタのEPNアセンブリ・ファイルの構成

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

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

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

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

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

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

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

第6部 スケーラビリティのためにアプリケーションの開発

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

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

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

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

- 22.2.1 EventPartitioner

- 22.2.1.1 EventPartitionerの実装

- 22.2.1.2 EventPartitioner初期化

- 22.2.1.3 EventPartitionerスレッド

- 22.2.1.4 EventPartitioner制限事項

- 22.2.2 ActiveActiveGroupBean

- 22.2.2.1 高可用性なしのActiveActiveGroupBeanを使用したOracle CEPアプリケーションのスケーラビリティ

- 22.2.2.2 高可用性のあるActiveActiveGroupBeanを使用したOracle CEPアプリケーションのスケーラビリティ

23 スケーラビリティの構成

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

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

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

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

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

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

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

第7部 アセンブリ、デプロイメントおよびテスト

24 Oracle CEPアプリケーションのアセンブルとデプロイ

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

- 24.1.1 アプリケーション

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

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

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

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

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

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

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

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

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

- 24.1.5 構成履歴の管理

- 24.2 Oracle CEPアプリケーションのアセンブル

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

- 24.2.2 Oracle CEPアプリケーションの手動アセンブル

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

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

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

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

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

- 24.2.4.2 固有のバンドルでのカスタム・イベントBeanのアセンブル方法

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

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

- 24.3.1.1 絶対パスの構成方法

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

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

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

- 24.3.4 Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの更新方法

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

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

- 24.4.1 Oracle CEPサーバーでのメッセージ・カタログの使用

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

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

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

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

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

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

- 24.5 Oracle CEPアプリケーションのデプロイ

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

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

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

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

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

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

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

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

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

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

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

- 26.1.1 イベントのトレース

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

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

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

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

- 26.1.5.1 Oracle CEP Visualizer

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

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

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

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

- 26.3.1 Oracle CEP Visualizerを使用してイベントをインジェクトする方法

- 26.4 イベントのトレース

- 26.4.1 Oracle CEP Visualizerを使用してイベントをトレースする方法

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シリアライゼーション

第8部 Oracle CEPリファレンス

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

B Oracle CEPスキーマ

- 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 CEPアプリケーション・アセンブリ要素の概要

- C.1.1 要素の階層

- C.1.2 Oracle CEP要素を使用した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:event-bean

- C.11.1 子要素

- C.11.2 属性

- C.11.3 例

- C.12 wlevs:event-type-repository

- C.12.1 子要素

- C.12.2 例

- C.13 wlevs:event-type

- C.13.1 子要素

- C.13.2 属性

- C.13.3 例

- C.14 wlevs:expression

- C.14.1 例

- C.15 wlevs:factory

- C.15.1 属性

- C.15.2 例

- C.16 wlevs:function

- C.16.1 属性

- C.16.2 例

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

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

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

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

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

- C.17 wlevs:instance-property

- C.17.1 子要素

- C.17.2 属性

- C.17.3 例

- C.18 wlevs:listener

- C.18.1 属性

- C.18.2 例

- C.19 wlevs:metadata

- C.19.1 子要素

- C.19.2 属性

- C.19.3 例

- C.20 wlevs:processor

- C.20.1 子要素

- C.20.2 属性

- C.20.3 例

- C.21 wlevs:property

- C.21.1 子要素

- C.21.2 属性

- C.21.3 例

- C.22 wlevs:source

- C.22.1 属性

- C.22.2 例

- C.23 wlevs:table

- C.23.1 属性

- C.23.2 例

- C.24 wlevs:table-source

- C.24.1 属性

- C.24.2 例

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

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

- D.1.1 要素の階層

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

- D.2 accept-backlog

- D.2.1 子要素

- D.2.2 属性

- D.2.3 例

- D.3 adapter

- D.3.1 子要素

- D.3.2 属性

- D.3.3 例

- D.4 amount

- D.4.1 子要素

- D.4.2 属性

- D.4.3 例

- D.5 application

- D.5.1 子要素

- D.5.2 属性

- D.5.3 例

- D.6 average-interval

- D.6.1 子要素

- D.6.2 属性

- D.6.3 例

- D.7 average-latency

- D.7.1 子要素

- D.7.2 属性

- D.7.3 例

- D.8 batch-size

- D.8.1 子要素

- D.8.2 属性

- D.8.3 例

- D.9 batch-time-out

- D.9.1 子要素

- D.9.2 属性

- D.9.3 例

- D.10 binding

- D.10.1 子要素

- D.10.2 属性

- D.10.3 例

- D.11 bindings (jms-adapter)

- D.11.1 子要素

- D.11.2 属性

- D.11.3 例

- D.12 bindings (processor)

- D.12.1 子要素

- D.12.2 属性

- D.12.3 例

- D.13 buffer-size

- D.13.1 子要素

- D.13.2 属性

- D.13.3 例

- D.14 buffer-write-attempts

- D.14.1 子要素

- D.14.2 属性

- D.14.3 例

- D.15 buffer-write-timeout

- D.15.1 子要素

- D.15.2 属性

- D.15.3 例

- D.16 cache

- D.16.1 子要素

- D.16.2 属性

- D.16.3 例

- D.17 caching-system

- D.17.1 子要素

- D.17.2 属性

- D.17.3 例

- D.18 channel

- D.18.1 子要素

- D.18.2 属性

- D.18.3 例

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

- D.19.1 子要素

- D.19.2 属性

- D.19.3 例

- D.20 coherence-cache-config

- D.20.1 子要素

- D.20.2 属性

- D.20.3 例

- D.21 coherence-caching-system

- D.21.1 子要素

- D.21.2 属性

- D.21.3 例

- D.22 coherence-cluster-config

- D.22.1 子要素

- D.22.2 属性

- D.22.3 例

- D.23 collect-interval

- D.23.1 子要素

- D.23.2 属性

- D.23.3 例

- D.24 concurrent-consumers

- D.24.1 子要素

- D.24.2 属性

- D.24.3 例

- D.25 connection-jndi-name

- D.25.1 子要素

- D.25.2 属性

- D.25.3 例

- D.26 connection-encrypted-password

- D.26.1 子要素

- D.26.2 属性

- D.26.3 例

- D.27 connection-password

- D.27.1 子要素

- D.27.2 属性

- D.27.3 例

- D.28 connection-user

- D.28.1 子要素

- D.28.2 属性

- D.28.3 例

- D.29 database

- D.29.1 子要素

- D.29.2 属性

- D.29.3 例

- D.30 dataset-name

- D.30.1 子要素

- D.30.2 属性

- D.30.3 例

- D.31 delivery-mode

- D.31.1 子要素

- D.31.2 属性

- D.31.3 例

- D.32 destination-jndi-name

- D.32.1 子要素

- D.32.2 属性

- D.32.3 例

- D.33 destination-name

- D.33.1 子要素

- D.33.2 属性

- D.33.3 例

- D.34 destination-type

- D.34.1 子要素

- D.34.2 属性

- D.34.3 例

- D.35 diagnostic-profiles

- D.35.1 子要素

- D.35.2 属性

- D.35.3 例

- D.36 direction

- D.36.1 子要素

- D.36.2 属性

- D.36.3 例

- D.37 durable-subscription

- D.37.1 子要素

- D.37.2 属性

- D.37.3 例

- D.38 durable-subscription-name

- D.38.1 子要素

- D.38.2 属性

- D.38.3 例

- D.39 duration

- D.39.1 子要素

- D.39.2 属性

- D.39.3 例

- D.40 enabled

- D.40.1 子要素

- D.40.2 属性

- D.40.3 例

- D.41 encrypted-password

- D.41.1 子要素

- D.41.2 属性

- D.41.3 例

- D.42 end

- D.42.1 子要素

- D.42.2 属性

- D.42.3 例

- D.43 end-location

- D.43.1 子要素

- D.43.2 属性

- D.43.3 例

- D.44 event-bean

- D.44.1 子要素

- D.44.2 属性

- D.44.3 例

- D.45 event-type

- D.45.1 子要素

- D.45.2 属性

- D.45.3 例

- D.46 event-type-list

- D.46.1 子要素

- D.46.2 属性

- D.46.3 例

- D.47 eviction-policy

- D.47.1 子要素

- D.47.2 属性

- D.47.3 例

- D.48 group-binding

- D.48.1 子要素

- D.48.2 属性

- D.48.3 例

- D.49 heartbeat

- D.49.1 子要素

- D.49.2 属性

- D.49.3 例

- D.50 http-pub-sub-adapter

- D.50.1 子要素

- D.50.2 属性

- D.50.3 例

- D.51 idle-time

- D.51.1 子要素

- D.51.2 属性

- D.51.3 例

- D.52 jms-adapter

- D.52.1 子要素

- D.52.2 属性

- D.52.3 例

- D.53 jndi-factory

- D.53.1 子要素

- D.53.2 属性

- D.53.3 例

- D.54 jndi-provider-url

- D.54.1 子要素

- D.54.2 属性

- D.54.3 例

- D.55 listeners

- D.55.1 子要素

- D.55.2 属性

- D.55.3 例

- D.56 location

- D.56.1 子要素

- D.56.2 属性

- D.56.3 例

- D.57 max-latency

- D.57.1 子要素

- D.57.2 属性

- D.57.3 例

- D.58 max-size

- D.58.1 子要素

- D.58.2 属性

- D.58.3 例

- D.59 max-threads

- D.59.1 子要素

- D.59.2 属性

- D.59.3 例

- D.60 message-selector

- D.60.1 子要素

- D.60.2 属性

- D.60.3 例

- D.61 name

- D.61.1 子要素

- D.61.2 属性

- D.61.3 例

- D.62 netio

- D.62.1 子要素

- D.62.2 属性

- D.62.3 例

- D.63 num-threads

- D.63.1 子要素

- D.63.2 属性

- D.63.3 例

- D.64 param

- D.64.1 子要素

- D.64.2 属性

- D.64.3 例

- D.65 parameter

- D.65.1 子要素

- D.65.2 属性

- D.65.3 例

- D.66 params

- D.66.1 子要素

- D.66.2 属性

- D.66.3 例

- D.67 partition-order-capacity

- D.67.1 子要素

- D.67.2 属性

- D.67.3 例

- D.68 password

- D.68.1 子要素

- D.68.2 属性

- D.68.3 例

- D.69 playback-parameters

- D.69.1 子要素

- D.69.2 属性

- D.69.3 例

- D.70 playback-speed

- D.70.1 子要素

- D.70.2 属性

- D.70.3 例

- D.71 processor (EPL)

- D.71.1 子要素

- D.71.2 属性

- D.71.3 例

- D.72 processor (Oracle CQL)

- D.72.1 子要素

- D.72.2 属性

- D.72.3 例

- D.73 profile

- D.73.1 子要素

- D.73.2 属性

- D.73.3 例

- D.74 provider-name

- D.74.1 子要素

- D.74.2 属性

- D.74.3 例

- D.75 query

- D.75.1 子要素

- D.75.2 属性

- D.75.3 例

- D.76 record-parameters

- D.76.1 子要素

- D.76.2 属性

- D.76.3 例

- D.77 repeat

- D.77.1 子要素

- D.77.2 属性

- D.77.3 例

- D.78 rule

- D.78.1 子要素

- D.78.2 属性

- D.78.3 例

- D.79 rules

- D.79.1 子要素

- D.79.2 属性

- D.79.3 例

- D.80 schedule-time-range

- D.80.1 子要素

- D.80.2 属性

- D.80.3 例

- D.81 schedule-time-range-offset

- D.81.1 子要素

- D.81.2 属性

- D.81.3 例

- D.82 selector

- D.82.1 子要素

- D.82.2 属性

- D.82.3 例

- D.83 server-context-path

- D.83.1 子要素

- D.83.2 属性

- D.83.3 例

- D.84 server-url

- D.84.1 子要素

- D.84.2 属性

- D.84.3 例

- D.85 session-ack-mode-name

- D.85.1 子要素

- D.85.2 属性

- D.85.3 例

- D.86 session-transacted

- D.86.1 子要素

- D.86.2 属性

- D.86.3 例

- D.87 stage

- D.87.1 子要素

- D.87.2 属性

- D.87.3 例

- D.88 start

- D.88.1 子要素

- D.88.2 属性

- D.88.3 例

- D.89 start-location

- D.89.1 子要素

- D.89.2 属性

- D.89.3 例

- D.90 start-stage

- D.90.1 子要素

- D.90.2 属性

- D.90.3 例

- D.91 store-policy-parameters

- D.91.1 子要素

- D.91.2 属性

- D.91.3 例

- D.92 stream

- D.92.1 子要素

- D.92.2 属性

- D.92.3 例

- D.93 symbol

- D.93.1 子要素

- D.93.2 属性

- D.93.3 例

- D.94 symbols

- D.94.1 子要素

- D.94.2 属性

- D.94.3 例

- D.95 threshold

- D.95.1 子要素

- D.95.2 属性

- D.95.3 例

- D.96 throughput

- D.96.1 子要素

- D.96.2 属性

- D.96.3 例

- D.97 throughput-interval

- D.97.1 子要素

- D.97.2 属性

- D.97.3 例

- D.98 time-range

- D.98.1 子要素

- D.98.2 属性

- D.98.3 例

- D.99 time-range-offset

- D.99.1 子要素

- D.99.2 属性

- D.99.3 例

- D.100 time-to-live

- D.100.1 子要素

- D.100.2 属性

- D.100.3 例

- D.101 unit

- D.101.1 子要素

- D.101.2 属性

- D.101.3 例

- D.102 user

- D.102.1 子要素

- D.102.2 属性

- D.102.3 例

- D.103 value

- D.103.1 子要素

- D.103.2 属性

- D.103.3 例

- D.104 view

- D.104.1 子要素

- D.104.2 属性

- D.104.3 例

- D.105 work-manager

- D.105.1 子要素

- D.105.2 属性

- D.105.3 例

- D.106 work-manager-name

- D.106.1 子要素

- D.106.2 属性

- D.106.3 例

- D.107 write-behind

- D.107.1 子要素

- D.107.2 属性

- D.107.3 例

- D.108 write-none

- D.108.1 子要素

- D.108.2 属性

- D.108.3 例

- D.109 write-through

- D.109.1 子要素

- D.109.2 属性

- D.109.3 例

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

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

- E.1.1 要素の階層

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

- E.2 wlevs:deployment

- E.2.1 子要素

- E.2.2 属性

- E.2.3 例

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

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

- F.1.1 要素の階層

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

- 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 CEPメタデータ注釈リファレンス

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

- 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 例

J Oracle CEP IDE for Eclipseチュートリアル

- J.1 はじめに

- J.2 ステップ1: Oracle CEP定義の作成

- J.3 ステップ2: Oracle CEPアプリケーションの作成

- J.4 ステップ3: Oracle CEPサーバーの起動およびプロジェクトのデプロイ

- J.5 ステップ4: コードの変更および再デプロイ

- J.6 ステップ5: デプロイ済アプリケーションのデバッグ

- J.7 次のステップ

索引

例一覧

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

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

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

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

- 1-5 netio要素

- 1-6 netio要素ポート値へのアクセス

- 1-7 ConfigurationPropertyPlaceholderConfigurerの追加

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

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

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

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

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

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

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

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

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

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

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

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

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

- 2-4 MarketEventクラス

- 2-5 MarketEventクラス

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

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

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

- 2-9 ForeignExchangeEventクラス: JavaBean標準に準拠しない

- 2-10 ForeignExchangeBuilderFactory

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

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

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

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

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

- 2-16 MyBean実施でのEventTypeRepositoryへのアクセス

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 9-4 PriceEvent

- 9-5 filterFanoutProcessor Oracle CQL問合せ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 10-4 表作成SQL文

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

- 10-6 データ・ソースStockDSがあるOracle CEP Server config.xmlファイル

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

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

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

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

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

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

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

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

- 12-1 EPNアセンブリ・ファイルのキャッシュ・システムID: cacheSystem

- 12-2 コンポーネント構成ファイルのキャッシュ・システム名: cacheSystem

- 12-3 EPNアセンブリ・ファイルのキャッシュID: cache1

- 12-4 コンポーネント構成ファイルのキャッシュ名: cache1

- 12-5 アプリケーション構成ファイル: Coherenceキャッシュ

- 12-6 Oracle CoherenceキャッシュのLocalListenerの実装

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

- 12-8 Oracle CoherenceキャッシュのLocalLoaderの実装

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

- 12-10 Oracle CoherenceキャッシュのLocalStoreの実装

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

- 13-1 bdb-config要素

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

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

- 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 注釈を付けられたカスタム・アダプタ実装

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 21-21 MyCompoundKeyClassの実装

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

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

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

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

- 21-26 MyCompoundKeyClassの実装

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

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

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

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

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

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

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

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

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

- 21-36 MyCompoundKeyClassの実装

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- 22-1 ActiveActiveGroupBeanのBean要素

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

- 23-1 イベント・タイプPriceEventの定義

- 23-1 EventPartitionerクラス

- 23-3 EventPartitionerクラスの実装

- 23-4 ActiveActiveGroupBeanのBean要素

- 23-5 ocep-server-1用のjms-adapterセレクタ定義

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

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

- 23-8 ActiveActiveGroupBeanのBean要素

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

- 23-10 ocep-server-1用のjms-adapterセレクタ定義

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

- 23-12 groupPattern属性を持つActiveActiveGroupBeanのBean要素

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

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

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

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

- 24-5 MyActivatorクラスの実装

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

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

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

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

- 24-10 メッセージ引数

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

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

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

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

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

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

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

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

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

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

- 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 HelloWorld例イベント処理ネットワーク

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

- 2-1 EPNエディタ

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

- 2-3 イベント・タイプ・リポジトリ・エディタ - JavaBeanイベント

- 2-4 EPNエディタ

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

- 2-6 イベント・タイプ・リポジトリ・エディタ - タプル・イベント

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

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

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

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

- 3-5 Eclipseについて

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

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

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

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

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

- 3-11 Eclipseについて

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

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

- 3-14 Java 6の構成詳細

- 4-1 Oracle CEPプロジェクト構造

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

- 4-3 「新規Oracle CEPアプリケーション・プロジェクト」ウィザード:「Oracle CEPアプリケーションを作成します。」

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

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

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

- 4-7 「新規CEPアセンブリ・ファイル」ダイアログ

- 4-8 「新規」ダイアログ

- 4-9 「新規CEPアプリケーション構成ファイル」ダイアログ

- 4-10 Oracle CEPプロジェクトbuild.propertiesファイル

- 4-11 「エクスポート」ダイアログ

- 4-12 Oracle CEPアプリケーション・エクスポート:プロジェクトの選択ダイアログ

- 4-13 ワークスペース・ランチャダイアログ

- 4-14 「インポート」ダイアログ

- 4-15 プロジェクトのインポートダイアログ

- 4-16 プロジェクトのプロパティダイアログ:プロジェクト・ファセット

- 4-17 ファセット・プロジェクトの変更

- 4-18 「プリファレンス」ダイアログ

- 4-19 プロジェクト・プロパティダイアログ:ターゲット・ランタイム

- 4-20 ビルダー・エラー

- 4-21 ワークスペース・ランチャダイアログ

- 4-22 「インポート」ダイアログ

- 4-23 プロジェクトのインポートダイアログ

- 4-24 プロジェクトのプロパティダイアログ:プロジェクト・ファセット

- 4-25 ファセット・プロジェクトの変更

- 4-26 「プリファレンス」ダイアログ

- 4-27 プロジェクト・プロパティダイアログ:ターゲット・ランタイム

- 4-28 ビルダー・エラー

- 4-29 「プリファレンス」ダイアログ

- 4-30 Oracle CEP IDE for Eclipseのlibディレクトリ

- 4-31 マニフェスト・エディタの「ビルド」タブ

- 4-32 マニフェスト・エディタの「ランタイム」タブ

- 4-33 JARの選択ダイアログ

- 4-34 JARをクラスパスに追加した後のマニフェスト・エディタの 「ランタイム」タブ

- 4-35 マニフェスト・エディタの「MANIFEST.MF」タブ

- 4-36 パッケージ・エクスプローラ

- 4-37 マニフェスト・エディタの「依存関係」タブ

- 4-38 プラグインの選択ダイアログ

- 4-39 Oracle CEP IDE for Eclipseプロパティ・ディレクトリ

- 4-40 マニフェスト・エディタの「ビルド」タブ

- 4-41 Oracle CEP IDE for Eclipseのlibディレクトリ

- 4-42 マニフェスト・エディタの「ランタイム」タブ

- 3-43 パッケージの選択ダイアログ

- 4-44 パッケージをエクスポートした後のマニフェスト・エディタの 「ランタイム」タブ

- 4-45 Oracle CEP IDE for Eclipseのlibディレクトリ

- 4-46 マニフェスト・エディタの「依存関係」タブ

- 3-47 パッケージの選択ダイアログ

- 4-48 パッケージをインポートした後のマニフェスト・エディタの 「依存関係」タブ

- 4-49 「プロパティ」ダイアログ

- 4-50 「Oracle CEPの問題の重大度」ダイアログ: ワークスペース

- 4-51 「Oracle CEPの問題の重大度」ダイアログ: プロジェクト

- 5-1 Oracle CEP IDE for Eclipseのサーバー・ビュー

- 5-2 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)

- 5-3 新しいサーバー:新しいOracle CEP v11.1ランタイムダイアログ

- 5-4 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログ

- 5-5 新しいサーバー:新しいOracle CEP v11.1サーバー

- 5-6 ローカル・サーバー用の新しいサーバー:新しいOracle CEP v11サーバーダイアログ

- 5-7 「プリファレンス」-「サーバー」

- 5-8 Oracle CEP IDE for Eclipseのサーバー・ビュー

- 5-9 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)

- 5-10 新しいサーバー:新しいOracle CEP v11.1ランタイムダイアログ

- 5-11 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログ

- 5-12 新しいサーバー:新しいOracle CEP v11.1サーバー

- 5-13 リモート・サーバー用の新しいサーバー:新しいOracle CEP v11サーバーダイアログ

- 5-14 「プリファレンス」-「サーバー」(インストールされたランタイム)

- 5-15 新しいサーバー・ランタイム環境ダイアログ

- 5-16 新しいサーバー:新しいOracle CEP v11.1ランタイムダイアログ

- 5-17 Oracle CEPサーバーの起動

- 5-18 Oracle CEPサーバーの停止

- 5-19 既存のローカルOracle CEPサーバー・インスタンスへのアタッチ

- 5-20 「稼働しているCEPサーバーにアタッチしますか」

- 5-21 既存のリモートOracle CEPサーバー・インスタンスへのアタッチ

- 5-22 Oracle CEPサーバーの停止

- 5-23 Oracle CEPサーバーへのプロジェクトの追加

- 5-24 追加と削除

- 5-25 プロジェクトを追加した後のサーバー・ビュー

- 5-26 「クラスタ・デプロイメント・グループ名の選択」ダイアログ

- 5-27 プロジェクトをデプロイ(パブリッシュ)した後のサーバー・ビュー

- 5-28 サーバー概要エディタ

- 5-29 ドメイン構成ファイルの編集

- 5-30 Oracle CEPドメイン構成ファイルconfig.xml

- 5-31 Oracle CEP Visualizerの開始

- 5-32 Oracle CEP Visualizer

- 5-33 ブレークポイントの設定

- 5-34 デバッグ・モードでOracle CEPサーバーの起動

- 6-1 プロジェクトからEPNエディタを開く

- 6-2 EPNエディタ

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

- 6-4 EPNエディタ

- 6-5 EPNのフロー表現

- 6-6 アセンブリ・ファイルによるEPNのフィルタ処理

- 6-7 ズーム・レベル

- 6-8 レイアウトの最適化

- 6-9 接続されていないBeanの表示/非表示

- 6-10 EPNをイメージ・ファイルとしてエクスポート

- 6-11 EPNの印刷

- 6-12 構成のバッジング

- 6-13 リンク・ソース

- 6-14 リンク・ソースのアセンブリ・ファイル

- 6-15 リンク・リスナー

- 6-16 リンク・リスナーのアセンブリ・ファイル

- 6-17 ネストされるBeanを含むEPN

- 6-18 すべてのノードがネストされたEPN

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

- 6-20 構成バッジがついたノード

- 6-21 コンポーネント構成ファイル: EPNアセンブリ・ファイルへのハイパーリンク

- 6-22 EPNアセンブリ・ファイル: コンポーネント構成ファイルへのハイパーリンク

- 6-23 Oracle CQL文: イベント・スキーマ

- 6-24 EPNアセンブリ・ファイルの対応するイベント定義

- 6-25 Oracle CEP EPNの例

- 6-26 Oracle CEPタイプ・ブラウザ

- 6-27 EPNアセンブリ・ファイルFilterAsiaを開く

- 6-28 FilterAsiaコンポーネント構成ファイルを開く

- 6-29 基本ノードの作成

- 6-30 新規基本ノード

- 6-31 アダプタ・ノードの作成

- 6-32 新規アダプタ・ウィザード

- 6-33 新規アダプタ・ウィザード - jms-inbound

- 6-34 新規アダプタ・ウィザード - jms-outbound

- 6-35 新規アダプタ・ウィザード - httppub

- 6-36 新規アダプタ・ウィザード - httpsub

- 6-37 新規アダプタ・ノード

- 6-38 プロセッサ・ノードの作成

- 6-39 「新規プロセッサ」ダイアログ

- 6-40 新規プロセッサ・ノード

- 6-41 ノードの接続: 接続可能

- 6-42 ノードの接続: 接続禁止

- 6-43 有効な接続

- 6-44 EPNアセンブリ・ファイル: 接続前

- 6-45 EPNアセンブリ・ファイル: 接続後

- 6-46 ノードのレイアウト

- 6-47 ノード名の変更

- 6-48 ノードの削除

- 6-49 チャネル・ノードの削除前のEPN

- 6-50 チャネル・ノードの削除前のアセンブリ・ファイル

- 6-51 チャネル・ノードの削除後のEPN

- 6-52 チャネル・ノードの削除後のアセンブリ・ファイル

- 8-1 ローカル・パブリッシュ用の組込みPub-Subアダプタ

- 8-2 リモート・パブリッシュ用の組込みPub-Subアダプタ

- 8-3 サブスクライブ用の組込みPub-Subアダプタ

- 9-1 Oracle CQLプロセッサおよびダウンストリーム・チャネルを備えたEPN

- 9-2 構成バッジを備えたチャネル

- 9-3 構成バッジを備えたチャネル

- 9-4 2つのチャネルを持つEPN

- 12-1 MANIFEST.MFファイルの編集

- 12-2 MANIFEST.MFファイルの編集

- 12-3 プロセッサ・ソースとしてキャッシュ

- 12-4 プロセッサ・シンクとしてキャッシュ

- 13-1 EPNでの記録と再生の構成

- 20-1 Oracle CEPの高可用性: プライマリ・サーバーおよびセカンダリ・サーバー

- 20-2 Oracle CEPの高可用性ライフサイクルの状態図

- 20-3 セカンダリの障害

- 20-4 プライマリの障害およびフェイルオーバー

- 20-5 EPN内の高可用性アダプタ

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

- 20-7 JMSによる正確なリカバリ

- 20-8 イベント順序

- 21-1 シンプル・フェイルオーバーのEPN

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

- 21-3 軽量キュー・トリミングのEPN

- 21-4 JMSのEPNによる正確なリカバリ

- 22-1 イベント・パーティショナEPN

- 22-2 高可用性なしのOracle CEP ActiveActiveGroupBean

- 22-3 高可用性のあるOracle CEP ActiveActiveGroupBean

- 23-1 EventPartitioner EPN

- 23-2「新規Javaクラス」ダイアログ

- 23-3 JMSのEPNによる正確なリカバリ

- 23-4 高可用性のあるOracle CEP ActiveActiveGroupBean

- 24-1 外部ステージ依存関係グラフ

- 24-2 「プリファレンス」ダイアログ: アプリケーション・ライブラリのパス

- 24-3 パス変数の選択ダイアログ

- 24-4「新規変数 」ダイアログ

- 24-5 パス変数の選択(当該変数名が表示)

- 24-6 変数の拡張ダイアログ

- 24-7 「プリファレンス」ダイアログ: アプリケーション・ライブラリ・パスとパス変数

- 24-8 Oracle CEP IDE for Eclipseのlibディレクトリ

- 24-9「新規Javaクラス」ダイアログ

- 24-10 マニフェスト・エディタ:「概要」タブ

- 24-11 マニフェスト・エディタ:「ランタイム」タブ

- 24-12 JARの選択ダイアログ

- 24-13 マニフェスト・エディタ:「依存関係」タブ

- 24-14 パッケージ選択ダイアログ

- 24-15 マニフェスト・エディタ

- D-1 Oracle CQLプロセッサおよびダウンストリーム・チャネルがあるEPN

- J-1 パースペクティブのショートカット・メニュー

- J-2 Oracle CEP IDE for Eclipse

- J-3 自動パブリッシュ用にOracle CEPサーバーを構成

- J-4 Oracle CEP IDE for Eclipseのサーバー・ビュー

- J-5 「新規Oracle CEPアプリケーション・プロジェクト」ダイアログ

- J-6「テンプレート」ダイアログ

- J-7 プロジェクト・エクスプローラ

- J-8 Oracle CEPサーバーの起動

- J-9 プロジェクトの追加と削除ダイアログ

- J-10 Javaソースをアダプタ用に編集

- J-11 helloworldAdapter用Javaエディタ

- J-12 プロジェクトの手動パブリッシュ

- J-13 HelloWorldBean用Javaエディタ

- J-14 HelloWorldBeanのデバッガ表示

表一覧

- 1-1 リソース名解決

- 2-1 csvgenアダプタ・タイプ

- 3-1 新規更新サイトダイアログの属性

- 3-2 Oracle CEP IDE for Eclipseのプラグイン

- 3-3 Oracle CEP IDE for Eclipseのプラグイン

- 4-1 Oracle CEPプロジェクト・アーティファクト

- 4-2 Oracle CEPアプリケーションの作成ダイアログ

- 4-3 「Oracle CEPアプリケーションのコンテンツ」ダイアログ

- 4-4 「新規CEPアセンブリ・ファイル」ダイアログ

- 4-5 新規CEP構成ファイルダイアログ

- 4-6 「Oracle CEPアプリケーションのコンテンツ」ダイアログ

- 4-7 Oracle CEP問題の重大度

- 5-1 EclipseおよびOracle CEPサーバーの概念

- 5-2 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)の属性

- 5-3 新しいサーバー:新しいOracle CEP v11ランタイムダイアログの属性

- 5-4 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログの属性

- 5-5 ローカル・サーバー用の新しいサーバー:新しいOracle CEP v11サーバーダイアログの属性

- 5-6 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)の属性

- 5-7 新しいサーバー:新しいOracle CEP v11ランタイムダイアログの属性

- 5-8 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログの属性

- 5-9 ローカル・サーバー用の新しいサーバー:新しいOracle CEP v11サーバーダイアログの属性

- 5-10 新しいサーバー・ランタイムダイアログの属性

- 5-11 新しいサーバー・ランタイムダイアログの属性

- 5-12 追加と削除ダイアログの属性

- 5-13 サーバー概要エディタの属性

- 6-1 Oracle CEPタイプダイアログ

- 6-2 EPNエディタのアイコン

- 6-3 新規アダプタ・ウィザード - ページ1

- 6-4 「新規プロセッサ」ダイアログ

- 7-1 jms-adapterインバウンド子要素

- 7-2 jms-adapterアウトバウンド・コンポーネント構成の子要素

- 8-1 パブリッシュ用コンポーネント構成のhttp-pub-sub-adapterの子要素

- 8-2 サブスクライブ用コンポーネント構成のhttp-pub-sub-adapterの子要素

- 10-1 EPNアセンブリ・ファイル表要素属性

- 10-2 EPNアセンブリ・ファイルevent-type要素プロパティ属性

- 10-3 SQL列タイプおよびOracle CEPタイプの対応するもの

- 13-1 bdb-configの子要素

- 13-2 record-parametersの子要素

- 16-3 playback-parametersの子要素

- 17-1 bea-jaxws.xmlファイルの属性

- 18-1 spatial:context要素の属性

- 20-1 Oracle CEP高可用性のサービス品質

- 20-2 Oracle CEPの高可用性アプリケーションの種類

- 21-1 高可用性入力アダプタ用wlevs:adapterの子要素

- 21-2 高可用性入力アダプタのインスタンス・プロパティ

- 21-3 高可用性入力アダプタ用ha-inbound-adapterの子要素

- 21-4 バッファリング出力アダプタ用wlevs:adapterの子要素

- 21-5 バッファリング出力アダプタのインスタンス・プロパティ

- 21-6 バッファリング出力アダプタ用ha-buffering-adapterの子要素

- 21-7 ブロードキャスト出力アダプタ用wlevs:adapterの子要素

- 21-8 ブロードキャスト出力アダプタのインスタンス・プロパティ

- 21-9 ブロードキャスト出力アダプタ用ha-broadcast-adapterの子要素

- 21-10 相関出力アダプタ用wlevs:adapterの子要素

- 21-11 相関出力アダプタのインスタンス・プロパティ

- 21-12 相関出力アダプタ用ha-correlating-adapterの子要素

- 22-1 イベント・パーティショナ・チャネルのスレッド・オプション

- 23-1 EventPartitionerの「新規Javaクラス」オプション

- 23-2 Oracle CEPサーバー構成ファイル・グループ要素構成

- 23-3 Oracle CEPサーバー構成ファイル・グループ要素構成

- 24-1 Oracle CEPアプリケーション・ライブラリのパス

- 24-2 Oracle CEPアプリケーション・ライブラリ・パス変数

- 24-3 bundler.shコマンド・ライン・オプション

- 24-4 ファクトリ・クラスおよびサービス・インタフェース

- 24-5 新規Javaクラス・パラメータ

- 24-6 weblogic.i18ngenユーティリティ・オプション

- 25-1 ロード・ジェネレータのプロパティ

- 26-1 イベント・インスペクタJSONイベントの必要な属性

- 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:propertyアプリケーション・アセンブリ要素の属性

- C-19 wlevs:sourceアプリケーション・アセンブリ要素の属性

- C-20 wlevs:tableアプリケーション・アセンブリ要素の属性

- C-21 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 Complex Event Processing開発者ガイド

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

B61654-04(原本部品番号:E14301-08)

2012年4月

Oracle Complex Event Processing (Oracle CEP)のスケーラブルなイベント駆動型アプリケーションの構築方法を説明する、開発者向けのドキュメント。

Oracle Fusion Middleware Oracle Complex Event Processing開発者ガイド11gリリース1 (11.1.1.6.2) for Eclipse

B61654-04

Copyright © 2007, 2012, Oracle and/or its affiliates.All rights reserved.

原本著者: Steve Traut、Peter Purich

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

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 CEPアプリケーションの作成方法、デプロイ方法およびデバッグ方法について説明します。

Oracle CEP(以前の名称はWebLogic Event Server)は、高パフォーマンスのイベント駆動アプリケーションを開発するためのJavaサーバーです。これは、Oracle Continuous Query Language (Oracle CQL)ベースの豊富な宣言的環境を提供するOracle CEPサービス・エンジンを含む共有サービスがある、Equinox OSGiに基づく軽量Javaアプリケーション・コンテナです。Oracle CQLは、ビジネス・オペレーションを管理するための効率と効果を向上するためにデータのストリームをサポートする追加のコンストラクトがあるSQLベースの問合せ言語です。 Oracle CEPは、JRockitリアルタイムを使用して超高スループットおよびマイクロ秒単位での待機時間をサポートし、完全なリアルタイム・エンドツーエンドJavaイベント駆動型アーキテクチャ(EDA)の開発プラットフォームに対して、Eclipseを開発するツールを使用してOracle CEP VisualizerおよびOracle CEP IDEを提供します。

対象読者

このドキュメントは、Oracle CEPアプリケーションを作成するプログラマを対象としています。

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

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 Complex Event Processingスタート・ガイド』

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』

- Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンス

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』

- 『Oracle Fusion Middleware Oracle Complex 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 CEPフォーラム: http://forums.oracle.com/forums/forum.jspa?forumID=820

- Oracle CEPサンプル: http://www.oracle.com/technologies/soa/complex-event-processing.html

- Oracleイベント・ドリブン・アーキテクチャ・スイートのサンプル・コード: http://www.oracle.com/technology/sample_code/products/event-driven-architecture

表記規則

このドキュメントでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

斜体

イタリックは、ユーザーが特定の値を指定するプレースホルダー変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

リリース11.1.1.6.x用のこのガイドでの新しい情報

リリース11.1.1.6.x用に、このガイドはいくつかの点が更新されています。次の表に、追加または変更された項を示します。11.1.1.6.xの最初のリリースで機能を使用できなかった場合は、最後の列に更新を含むドキュメントのリリースを示します。

既知の問題のリストについては(リリース・ノート)、Oracle SOA製品およびOracle AIA Foundation Packの既知の問題に関するページ(http://www.oracle.com/technetwork/middleware/docs/soa-aiafp-knownissuesindex-364630.html)を参照してください。

項

変更内容

11.1.1.6.0

11.1.1.6.1

第2章「Oracle CEPイベントの概要」

2.2.1項「イベント・タイプ・プロパティ値へのアクセス」

JavaBeansスタイルのプロパティ値にアクセスするコードが追加されました。

X

第3章「Oracle CEP IDE for Eclipseの概要」

3.4項「Eclipseの構成」

Eclipseの実行に標準JREを使用するように明記されました。Oracle CEPアプリケーションの実行にはJRockit JREが適しています。

X

第5章「Oracle CEP IDE for EclipseおよびOracle CEPサーバー」

5.2.1項 「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

ドメイン・ウィザードで作成されたサーバーをEclipseで使用するための要件が追加されました。

X

第7章「JMSアダプタの構成」

7.1.2.3項「恒久サブスクリプション用のJMSアダプタの構成」

永続サブスクリプションに関する項が追加されました。

X

第10章「Oracle CQLプロセッサの構成」

10.5項「パラレル問合せ実行用のOracle CQLプロセッサの構成」

パラレル実行の構成に関する項が追加されました。

X

第14章「カスタム・アダプタの構成」

14.2.1項「カスタム・アダプタを手動で構成する方法」

項は削除されました。ANTタスクはありません。

X

第21章「高可用性の構成」

21.1.4項「JMSによる正確なリカバリの構成方法」

正確なリカバリのJMS宛先はキューではなくトピックであるべきことが明記されました。

X

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

D.34項「destination-type」

destination-type要素用の参照が追加されました。

X

D.38項「durable-subscription-name」

durable-subscription-name要素用の参照が追加されました。

X

第1部

概要

第1部の章の内容は次のとおりです。

- 第1章「Oracle CEPアプリケーションの作成の概要」

- 第2章「Oracle CEPイベントの概要」

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

この章では、Oracle Complex Event Processing (Oracle CEP)アプリケーションの開発、プログラミング・モデルの導入、Oracle CEP IDE for Eclipse、および関連する手順の記述の概要について説明します。

- 1.1項「Oracle CEPプログラミング・モデルの概要

- 1.2項「Oracle CEP IDE for Eclipse」

- 1.3項「Oracle CEPアプリケーションの作成」

- 1.4項「Oracle CEPリソース・アクセスの構成」

- 1.5項「次のステップ」

1.1 Oracle CEPプログラミング・モデルの概要

アプリケーションは、低待機時間、イベントドリブンかつ高性能駆動型のアプリケーションであるため、軽量なコンテナ上で実行し、POJOベースのプログラミング・モデルを使用して開発されています。POJO (Plain Old Java Object)プログラミングでは、ビジネス・ロジックはPOJO形式で実装され、必要とするサービスが注入されます。これは一般に、依存関係インジェクションと呼ばれます。インジェクトされたサービスは、構成管理などのOracle CEPサービスで提供されるものから、Oracle Kodoなどの他のOracle製品で提供されるサービスやサード・パーティ製のサービスまで多岐に渡ります。

Oracle CEPでは、イベント駆動型アプリケーションをアセンブルするために共に使用する一連のコア・サービスやコンポーネントが定義されます。一般的なサービスには、アダプタ、ストリーム、およびプロセッサがあります。また、アプリケーションの一部となる独自のビジネス・ロジックPOJOとSpring Beanを作成したり、イベントのモニターや、イベントの記録または再生など、Oracle CEPフレームワークへの完全なアクセス権を持つ、Spring Beanと同様の特殊化されたイベントBeanを作成できます。このほかにも、Oracle CEPにはキャッシュ、クラスタ化、構成、モニター、ロギングなどの他のインフラストラクチャ・サービスがあります。

すべてのサービスは基になるOracle microServices Architecture (mSA)テクノロジ上にデプロイされています。Oracle mSAは、OSGi Allianceで定義されたOSGiサービス・プラットフォームに基づいています。(詳細は、http://www.osgi.org/を参照してください。)

次の節では、Oracle CEPプログラミング・モデルとアプリケーションの作成についてさらに詳しく説明しています。

- 1.1.1項「Oracle CEPイベント処理ネットワークのコンポーネント」

- 1.1.2項「Oracle CEPイベント・タイプ」

- 1.1.3項「EPNでのイベントの送信: ストリームおよびリレーション・ソースおよびシンク」

- 1.1.4項「EPNアセンブリ・ファイル」

- 1.1.5項「コンポーネント構成ファイル」

- 1.1.5.1項「ConfigurationPropertyPlaceholderConfigurerクラスを使用したコンポーネントおよびサーバーの構成へのアクセス」

- 1.1.8項「高可用性とスケーラビリティ」

- 1.1.7項「EPNの拡張」

- 1.1.6項「コンポーネントを連動させる方法」

- 1.1.9項「Oracle CEPアプリケーション・ライフサイクル」

- 1.1.10項「Oracle CEP API」

1.1.1 Oracle CEPイベント処理ネットワークのコンポーネント

Oracle CEPイベント処理ネットワーク(EPN)では、Oracle CEPアプリケーションのOracle CEPコンポーネントの相互接続を表します。

Oracle CEPアプリケーションおよびイベント処理ネットワーク(EPN)は、次の基本コンポーネントで構成されています。

- 1.1.1.1項「アダプタ」

- 1.1.1.2項「チャネル」

- 1.1.1.3項「プロセッサ」

- 1.1.1.4項「イベントBean」

- 1.1.1.5項「イベントBean」

- 1.1.1.6項「キャッシュ」

- 1.1.1.7項「表」

EPNの各コンポーネントは、ステージと呼ばれます。また、Oracle CEP IDE for Eclipse内では、EPNの各コンポーネントは、ノードと呼ばれます。

詳細は、次を参照してください:

- 1.1.1.8項「ネストされたステージ」

- 1.1.1.9項「外部ステージ」

- 6.4.1項「ノードの作成」

1.1.1.1 アダプタ

受信データ・フィードにインタフェースを提供して、Oracle CEPアプリケーションから理解できるイベント・タイプにデータを変換するコンポーネント。

アダプタは、受信(受信データ)も送信(送信データ)もあります。Oracle CEPには、JMSおよびHTTPパブリッシュ・サブスクライブ・アダプタと、高可用性構成用のアダプタなどのビルトイン・アダプタが含まれます。

詳細は、次を参照してください:

- 第7章「JMSアダプタの構成」

- 第8章「HTTPパブリッシュ・サブスクライブ・サーバー・アダプタの構成」

- 第14章「カスタム・アダプタの構成」

- 21.2項「高可用性アダプタの構成」

1.1.1.2 チャネル

イベントがフローする物理経路を表すコンポーネント。

チャネルによって、イベントを送信するコンポーネントとイベントを受信するコンポーネントが接続されます。詳細は、第9章「チャネルの構成」を参照してください。

1.1.1.3 プロセッサ

チャネルから提供されるイベントに対して、ユーザー定義のイベント処理ルールを実行するコンポーネント。

ユーザー定義のルールは次のいずれかを使用して作成されます。

- Oracle連続問合せ言語(Oracle CQL)
詳細は、次を参照してください:

- 第10章「Oracle CQLプロセッサの構成」

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』

- イベント処理言語(EPL)
詳細は、次を参照してください:

- 第11章「EPLプロセッサの構成」

- 『Oracle Fusion Middleware Oracle Complex Event Processing EPL言語リファレンス』

注意:

イベント処理言語(EPL)は、Oracle CEP 11gリリース1 (11.1.1)ではOracle CQLによって置き換えられます。Oracle CEPは、EPLとの下位互換性をサポートします。

1.1.1.4 イベントBean

イベントBeanは、Oracle CEPで管理されるユーザー・コードのPlain Old Java Object (POJO) Beanです。

イベントBeanは、Springフレームワークで管理されるSpring Beanに類似しています。しかし、イベントBeanで、一時停止または再開メソッドの指定などのイベントベース機能がサポートされます。詳細は、第15章「カスタム・イベントBeanの構成」を参照してください。

1.1.1.5 Spring Bean

Spring Beanは、Springフレームワークで管理されるユーザー・コードのPlain Old Java Object (POJO) Beanです。

このコンポーネントはOracle CEPで管理されません。たとえば、このイベントの再生、レコードおよびコンポーネントなどを監視できません。POJOにこの追加機能が必要となる場合、Oracle CEPイベントBeanを作成します。詳細は、第16章「カスタムSpring Beanの構成」を参照してください。

1.1.1.6 キャッシュ

キャッシュは、 アプリケーション全体のパフォーマンス向上のみを目的として作成される、イベントの一時的なストレージ領域です。

詳細は、次を参照してください:

- 10.4項「Oracle CQLプロセッサ・キャッシュ・ソースの構成」

- 11.3項「EPLプロセッサ・キャッシュ・ソースの構成」

- 第12章「キャッシュの構成」

1.1.1.7 表

表は、リレーショナル・データベース表をイベント・データ・ソースとしてEPNに接続するコンポーネントです。

以下を使用して、Oracle CQL問合せからリレーショナル・データベース表にアクセスできます。

- 表ソース: 表ソースを使用して、ストリームを「即時」ウィンドウのみ、かつ単一のデータベース表に対してのみ結合できます。

注意:

表ソースの変更が、ストリーム・データと適宜調整されないため、表ソースを「即時」ウィンドウを使用してイベント・ストリームにのみ結合でき、かつ単一のデータベース表のみ結合できる場合があります。詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のS[now]に関する項を参照してください。

任意の複雑なSQL問合せおよび複数の表を自分のOracle SQL問合せと統合するには、代わりにOracle JDBCデータ・カートリッジの使用を検討してください。

詳細は、10.3項「Oracle CQLプロセッサ表ソースの構成」を参照してください。

- Oracle JDBCデータ・カートリッジ: Oracle JDBCデータ・カートリッジを使用して、任意の複雑なSQL問合せおよび複数の表、データソースを自分のOracle CQL問合せと結合する場合があります。

注意:

Oracle JDBCデータ・カートリッジを使用して、Oracle CQL文からリレーショナル・データベース表にアクセスすることをお薦めします。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のOracle JDBCデータ・カートリッジに関する項を参照してください。

すべてのケースで、Oracle CEPサーバーのconfig.xmlファイルにデータソースを定義する必要があります。詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のリレーショナル・データベースへのアクセスの構成に関する項を参照してください。

Oracle CEPリレーショナル・データベース表イベント・ソースはプル・データ・ソースです。つまり、Oracle CEPでは、定期的にイベント・ソースがポーリングされます。

1.1.1.8 ネストされたステージ

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: id="helloworldInput" event-type="HelloWorldEvent" >
<wlevs:listener>
<wlevs:processor id="helloworldProcessor">
<wlevs:listener>
<wlevs: id="helloworldOutput" event-type="HelloWorldEvent">
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
</wlevs:>
</wlevs:listener>
</wlevs:processor>
</wlevs:listener>
</wlevs:>
</wlevs:listener>
</wlevs:adapter>

詳細は、6.2.9項「ネストされたステージ」を参照してください。

1.1.1.9 外部ステージ

同じアプリケーションにソース・ステージおよびターゲット・ステージの両方を定義した場合、ステージを、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 CEPアプリケーションを作成する場合、アプリケーションのアセンブリ、デプロイおよび再デプロイのときに外部ステージの依存関係を考慮する必要があります。詳細は、24.2.3項「外部ステージによるアプリケーションのアセンブリ」を参照してください。

1.1.2 Oracle CEPイベント・タイプ

イベント・タイプは、Oracle CEPアプリケーションで処理されるイベントのプロパティを定義します。アダプタはJavaメッセージ・システム(JMS)または金融マーケット・データ・フィードなどの様々なイベント・ソースからの着信イベントを受信します。プロセッサが処理できるよう、これらのイベントにOracle CEPイベント・タイプを定義する必要があります。このイベント・タイプはアダプタおよびPOJO Javaコード、およびプロセッサと関連付けられるOracle CQLおよびEPLルールで使用されます。

イベントは、各プロパティがイベント・ソースからのデータ項目を表すJavaBeanまたはJavaクラス・インスタンスです。Oracle CEPでは、様々なイベント・タイプ実施がサポートされます。

詳細は、第2章「Oracle CEPイベントの概要」を参照してください。

1.1.3 EPN内のイベントの送信: ストリーム、リレーション・ソースおよびシンク

EPNのすべてのコンポーネントでは、イベントが作成または消費されます。一部のコンポーネントでは両方できます。たとえば、EPNの途中のイベントBeanは、アダプタなどのアップストリーム・コンポーネントからイベントを受信します。その後、プロセッサなどのダウンストリーム・コンポーネントへイベントを送信します。

コンポーネントは、アップストリーム・コンポーネントから受信するイベント上で動作して、ダウンストリーム・コンポーネントへイベントをパスし、新しいイベントを作成して、これをアップストリームまたはダウンストリーム・チャネルに挿入されます。

一般的に、すべての事前定義済コンポーネント(JMS、HTTPパブリッシュ・サブスクライブ・アダプタ、チャネルおよびプロセッサなど)は、ストリーム、リレーション・ソースおよびシンクとして操作するために必要とするインタフェースを実行します。そのままで使用するか、またはEPNアセンブリ・ファイルを使用して動作を構成できます。

カスタム・アダプタ、イベントBeanおよびSpring Beanの場合、ストリーム、リレーション・ソースおよびシンクとしてこのコンポーネントを使用するには、適切なインタフェースを実装する必要があります。

この項では次について説明します:

- 1.1.3.1項「ストリームおよび関係」

- 1.1.3.2項「ストリームおよび関係のソース」

- 1.1.3.3項「ストリームおよび関係のシンク」

- 1.1.3.4項「EPN内のイベントの送信: 例」

詳細は、1.1.9.6項「ユーザー・アクション: ストリームおよびリレーション・ソースおよびシンクのメソッド呼び出し」を参照してください。

1.1.3.1 ストリームおよび関係

ストリームまたはリレーションとしてのOracle CEPモデル・イベント・フロー

- stream Sは、要素(s,T)のバッグ・マルチ・セットです。ここでは、sは、Sのスキーマにあり、Tはタイム・ドメインにあります。ストリーム要素は、タイムスタンプのタプル挿入のシークエンスとして表すタプル・タイムスタンプ・ペアです。つまり、ストリームは、タイムスタンプされたタプルのシークエンスです。同じタイムスタンプがある複数のタプルがある場合があります。入力ストリームのタプルはタイムスタンプが増加する順番でシステムに到達する必要があります。
チャネルをストリームとして指定するには、EPNアセンブリ要素wlevs: 属性is-relationをfalse(デフォルト)に設定します。

- リレーションは順序なしであり、タプルの時間依存性のバッグです。つまり、瞬間のリレーションです。毎タイム・インスタントで、リレーションはバウンドされたセットです。またこれは、リレーションの変更状態をキャプチャするために、挿入、削除および更新を含むタイムスタンプされたタプルのシーケンスとしても表されます。
EPNアセンブリ要素のwlevs:channel属性のis-relationをtrueに設定することによって、チャネルをリレーションとして指定できます。

詳細は、次を参照してください:

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

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のストリームおよびリレーションに関する項

1.1.3.2 ストリームおよび関係のソース

イベントを生成するすべてのコンポーネントでは、次のインタフェースのいずれかを実施する必要があります。

- com.bea.wlevs.ede.api.StreamSource

- com.bea.wlevs.ede.api.RelationSource

com.bea.wlevs.ede.api.StreamSource

StreamSourceインタフェースには、イベント・ソース・コンポーネントがcom.bea.wlevs.ede.api.StreamSenderインスタンスにインジェクトされるランタイムに、setEventSenderという1つのメソッドがあります。

その結果、StreamSenderインスタンスには、コンポーネントによって、EPN内の次のコンポーネントにイベントを送信するために起動されるsendInsertEventメソッドがあります。

また、StreamSenderインスタンスは、sendHeartbeatメソッドも提供します。sendHeartBeatメソッドは、アプリケーション・タイムスタンプ・チャネルにのみ適用されます。

チャネルでのバッチ処理を有効にする場合は、そのチャネルにイベントを送信するコンポーネントはcom.bea.wlevs.ede.api.BatchStreamSenderインタフェースを実装する必要があります。BatchStreamSenderインタフェースは、insertダウンストリーム・タイプのイベントのバッチをBatchStreamSinkに送信するためにコンポーネントが呼び出すsendInsertEventsメソッドを持ちます。詳細は、9.1.6項「バッチ処理チャネル」を参照してください。

com.bea.wlevs.ede.api.RelationSource

RelationSourceインタフェースには、イベント・ソース・コンポーネントがcom.bea.wlevs.ede.api.RelationSenderインスタンスにインジェクトされるランタイムに、setEventSenderという1つのメソッドがあります。

その結果、RelationSenderインスタンスには、コンポーネントによって、EPN内の次のコンポーネントにイベントを送信するために起動されるsendUpdateEventおよびsendDeleteEventメソッドがあります。

チャネルをリレーションとして構成する場合は、チャネル属性primary-keyによってイベント・アイデンティティが決定されます。詳細は、9.1.2.2項「リレーションとしてのチャネル」を参照してください。

sendDeleteEventについては、チャネル用に構成されたのと同じイベント・タイプのインスタンスを送信する必要があります。

sendInsertEventについては、同じ主キーを持つイベントがすでにリレーション内に含まれる場合、一意制約違反例外が発生し、入力イベントが破棄されます。

sendUpdateEventについては、指定の主キーを持つイベントがリレーション内に含まれていない場合、無効な更新タプル例外が発生し、入力イベントが破棄されます。

リレーションとして構成するチャネルでのバッチ処理を有効にする場合は、そのチャネルにイベントを送信するコンポーネントはcom.bea.wlevs.ede.api.BatchRelationSenderインタフェースを実装する必要があります。BatchRelationSenderインタフェースは、insert、updateおよびdelete ダウンストリーム・タイプのイベントのバッチをBatchRelationSinkに送信するためにコンポーネントが呼び出すsendEventsメソッドを持ちます。詳細は、9.1.6項「バッチ処理チャネル」を参照してください。

1.1.3.3 ストリームおよび関係のシンク

イベントを消費するすべてのコンポーネントでは、次のインタフェースのいずれかを実施する必要があります。

- com.bea.wlevs.ede.api.StreamSink

- com.bea.wlevs.ede.api.RelationSink

com.bea.wlevs.ede.api.StreamSink

StreamSinkインタフェースには、コンポーネントによって、EPN内の前のコンポーネントからイベントのリストを送信するために実施されるonInsertEventという単一のコールバック・メソッドがあります。

チャネルでのバッチ処理を有効にする場合は、そのチャネルからイベントを受信するコンポーネントはcom.bea.wlevs.ede.api.BatchStreamSinkインタフェースを実装する必要があります。BatchStreamSinkインタフェースは、insertタイプのイベントのバッチを受信するためのonInsertEventsコールバック・メソッドを持ちます。insertタイプのイベントは、ストリームが追加しかできないためストリームをモデリングするために使用されます。単一イベントの場合は、StreamSinkのコールバック・メソッドが呼び出されます。詳細は、9.1.6項「バッチ処理チャネル」を参照してください。

com.bea.wlevs.ede.api.RelationSink

RelationSinkインタフェースでは、Oracle CQLリレーション・シンクをモデル化するために、StreamSinkが拡張されます。また、RelationSinkインタフェースでは、onDeleteEventおよびonUpdateEventメソッドも提供されます。

リレーションとして構成するチャネルでのバッチ処理を有効にする場合は、そのチャネルからイベントを受信するコンポーネントはcom.bea.wlevs.ede.api.BatchRelationSinkインタフェースを実装する必要があります。BatchRelationSinkインタフェースは、insert、updateおよびdeleteの各イベント・タイプのイベントのバッチを受信するためのonEventsコールバック・メソッドを持ちます。特定の種類のイベントが存在しない場合は、対応するCollectionが空のCollectionになります。詳細は、9.1.6項「バッチ処理チャネル」を参照してください。

1.1.3.4 EPN内のイベントの送信例

次の例は、図1-1に示すHelloWorld例に基づいています。次の事項を示すために、変更されます。

- タプル・イベントとしてのHelloWorldEventの作成

- StreamSourceとしてのHelloWorldAdapterからのイベントの送信

- StreamSinkとしてのHelloWorldBeanでのイベントの受信

- StreamSourceとしてのHelloWorldBeanからのイベントの送信

図1-1 HelloWorld例イベント処理ネットワーク

「図1-1 HelloWorld例イベント処理ネットワーク」の説明

詳細は、次を参照してください:

- 第14章「カスタム・アダプタの構成」

- 第15章「カスタム・イベントBeanの構成」

- 第16章「カスタムSpring Beanの構成」

- 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のHelloWorld例に関する項

タプル・イベントとしてのHelloWorldEventの作成

まず、EPNアセンブリ・ファイルにタプル・イベントを作成します。

<wlevs:event-type-repository>
<wlevs:event-type type-name="HelloWorldEvent">
<wlevs:properties>
<wlevs:property name="message" type="char" length="1000"/>
</wlevs:properties>
</wlevs:event-type>
</wlevs:event-type-repository>

StreamSourceとしてのHelloWorldAdapterからのイベントの送信

@Service注釈でsetEventTypeRepositoryを追加して、ランタイム時にEventTypeRepositoryインスタンスをインジェクトするためにHelloWorldAdapterを変更します。

@Service
public void setEventTypeRepository(EventTypeRepository etr) {
etr_ = etr;
}

HelloWorldEventをインスタンス化するためにEventTypeRepositoryインスタンスを使用するには、HelloWorldAdapterのgenerateHelloMessageを変更します。その後、イベントのプロパティを構成して、ランタイムのときOracle CEPサーバーによってインジェクトされたStreamSenderインスタンスを使用して、helloWorldInputChannelにイベントを送信します。

private void generateHelloMessage() {
String message = this.message + dateFormat.format(new Date());

EventType type = etr_.getEventType("HelloWorldEvent");
EventProperty messageProp = type.getProperty("message");
Object event = type.createEvent();

messageProp.setValue(event, message);

eventSender.sendInsertEvent(event);
}

StreamSinkとしてのHelloWorldBeanでのイベントの受信

@Service注釈を使用して、ランタイム時にEventTypeRepositoryインスタンスをインジェクトするためにHelloWorldBeanを変更します。

@Service
public void setEventTypeRepository(EventTypeRepository etr) {
etr_ = etr;
}

イベントのプロパティと受信された挿入イベントのタイプを取得するために、EventTypeRepositoryインスタンスを使用するには、HelloWorldBeanのonInsertEventメソッドを変更します。

public void onInsertEvent(Object event) {
EventType eventType = etr_.getEventType(event);
String prop = (String)eventType.getPropertyValue(event, "message");

System.out.println("Tuple Message: " + prop);

// Throw com.bea.wlevs.ede.api.EventRejectedException to have an exception
// propagated up to senders. Other errors will be logged and dropped.
}

StreamSourceとしてのHelloWorldBeanからのイベントの送信

HelloWorldBeanが他のコンポーネントに接続されていて、HelloWorldBeanからこのダウンストリーム・コンポーネントにイベントを送信する場合を想定してください。

まず、StreamSourceインタフェースを実装するためにHelloWorldBeanクラスを変更して、必要となるsetEventSenderメソッドを追加します。

public class HelloWorldBean implements StreamSource, StreamSink {

private StreamSender streamSender_;

public void setEventSender(StreamSender sender) {
streamSender_ = sender;
}
...
}

@Service注釈でsetEventTypeRepositoryを追加して、ランタイム時にEventTypeRepositoryインスタンスをインジェクトするためにHelloWorldBeanを変更します。

@Service
public void setEventTypeRepository(EventTypeRepository etr) {
etr_ = etr;
}

HelloWorldEventをインスタンス化するためにEventTypeRepositoryインスタンスを使用するには、HelloWorldBeanを変更します。その後、イベントのプロパティを構成して、ランタイム時にOracle CEPサーバーによってインジェクトされたStreamSenderインスタンスを使用して、ダウンストリーム・コンポーネントにイベントを送信します。

private void generateHelloMessage() {
String message = this.message + dateFormat.format(new Date());

EventType type = etr_.getEventType("HelloWorldEvent");
EventProperty messageProp = type.getProperty("message");
Object event = type.createEvent();

messageProp.setValue(event, message);

eventSender.sendInsertEvent(event);
}

1.1.4 EPNアセンブリ・ファイル

サーバーにデプロイする前に、Oracle CEPアプリケーションおよびイベント処理ネットワーク(EPN)アセンブリ・ファイルをアセンブリします。このEPNアセンブリ・ファイルは、SpringフレームワークXML構成ファイルの拡張です。

spring-wlevs-v11_1_1_6.xsdスキーマ・ファイルでは、EPNアセンブリ・ファイルの構造について説明しています。

EPNアセンブリ・ファイルの構造は次のとおりです。beansという最上位ルート要素に、サブ要素のシーケンスが含まれています。個々のサブ要素には、Oracle CEPコンポーネントの構成データが含まれています。例:

<?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 CEP機能では、いくつかの構成をEPNアセンブリ・ファイルに指定し、いくつかの構成をコンポーネント構成ファイルに指定します。

詳細は、次を参照してください:

- 4.3項「EPNアセンブリ・ファイルの作成」

- 1.1.5項「コンポーネント構成ファイル」

- 1.1.6項「コンポーネントを連動させる方法」

- 付録B「EPNアセンブリ・スキーマspring-wlevs-v11_1_1_6.xsd」

1.1.5 コンポーネント構成ファイル

イベント処理ネットワークの各コンポーネント(アダプタ、プロセッサ、チャネル、またはイベントBean)には構成ファイルを関連付けることができますが、構成ファイルが必須なのはプロセッサのみです。イベント処理ネットワークのステージであるかどうかにかかわらず、キャッシング・システムも構成ファイルを使用します。Oracle CEPのコンポーネント構成ファイルは、標準のXMLスキーマを使用して定義された構造を持つXMLドキュメントです。アプリケーションのすべてのコンポーネントの構成を含む単一のファイルを作成するか、または各コンポーネントごとに個別のファイルを作成できます。これらのうち、管理しやすい方を選択します。

wlevs_application_config.xsdスキーマ・ファイルでは、コンポーネント構成ファイルの構造について説明しています。このXSDスキーマでは、次のスキーマがインポートされます。

- wlevs_base_config.xsd: アプリケーション構成ファイルとサーバー構成ファイルの間で共有される共通要素を定義します。

- wlevs_eventstore_config.xsd: イベント・ストア固有の要素を定義します。

- wlevs_diagnostic_config.xsd: 診断要素を定義します。

アプリケーション構成ファイルの構造は次のとおりです。configという最上位ルート要素に、サブ要素のシーケンスが含まれています。個々のサブ要素には、Oracle CEPコンポーネント(プロセッサ、チャネルまたはアダプタ)の構成データが含まれています。例:

<?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.1.5.1項「ConfigurationPropertyPlaceholderConfigurerクラスを使用したコンポーネントおよびサーバーの構成へのアクセス」

- 1.1.6項「コンポーネントを連動させる方法」

- 4.4項「コンポーネント構成ファイルの作成」

- 付録B「コンポーネント構成スキーマwlevs_application_config.xsd」

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

ConfigurationPropertyPlaceholderConfigurerクラスを使用すると、シンボリック・プレースホルダーでコンポーネント構成ファイルおよびサーバー構成ファイルの両方で既存の構成ファイル・プロパティを参照できます。そうすると、複数の場所で同じ値をハードコードするのではなく、1つの場所に値を定義して、その1つの定義を参照できます。

たとえば、例1-5に示すように要素が指定されたら、例1-6に示すように、netio要素port値を参照できます。

例1-5 netio要素

<netio>
<name>MyNetIO</name>
<port>9003</port>
</netio>

例1-6 netio要素ポート値へのアクセス

<property name="myprop" value="${MyNetIO.port}"/>

この機能を使用するには、例1-7に示すように、アプリケーション・バンドルのアプリケーション・コンテキスト構成ファイルにConfigurationPropertyPlaceholderConfigurer Beanを挿入します。

例1-7 ConfigurationPropertyPlaceholderConfigurerの追加

<bean class="com.bea.wlevs.spring.support.ConfigurationPropertyPlaceholderConfigurer"/>

詳細は、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスのcom.bea.wlevs.spring.support.ConfigurationPropertyPlaceholderConfigurerクラスを参照してください。

プロパティ・ファイルのアクセスの詳細は、4.7.3項「Oracle CEPプロジェクトにプロパティ・ファイルを追加する方法」を参照してください。

1.1.6 コンポーネントを連動させる方法

Oracle CEPアプリケーションは、共にアセンブルされてイベント処理ネットワーク(EPN)を形成するサービスで構成されています。

サーバーでは、Springが普及しており簡素であることから、Springフレームワークをアセンブリ・メカニズムとして使用しています。Oracle CEPではSpringフレームワークが拡張され、アプリケーションのアセンブル・プロセスがさらに簡素化されました。この手法によって、Oracle CEPアプリケーションは、既存のSpring Bean、および依存関係インジェクションメカニズムに基づいた他の軽量なプログラミング・フレームワークと簡単に統合できます。

依存関係インジェクションの一般的な手法では、XML構成ファイルを使用してアプリケーションの依存関係とアセンブリが宣言的に指定されます。サーバーにデプロイする前に、Oracle CEPアプリケーションをEPNアセンブリ・ファイルにアセンブリします。このEPNアセンブリ・ファイルは、SpringフレームワークXML構成ファイルの拡張です。

アプリケーションのアセンブリが完了したら、Oracle CEPにデプロイできるようパッケージ化する必要があります。この処理は簡単です。アプリケーションのデプロイメント単位はプレーンJARファイルであり、少なくとも次のアーティファクトが含まれている必要があります。

- ビジネス・ロジックPOJOのコンパイル済アプリケーションJavaコード。

- コンポーネント構成ファイル。各プロセッサには構成ファイルが必須ですが、アダプタとストリームに関しては、デフォルトの十分な構成があり、これらのコンポーネントをモニターしない場合は、構成ファイルは必要ではありません。

- EPNアセンブリ・ファイル。

- いくつかの追加のOSGiエントリを含むMANIFEST.MFファイル。

JARファイルへのアーティファクトのアセンブルが完了したら、着信データの受信を直ちに開始できるようOracle CEPにこのバンドルをデプロイします。

詳細は、第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」を参照してください。

1.1.7 EPNの拡張

Oracle CEPで提供されるコンポーネントに加えて、カスタム・アダプタ、イベントBeanおよびSpring Beanを作成してEPNを拡張できます。

また、Oracle Javaデータ・カートリッジおよびOracle空間でEPNを拡張して、Oracle CQL問合せにJavaおよびOracle空間操作を組み込めます。

WebサービスとしてOracle CEPアプリケーションを公開して、Oracle CEPアプリケーションでWebサービスを消費できます。

詳細は、第4部「Oracle CEPイベント処理ネットワークの拡張」を参照してください。

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

Oracle CEPアプリケーションを設計する場合、設計プロセスの初期段階に高可用性およびスケーラビリティを考慮するのがベスト・プラクティスです。

Oracle CEPでは、アプリケーションに、サーバーの障害からリカバリするために必要なサービス品質を宣言的に構成できる様々な高可用性オプションが提供されます。

Oracle CEPでは、増加したイベント率を格納するためにアプリケーションをスケールできる様々な機能も提供されます。

詳細は、次を参照してください:

- 第5部 「高可用性のためのアプリケーションの開発」

- 第6部 「スケーラビリティのためのアプリケーションの開発」

1.1.9 Oracle CEPアプリケーション・ライフサイクル

図1-2では、Oracle CEPアプリケーション・ライフサイクルの状態図を示します。この図では、状態名(STARTING、INITIALIZING、RUNNING、SUSPENDING、SUSPENDEDおよびFAILED)がApplicationRuntimeMBeanメソッドgetState戻り値に対応します。この状態は、Oracle CEP固有の状態であり、OSGiバンドル状態ではありません。

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

「図1-2 Oracle CEPアプリケーション・ライフサイクルの状態図」の説明

注意:

Oracle CEPサーバー・ライフサイクルの詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPサーバー・ライフサイクルに関する項を参照してください。

この項では、Oracle CEPサーバーにデプロイされたアプリケーションのライフサイクルと、com.bea.wlevs.ede.apiAPIコールバックのシーケンスについて説明します。ライフサイクルの説明は、ユーザーが実行するアクションに分類されます。このアクションは、次のとおりです。

- 1.1.9.1項「ユーザー・アクション: アプリケーションのインストール、またはアプリケーションがすでにデプロイされた状態でサーバーの起動」

- 1.1.9.2項「ユーザー・アクション: アプリケーションの一時停止」

- 1.1.9.3項「ユーザー・アクション: アプリケーションの再開」

- 1.1.9.4項「ユーザー・アクション: アプリケーションのアンインストール」

- 1.1.9.5項「ユーザー・アクション: アプリケーションの更新」

- 1.1.9.6項「ユーザー・アクション: ストリームおよびリレーション・ソースおよびシンクのメソッド呼び出し」

この情報は、アプリケーションでライフサイクルAPIを使用しやすいように、Oracle CEPがアプリケーションのライフサイクルをどのように管理するかを説明します。

これらのライフサイクルAPI (RunnableBeanおよびSuspendableBeanなど)の詳細に付いては、以下を参照してください。

- 1.1.10項「Oracle CEP API」

- 付録I「Oracle CEPメタデータ注釈リファレンス」

- Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンス

1.1.9.1ユーザー・アクション: アプリケーションのインストールまたはすでにデプロイされているアプリケーションとともにサーバーの起動

Oracle CEPでは、次のアクションが実行されます。

1. Oracle CEPでアプリケーションがOSGIバンドルとしてインストールされます。OSGIでインポートおよびエクスポートが解決され、サービスがパブリッシュされます。

2. Oracle CEPでBeanが作成されます(標準のSpring BeanおよびEPNアセンブリ・ファイルでOracle CEPタグに相当するBeanの両方)。各Beanに対し、Oracle CEPでは次の処理が行われます。

- Spring Beanのプロパティが設定されます。<wlevs:instance-property>値はアダプタおよびイベントBeanで設定されます。

- @Serviceまたは@ServiceReference注釈で指定されたサービスに適切な依存関係がインジェクションされます。

- 静的な構成プロパティに適切な依存関係が注入されます。

- InitializingBean.afterPropertiesSetメソッドが呼び出されます。

- 構成コールバック(@Prepare、@Activate)がSpring Beanおよびファクトリで作成されたステージで呼び出されます。
詳細は、1.4項「Oracle CEPリソース・アクセスの構成」を参照してください。

3. アプリケーションの現在の状態はINITIALIZINGです。

4. Oracle CEPでMBeansが登録されます。

5. Oracle CEPでは、すべてのActivatableBeansでActivatableBean.afterConfigurationActiveメソッドが呼び出されます。

6. Oracle CEPでは、すべてのResumableBeansでResumableBean.beforeResumeメソッドが呼び出されます。

7. RunnableBeanを実装する各Beanについて、Oracle CEPでスレッドでの実行が開始されます。

8. アプリケーションの現在の状態はRUNNINGです。

1.1.9.2ユーザー・アクション: アプリケーションの一時停止

Oracle CEPでは、次のアクションが実行されます。

1. Oracle CEPでは、すべてのSuspendableBeansでSuspendableBean.suspendメソッドが呼び出されます。

2. アプリケーションの現在の状態はSUSPENDEDです。

1.1.9.3ユーザー・アクション: アプリケーションの再開

Oracle CEPでは、次のアクションが実行されます。

1. Oracle CEPでは、すべてのResumableBeansでResumableBean.beforeResumeメソッドが呼び出されます

2. RunnableBeanを実装する各Beanについて、Oracle CEPでスレッドでの実行が開始されます。

3. アプリケーションの現在の状態はRUNNINGです。

1.1.9.4ユーザー・アクション: アプリケーションのアンインストール

Oracle CEPでは、次のアクションが実行されます。

1. Oracle CEPでは、すべてのSuspendableBeansでSuspendableBean.suspendメソッドが呼び出されます。

2. Oracle CEPでMBeansが登録解除されます。

3. Oracle CEPでは、すべてのDisposableBeansでDisposableBean.disposeメソッドが呼び出されます。

4. Oracle CEPでアプリケーション・バンドルがOSGIからアンインストールされます。

1.1.9.5 ユーザー・アクション: アプリケーションの更新

これは、最初にアプリケーションをアンインストールしてから再びインストールするのと同等です。

参照:

- 1.1.9.4項「ユーザー・アクション: アプリケーションのアンインストール」

- 1.1.9.1項「ユーザー・アクション: アプリケーションのインストール、またはアプリケーションがすでにデプロイされた状態でサーバーの起動」

1.1.9.6 ユーザー・アクション: ストリームおよびリレーション・ソースおよびシンクのメソッド呼び出し

ストリーム、リレーション・ソースまたはシンクでは、アプリケーション・ライフサイクルでこれらのフェーズが完了するまでコンポーネントはイベントを受信する準備ができない場合があるので、ライフサイクル・コールバックからメソッドを呼び出すべきではありません。

たとえば、afterConfigurationActiveまたはbeforeResumeなど、ライフサイクル・コールバックからStreamSenderメソッドのsendInsertEventは呼び出しません。

RunnableBeanを実装するBeanの実行メソッドから、ストリーム、リレーション・ソースまたはシンクでメソッドを呼び出すことができます。

詳細は、次を参照してください:

- 1.1.9.1項「ユーザー・アクション: アプリケーションのインストール、またはアプリケーションがすでにデプロイされた状態でサーバーの起動」

- 1.1.3項「EPNでのイベントの送信: ストリームおよびリレーション・ソースおよびシンク」

1.1.10 Oracle CEP API

Oracle CEPには、アダプタまたはイベントBeanの実装に使用されるさまざまなJava APIが用意されています。

この項では、アダプタおよびイベントBeanで最も一般的に使用されるcom.bea.wlevs.ede.apiパッケージ内のAPIについて説明しています。

- アダプタ: アダプタではこのインタフェースを実装する必要があります。

- AdapterFactory: アダプタ・ファクトリではこのインタフェースを実装する必要があります。

- コンポーネント・ライフサイクル・インタフェース—プログラミングするコンポーネントのライフサイクルを制御する必要がある場合は、コンポーネントで次の1つまたは複数のインタフェースを実装する必要があります。

- ActivatableBean: すべての動的な構成が設定され、イベント処理ネットワークがアクティブ化された後でコードを実行する場合に使用します。afterConfigurationActiveメソッドを実装します。

- DisposableBean: アプリケーションがアンデプロイされたときにリソースを解放する場合に使用します。コンポーネントのコードにdestroyメソッドを実装します。

- InitializingBean: Oracle CEPでコンポーネントのすべてのプロパティが設定された後でカスタムを初期化する必要がある場合に使用します。afterPropertiesSetメソッドを実装します。

- ResumableBean: コンポーネントの作業が再開される前に、リソースの取得や構成などのタスクを実行する場合に使用します。

- RunnableBean: コンポーネントをスレッドで実行する場合に使用します。
Springフレームワークでも同様のBeanライフサイクル・インタフェースが実装されますが、同等のSpringインタフェースを使用してもファクトリによって作成されたBeanを操作することはできず、一方でOracle CEPインタフェースではこの操作が可能です。

- SuspendableBean: イベント処理ネットワークが一時停止されたときにリソースを一時停止したり、イベントの処理を停止したりする場合に使用します。suspendメソッドを実装します。

また、追加ライフサイクル注釈の詳細は、付録I「Oracle CEPメタデータ注釈リファレンス」を参照してください。

- EventBuilder: プロパティに必要なsetterおよびgetterメソッドがJava表現によって公開されないイベントを作成するために使用します。必要なすべてのgetterおよびsetterメソッドがJavaBeanで表現されるイベント・タイプでは、EventBuilderを作成する必要はありません。

- EventBuilder.Factory: EventBuildersを作成するファクトリ。

- StreamSink: Oracle CEPストリームとしてイベントを受信するコンポーネントでは、このインタフェースを実行する必要があります。Oracle CEPストリームには、次の特性があります。

- 追加のみ。つまり、イベントはいつもストリームの終わりに追加されます。

- バインドなし。一般的に、これを処理する前にウィンドウを定義する必要があります。

- イベントには、非減少のタイムスタンプがあります。

インタフェースには、プログラマによって受信済のイベントを処理するコードが入れられるコールバック・メソッドonInsertEventがあります。メソッドは、com.bea.wlevs.ede.api.EventRejectedExceptionをスローして、例外が送信者に伝播されるようにします。その他のエラーは記録されてから削除されます。

- StreamSource: アダプタなど、Oracle CEPストリームをモデル化するイベントを送信するコンポーネントではこのインタフェースを実装する必要があります。インタフェースには、イベントを実際にネットワーク内の次のコンポーネントに送信するStreamSenderを設定するためのsetEventSenderメソッドが含まれています。

- RelationSink: Oracle CEPリレーションをモデル化するイベントを受信するコンポーネントではこのインタフェースを実行する必要があります。Oracle CEPリレーションには、次の特性があります。

- コンテントを挿入、削除または更新できるイベントをサポートします。

- いつも、インスタント・タイムと呼ばれます。

- イベントには、非減少のタイムスタンプがあります。

インタフェースには、プログラマによってイベントの削除および挿入を処理するコードが入れられるコールバック・メソッドonDeleteEventおよびonInsertEventがあります。onInsertMethodメソッドは、com.bea.wlevs.ede.api.EventRejectedExceptionをスローして、例外が送信者に伝播されるようにします。その他のエラーは記録されてから削除されます。

- RelationSource: アダプタなど、Oracle CEPリレーションをモデル化するイベントを送信するコンポーネントではこのインタフェースを実装する必要があります。インタフェースには、イベントを実際にネットワーク内の次のコンポーネントに送信するRelationSenderを設定するためのsetEventSenderメソッドが含まれています。

詳細は、次を参照してください:

- すべてのクラスおよびインタフェースの参照ドキュメントについては、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

- これらのAPIを使用するサンプルJavaコードについては、以下を参照してください。

- 第14章「カスタム・アダプタの構成」

- 第15章「カスタム・イベントBeanの構成」

- 第16章「カスタムSpring Beanの構成」

- 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のOracle CEPサンプルに関する項

- リソース・インジェクションを構成するためのデプロイメントXMLおよびOracle CEP注釈の使用方法については、1.4項「Oracle CEPリソース・アクセスの構成」

1.2 Oracle CEP IDE for Eclipse

Oracle CEPアプリケーションを開発するプログラマ向けに特化したIDEが用意されています。Oracle CEP IDE for Eclipseは、Oracle CEPアプリケーションの開発、デプロイ、およびデバッグ用に設計された、Eclipse IDEのプラグインのセットです。

Oracle CEP IDE for Eclipseの主な機能は次のとおりです。

- イベント駆動型アプリケーションの作成を直ちに開始するためのプロジェクト作成ウィザードおよびテンプレート。

- JavaやXMLファイルなどのOracle CEPアプリケーションに共通のソース・ファイル用の高度なエディタ。

- IDE内部からOracle CEPサーバー・インスタンスをシームレスに開始、停止およびデプロイするための統合化されたサーバー管理。

- 統合化されたデバッグ。

- イベント処理アプリケーション内を参照および移動できる、イベント処理ネットワーク(EPN)のビジュアルなデザイン・ビュー。

- Oracle CEP Visualizerの統合サポートであるため、IDE内にOracle CEP Visualizerを使用できます。

Oracle CEP IDEの使用は必須または前提条件ではありませんが、使用を検討されることをお薦めします。

IDEのインストールと使用手順の詳細は、第3章「Oracle CEP IDE for Eclipseの概要」を参照してください。

1.3 Oracle CEPアプリケーションの作成

Oracle CEPアプリケーションを作成するための、開始から終了までのお薦めの手順を次に示します。各種コンポーネントのプログラミングおよび構成は必ずしもこの順序で行う必要はありませんが、次の手順ではお薦めの通常の論理的な流れを示しています。

この手順ではIDEの使用を想定していますが、これは必須ではなく、任意の環境を選択できます。Oracle CEP開発者向けの環境は、1.2項「Oracle CEP IDE for Eclipse」を参照してください。

Oracle CEPアプリケーションを作成するには、次の手順を事項します。

1. 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項の説明に従って、環境を設定します。

2. Oracle CEP IDE for Eclipseを使用して、Oracle CEPプロジェクトを作成します。
詳細は、第4章「Oracle CEP IDE for Eclipseプロジェクト」を参照してください。

3. イベント処理ネットワーク(EPN)を設計します。
Oracle CEP IDE for EclipseおよびEPNエディタを使用して、EPNアセンブリ・ファイルを作成してアプリケーションを構成するコンポーネントの完全なリストおよびそれらが互いに接続する方法を追加し、アプリケーションで使用されるイベント・タイプを登録します。

この手順では、特に構成しコード化する必要があるコンポーネントを決定するアプリケーションの設計、およびすべてのコンポーネント(EPNアセンブリ・ファイル)を指定する実XMLファイルおよびコンポーネント構成(コンポーネント構成ファイル)を指定するXMLファイルの作成の両方が組み合されています。アプリケーションを実行するたびにこのアプリケーションを更新します。しかし、アプリケーションへのハイレベルな視点を持つためにこの手順で起動することをお薦めします。

詳細は、次を参照してください:

- 第6章「Oracle CEP IDE for Eclipseおよびイベント処理ネットワーク」

- 4.3項「EPNアセンブリ・ファイルの作成」

- 4.4項「コンポーネント構成ファイルの構成」

4. アプリケーションで使用されるイベント・タイプを設計します。独自のJavaBeanを作成する場合は、Javaファイルのプログラミングを行います。
第2章「Oracle CEPのイベント型の作成」を参照してください。

5. イベント処理ネットワークの着信、中間、発信コンポーネントとして動作するアダプタまたはイベントBeanをプログラミングし、必要に応じて構成します。独自のアダプタまたはイベントBeanを作成するか、またはOracle CEPで提供されるアダプタを使用できます。詳細は、以下を参照してください。

- 1.1.10項「Oracle CEP API」

- 1.4項「Oracle CEPリソース・アクセスの構成」

- 第7章「JMSアダプタの構成」

- 第8章「HTTPパブリッシュ・サブスクライブ・サーバー・アダプタの構成」

- 第14章「カスタム・アダプタの構成」

- 第15章「カスタム・イベントBeanの構成」

6. コンポーネント構成XMLファイルを作成して、プロセッサを構成します。この手順の最も重要な部分は、各プロセッサに関連付けられている初期ルールの設計および宣言です。
参照:

- 第10章「Oracle CQLプロセッサの構成」

- 第11章「EPLプロセッサの構成」

7. アップストリーム・チャネルからイベントを選択して、ダウンストリーム・チャネルにイベントを出力するためにプロセッサによって使用されるルールを設計します。
参照:

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』

- 『Oracle Fusion Middleware Oracle Complex Event Processing EPL言語リファレンス』

注意:

イベント処理言語(EPL)は、Oracle CEP 11gリリース1 (11.1.1)ではOracle CQLによって置き換えられます。Oracle CEPは、EPLとの下位互換性をサポートします。

8. 必要に応じて、構成XMLファイルを作成して、アダプタ、プロセッサ、およびビジネス・ロジックPOJOの間を流れるデータを処理するチャネルを構成します。
第9章「チャネルの構成」を参照してください。

9. イベントをキャッシュにパブリッシュしたり、キャッシュのイベントを使用したりすることで、イベントの可用性を高め、アプリケーションのパフォーマンスを向上するために、キャッシング・システムを必要に応じて構成します。
第12章「キャッシュの構成」を参照してください。

10. オプションで、アプリケーションからOracle CEPサーバー・ログにログ・メッセージを書き込むために、Oracle CEPサーバー・ログ・サブシステムを使用します。

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
...
Log LOG=LogFactory.getLog("LogName");
...
LOG.debug("Some debug information");
...

Oracle CEP Visualizerを使用すると、アプリケーションをデプロイして、アプリケーションにログ・レベルを構成して、Oracle CEPサーバー・コンソールを表示できます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPのロギングおよびデバッグの構成に関する項

- 24.4項「ログ・メッセージ・カタログの管理」

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のコンポーネント・ロギングの構成方法に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のコンソール出力の表示方法に関する項

パッケージやデプロイなど、アプリケーションのプログラミングが完了した後に実行する必要のある手順については、1.5項「次のステップ」を参照してください。

1.4 Oracle CEPリソース・アクセスの構成

Oracle CEP、標準Java注釈およびデプロイメントXMLを使用して、Oracle CEPアプリケーション・コンポーネントにリソース(データ・ソース、永続管理者など)をインジェクトするために、Oracle CEP Springコンテナを構成できます。

一般的に、コンポーネント初期化中に、Springコンテナでリソースがインジェクトされます。しかし、これによって、ランタイム時にリソースがインジェクトおよび再インジェクトされます。また、ランタイム時に、JNDIルックアップがサポートされます。

Oracle CEPでは、次のタイプのリソース・アクセスがサポートされます。

- 1.4.1項「静的リソース・インジェクション」

- 1.4.2項「動的リソース・インジェクション」

- 1.4.3項「JNDIによる動的リソース参照」

リソース名解決の詳細は、1.4.4項「リソース名解決について」を参照してください。

すべてのOracle CEP注釈の詳細は、付録I「Oracle CEPメタデータ注釈リファレンス」を参照してください。

次の項では、例1-8に示す例のリソースを考慮します。これは、Oracle CEPサーバーconfig.xmlファイルに指定するStockDSと呼ばれるデータ・ソース・リソースです。

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

<config ...>
<data-source>
<name>StockDs</name>
...
<driver-params>
<url>jdbc:derby:</url>
...
<driver-params>
</data-source>
...
</config>

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

静的リソース・インジェクションは、コンポーネント・ライフサイクルの初期化フェーズ中にリソースのインジェクションを参照します。一度インジェクトされると、コンポーネントがアクティブまたは実行中の間、リソースは固定または静的になります。

次を使用して、静的リソース・インジェクションを構成できます。

- 1.4.1.1項「静的リソース名」

- 1.4.1.2項「動的リソース名」

1.4.1.1 静的リソース名

静的リソース名を使用して静的リソース・インジェクションを構成する場合、@Resource注釈またはOracle CEPアセンブリXMLファイルに使用されるリソース名は、定義されたリソース名と完全一致する必要があります。リソース名は静的であるため、再コンパイルしないと変更できません。

設計のときに静的リソース名を使用して静的リソース・インジェクションを構成するには、例1-9に示すように、標準のjavax.annotation.Resource注釈を使用します。

設計タイムの構成をデプロイ・タイムにオーバーライドするには、例1-10に示すように、Oracle CEPアセンブリ・ファイルXMLを使用します。

例1-9および例1-10では、例1-8に示すように、リソース名StockDsは、Oracle CEPサーバーconfig.xmlファイルのデータ・ソース名と正確に一致する必要があります。

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

import javax.annotation.Resource;

public class SimpleBean implements EventBean {
...
@Resource (name="StockDs")
public void setDataSource (DataSource dataSource){
this.dataSource = dataSource;
}
}

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

< wlevs:event-bean id="simpleBean" class="...SimpleBean"/>
<wlevs:resource property="dataSource" name="StockDs"/>
</wlevs:event-bean>

EventBeanセット・メソッド名がリソース名と一致する場合、例1-11に示すように、@Resource注釈name属性は必要ではありません。また、この場合、例1-12に示すように、wlevs:resource要素name属性は必要ではありません。

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

import javax.annotation.Resource;

public class SimpleBean implements EventBean {
...
@Resource ()
public void setStockDs (DataSource dataSource){
this.dataSource = dataSource;
}
}

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

< wlevs:event-bean id="simpleBean" class="...SimpleBean"/>
<wlevs:resource property="dataSource"/>
</wlevs:event-bean>

1.4.1.2 動的リソース名

動的リソース名は、アプリケーションの動的または外部構成の一部として指定されます。動的リソース名を使用することによって、デプロイヤまたは管理者は、アプリケーション開発者がアプリケーション・コードまたはSpringアプリケーション・コンテキストを変更する必要なくリソース名を変更できます。

アダプタまたはPOJOなどのコンポーネントに動的リソース名を追加するには、例1-13に示すように、まず、リソース名を含むコンポーネントのためにカスタム構成を指定する必要があります。

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

<simple-bean>
<name>SimpleBean</name>
<trade-datasource>StockDs</trade-datasource>
</simple-bean>

設計のときに動的リソース名を使用して静的リソース・インジェクションを構成するには、例1-14に示すように、標準のjavax.annotation.Resource注釈を使用します。

設計タイムの構成をデプロイ・タイムにオーバーライドするには、例1-15に示すように、Oracle CEPアセンブリ・ファイルXMLを使用します。

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

import javax.annotation.Resource;

public class SimpleBean implements EventBean {
...
@Resource (name="trade-datasource")
public void setDataSource (DataSource dataSource){
this.dataSource = dataSource;
}
}

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

< wlevs:event-bean id="simpleBean" class="...SimpleBean"/>
<wlevs:resource property="dataSource" name="trade-datasource"/>
</wlevs:event-bean>

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

動的リソース・インジェクションは、Springコンテナ・メソッド・インジェクションを使用して変更した動的構成に対して、コンポーネントがアクティブである間、動的リソースのインジェクションを参照します。

設計のときに動的リソース・インジェクションを構成するには、例1-16に示すように、標準のjavax.annotation.Resource注釈を使用します。

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

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 JNDIによる動的リソース参照

Oracle CEPでは、例1-17に示すように、リソースを動的に参照するためにJNDIの使用がサポートされます。

例1-17 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-17では、例1-8に示すように、JNDI名StockDsは、Oracle CEPサーバーconfig.xmlファイルのデータ・ソース名と正確に一致する必要があります。

注意:

JNDIを使用するために、Oracle CEPサーバーを起動するときにセキュリティを無効にする必要があります。この理由から、JNDIの使用はお薦めしません。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPのセキュリティの構成に関する項を参照してください。

1.4.4 リソース名解決について

Oracle CEPサーバーでは、表1-1にリストされたネーミング・スコープを調べて、リソース名が解決されます。

表1-1 リソース名解決

ネーミング・スコープ

目次

解決動作

コンポーネント

コンポーネントのカスタム構成のプロパティ名

マッピング

アプリケーション

アプリケーション構成ファイルの構成要素名

マッチング

サーバー

サーバー構成ファイルの構成要素名

マッチング

JNDI

サーバーのJNDIレジストリに登録された名前

マッチング

各ネーミング・スコープには一意の名前のセットが含まれます。名前解決動作は、ネーミング・スコープ固有の動作です。一部のネーミング・スコープでは、簡単な一致によって名前を解決します。他のスコープでは、新しい名前を参照するために使用する名前をマップすることで名前を解決します。一度名前がマップされると、参照は現在のスコープで再帰的に続行します。

1.5 次のステップ

アプリケーションのすべてのコンポーネントのプログラミングと、各コンポーネントの構成XMLファイルの作成が完了した後は、次の手順を実行します。

- すべてのコンポーネントをデプロイ可能なOSGiバンドルにアセンブルします。この手順には、バンドルを記述するMANIFEST.MFファイルの作成も含まれています。
24.2項「Oracle CEPアプリケーションのアセンブル」を参照してください。

- Oracle CEPを起動します。
参照:

- 5.3.1項「ローカルOracle CEPサーバーの起動方法」

- 5.3.2項「ローカルOracle CEPサーバーの停止方法」

- ロギング、デバッグ、およびその他のサービスを有効にするため、ドメイン内のサーバーを必要に応じて構成します。
参照:

- 5.2項「Oracle CEPサーバーの作成」

- 5.3項「Oracle CEPサーバーの管理」

- 24.4項「ログ・メッセージ・カタログの管理」

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEP構成に関する項

- アプリケーションをOracle CEPにデプロイします。
24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

- オプションで、Oracle CEPアプリケーションをテストして調整するには、Oracle CEPロード・ジェネレータおよびOracle CEP Visualizerを使用します。
Oracle CEPロード・ジェネレータは、特にそのアプリケーションのルールなど、アプリケーションのテストに使用できるテスト・ツールです。このテスト・ツールではアプリケーションのアダプタ・コンポーネントをテスト目的で一時的に置換できます。詳細は、第25章「ロード・ジェネレータおよびcsvgenアダプタによるアプリケーションのテスト」を参照してください。

Oracle CEP Visualizerは、Oracle CEPアプリケーションを管理して調整できる高度な診断およびメンテナンス機能を持つランタイム管理コンソールです。詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』を参照してください。

また、5.4項「Oracle CEPサーバー上に実行されるOracle CEPアプリケーションのデバッグ」も参照してください。

2 Oracle CEPイベントの概要

この章では、イベント・タイプの開発、Oracle Complex Event Processing (Oracle CEP)イベント処理ネットワークの不可欠な部分について説明します。イベント・タイプは、JavaBean、タプル、JavaクラスおよびJava Mapインスタンスとして開発できます。

- 2.1項「Oracle CEPイベント・タイプ」

- 2.2項「JavaBeanとしてOracle CEPイベント・タイプの作成」

- 2.3項「タプルとしてOracle CEPイベント・タイプの作成」

- 2.4項「JavaクラスとしてOracle CEPイベント・タイプの作成」

- 2.5項「java.util.MapとしてOracle CEPイベント・タイプの作成」

- 2.6項「イベント・タイプ・ビルダー・ファクトリの使用」

- 2.7項「イベント・タイプ・リポジトリへのアクセス」

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

2.1 Oracle CEPイベント・タイプ

イベント・タイプは、Oracle CEPアプリケーションで処理されるイベントのプロパティを定義します。アダプタはJavaメッセージ・システム(JMS)または金融マーケット・データ・フィードなどの様々なイベント・ソースからの着信イベントを受信します。プロセッサが処理できるよう、これらのイベントにOracle CEPイベント・タイプを定義する必要があります。このイベント・タイプはアダプタおよびPOJO Javaコード、およびプロセッサと関連付けられるOracle CQLおよびEPLルールで使用されます。

イベントは、各プロパティがイベント・ソースからのデータ項目を表すJavaBeanまたはJavaクラス・インスタンスです。Oracle CEPでは、次のイベント・タイプ実施がサポートされます。

- JavaBean: Java Beanクラスに基づくイベント・タイプ。
詳細は、2.2項「JavaBeanとしてOracle CEPイベント・タイプの作成」を参照してください。

- タプル: EPNアセンブリ・ファイルで宣言的に作成して、登録するイベント・タイプ。
詳細は、2.3項「タプルとしてOracle CEPイベント・タイプの作成」を参照してください。

- Javaクラス: Javaクラスに基づくイベント・タイプ。
詳細は、次を参照してください:

- 2.4項「JavaクラスとしてOracle CEPイベント・タイプの作成」

- 2.6項「イベント・タイプ・ビルダー・ファクトリの使用」

- java.util.Map: java.util.Mapのインスタンスに基づくイベント・タイプ。
詳細は、2.5項「java.util.MapとしてOracle CEPイベント・タイプの作成」を参照してください。

JavaBean(またはJavaクラスおよびファクトリ)アプローチを使用してイベントを定義することをお薦めします。そうすると、アプリケーションの一部として、イベント・タイプをさらに柔軟に処理でき、既存のシステムとの統合を簡略化できます。

かわりに、wlevs:propertyタグを使用してEPNアセンブリ・ファイルにイベント・タイプのプロパティを宣言的に指定できます。この場合、Oracle CEPでは、java.util.Mapまたはタプルが使用されます。タプルはデフォルトであり、Oracle CQLタプルと同様です。これによって、ユーザーに実質的に最適化実行が提供されます。しかし、ユーザーは、必ずEventTypeRepository APIを使用してこの値を設定して、取得する必要があります。迅速なプロトタイプの場合、またはアプリケーション開発者がアプリケーション・ロジックの一部としてJavaBeanイベントを処理する必要がない場合、または一部のレガシー・システムに統合するためにこのアプローチが使用されます。

詳細は、次を参照してください:

- 2.1.1項「イベント・タイプのインスタンス化および不変性」

- 2.1.2項「イベント・タイプおよびシリアライズ」

- 2.1.3項「イベント・タイプ・データ型」

- 2.1.4項「Oracle CEPイベント・タイプの作成」

- 2.7項「イベント・タイプ・リポジトリへのアクセス」

2.1.1 イベント・タイプのインスタンス化および不変性

Oracle CEPでは、イベントは概念的に不変です。一度イベントがインスタンス化されると(作成され初期化されると)、Oracle CEPサーバーで変更されません。また、アプリケーション開発者もそれを変更できません。

Oracle CEPでは、イベントはアプリケーション開発者またはOracle CEPサーバーによってインスタンス化できます。例:

- アプリケーション開発者は、インバウンドSpring-bean、イベントBeanまたはアダプタでイベントをインスタンス化できます。

- CQLプロセッサでダウンストリーム・コンポーネントにイベントを出力するときに、Oracle CEPサーバーからイベントをインスタンス化できます。

Oracle CEPサーバーは次の手順でJavaBeanイベント・タイプにイベントをインスタンス化します。

- Javaクラスのために空の引数パブリック・コンストラクタが起動されます。

- 各イベント・プロパティのためにJavaBeanの命名規則に従って、パブリックのsetterメソッドが起動されます。

イベントが概念的に不変であっても、この場合は、setterメソッドを使用できる必要があります。Oracle CEPサーバーによって、イベント初期化中にこのsetterメソッドが一度のみ起動されます。

アプリケーション開発者がJavaBeanイベントのみを作成している場合、Javaクラスを不変にすると、パフォーマンスが向上します。まったく不変なBeanは、読取り専用(getterのみが提供される)であり、publicコンストラクタとともに、不変性を満たす引数を持っています。イベントがCQLプロセッサから出力されて場合は不変性は不可能で、イベントが入力としてのみ使用される場合、可能です。

Oracle CEPサーバーは次の手順でJavaクラス・イベント・タイプにイベントをインスタンス化します。

- ファクトリのcreateBuilderメソッドを呼び出して、イベント・タイプと関連付けられたcom.bea.wlevs.ede.api.EventBuilder.Factoryのインスタンスが取得されます。

- createEventメソッドを呼び出して、イベントがインスタンス化されます。

イベントが概念的に不変であっても、この場合は、setterメソッドを使用できる必要があることにもう一度注意してください。ファクトリでイベントが初期化されているとき、Oracle CEPサーバーによって、このsetterメソッドが一度のみ起動されます。

2.1.2 イベント・タイプおよびシリアライズ

通常、Oracle CEPイベントはシリアライズ可能である必要はありません。

ただし、Oracle Coherenceでイベントをキャッシュする場合は、イベントをシリアライズ可能にする必要があります。

2.1.3 イベント・タイプ・データ型

イベント・タイプを作成する場合、次のデータ型制限に注意してください。

- 2.1.3.1項「JavaBeanまたはJavaクラスとして指定されたイベント・タイプ」

- 2.1.3.2項「java.util.Mapとして指定されたイベント・タイプ」

- 2.1.3.3項「タプルとして指定されたイベント・タイプ」

- 2.1.3.4項「データベース表ソースとともに使用するイベント・タイプ」

- 2.1.3.5項「csvgenアダプタとともに使用するイベント・タイプ」

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のデータ型に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing EPL言語リファレンス』のEPL言語の概要に関する項

2.1.3.1 JavaBeanまたはJavaクラスとして指定されたイベント・タイプ

JavaBeanまたはJavaクラスとしてイベント・タイプを定義する場合、いずれかのJavaタイプをそのプロパティに使用できます。

Oracle Javaデータ・カートリッジを使用して、JavaBeanまたはJavaクラス・イベント・タイプを別のイベント・タイプと結合することもできます。例2-1は、アドレスプロパティをJavaクラス・イベント・タイプAddressとして定義するタプル・イベント・タイプStudentを表しています。

例2-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>

詳細については、以下を参照してください。

- 2.2項「JavaBeanとしてOracle CEPイベント・タイプの作成」

- 2.4.1項「JavaクラスとしてOracle CEPイベント・タイプを手動で作成する方法」

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

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のOracle Javaデータ・カートリッジに関する項

2.1.3.2 java.util.Mapとして指定されたイベント・タイプ

イベント・タイプのプロパティを、java.util.MapとしてEPNアセンブリ・ファイルで宣言的に指定する場合、いずれかのJavaタイプをそのプロパティに使用できます。ただし、次のいずれかとしてイベント・プロパティのタイプを指定します。

- Class.forName()と同じルールに準拠し、アプリケーションのクラス・ローダーで使用できる必要がするJavaクラスの完全修飾名。

- Javaプリミティブ(たとえば、intまたはfloat)。

イベント・タイプ名に文字[]を追加して配列を指定できます。

例2-2には、これらのタイプの使用方法を示します。

例2-2 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>

詳細は、2.5.1項「java.util.MapとしてOracle CEPイベント・タイプを作成する方法」を参照してください。

2.1.3.3 タプルとして指定されたイベント・タイプ

EPNアセンブリ・ファイルにタプルとしてイベント・タイプのプロパティを宣言的に指定する場合は、任意のCQLプリミティブ型またはJava型を使用できます。

例2-3には、様々なタイプの使用方法を示します。

例2-3 タプル・イベント・タイプ・プロパティ用の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>

詳細は、2.3項「タプルとしてOracle CEPイベント・タイプの作成」を参照してください。

2.1.3.4 データベース表ソースとともに使用するイベント・タイプ

リレーショナル・データベース表で使用するイベント・タイプ(JavaBean、Javaクラス、java.util.Mapまたはタプルのいずれか)のプロパティを指定する場合、次の追加JDBCタイプの制限に従う必要があります。

- 表10-2 「EPNアセンブリ・ファイル・イベント・タイプの要素プロパティ属性」

- 表10-3 「SQLの列タイプおよび対応するOracle CEPタイプ」

詳細は、次を参照してください:

- 10.3項「Oracle CQLプロセッサ表ソースの構成」

- 2.1.3項「イベント・タイプ・データ型」

2.1.3.5 csvgenアダプタとともに使用するイベント・タイプ

csvgenアダプタで使用するイベント・タイプ(JavaBean、Javaクラス、java.util.Mapまたはタプルのいずれか)のプロパティを指定する場合、表2-1で説明されるデータ型のみを使用できます。

表2-1 csvgenアダプタ・タイプ

タイプ

用途

char

単一または複数の文字値。char値およびjava.lang.String値の両方に使用します。

オプションで、例2-3でプロパティ名idで指定しているように、char値の最大長を指定するには、length属性を使用できます。デフォルトの長さは256文字です。256文字を超える必要がある場合、適当な長さを指定する必要があります。

int

java.lang.Integerで指定される範囲内の数値

long

java.lang.Longで指定される範囲内の数値。

double

java.lang.Doubleで指定される範囲内の数値

詳細は、次を参照してください:

- 25.4項「データ・フィード・ファイルの作成」

- 2.1.3.1項「JavaBeanまたはJavaクラスとして指定されたイベント・タイプ」

- 2.1.3.3項「タプルとして指定されたイベント・タイプ」

2.1.4 Oracle CEPイベント・タイプの作成

イベント・タイプは、Oracle CEPアプリケーションで処理されるイベントのプロパティを定義します。アダプタはJMSや金融マーケット・データ・フィードなどの様々なイベント・ソースからの着信イベントを受信します。プロセッサが処理を開始できるよう、これらのイベントをイベント・タイプで定義する必要があります。このイベント・タイプが、アダプタおよびPOJO Javaコードとともにプロセッサと関連付けられるOracle CQLおよびEPLルールに使用されます。

この項では次について説明します:

- 2.2項「JavaBeanとしてOracle CEPイベント・タイプの作成」

- 2.3項「タプルとしてOracle CEPイベント・タイプの作成」

- 2.4項「JavaクラスとしてOracle CEPイベント・タイプの作成」

- 2.5項「java.util.MapとしてOracle CEPイベント・タイプの作成」

- 2.6項「イベント・タイプ・ビルダー・ファクトリの使用」

- 2.7項「イベント・タイプ・リポジトリへのアクセス」

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

詳細は、2.1項「Oracle CEPイベント・タイプ」を参照してください。

2.2 JavaBeanとしてOracle CEPイベント・タイプの作成

JavaBeanとしてOracle CEPイベント・タイプを作成して、登録できます。これは優先アプローチです。

標準のJavaBeansプログラミング・ガイドラインに準拠します。追加詳細は、http://java.sun.com/docs/books/tutorial/javabeans/のJavaBeansチュートリアルを参照してください。

可能な場合は、パフォーマンスを向上するには、イベント・タイプJavaBeansを不変にすることをお薦めします。詳細は、2.1.1項「イベント・タイプのインスタンス化および不変性」を参照してください。

イベントを設計する場合、設計を2.1.3.1項「JavaBeanまたはJavaクラスとして指定されたイベント・タイプ」で説明されたイベント・データ型に制限する必要があります。

このトピックでは、次の内容について説明します。

- 2.2.2項「イベント・タイプ・リポジトリ・エディタを使用して、JavaBeanとしてOracle CEPイベント・タイプを作成する方法」

- 2.2.3項「JavaBeanとしてOracle CEPイベント・タイプを手動で作成する方法」

2.2.1 イベント・タイプ・プロパティ値へのアクセス

Javaクラスとして作成されたイベント・タイプが存在する場合、Oracle CQLコードでは、標準のJavaBeanスタイル・プロパティ・アクセスを使用するか通常のJavaクラスとしてプロパティ値を取得できます。

次の構成スニペットの抜粋では、JavaBeanクラスであるStudentTypeイベント・タイプを宣言しています。

<event-type-repository>
<event-type name="StudentType">
<class-name>school.Student</class-name>
</event-type>
</event-type-repository>

school.Studentクラスは、それ自体が Address JavaBeanクラスであるアドレス・プロパティを持つJavaBeanです。次の問合せは、アドレス・プロパティの基礎となるAddressオブジェクトの値にアクセスする方法を示します。この問合せでは、郵便番号が"97"で始まる生徒のアドレスを選択します。

<query id="studentAddresses">
SELECT
student.address
FROM
StudentType as student
WHERE
student.address.postalCode LIKE '^97'
</query>

2.2.1.1 制限事項

Oracle CQLでは、GROUP BY、PARTITION BYおよびORDER BYにある式をサポートしていません。その結果、これらはJavaプロパティをサポートしておらず、失敗します。これらの場合は、かわりにビューを使用します。

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

この手順では、Oracle CEP IDE for Eclipseイベント・タイプ・リポジトリ・エディタを使用して、Oracle CEPイベント・タイプをJavaBeanとして作成して登録する方法を説明します。Oracle CEP IDE for Eclipseの詳細は、例3-0「Oracle CEP IDE for Eclipseの概要」を参照してください。

または、JavaBeanとしてイベント・タイプを手動で作成して登録することもできます(2.2.3項「JavaBeanとしてOracle CEPイベント・タイプを手動で作成する方法」を参照)。

イベント・タイプ・リポジトリ・エディタを使用してJava BeanとしてOracle CEPイベント・タイプを作成するには、次の手順を実行します。

1. イベント・タイプを表すためにJavaBeanクラスを作成します。
標準のJavaBeansプログラミング・ガイドラインに準拠します。追加詳細は、http://java.sun.com/docs/books/tutorial/javabeans/のJavaBeansチュートリアルを参照してください。

可能な場合は、パフォーマンスを向上するには、イベント・タイプJavaBeansを不変にすることをお薦めします。詳細は、2.1.1項「イベント・タイプのインスタンス化および不変性」を参照してください。

イベントを設計する場合、設計を2.1.3.1項「JavaBeanまたはJavaクラスとして指定されたイベント・タイプ」で説明されたイベント・データ型に制限する必要があります。

例2-5では、com.bea.wlevs.example.algotrading.event.MarketEventクラスで実施されたMarketEventを表します。

例2-4 MarketEventクラス

package com.bea.wlevs.example.algotrading.event;

import java.util.Date;

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(final Long timestamp, final String symbol,
final Double price, final Long volume, final Long latencyTimestamp) {
this.timestamp = timestamp;
this.symbol = symbol;
this.price = price;
this.volume = volume;
this.latencyTimestamp = latencyTimestamp;
}

public Double getPrice() {
return price;
}

public String getSymbol() {
return symbol;
}

public Long getTimestamp() {
return timestamp;
}

public Long getLatencyTimestamp() {
return latencyTimestamp;
}

public Long getVolume() {
return volume;
}

}

2. イベント・タイプを表すJavaBeanをコンパイルします。

3. Oracle CEP IDE for EclipseのEPNを開きます。
図2-1に表示されているように、EPNエディタが開きます。

図2-1 EPNエディタ

「図2-1 EPNエディタ」の説明

詳細は、 6.1項「EPNエディタを開く」を参照してください。

4. 「イベント・タイプ」タブをクリックします。
図2-2に示すような「イベント・タイプ」タブが表示されます。

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

「図2-2 イベント・タイプ・リポジトリ・エディタ」の説明

5. 「イベント・タイプの追加」(緑のプラス記号)をクリックします。
図2-3に示すように、デフォルト名newEventを持つ新しいイベントが「イベント・タイプの定義」リストに追加されます。

図2-3 イベント・タイプ・リポジトリ・エディタ - JavaBeanイベント

「図2-3 イベント・タイプ・リポジトリ・エディタ - JavaBeanイベント」の説明

6. 「イベント・タイプの定義」リストで、newEventを選択します。
このイベントのプロパティは、図2-3に示すように、「イベント・タイプの詳細」領域に表示されます。

7. このイベントの名前を「タイプ名」フィールドに入力します。

8. 「Java Beanで定義されたプロパティ」をクリックします。

9. JavaBeanクラスの完全修飾クラス名を「Class クラス」フィールドに入力します。
たとえば、com.bea.wlevs.example.algotrading.event.MarketEventです。

10. Eclipseツールバーの「保存」ボタンをクリックします(またはCTRL-Sを押します)。
これで、イベントがイベント・タイプ・リポジトリに表示されます。

イベント・タイプ・リポジトリ・エディタを使用して、次のことができます。

1. EPNアセンブリ・ファイルの対応するイベント・タイプ定義を表示するには、「イベント・タイプの定義」領域のイベント・タイプをダブルクリックします。

2. イベントを削除するには、「イベント・タイプの定義」領域でイベント・タイプを選択し、「イベント・タイプの削除」 (赤いx)をクリックします。

11. イベント・タイプを使用します。

- アプリケーションのビジネス・ロジックPOJOおよびアダプタのJavaコードの標準のJavaBeansとしてイベント・タイプを参照します。

public void onEvent(List newEvents)
throws RejectEventException {
for (Object event : newEvents) {
MarketEvent marketEvent = (MarketEvent) event;
System.out.println("Price: " + marketEvent.getPrice());
}
}

- EPLルールおよびOracle CQLからイベント・タイプにアクセスします。
次のOracle CQLルールでは、SELECT文でMarketEventを参照するかを表します。

<query id="helloworldRule">
<![CDATA[ select MarketEvent.price from marketEventChannel [Now] ]]>
</query>

2.2.3 JavaBeanとしてOracle CEPイベント・タイプを手動で作成する方法

この手順では、JavaBeanとしてOracle CEPイベント・タイプを手動で作成して登録する方法について説明しています。

または、Oracle CEP IDE for Eclipseイベント・タイプ・リポジトリ・エディタを使用して、JavaBeanとしてイベント・タイプを作成して登録することもできます(2.2.2項「イベント・タイプ・リポジトリ・エディタを使用して、JavaBeanとしてOracle CEPイベント・タイプを作成する方法」を参照)。

Java BeanとしてOracle CEPイベント・タイプを手動で作成するには:

1. イベント・タイプを表すためにJavaBeanクラスを作成します。
標準のJavaBeansプログラミング・ガイドラインに準拠します。追加詳細は、http://java.sun.com/docs/books/tutorial/javabeans/のJavaBeansチュートリアルを参照してください。

可能な場合は、パフォーマンスを向上するには、イベント・タイプJavaBeansを不変にすることをお薦めします。詳細は、2.1.1項「イベント・タイプのインスタンス化および不変性」を参照してください。

イベントを設計する場合、設計を2.1.3.1項「JavaBeanまたはJavaクラスとして指定されたイベント・タイプ」で説明されたイベント・データ型に制限する必要があります。

例2-5では、com.bea.wlevs.example.algotrading.event.MarketEventクラスで実施されたMarketEventを表します。

例2-5 MarketEventクラス

package com.bea.wlevs.example.algotrading.event;

import java.util.Date;

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(final Long timestamp, final String symbol,
final Double price, final Long volume, final Long latencyTimestamp) {
this.timestamp = timestamp;
this.symbol = symbol;
this.price = price;
this.volume = volume;
this.latencyTimestamp = latencyTimestamp;
}

public Double getPrice() {
return price;
}

public String getSymbol() {
return symbol;
}

public Long getTimestamp() {
return timestamp;
}

public Long getLatencyTimestamp() {
return latencyTimestamp;
}

public Long getVolume() {
return volume;
}

}

2. イベント・タイプを表すJavaBeanをコンパイルします。

3. Oracle CEPイベント・タイプ・リポジトリにJavaBeanイベント・タイプを登録します。

1. 宣言的に登録するには、例2-6に示すように、wlevs:event-type-repository要素wlevs:event-type子要素を使用して、EPNアセンブリ・ファイルを編集します。

例2-6 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. プログラムとして登録するには、例2-7に示すように、EventTypeRepositoryクラスを使用します。

例2-7 プログラムとしてイベントの登録

EventTypeRepository rep = getEventTypeRepository();
rep.registerEventType(
"MarketEvent",
com.bea.wlevs.example.algotrading.event.MarketEvent.getClass()
);

詳細は、2.7項「イベント・タイプ・リポジトリにアクセス」を参照してください。

4. イベント・タイプを使用します。

- アプリケーションのビジネス・ロジックPOJOおよびアダプタのJavaコードの標準のJavaBeansとしてイベント・タイプを参照します。

public void onEvent(List newEvents)
throws RejectEventException {
for (Object event : newEvents) {
MarketEvent marketEvent = (MarketEvent) event;
System.out.println("Price: " + marketEvent.getPrice());
}
}

- EPLルールおよびOracle CQLからイベント・タイプにアクセスします。
次のOracle CQLルールでは、SELECT文でMarketEventを参照するかを表します。

<query id="helloworldRule">
<![CDATA[ select MarketEvent.price from marketEventChannel [Now] ]]>
</query>

2.3 タプルとしてOracle CEPイベント・タイプの作成

タプルとしてOracle CEPイベント・タイプを作成して、登録できます。

イベントを設計する場合、設計を2.1.3.3項「タプルとして指定されたイベント・タイプ」で説明されたイベント・データ型に制限する必要があります。

このトピックでは、次の内容について説明します。

- 2.3.1項「イベント・タイプ・リポジトリ・エディタを使用して、タプルとしてOracle CEPイベント・タイプを作成する方法」

- 2.3.2項「タプルとしてOracle CEPイベント・タイプを手動で作成する方法」

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

この手順では、Oracle CEP IDE for Eclipseイベント・タイプ・リポジトリ・エディタを使用して、Oracle CEPイベント・タイプをタプルとして作成して登録する方法を説明します。Oracle CEP IDE for Eclipseの詳細は、例3-0「Oracle CEP IDE for Eclipseの概要」を参照してください。

または、タプルとしてイベント・タイプを手動で作成して登録することもできます(2.3.2項「タプルとしてOracle CEPイベント・タイプを手動で作成する方法」を参照)。

イベント・タイプ・リポジトリ・エディタを使用してタプルとしてOracle CEPイベント・タイプを作成するには、次の手順を実行します。

1. イベント・タイプに必要なプロパティを決定します。
イベントを設計する場合、設計を2.1.3.3項「タプルとして指定されたイベント・タイプ」で説明されたイベント・データ型に制限する必要があります。

2. Oracle CEP IDE for EclipseのEPNを開きます。
図2-4に表示されているように、EPNエディタが開きます。

図2-4 EPNエディタ

「図2-4 EPNエディタ」の説明

詳細は、 6.1項「EPNエディタを開く」を参照してください。

3. 「イベント・タイプ」タブをクリックします。
図2-5に示すような「イベント・タイプ」タブが表示されます。

図2-5 イベント・タイプ・リポジトリ・エディタ

「図2-5 イベント・タイプ・リポジトリ・エディタ」の説明

4. 「イベント・タイプの追加」(緑のプラス記号)をクリックします。
図2-6に示すように、デフォルト名newEventを持つ新しいイベントが「イベント・タイプの定義」リストに追加されます。

図2-6 イベント・タイプ・リポジトリ・エディタ - タプル・イベント

「図2-6 イベント・タイプ・リポジトリ・エディタ - タプル・イベント」の説明

5. 「イベント・タイプの定義」リストで、newEventを選択します。
このイベントのプロパティは、図2-6に示すように、「イベント・タイプの詳細」領域に表示されます。

6. このイベントの名前を「タイプ名」フィールドに入力します。

7. 「宣言で定義されたプロパティ」をクリックします。

8. 1つ以上のイベント・プロパティを追加します。

- 「イベント・プロパティの追加」(緑のプラス記号)をクリックします。
新しい行が「イベント・タイプの詳細」表に追加されます。

- この行の「名前」列をクリックしてプロパティ名を入力します。

- この行の「タイプ」列をクリックして、プルダウン・メニューからデータ型を選択します。
イベントを設計する場合、設計を2.1.3.3項「タプルとして指定されたイベント・タイプ」で説明されたイベント・データ型に制限する必要があります。

- charデータ型プロパティについてのみ、この行の「'char'の長さ」列をクリックして、このcharプロパティの最大長の値を入力します。
オプションで、char値の最大長を指定するために、length属性を使用できます。デフォルトの長さは256文字です。最大長はjava.lang.Integer.MAX_VALUEです。256文字を超える必要がある場合、適当な長さを指定する必要があります。

9. Eclipseツールバーの「保存」ボタンをクリックします(またはCTRL-Sを押します)。
これで、イベントがイベント・タイプ・リポジトリに表示されます。

イベント・タイプ・リポジトリ・エディタを使用して、次のことができます。

1. EPNアセンブリ・ファイルの対応するイベント・タイプ定義を表示するには、「イベント・タイプの定義」領域のイベント・タイプをダブルクリックします。

2. イベントを削除するには、「イベント・タイプの定義」領域でイベント・タイプを選択し、「イベント・タイプの削除」 (赤いx)をクリックします。

10. イベント・タイプを使用します。

- アプリケーションのビジネス・ロジックPOJOおよびアダプタのJavaコードのEventTypeRepositoryイントロスペクション・インタフェースEventTypeを使用して、イベント・タイプを参照します。

@Service
public void setEventTypeRepository(EventTypeRepository etr) {
etr_ = etr;
}
...
// handle events
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();

// test if property 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.
}

詳細は、2.7項「イベント・タイプ・リポジトリにアクセス」を参照してください。

- EPLルールおよび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>

2.3.2 タプルとしてOracle CEPイベント・タイプを手動で作成する方法

この手順では、EPNアセンブリ・ファイルにタプルとしてOracle CEPイベント・タイプを宣言的に作成して登録する方法について説明しています。Oracle CEPイベント・タイプをJavaBean(2.2.3項「JavaBeanとしてOracle CEPイベント・タイプを手動で作成する方法」を参照)として作成することをお薦めします。

有効なイベント・タイプ・データ型の詳細は、2.1.3.3項「タプルとして指定されたイベント・タイプ」を参照してください。

タプルとしてOracle CEPイベント・タイプを作成するには:

1. イベント・タイプに必要なプロパティを決定します。
イベントを設計する場合、設計を2.1.3.3項「タプルとして指定されたイベント・タイプ」で説明されたイベント・データ型に制限する必要があります。

2. Oracle CEPイベント・タイプ・リポジトリにイベント・タイプを宣言的に登録します。
宣言的に登録するには、例2-8に示すように、wlevs:event-type-repository要素wlevs:event-type子要素を使用して、EPNアセンブリ・ファイルを編集します。

例2-8 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 CEPでは、CrossRateEventのBeanインスタンスが生成されます。CrossRateEventには、price、fromRateおよびtoRateの3つのプロパティがあります。

type属性の有効な値の詳細は、2.1.3.3項「タプルとして指定されたイベント・タイプ」を参照してください。

3. イベント・タイプを使用します。

- アプリケーションのビジネス・ロジックPOJOおよびアダプタのJavaコードのEventTypeRepositoryイントロスペクション・インタフェースEventTypeを使用して、イベント・タイプを参照します。

@Service
public void setEventTypeRepository(EventTypeRepository etr) {
etr_ = etr;
}
...
// handle events
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();

// test if property 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.
}

詳細は、2.7項「イベント・タイプ・リポジトリにアクセス」を参照してください。

- EPLルールおよび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>

2.4 JavaクラスとしてOracle CEPイベント・タイプの作成

JavaクラスとしてOracle CEPイベント・タイプを作成して、登録できます。

このトピックでは、次の内容について説明します。

- 2.4.1項「JavaクラスとしてOracle CEPイベント・タイプを手動で作成する方法」

2.4.1 JavaクラスとしてOracle CEPイベント・タイプを手動で作成する方法

この手順では、JavaBeansプログラミング・ガイドラインに準拠しないJavaクラスとしてOracle CEPイベント・タイプ作成して登録する方法について説明しています。

有効なイベント・タイプ・データ型の詳細は、2.1.3.1項「JavaBeanまたはJavaクラスとして指定されたイベント・タイプ」を参照してください。

JavaクラスとしてOracle CEPイベント・タイプを手動で作成するには:

1. イベント・タイプを表すためにJavaクラスを作成します。
可能な場合は、パフォーマンスを向上するために、イベント・タイプJavaクラスを不変にすることをお薦めします。詳細は、2.1.1項「イベント・タイプのインスタンス化および不変性」を参照してください。

例2-5では、com.bea.wlevs.example.fx.OutputBeanのForeignExchangeEvent内部クラスで実装されたForeignExchangeEventを表します。

例2-9 ForeignExchangeEventクラス: JavaBean標準に準拠しない

package com.bea.wlevs.example.fx.OutputBean.ForeignExchangeEvent;

static public class ForeignExchangeEvent {
private String symbol;
private Double price;
private String fromRate;
private String toRate;
private Long clientTimestamp;
private Long adapterTimestamp;

public ForeignExchangeEvent() {

}

public ForeignExchangeEvent(String symbol, Double price, String fromRate, String toRate) {
this.symbol = symbol;
this.price = price;
this.fromRate = fromRate;
this.toRate = toRate;

if (clientTimestamp == null)
this.clientTimestamp = new Long(0);

if (adapterTimestamp == null)
this.adapterTimestamp = new Long(0);
}

public String getSymbol() {
return symbol;
}

public Double getPrice() {
return price;
}

public String getFromRate() {
return fromRate;
}

public String getToRate() {
return toRate;
}

public Long getClientTimestamp() {
return clientTimestamp;
}

public Long getAdapterTimestamp() {
return adapterTimestamp;
}

}

2. 例2-10に示すようにイベント・タイプ・ビルダーを表すためにJavaクラスを作成します。

例2-10 ForeignExchangeBuilderFactory

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 {

public EventBuilder createBuilder() {
return new ForeignExchangeBuilder();
}

static class ForeignExchangeBuilder implements EventBuilder {
private Map<String,Object> values = new HashMap<String,Object>(10);

public Object createEvent() {
return new ForeignExchangeEvent(
(String) values.get("symbol"),
(Double) values.get("price"),
(String) values.get("fromRate"),
(String) values.get("toRate"));
}

public void put(String property, Object value) throws IllegalStateException {
values.put(property, value);
}

}
}

Oracle CEPでは、イベント・ビルダー・ファクトリが使用され、JavaBean指定に準拠しないイベント・インスタンスが作成されます。イベント・タイプ・ビルダー・ファクトリの使用に関する追加情報は、2.6項「イベント・タイプ・ビルダー・ファクトリの使用」を参照してください。

3. イベント・タイプおよびイベント・ビルダー・ファクトリを表すJavaクラスをコンパイルします。

4. Oracle CEPイベント・タイプ・リポジトリにイベント・タイプおよびイベント・ビルダー・ファクトリを登録します。

1. 宣言的に登録するには、例2-6に示すように、wlevs:event-type-repository要素wlevs:event-type子要素を使用して、EPNアセンブリ・ファイルを編集します。
JavaBeanクラスを示すには、wlevs:class要素を使用し、イベント・タイプとしてカスタム・イベント・ビルダー・ファクトリを指定するには、<wlevs:property name="builderFactory">要素を使用します。

例2-11 EPNアセンブリ・ファイルevent-type-repository

<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>

2. プログラムとして登録するには、例2-7に示すように、EventTypeRepositoryクラスを使用します。

例2-12 プログラムとしてイベントの登録

EventTypeRepository rep = getEventTypeRepository();
ForeignExchangeBuilderFactory factory = new ForeignExchangeBuilderFactory();
rep.registerEventType(
"ForeignExchangeEvent",
com.bea.wlevs.example.fx.OutputBean.ForeignExchangeEvent.getClass(),
factory.createBuilder()
);

詳細は、2.7項「イベント・タイプ・リポジトリにアクセス」を参照してください。

5. イベント・タイプを使用します。

- アプリケーションのビジネス・ロジックPOJOおよびアダプタのJavaコードの標準のJavaBeansとしてイベント・タイプを参照します。

public void onEvent(List newEvents)
throws RejectEventException {
for (Object event : newEvents) {
ForeignExchangeEvent fxEvent = (ForeignExchangeEvent) event;
System.out.println("Price: " + fxEvent.getPrice());
}
}

- EPLルールおよびOracle CQLからイベント・タイプにアクセスします。
次のOracle CQLルールでは、SELECT文でMarketEventを参照するかを表します。

<query id="helloworldRule">
<![CDATA[ select ForeignExchangeEvent.price from marketEventChannel [Now] ]]>
</query>

2.5 java.util.MapとしてOracle CEPイベント・タイプの作成

java.util.MapとしてOracle CEPイベント・タイプを作成して、登録できます。

このトピックでは、次の内容について説明します。

- 2.5.1項「java.util.MapとしてOracle CEPイベント・タイプを作成する方法」

2.5.1 java.util.MapとしてOracle CEPイベント・タイプを作成する方法

この手順では、java.util.MapとしてOracle CEPイベント・タイプを作成して登録する方法について説明しています。Oracle CEPイベント・タイプをJavaBean(2.2.3項「JavaBeanとしてOracle CEPイベント・タイプを手動で作成する方法」を参照)として作成することをお薦めします。

有効なイベント・タイプ・データ型の詳細は、2.1.3.2項「java.util.Mapとして指定されたイベント・タイプ」を参照してください。

java.util.MapとしてOracle CEPイベント・タイプを作成するには:

1. イベント・タイプに必要なプロパティを決定します。

2. Oracle CEPイベント・タイプ・リポジトリにイベント・タイプを登録します。

1. 宣言的に登録するには、例2-13に示すように、wlevs:event-type-repository要素wlevs:event-type子要素を使用して、EPNアセンブリ・ファイルを編集します。

例2-13 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 CEPでは、AnotherEventのBeanインスタンスが生成されます。AnotherEventには、name、ageおよびaddressの3つのプロパティがあります。

2. プログラムとして登録するには、例2-14に示すように、EventTypeRepositoryクラスを使用します。

例2-14 プログラムとしてイベントの登録

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);

詳細は、2.7項「イベント・タイプ・リポジトリにアクセス」を参照してください。

3. イベント・タイプを使用します。

- アプリケーションのビジネス・ロジックPOJOおよびアダプタのJavaコードの標準のJavaBeansとしてイベント・タイプを参照します。

public void onEvent(List newEvents)
throws RejectEventException {
for (Object event : newEvents) {
java.util.Map anEvent = (java.util.Map) event;
System.out.println("Age: " + anEvent.getAge());
}
}

- EPLルールおよびOracle CQLからイベント・タイプにアクセスします。
次のOracle CQLルールでは、SELECT文でMarketEventを参照するかを表します。

<query id="helloworldRule">
<![CDATA[ select AnotherEvent.age from eventChannel [Now] ]]>
</query>

2.6 イベント・タイプ・ビルダー・ファクトリの使用

wlevs:event-type要素を使用してイベント・タイプをリポジトリに登録すると、Oracle CEPではイベント・タイプ・クラスの情報を使用してイベントのインスタンスが作成されます。

ただし、イベント・タイプ・インスタンスの作成をより詳細に制御する必要がある場合があります。これは、イベント・プロパティに必要なgetterおよびsetterメソッドがイベントを表現するPOJOで公開されていない場合に必要です。たとえば、イベント・タイプにfirstnameプロパティが含まれている一方で、イベント・タイプで実行されるEPLルールではそのプロパティがfnameと呼ばれるとします。さらに、(たとえば、他のバンドルからの共有イベント・クラスを使用しているなどの理由から)、相互の互換性を実現するためにイベント・タイプ・クラスを変更することも、EPLルールを変更することもできないと想定します。この場合は、イベント・タイプ・ビルダー・ファクトリを使用して、プロパティ名をfirstnameのかわりに{fnameにするよう、イベント・タイプ・インスタンスの作成方法を変更できます。

イベント・タイプ・ビルダー・ファクトリをプログラミングする場合は、com.bea.wlevs.ede.api.EventBuilderインタフェースのEventBuilder.Factory内部インタフェースを実装する必要があります。createBuilderおよびcreateEventなどの実装する必要のあるメソッドの詳細は、Oracle Fusion Middleware Oracle Complex 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 {
public EventBuilder createBuilder() {
return new ForeignExchangeBuilder();
}
static class ForeignExchangeBuilder implements EventBuilder {
private Map<String,Object> values = new HashMap<String,Object>(10);
public Object createEvent() {
return new ForeignExchangeEvent(
(String) values.get("symbol"),
(Double) values.get("price"),
(String) values.get("fromRate"),
(String) values.get("toRate"));
}
public void put(String property, Object value) throws IllegalStateException {
values.put(property, value);
}
}
}

EPNアセンブリ・ファイルでイベント・タイプを登録する場合は、wlevs:event-type要素の<wlevs:property name="builderFactory">子要素を使用してファクトリ・クラスの名前を指定します。name属性のハードコード化されたbuilderFactoryの値によって、このイベントのインスタンスを作成する際はデフォルト・ファクトリではなく指定されたファクトリ・クラスを使用する必要があることがOracle CEPに対してアラートされます。たとえば、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>

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

EventTypeRepositoryは、単一のOSGiサービスです。これは単一であるため、これを識別するためにインタフェース名のみを指定する必要があります。次のいずれかの方法でOSGiからサービスを取得できます。

- 2.7.1項「EPNアセンブリ・ファイルの使用」

- 2.7.2項「Spring-DM @ServiceReference注釈の使用」

- 2.7.3項「Oracle CEP @Service注釈の使用」

詳細は、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

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

例2-15に示すように、EPNアセンブリ・ファイルのosgi:referenceを指定してEventTypeRepositoryにアクセスできます。

例2-15 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クラスでは、例2-16に示すように、Springにより初期化されたeventTypeRepositoryプロパティを使用して、EventTypeRepositoryにアクセスできます。

例2-16 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.
}
}

2.7.2 Spring-DM @ServiceReference注釈の使用

例2-17に示すように、Javaソースのプロパティを初期化するために、Spring-DM @ServiceReference注釈を使用してEventTypeRepositoryにアクセスできます。

例2-17 @ServiceReference注釈を使用するJavaソース・ファイル

import org.springframework.osgi.extensions.annotation.ServiceReference;
import com.bea.wlevs.ede.api.EventTypeRepository;
...
@ServiceReference
setEventTypeRepository(EventTypeRepository etr) {
...
}

2.7.3 Oracle CEP @Service注釈の使用

例2-17に示すように、Javaソースのプロパティを初期化するために、Oracle CEP @Service注釈を使用して、EventTypeRepositoryにアクセスできます。

例2-18 @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」を参照してください。

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

それぞれのOracle CEPアプリケーションは、固有のJavaクラス・ローダーを取得し、そのクラス・ローダーを使用してアプリケーションのクラスをロードします。このため、デフォルトでは、あるアプリケーションから別のアプリケーションのクラスにアクセスすることはできません。ただし、イベント・タイプ・リポジトリはシングルトン・サービスであるため、あるバンドルでリポジトリを構成し、イベント・タイプ・クラスを明示的にエクスポートすることによって、(同一のOracle CEPサーバーにデプロイされた)別のバンドル内のアプリケーションでそれらの共有されたイベント・タイプを使用できるようになります。

この場合、イベント・タイプ名のスコープはOracle CEPサーバー・インスタンス全体になります。このため、他のバンドルからの共有イベント・タイプと同名のイベント・タイプを作成しようとすると例外が送出されますが、これらのイベント・タイプのクラスは異なります。

イベント・タイプ・クラスを共有するには、共有するイベント・タイプ・リポジトリが含まれているバンドルのMANIFEST.MFファイルのExport-Packageヘッダーにパッケージ名を追加します。

共有イベント・タイプを使用するアプリケーションが含まれているすべてのバンドルよりも前に、イベント・タイプ・リポジトリが含まれているバンドルを必ずデプロイするようにします。そうしないと、デプロイメント例外が送出されます。

詳細は、次を参照してください:

- 2.1.3.1項「JavaBeanまたはJavaクラスとして指定されたイベント・タイプ」

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

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のOracle Javaデータ・カートリッジに関する項

第2部

Oracle CEP IDE for Eclipse

第2部の章の内容は次のとおりです。

- 第3章「Oracle CEP IDE for Eclipseの概要」

- 第4章「Oracle CEP IDE for Eclipseプロジェクト」

- 第5章「Oracle CEP IDE for EclipseおよびOracle CEPサーバー」

- 第6章「Oracle CEP IDE for Eclipseおよびイベント処理ネットワーク」

3 Oracle CEP IDE for Eclipseの概要

この章では、Oracle Complex Event Processing (Oracle CEP) IDEのEclipseで利用可能な機能、その機能のインストールおよび構成方法に関する情報について説明します。

この章では次について説明します:

- 3.1項「Oracle CEP IDE for Eclipseの概要」

- 3.2項「最新のOracle CEP IDE for Eclipseのインストール」

- 3.3項「Oracle CEPで配布されるOracle CEP IDE for Eclipseのインストール」

- 3.4項「Eclipseの構成」

3.1 Oracle CEP IDE for Eclipseの概要

Oracle CEP IDE for Eclipseは、Oracle CEPのアプリケーションを開発、デプロイおよびデバッグできるよう設計されているEclipse IDE用のプラグインのセットです。

この項では次について説明します:

- 3.1.1項「機能」

- 3.1.2項「JDK要件」

- 3.1.3項「デフォルトのOracle CEPドメインocep_domainおよび開発」

Oracle CEP IDE for Eclipseの詳細は、http://www.oracle.com/technology/products/event-driven-architecture/cep-ide/11/を参照してください。

3.1.1 機能

Oracle CEP IDE for Eclipseの主な機能は次のとおりです。

- イベント駆動型アプリケーションの作成を直ちに開始するためのプロジェクト作成ウィザードおよびテンプレート。

- JavaやXMLファイルなどのOracle CEPアプリケーションに共通のソース・ファイル用の高度なエディタ。

- IDE内部からOracle CEPサーバー・インスタンスをシームレスに開始、停止およびデプロイするための統合化されたサーバー管理。

- 統合化されたデバッグ。

- イベント処理アプリケーション内を参照および移動し、EPNコンポーネントを視覚的に作成および編集するイベント処理ネットワーク(EPN)のビジュアル設計ビュー。

- Oracle Continuous Query Language (Oracle CQL)構文の強調表示、コンポーネントの構成およびアセンブリ・ファイルを含むOracle CEPアプリケーション・ソース・ファイルの検証

- デプロイ可能なOracle CEPアプリケーションを作成およびエクスポートできる機能。

- IDE内からOracle CEP Visualizerを使用できるようにするOracle CEP Visualizer向けの統合サポート。

3.1.2 JDK要件

11g リリース1 (11.1.1)では、Oracle CEP IDE for EclipseはJDK 6.0が必要です。詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項

- 3.4項「Eclipseの構成」

3.1.3 デフォルトのOracle CEPドメインocep_domainおよび開発

Oracle CEPサーバー・インストールで「標準」オプションを選択した場合、インストールにはデフォルトのocep_domainドメイン(デフォルトのパスワード付き)と製品サンプルは含まれません。

デフォルトのocep_domainとサンプル(推奨)をインストールする場合は、Oracle CEPサーバー・インストールの「カスタム」オプションを選択してください。

「標準」インストールは本番環境、「カスタム」インストールは開発環境に適しています。

開発中にOracle CEP IDE for Eclipseで使用するために、デフォルトのocep_domainとサンプルをインストールすることをお薦めします。

Oracle CEPサーバー・インストールで「標準」オプションを選択した場合は、構成ウィザードを使用してOracle CEPサーバー・ドメインを作成できます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のインストール概要に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPスタンドアロン・サーバー・ドメインの作成に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPネイティブ・クラスタリングを使用したOracle CEPマルチサーバー・ドメインの作成に関する項

3.2 最新のOracle CEP IDE for Eclipseのインストール

最新バージョンのIDEはOracle Technology Network Webサイトで入手可能です。Eclipse更新のサイトからIDEをインストールすることをお薦めします。

最新のOracle CEP IDE for Eclipseをインストールするには:

1. Eclipse (3.6.2)およびWTP (2.0)の必要なバージョンを取得します。必ずJava EE開発者用のEclipse IDEをインストールしてください。次のWebサイトで入手可能なHeliosインストール全体を取得することをお薦めします。
Windows: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/helios/R/eclipse-jee-helios-win32.zip

Linux: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/helios/SR2/eclipse-jee-helios-SR2-linux-gtk.tar.gz

注意:

Eclipseツールの最新の要件は、Oracle CEP Webサイト(http://www.oracle.com/technologies/soa/complex-event-processing.html)を参照してください。

2. Eclipse IDEを開き、「ヘルプ」>新規ソフトウェアのインストールのメニュー項目を選択します。
図3-1に表示されているように、「インストール」ダイアログが表示されます。

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

「図3-1 「インストール」ダイアログ」の説明

3. 「追加」をクリックします。
図3-2に表示されているように、「サイト追加」ダイアログが表示されます。

図3-2 サイト追加ダイアログ

「図3-2 サイト追加ダイアログ」の説明

4. 表3-1の説明に従って、このダイアログを構成します。

表3-1 新規更新サイトダイアログの属性

属性

説明

Name

このリモート更新サイトの名前。例: Oracle CEP Tools更新

URL

リモート更新サイトへのURL。有効な値:

http://download.oracle.com/technology/software/cep-ide/11/

5. 「OK」をクリックします。

6. 「インストール」ダイアログで、操作プルダウン・メニューから、作成したOracle CEP Tools更新サイトを選択します。
Eclipseのリモート更新サイトへの接続には多少時間がかかります。その間、サイトが選択されていませんのエントリは「保留中」になります。

Eclipseがリモート更新サイトに接続した後、図3-3に示すように、「Oracle CEP Tools」エントリが更新サイトのリストに表示されます。

7. 図3-3に示すように、Oracle CEP Toolsエントリの横にあるチェック・ボックスを選択します。

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

「図3-3 「インストール」ダイアログ - サイト選択」の説明

8. 「次へ」をクリックします。
図3-4に示すように、インストールの詳細ダイアログが表示されます。

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

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

9. 「次へ」をクリックします。
「ライセンスの確認」ダイアログが表示されます。

10. 「終了」をクリックします。

11. メッセージが表示されたら、Eclipseを再起動します。この操作を省略すると、予期しない動作が発生する可能性があります。

12. インストールを確認するために、「ヘルプ」>Eclipseについてを選択します。
図3-5に示すように、「Eclipseについて」ダイアログが表示されます。

図3-5 Eclipseについて

「図3-5 Eclipseについて」の説明

13. Oracleをクリックします。
図3-6に示すように、Eclipseの機能についてダイアログが表示されます。

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

「図3-6 Eclipse機能についてダイアログ」の説明

14. プラグインの詳細をクリックします。
図3-7に示すように、機能プラグインのダイアログが表示されます。

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

「図3-7 機能プラグインダイアログ」の説明

15. 表3-2にあるプラグインが表示されていることを確認してください。

表3-2 Oracle CEP IDE for Eclipseのプラグイン

プロバイダ

プラグイン名

プラグインID

Oracle

Oracle CEP Tools Core

com.bea.wlevs.eclipse.tools.core

Oracle

Oracle CEP Toolsドキュメント

com.bea.wlevs.eclipse.tools.doc

Oracle

Oracle CEP Tools UI

com.bea.wlevs.eclipse.tools.ui

16. Oracle CEP IDE for Eclipseを選択した後、次のトピックを検討します。

- 3.1.3項「デフォルトのOracle CEPドメインocep_domainおよび開発」

- 3.4項「Eclipseの構成」

- 付録J「Oracle CEP IDE for Eclipseのチュートリアル」

3.3 Oracle CEPで配布されるOracle CEP IDE for Eclipseのインストール

Oracle CEP製品にはOracle CEP IDE for Eclipseが付属していますが、このバージョンはOracle Technology NetworkサイトにあるOracle CEP IDE for Eclipseのバージョンよりも古い場合があります。

Oracle CEPで配布されるOracle CEP IDE for Eclipseをインストールするには:

1. Eclipse (3.6.2)およびWTP (2.0)の必要なバージョンを取得します。必ずJava EE開発者用のEclipse IDEをインストールしてください。次のWebサイトで入手可能なHeliosインストール全体を取得することをお薦めします。
Windows: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/helios/R/eclipse-jee-helios-win32.zip

Linux: http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/helios/SR2/eclipse-jee-helios-SR2-linux-gtk.tar.gz

注意:

Eclipseツールの最新の要件は、Oracle CEP Webサイト(http://www.oracle.com/technologies/soa/complex-event-processing.html)を参照してください。

2. Eclipse IDEを開き、「ヘルプ」>新規ソフトウェアのインストールのメニュー項目を選択します。
図3-1に表示されているように、「インストール」ダイアログが表示されます。

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

「図3-8 「インストール」ダイアログ」の説明

3. 「追加」をクリックします。
図3-2に表示されているように、「サイト追加」ダイアログが表示されます。

図3-9 サイト追加ダイアログ

「図3-9 サイト追加ダイアログ」の説明

4. 「アーカイブ」をクリックします。
図3-10に示すように、ローカル・サイト・アーカイブの選択ダイアログが表示されます。

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

「図3-10 ローカル・サイト・アーカイブの選択ダイアログ」の説明

5. MIDDLEWARE_HOME/ocep_11.1/eclipse-update-siteディレクトリに移動して、cep-tools-11.1.0.DATE-BUILD.zipファイルを選択します。
MIDDLEWARE_HOMEはOracle CEPをインストールしたディレクトリ(c:\Oracle\Middlewareなど)、DATEはビルド日付、BUILDはビルド番号です。

6. 「開く」をクリックします。

7. Oracle CEP Toolsのインストールを選択し、アップデート・マネージャを終了します。

8. メッセージが表示されたら、Eclipseを再起動します。この操作を省略すると、予期しない動作が発生する可能性があります。

9. インストールを確認するために、「ヘルプ」>Eclipseについてを選択します。
図3-5に示すように、「Eclipseについて」ダイアログが表示されます。

図3-11 Eclipseについて

「図3-11 Eclipseについて」の説明

10. Oracleをクリックします。
図3-6に示すように、Eclipseの機能についてダイアログが表示されます。

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

「図3-12 Eclipse機能についてダイアログ」の説明

11. プラグインの詳細をクリックします。
図3-7に示すように、機能プラグインのダイアログが表示されます。

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

「図3-13 機能プラグインダイアログ」の説明

12. 表3-2にあるプラグインが表示されていることを確認してください。

表3-3 Oracle CEP IDE for Eclipseのプラグイン

プロバイダ

プラグイン名

プラグインID

Oracle

Oracle CEP Tools Core

com.bea.wlevs.eclipse.tools.core

Oracle

Oracle CEP Toolsドキュメント

com.bea.wlevs.eclipse.tools.doc

Oracle

Oracle CEP Tools UI

com.bea.wlevs.eclipse.tools.ui

13. Oracle CEP IDE for Eclipseを選択した後、次のトピックを検討します。

- 3.1.3項「デフォルトのOracle CEPドメインocep_domainおよび開発」

- 3.4項「Eclipseの構成」

- 付録J「Oracle CEP IDE for Eclipseのチュートリアル」

3.4 Eclipseの構成

この項では、CEPで動作するようにEclipseを構成する方法を説明します。

Eclipseを構成するには:

1. 実行中の場合は、Eclipseを終了します。

2. 使用のコンピュータにJava 6 JREをインストールします。
たとえば、Java Development Kitに付属のJREを次の場所にインストールします。

C:\Java\jre6

3. 任意のエディタを使用して、たとえば、例3-1のC:\eclipse\などのEclipseインストール・ディレクトリにあるeclipse.iniファイルを開きます。

例3-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. 例3-2に示すように、次の行をeclipse.iniファイルに追加します。

例3-2 メモリー・リソース

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-vmargs
-Xmx512m
-XX:MaxPermSize=256M

5. 例3-3に示すように、次の行をeclipse.iniファイルに追加します。

例3-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とパスの両方を同じ行に置きません。例3-3に示すように、それぞれを別の行に分ける必要があります。

6. eclipse.iniファイルを保存して閉じます。

7. Eclipseを起動します。

8. 「ヘルプ」>Eclipseについてを選択して、「インストール」詳細をクリックします。

9. 「構成」タブをクリックします。
図3-14に示すように、「構成の詳細」タブが表示されます。

図3-14 Java 6の構成詳細

「図3-14 Java 6の構成詳細」の説明

10. eclipse.vmプロパティは、eclipse.iniファイルに構成したJava 6.0 JREを指していることを確認します。

4 Oracle CEP IDE for Eclipseプロジェクト

この章では、EPNアセンブリ・ファイル、コンポーネント構成ファイルなど、イベント処理ネットワーク(EPN)を開発するのに使用するプロジェクトを作成するためにOracle Complex Event Processing (Oracle CEP) IDE for Eclipseを使用する方法について説明します。

この章では次について説明します:

- 4.1項「Oracle CEPプロジェクトの概要」

- 4.2項「Oracle CEPプロジェクトの作成」

- 4.3項「EPNアセンブリ・ファイルの作成」

- 4.4項「コンポーネント構成ファイルの作成」

- 4.5項「Oracle CEPプロジェクトのエクスポート」

- 4.6項「プロジェクトのアップグレード」

- 4.7項「Oracle CEPプロジェクトのライブラリおよび他の非クラス・ファイルの管理」

- 4.8項「Oracle CEP IDE for Eclipseプリファレンスの構成」

4.1 Oracle CEPプロジェクトの概要

Oracle CEPアプリケーションには、次のアーティファクトが含まれます。

- Javaソース・ファイル

- XML構成ファイル

- OSGiバンドル・マニフェスト・ファイル

図4-1は、プロジェクト作成後のエクスプローラを示します。

図4-1 Oracle CEPプロジェクト構造

「図4-1 Oracle CEPプロジェクト構造」の説明

表4-1では、Oracle CEPプロジェクトの重要なファイルを、それらのファイルの使用および場所を含めて要約します。

表4-1 Oracle CEPプロジェクト・アーティファクト

ファイル・タイプ

ロケーション

説明

Javaソース・ファイル

任意のJavaソース・フォルダ

デフォルト: src

イベント、アダプタ、およびリスナーは、JavaファイルとともにOracle CEPアプリケーションに実装されます。すべてのJavaファイルは、コンパイルするために、ソース・フォルダに格納する必要があります。

詳細は、第1章「Oracle CEPアプリケーションの作成の概要」を参照してください。

EPNアセンブリ・ファイル

META-INF/spring

これらのファイルは、EPNのwire-upおよびイベント・タイプの定義に使用する主なファイルです。これはSpringコンテキスト・ファイルであり、アダプタ、チャネル、プロセッサ、およびリスナーが接続する場所です。

詳細は、第1章「EPNアセンブリ・ファイル」を参照してください。

プロセッサ構成ファイル

META-INF/wlevs

プロセッサ構成ファイルでは、Complex Event Processor (CEP)が定義されます。このファイルには、プロセッサ・ルール(Continuous Query Language - CQLまたはEvent Processing Language--EPLで定義)および他のコンポーネント構成設定が含まれます。

詳細は、次を参照してください:

- 第10章「Oracle CQLプロセッサの構成」

- 第11章「EPLプロセッサの構成」

MANIFEST.MFファイル

META-INF

マニフェスト・ファイルには、名前、バージョン、および依存性などのアプリケーションのメタデータが含まれます。

詳細は、第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」を参照してください。

4.2 Oracle CEPプロジェクトの作成

Oracle CEPアプリケーションの開発は、すべてのソース・コードおよび関連ファイルを格納するプロジェクトを作成することから始まります。

プロジェクトはOracle CEPアプリケーションと1対1で対応し、サーバー・インスタンスに関連およびデプロイするワークのユニットです。具体的には、構築されたプロジェクトの出力はOracle CEPアプリケーションを含む単一のOSGiバンドル(JAR)です。

4.2.1 Oracle CEPプロジェクトの作成方法

デフォルトでは、新しいプロジェクトはJava 6.0を使用するように設定されます。この項には、Java 6を使用してOracle CEPプロジェクトを作成する方法が記載されています。Java 6を使用するようにOracle CEPプロジェクトを構成する方法の詳細は、3.4項「Eclipseの構成」を参照してください。

注意:

デフォルトで、Eclipseマニフェスト・エディタの「概要」ビューには、プラグインのテスト用にOSGiフレームワークを起動するためのリンクが用意されています。アプリケーション・テンプレートを使用してOracle CEPプロジェクトを作成した場合、フレームワークの起動はサポートされていません。

Oracle CEPプロジェクトを作成するには:

1. EPNエディタを開きます(6.1項「EPNエディタを開く」を参照)

2. 「ファイル」>新規プロジェクトを選択します。
図4-2に表示されているように、新規プロジェクト-ウィザードの選択ダイアログが表示されます。

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

「図4-2 新規プロジェクト - ウィザードの選択ダイアログ」の説明

3. 「Oracle CEP」を展開し、「Oracle CEPアプリケーション・プロジェクト」を選択します。

4. 「次へ」をクリックします。
図4-3に表示されているように、「新規Oracle CEPアプリケーション・プロジェクト」ウィザードが表示されます。

図4-3 「新規Oracle CEPアプリケーション・プロジェクト」ウィザード:「Oracle CEPアプリケーションを作成します。」

「図4-3 「新規Oracle CEPアプリケーション・プロジェクト」ウィザード:「Oracle CEPアプリケーションを作成します。」」の説明

5. 表4-2に表示されているように、Oracle CEPアプリケーションの作成ダイアログを構成します。

表4-2 Oracle CEPアプリケーションの作成ダイアログ

属性

説明

プロジェクト名

Oracle CEPプロジェクトの名前。この名前は、Oracle CEPサーバーにデプロイされるときに、アプリケーションのデフォルト名として使用されます。

ロケーション

プロジェクトが保存されているディレクトリ。

デフォルトでは、作成したプロジェクトはEclipseワークスペース・ディレクトリ内にあります。

ワークスペースおよびソース・コード・コントロール・ディレクトリを別々にするには、デフォルトのロケーションを使用をクリアし、「参照」をクリックして、プロジェクトをワークスペース以外のディレクトリに配置します。

ターゲット・ランタイム

プロジェクトがデプロイされるOracle CEPサーバー。

6. 「次へ」をクリックします。
図4-4に表示されているように、「Oracle CEPアプリケーションのコンテンツ」ダイアログが表示されます。

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

「図4-4 「新規Oracle CEPアプリケーション・プロジェクト」ウィザード:「Oracle CEPアプリケーションのコンテンツ」」の説明

7. オプションで、表4-3に表示されているように、「Oracle CEPアプリケーションのコンテンツ」ダイアログを構成します。

表4-3 「Oracle CEPアプリケーションのコンテンツ」ダイアログ

属性

説明

バンドルID

このアプリケーションのOSGiバンドルを、ターゲット・ランタイムにデプロイしたバンドルと識別する一意のID。

バンドルのバージョン

このOSGiバンドルのこのインスタンスのバージョン。

バンドル名

このアプリケーションのOSGiバンドルの名前。

バンドル・プロバイダ

このアプリケーションのOSGiバンドルのプロバイダの名前(オプション)。

8. 「次へ」をクリックします。
図4-5に表示されているように、「テンプレート」ダイアログが表示されます。

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

「図4-5 「新規Oracle CEPアプリケーション・プロジェクト」ウィザード:「テンプレート」ダイアログ」の説明

9. オプションで、Oracle CEPアプリケーション・テンプレートを選択し、テンプレートに指定しているコンテンツのあるプロジェクトを事前移入できます。

10. 「終了」をクリックします。
Oracle CEP IDE for Eclipseは、Oracle CEPプロジェクトを作成します。

11. オプションで、追加のEPNアセンブリ・ファイルおよびコンポーネント構成ファイルを作成します。
デフォルトでは、Oracle CEP IDE for Eclipseは、プロジェクトの1つのEPNアセンブリ・ファイルおよび1つのコンポーネント構成ファイルを作成します。オプションで、管理、同時開発、および再利用を向上するために、複数のEPNアセンブリおよびコンポーネント構成ファイルでOracle CEPオブジェクトを定義および構成することを選択できます。

詳細は、次を参照してください:

- 4.3項「EPNアセンブリ・ファイルの作成」

- 4.4項「コンポーネント構成ファイルの作成」

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

Event Processing Network (EPN)アセンブリ・ファイルを使用して、Oracle CEPアプリケーションを作成するコンポーネント、およびそれらのコンポーネントの接続方法を宣言できます。このファイルを使用して、アプリケーションのイベント・タイプのみでなく、アプリケーションのアダプタおよびPOJOコンポーネントを実装するJavaクラスも登録できます。

EPNアセンブリ・ファイルの例は、『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のForeign Exchange (FX)の例に関する項を参照してください。SpringおよびOSGiに関する追加情報の詳細は、付録A「SpringおよびOSGiの追加情報」を参照してください。

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

EPNファイルを作成および編集する、間違いが起こるのが少なく最も効率的な方法は、Oracle CEP IDE for Eclipseで新しいファイルのウィザードを使用することです。

詳細は、次を参照してください:

- 6.2項「EPNエディタの概要」

- 4.7項「Oracle CEPプロジェクトのライブラリおよび他の非クラス・ファイルの管理」

Oracle CEP IDE for Eclipseを使用して、新しいEPNアセンブリ・ファイルを作成するには:

1. 「Oracle CEP」プロジェクトを作成します。
4.2項「Oracle CEPプロジェクトの作成」を参照してください。

デフォルトでは、Oracle CEP IDE for Eclipseは、プロジェクトの1つのEPNアセンブリ・ファイルを作成します。オプションで、管理、同時開発、および再利用を向上するために、複数のEPNアセンブリ・ファイルでOracle CEPオブジェクトを定義することを選択できます。

2. 追加EPNアセンブリ・ファイルを別の方法で作成するには:

1. 「ファイル」>「新規」>「その他」を選択します。
図4-6に表示されているように、「新規」ダイアログが表示されます。

図4-6 「新規」ダイアログ

「図4-6 「新規」ダイアログ」の説明

2. 「Oracle CEP」を展開し、「Oracle CEPアセンブリ・ファイル」を選択します。

3. 「次へ」をクリックします。
図4-7に表示されているように、「新規CEPアセンブリ・ファイル」ダイアログが表示されます。

図4-7 「新規CEPアセンブリ・ファイル」ダイアログ

「図4-7 「新規CEPアセンブリ・ファイル」ダイアログ」の説明

4. 表4-4に示すように、 「新規CEPアセンブリ・ファイル」ダイアログを構成します。

表4-4 「新規CEPアセンブリ・ファイル」ダイアログ

属性

説明

親フォルダを入力または選択してください

Oracle CEP IDE for EclipseがEPNアセンブリ・ファイルを作成するフォルダへの完全修飾パスを入力するか、またはファイル・システム・ナビゲーション・コントロールを使用してフォルダを選択します。

ファイル名

新しいEPNアセンブリ・ファイルの名前を入力します。

5. 「終了」をクリックします。

3. EPNエディタを開きます。
6.1項「EPNエディタを開く」を参照してください。

4. 複数のEPNアセンブリ・ファイルを作成した場合、EPNエディタ「フィルタ」プルダウン・メニューで、使用するEPNアセンブリ・ファイルを選択できます。
これにより、選択したEPNアセンブリ・ファイルが示すEPNのサブセットのみに集中できます。

すべてのEPNアセンブリ・ファイルのすべてのコンポーネントの結合を表示するには、EPNエディタ「フィルタ」プルダウン・メニューから「EPN全体」を選択します。

詳細は、6.2.2項「フィルタ処理」を参照してください。

5. EPNにノードを作成し、接続します。
6.4項「EPNエディタの使用」を参照してください。

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

コンポーネント構成ファイルを使用して、Oracle CEPアプリケーションを作成するコンポーネントを構成できます。

コンポーネント構成ファイルの例は、『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のForeign Exchange (FX)の例に関する項を参照してください。

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

コンポーネント構成ファイルを作成および編集する、間違いが起こるのが少なく最も効率的な方法は、Oracle CEP IDE for Eclipseで新しいファイルのウィザードを使用することです。

詳細は、次を参照してください:

- 6.2項「EPNエディタの概要」

- 4.7項「Oracle CEPプロジェクトのライブラリおよび他の非クラス・ファイルの管理」

Oracle CEP IDE for Eclipseを使用して、新しいコンポーネント構成ファイルを作成するには:

1. 「Oracle CEP」プロジェクトを作成します。
4.2項「Oracle CEPプロジェクトの作成」を参照してください。

デフォルトでは、Oracle CEP IDE for Eclipseは、プロジェクトの1つのコンポーネント構成ファイルを作成します。オプションで、管理、同時開発、および再利用を向上するために、複数のコンポーネント構成ファイルでOracle CEPオブジェクトを構成することを選択できます。

2. コンポーネント構成ファイルを別の方法で作成するには:

- 「ファイル」>「新規」>「その他」を選択します。
図4-8に表示されているように、「新規」ダイアログが表示されます。

図4-8 「新規」ダイアログ

「図4-8 「新規」ダイアログ」の説明

- 「Oracle CEP」を展開し、「Oracle CEPアプリケーション構成ファイル」を選択します。

- 「次へ」をクリックします。
図4-9に表示されているように、「新規CEPアプリケーション構成ファイル」ダイアログが表示されます。

図4-9 「新規CEPアプリケーション構成ファイル」ダイアログ

「図4-9 「新規CEPアプリケーション構成ファイル」ダイアログ」の説明

- 表4-4に示すように、 「新規CEPアセンブリ・ファイル」ダイアログを構成します。

表4-5 新規CEP構成ファイルダイアログ

属性

説明

親フォルダを入力または選択してください

Oracle CEP IDE for Eclipseがコンポーネント構成ファイルを作成するフォルダへの完全修飾パスを入力するか、またはファイル・システム・ナビゲーション・コントロールを使用してフォルダを選択します。

ファイル名

新しいコンポーネント構成ファイルの名前を入力します。

- 「終了」をクリックします。

3. EPNエディタを開きます。
6.1項「EPNエディタを開く」を参照してください。

4. EPNにノードを作成し、接続します。
6.4項「EPNエディタの使用」を参照してください。

4.5 Oracle CEPプロジェクトのエクスポート

Oracle CEPプロジェクトをエクスポートすることで、本番Oracle CEPサーバーにデプロイできるOSGiバンドルにプロジェクトが組み込まれます。

4.5.1 Oracle CEPプロジェクトのエクスポート方法

この項には、Oracle CEPプロジェクトをOSGiバンドルにエクスポートする方法が記載されています。

Oracle CEPプロジェクトをエクスポートするには:

1. Oracle CEP IDE for Eclipseを起動し、「Oracle CEP」プロジェクトを開きます。

2. Oracle CEP IDE for Eclipseにより、自動的にJavaリソースがコンパイルされ、エクスポートしたJARに追加されます。プロジェクトに他のリソース(マニフェスト・ファイルまたはイメージなど)がある場合、それらをエクスポートするようにプロジェクトを構成します。

1. 「プロジェクト・エクスプローラ」でbuild.propertiesファイルを検出し、そのファイルをダブルクリックして編集します。
図4-10に表示されているように、build.propertiesファイルが開きます。

図4-10 Oracle CEPプロジェクトbuild.propertiesファイル

「図4-10 Oracle CEPプロジェクトbuild.propertiesファイル」の説明

2. バイナリ・ビルド領域で、アプリケーションとともにエクスポートするリソースを確認します。

3. 「ファイル」>「エクスポート」を選択します。

図4-11に表示されているように、「エクスポート」ダイアログが表示されます。

図4-11 「エクスポート」ダイアログ

「図4-11 「エクスポート」ダイアログ」の説明

4. 「Oracle CEP」オプションを展開し、「Oracle CEPアプリケーション」を選択します。

5. 「次へ」をクリックします。
図4-12に表示されているように、Oracle CEPアプリケーション・エクスポート:プロジェクトの選択ダイアログが表示されます。

図4-12 Oracle CEPアプリケーション・エクスポート:プロジェクトの選択ダイアログ

「図4-12 Oracle CEPアプリケーション・エクスポート:プロジェクトの選択ダイアログ」の説明

6. 表4-6に表示されているように、Oracle CEPアプリケーション・エクスポート:プロジェクトの選択ダイアログを構成します。

表4-6 「Oracle CEPアプリケーションのコンテンツ」ダイアログ

属性

説明

使用可能なプロジェクト

エクスポートに使用できるOracle CEPプロジェクトの一覧。

プロジェクトまたはエクスポートするプロジェクトを確認します。

「出力ファイル」列に指定した名前で各プロジェクトがJARファイルにエクスポートされます。エクスポートされるバンドルの名前は、OSGiバンドル・ネーミング・ルールに従って、JAR名のバンドルIDおよびバンドル・バージョンを使用します。

ディレクトリ

Oracle CEPプロジェクトJARファイルがエクスポートされるディレクトリ。

「参照」をクリックして、このディレクトリを選択します。

既存のファイルを警告なしで上書き

このオプションをチェックして、選択したディレクトリの名前と同じ名前の既存のJARファイルを上書きします。

7. 「終了」をクリックします。
作成したプロジェクト、そのJavaリソース、および選択したすべてのバイナリ・リソースは、プロジェクトJARファイルにエクスポートされます。

8. JARファイルをOracle CEPサーバーにデプロイします。

1. JARがアプリケーションの場合、5.3.6項「Oracle CEPサーバーにアプリケーションのデプロイ方法」を参照してください。

2. JARがアプリケーション・ライブラリの場合、24.1.3項「アプリケーション・ライブラリ」を参照してください。

9. 他の従属リソースがある場合、それらをOracle CEPサーバーにデプロイします。
例:

- アプリケーションが依存している他のOSGiバンドル。
Oracle CEP Visualizerまたはコマンド・ライン・デプロイメント・ツールを使用して、これらのバンドルをOracle CEPサーバーにデプロイします。

- アプリケーション内から参照されるデータソースのconfig.xmlのエントリ。
これらのエントリをターゲット・サーバーのconfig.xmlファイルに追加します。

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

Oracle CEPのバージョンをアップグレードする場合、既存のOracle CEPプロジェクトを変更する必要があります。

この項では次について説明します:

- 4.6.1項「Oracle CEPのプロジェクトの2.1から10.3へのアップグレード方法」

- 4.6.2項「Oracle CEPのプロジェクトの10.3から11gリリース1 (11.1.1)へのアップグレード方法」

詳細は、次を参照してください:

- 3.4項「Eclipseの構成」

- 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』

4.6.1 Oracle CEPのプロジェクトの2.1から10.3へのアップグレード方法

プロジェクト構造は2.1から変わりませんが、Oracle CEPプロジェクトに格納されるデータは大幅に変更されています。したがって、プロジェクトの開発を10.3で続行する前に、2.1プロジェクトを手動でアップグレードする必要があります。

プロジェクトの2.1から10.3へのアップグレードに必要なステップを、次に説明します。

Oracle CEP 2.1から10.3にプロジェクトをアップグレードするには:

1. Oracle CEP 2.1プロジェクトをOracle CEP IDE for Eclipseで開きます。

2. 「ファイル」>ワークスペースの切替え>「その他」を選択します。
図4-13に表示されているように、ワークスペース・ランチャダイアログが表示されます。

図4-13 ワークスペース・ランチャダイアログ

「図4-13 ワークスペース・ランチャダイアログ」の説明

注意:

現行のワークスペースから設定をコピーしないでください。

3. 「参照」をクリックし、新しいワークスペース・ディレクトリを選択します。
Eclipseが終了し、新しいワークスペースで再起動されます。

4. 「ファイル」>「インポート」を選択します。
図4-14に表示されているように、「インポート」ダイアログが表示されます。

図4-14 「インポート」ダイアログ

「図4-14 「インポート」ダイアログ」の説明

5. 「全般」オプションを展開し、ワークスペースの既存のプロジェクトを選択します。

6. 「次へ」をクリックします。
図4-15に表示されているように、プロジェクトのインポートダイアログが表示されます。

図4-15 プロジェクトのインポートダイアログ

「図4-15 プロジェクトのインポートダイアログ」の説明

7. プロジェクトのインポートダイアログを使用して、2.1のプロジェクトを新しいワークスペースにインポートします。オプションで、プロジェクト・ファイルを新しいワークスペースにコピーするように選択します。

8. 各オブジェクトに対して、プロジェクト・ファセット・バージョンを次のように変更します。

1. プロジェクトを右クリックし、「プロパティ」を選択します。
図4-16に表示されているように、プロジェクト・プロパティダイアログが表示されます。

図4-16 プロジェクトのプロパティダイアログ:プロジェクト・ファセット

2. プロジェクト・ファセットオプションを選択します。
図4-16に表示されているように、プロジェクト・ファセット・プロパティが表示されます。

3. プロジェクトの変更をクリックします。
図4-17に表示されているように、ファセット・プロジェクトの変更ダイアログが表示されます。

図4-17 ファセット・プロジェクトの変更

4. Oracle CEPファセットに対して、「バージョン」プルダウン・メニューから10.3を選択します。

5. 「終了」をクリックします。

6. 「OK」をクリックします。

7. 次のプロジェクトに対して手順を繰り返します。

9. 新しいOracle CEPサーバー・ランタイムを作成します。

1. 「ウィンドウ」>「プリファレンス」を選択します。
図4-18に表示されているように、「プリファレンス」ダイアログが表示されます。

図4-18 「プリファレンス」ダイアログ

「図4-18 「プリファレンス」ダイアログ」の説明

2. 「サーバー」オプションを展開し、インストール済ランタイムを選択します。

3. 5.2.3項「Oracle CEPサーバー・ランタイムの作成方法」の説明に従って、新しい10.3 Oracle CEPサーバー・ランタイムを追加します。

4. 「OK」をクリックします。

10. 各プロジェクトに対して、作成した新しい10.3 Oracle CEPサーバー・ランタイムを指定します。

1. プロジェクトを右クリックし、「プロパティ」を選択します。
図4-19に表示されているように、プロジェクト・プロパティダイアログが表示されます。

図4-19 プロジェクト・プロパティダイアログ:ターゲット・ランタイム

2. ターゲット・ランタイムオプションを選択します。
図4-19に表示されているように、ターゲット・ランタイム・プロパティが表示されます。

3. 作成した新しいOracle CEP 10.3ターゲット・ランタイムを確認します。

4. 「OK」をクリックします。

5. 次のプロジェクトに対して手順を繰り返します。

11. 各プロジェクトのために、プロジェクト・ビルダーを更新します。

1. プロジェクトを右クリックし、「EPNエディタを開く」を選択します。

2. EPNダイアグラムがエラーなしに開く場合は、ステップ12に進みます。

3. 図4-20に示すエラーを表示するEPNダイアグラムが開かれた場合は、「ビルダーの構成」ボタンをクリックしてください。

図4-20 ビルダー・エラー

「図4-20 ビルダー・エラー」の説明

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 Complex Event Processingスタート・ガイド』のOracle CEP 10.3で実行するためのWebLogic Event Server 2.0アプリケーションのアップグレードに関する項

- Oracle CEPリリース・ノート10.3用(http://download.oracle.com/docs/cd/E13157_01/wlevs/docs30/notes/notes.html)

これらの手順を実行した後、プロジェクトのクリーン・ビルドをする必要があります。

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

プロジェクト構造は10.3から変わりませんが、Oracle CEPプロジェクトに格納されるデータは大幅に変更されています。したがって、プロジェクトの開発を11g リリース1 (11.1.1)で続行する前に、10.3プロジェクトを手動でアップグレードする必要があります。

プロジェクトの10.3から11g リリース1 (11.1.1)へのアップグレードに必要な手順を次に説明します。

Oracle CEP 10.3から11g リリース1 (11.1.1)にプロジェクトをアップグレードするには:

1. Oracle CEP 10.3プロジェクトをOracle CEP IDE for Eclipseで開きます。

2. 「ファイル」>ワークスペースの切替え>「その他」を選択します。
図4-21に表示されているように、ワークスペース・ランチャダイアログが表示されます。

図4-21 ワークスペース・ランチャダイアログ

「図4-21 ワークスペース・ランチャダイアログ」の説明

3. 「参照」をクリックし、新しいワークスペース・ディレクトリを選択します。

注意:

現行のワークスペースから設定をコピーしないでください。

Eclipseが終了し、新しいワークスペースで再起動されます。

4. 「ファイル」>「インポート」を選択します。
図4-14に表示されているように、「インポート」ダイアログが表示されます。

図4-22 「インポート」ダイアログ

「図4-22 「インポート」ダイアログ」の説明

5. 「全般」オプションを展開し、ワークスペースの既存のプロジェクトを選択します。

6. 「次へ」をクリックします。
図4-15に表示されているように、プロジェクトのインポートダイアログが表示されます。

図4-23 プロジェクトのインポートダイアログ

「図4-23 プロジェクトのインポートダイアログ」の説明

7. プロジェクトのインポートダイアログを使用して、10.3のプロジェクトを新しいワークスペースにインポートします。オプションで、プロジェクト・ファイルを新しいワークスペースにコピーするように選択します。

8. 各オブジェクトに対して、プロジェクト・ファセット・バージョンを次のように変更します。

1. プロジェクトを右クリックし、「プロパティ」を選択します。
図4-16に表示されているように、プロジェクト・プロパティダイアログが表示されます。

図4-24 プロジェクトのプロパティダイアログ:プロジェクト・ファセット

2. プロジェクト・ファセットオプションを選択します。
図4-16に表示されているように、プロジェクト・ファセット・プロパティが表示されます。

3. プロジェクトの変更をクリックします。
図4-17に表示されているように、ファセット・プロジェクトの変更ダイアログが表示されます。

図4-25 ファセット・プロジェクトの変更

「図4-25 ファセット・プロジェクトの変更ダイアログ」の説明

4. Javaファセットに、「バージョン」プルダウン・メニューから6.0を選択します。

5. Oracle CEPファセットに、「バージョン」プルダウン・メニューから11.1を選択します。

6. 「終了」をクリックします。

7. 「OK」をクリックします。

8. 次のプロジェクトに対して手順を繰り返します。

9. 新しいOracle CEPサーバー・ランタイムを作成します。

1. 「ウィンドウ」>「プリファレンス」を選択します。
図4-18に表示されているように、「プリファレンス」ダイアログが表示されます。

図4-26 「プリファレンス」ダイアログ

「図4-26 「プリファレンス」ダイアログ」の説明

2. 「サーバー」オプションを展開し、インストール済ランタイムを選択します。

3. 5.2.3項「Oracle CEPサーバー・ランタイムの作成方法」の説明に従って、新しい11.0 Oracle CEPサーバー・ランタイムを追加します。

4. 「OK」をクリックします。

10. 各プロジェクトに対して、作成した新しい11.0 Oracle CEPサーバー・ランタイムを指定します。

1. プロジェクトを右クリックし、「プロパティ」を選択します。
図4-19に表示されているように、プロジェクト・プロパティダイアログが表示されます。

図4-27 プロジェクト・プロパティダイアログ:ターゲット・ランタイム

「図4-27 プロジェクト・プロパティダイアログ:ターゲット・ランタイム」の説明

2. ターゲット・ランタイムオプションを選択します。
図4-19に表示されているように、ターゲット・ランタイム・プロパティが表示されます。

3. 作成した新しいOracle CEP 11.0ターゲット・ランタイムを確認します。

4. 「OK」をクリックします。

5. 次のプロジェクトに対して手順を繰り返します。

11. 各プロジェクトのために、プロジェクト・ビルダーを更新します。

1. プロジェクトを右クリックし、「EPNエディタを開く」を選択します。

2. EPNダイアグラムがエラーなしに開く場合は、ステップ12に進みます。

3. 図4-20に示すエラーを表示するEPNダイアグラムが開かれた場合は、「ビルダーの構成」ボタンをクリックしてください。

図4-28 ビルダー・エラー

「図4-28 ビルダー・エラー」の説明

EPNダイアグラムが表示されます。

4. 次のプロジェクトに対して手順を繰り返します。

12. 「ウィンドウ」>「プリファレンス」を選択します。

図4-29に表示されているように、「プリファレンス」ダイアログが表示されます。

図4-29 「プリファレンス」ダイアログ

「図4-29 「プリファレンス」ダイアログ」の説明

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 Complex Event Processingスタート・ガイド』のOracle CEPリリース11gR1 (11.1.1)で実行するためのOracle CEP 10.3アプリケーションのアップグレードに関する項

- Oracle CEPリリース・ノート

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

多くのプロジェクトでは、サード・パーティ・ライブラリ、他のプロジェクトで作成した内部ライブラリ、その他のライブラリにかかわらず、プロジェクト自体以外のソースから取得したライブラリまたはプロパティ・ファイルなどの非クラス・ファイルを使用する必要があります。

次の非クラス・ファイルをOracle CEPプロジェクトに追加できます。各ファイルに独自のパッケージ化およびデプロイメント特性があります。

- 標準のJARファイル: プロジェクトに標準のJARファイルを追加すると、ライブラリを最も簡単に管理できます。ライブラリはOracle CEP IDE for Eclipseによってプロジェクトに直接パッケージ化され、そのライブラリをプロジェクトの一部としてソース・コード・コントロール・システムで確認できます。
詳細は、次を参照してください:

- 4.7.1項「Oracle CEPプロジェクトへの標準JARファイルの追加方法」

- 4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」

- 4.7.3項「Oracle CEPプロジェクトへのプロパティ・ファイルの追加方法」

- 4.7.4項「パッケージのエクスポート方法」

- 4.7.5項「パッケージのインポート方法」

- 24.2.2.2.2項「-Xbootclasspathを使用したサードパーティJARファイルへのアクセス」

- OSGiバンドル: ライブラリがOSGiバンドルとしてすでにパッケージされていて、それをサーバーに一度デプロイする場合(複数のアプリケーションがそれを参照できるようになります)、OSGiバンドル・ライブラリ・オプションを使用できます。OSGiバンドルは自動的にアプリケーションにパッケージ化されないため、ユーザーがデプロイメントの一部を行う必要があることに注意してください。チーム環境での作業の場合、残りのプロジェクトでバンドルがソース管理されず、各開発者のマシン上のDOMAIN_DIR/servername/modulesディレクトリにバンドルがある必要があるので、作業が少し難しくなります。
OSGiバンドル・ライブラリ・オプションの主な利点は、Oracle CEPサーバー・アプリケーション・ライブラリを使用してOSGiバンドル・ライブラリを管理し、アプリケーションがライブラリに依存する前にライブラリが確実にデプロイされることです。

詳細は、次を参照してください:

- 4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」

- 24.1.3項「アプリケーション・ライブラリ」

- プロパティ・ファイル: プロジェクトにJavaプロパティ・ファイルを追加すると、プロパティを効率的に管理できます。Javaプロパティ・ファイルをOracle CEPプロジェクトに追加して、プロパティ・ファイルがアプリケーションでデプロイされ、実行時に使用できるようにできます。
詳細は、次を参照してください:

- 4.7.3項「Oracle CEPプロジェクトへのプロパティ・ファイルの追加方法」

- 1.1.5.1項「ConfigurationPropertyPlaceholderConfigurerクラスを使用したコンポーネントおよびサーバーの構成へのアクセス」

4.7.1 Oracle CEPプロジェクトへの標準JARファイルの追加方法

使用するライブラリが標準のJARファイルである場合、それをOracle CEPプロジェクトに追加できます。または、ライブラリをOSGiバンドルとして追加できます(4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」を参照してください)。

標準のJARファイルをOracle CEPプロジェクトに追加すると、このバンドルに依存する他のバンドルにプロジェクトの一部またはすべてのパッケージを公開することもできます。

標準のJARファイルをOracle CEP projectに追加するには:

1. Oracle CEP IDE for EclipseプロジェクトにJARファイルを保存するためのフォルダを作成します。
Oracleでは、それらを置くためにlibのようなフォルダを作成することをお薦めします。

新しいフォルダを作成するには、プロジェクト・フォルダを右クリックし、「新規」>「フォルダ」を選択します。

2. Oracle CEP IDE for Eclipse以外では、JARファイルをlibフォルダにコピーします。

3. Oracle CEP IDE for Eclipse内で、libフォルダを右クリックして、「リフレッシュ」を選択します。
図4-30に表示されているように、JARファイルがlibフォルダに表示されます。

図4-30 Oracle CEP IDE for Eclipse libディレクトリ

「図4-30 Oracle CEP IDE for Eclipseのlibディレクトリ」の説明

4. META-INFディレクトリを展開し、MANIFEST.MFファイルを右クリックして、次で開く>プラグイン・マニフェストエディタを選択します。
図4-31に表示されているように、マニフェスト・エディタが開きます。

図4-31 マニフェスト・エディタの「ビルド」タブ

「図4-31 マニフェスト・エディタの「ビルド」タブ」の説明

5. ビルドタブをクリックします。

6. 次のように、JARファイルをプロジェクト・ルートの下にあるバイナリ・ビルドに追加します。

- バイナリ・ビルド領域で、libディレクトリを展開します。

- 図4-31に表示されているように、ライブラリの横にあるボックスを選択します。

- すべてのファイルを保存するには、[CTRL]-[SHIFT]-[S]キーを押します。
これにより、プロジェクトのbuild.propertiesファイルが編集され、バンドルJARをビルドするときに、Oracle CEP IDE for EclipseにJARファイルをバンドルに追加することが指示されます。

7. マニフェスト・エディタで、「ランタイム」タブをクリックします。
図4-32に表示されているように、「ランタイム」タブが表示されます。

図4-32 マニフェスト・エディタの 「ランタイム」タブ

「図4-32 マニフェスト・エディタの 「ランタイム」タブ」の説明

8. 次のように、JARファイルをプロジェクトのクラスパスに追加します。

- マニフェスト・エディタで、「追加」ボタンをクリックします。
図4-33に表示されているように、JARの選択ダイアログが表示されます。

図4-33 JARの選択ダイアログ

「図4-33 JAR選択ダイアログ」の説明

- バンドルに追加するJARファイルを選択します。
この例では、libディレクトリを展開し、javax.jws_2.0.jarファイルを選択します。

- 「OK」をクリックします。
これにより、図4-34に表示されているように、選択したJARがクラスパス・リストに追加されます。

図4-34 JARをクラスパスに追加した後のマニフェスト・エディタの「ランタイム」タブ

「図4-34 JARをクラスパスに追加した後のマニフェスト・エディタの 「ランタイム」タブ」の説明

- すべてのファイルを保存するには、[CTRL]-[SHIFT]-[S]キーを押します。
これにより、プロジェクトのクラスパスにJARが配置され、MANIFEST.MFファイルが編集されます。

これを確認するには、マニフェスト・エディタで、「MANIFEST.MF」タブをクリックし、図4-35に表示されているように、JARがBundle-Classpathプロパティの下にリストされていることを確認します。

図4-35 マニフェスト・エディタの「MANIFEST.MF」タブ

「図4-35 マニフェスト・エディタの「MANIFEST.MF」タブ」の説明

図4-36に表示されているように、JARがプロジェクトのルートにライブラリとして表示されることにも注意してください。

図4-36 パッケージ・エクスプローラ

「図4-36 パッケージ・エクスプローラ」の説明

9. オプションで、バンドルがこのJARからこのバンドルに依存する他のバンドルにパッケージをエクスポートする必要がある場合、4.7.4項「パッケージのエクスポート方法」の説明に従って、これらのパッケージをエクスポートできます。

4.7.2 Oracle CEPプロジェクトへのOSGiバンドルの追加方法

使用するライブラリがOSGiバンドルである場合、それをOracle CEPプロジェクトに追加できます。または、ライブラリを標準のJARファイルとして追加できます(4.7.1項「Oracle CEPプロジェクトへの標準JARファイルの追加方法」を参照してください)。

OSGiバンドルをOracle CEPプロジェクトに追加するには、バンドルをそのバンドルの依存性の定義に追加します。

注意:

この処理では、ビルド時にプロジェクトで参照バンドルを使用できるようになるのみです。デプロイまたはエクスポートした場合、バンドルはアプリケーションに直接パッケージ化されません。かわりに、このバンドルを手動でOracle CEPサーバーにデプロイする必要があります。詳細は、24.1.3項「アプリケーション・ライブラリ」を参照してください。

OSGiバンドルをOracle CEPプロジェクトに追加するには:

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 CEP IDE for Eclipseを起動します。

3. 「プロジェクト」を右クリックし、「ターゲットのランタイムをリフレッシュ」を選択します。

4. META-INF/MANIFEST.MFファイルを右クリックし、次で開く>プラグイン・マニフェストエディタを選択します。
図4-37に表示されているように、マニフェスト・エディタが開きます。

図4-37 マニフェスト・エディタの「依存関係」タブ

「図4-37 マニフェスト・エディタ:「依存関係」タブ」の説明

5. 「依存関係」タブをクリックします。

6. 必須プラグイン領域で、「追加」をクリックします。
図4-38に表示されているように、プラグインの選択ダイアログが表示されます。

図4-38 プラグインの選択ダイアログ

「図4-38 プラグインの選択ダイアログ」の説明

7. ステップ1でOracle CEPサーバー・インスール・ディレクトリのDOMAIN_DIR/servername/modulesディレクトリに追加したバンドルを選択し、「OK」をクリックします。
選択したバンドルがMANIFEST.MFファイルの必須バンドル項に表示されます。

4.7.3 Oracle CEPプロジェクトへのプロパティ・ファイルの追加方法

Javaプロパティ・ファイルをOracle CEPプロジェクトに追加して、プロパティ・ファイルがアプリケーションでデプロイされ、実行時に使用できるようにできます。

プロパティ・ファイルをOracle CEP projectに追加するには:

1. Oracle CEP IDE for Eclipseプロジェクトにプロパティ・ファイルを保存するためのフォルダを作成します。
Oracleでは、プロパティ・ファイルの保存のためにプロパティのようなフォルダを作成することをお薦めします。

新しいフォルダを作成するには、プロジェクト・フォルダを右クリックし、「新規」>「フォルダ」を選択します。

2. Oracle CEP IDE for Eclipse以外では、プロパティ・ファイルを「プロパティ」フォルダにコピーします。

3. Oracle CEP IDE for Eclipseでは、「プロパティ」フォルダを右クリックし、「リフレッシュ」を選択します。
図4-39に表示されているように、「プロパティ」ファイルが「プロパティ」フォルダに表示されます。

図4-39 Oracle CEP IDE for Eclipseプロパティ・ディレクトリ

「図4-39 Oracle CEP IDE for Eclipseプロパティ・ディレクトリ」の説明

4. META-INFディレクトリを展開し、MANIFEST.MFファイルを右クリックして、次で開く>プラグイン・マニフェストエディタを選択します。
図4-40に表示されているように、マニフェスト・エディタが開きます。

図4-40 マニフェスト・エディタの「ビルド」タブ

「図4-40 マニフェスト・エディタの「ビルド」タブ」の説明

5. ビルドタブをクリックします。

6. 次のように、「プロパティ」ファイルをプロジェクト・ルートの下にあるバイナリ・ビルドに追加します。

- バイナリ・ビルド領域で、「プロパティ」ディレクトリを展開します。

- 図4-40に表示されているように、「プロパティ」ファイルの横にあるボックスを選択します。

- すべてのファイルを保存するには、[CTRL]-[SHIFT]-[S]キーを押します。
これにより、プロジェクトのbuild.propertiesファイルが編集され、バンドルJARをビルドするときにOracle CEP IDE for Eclipseに、プロパティ・ファイルをバンドルに追加することが指示されます。

7. 例4-1に表示されているように、プロパティ・ファイルをJavaコードでアクセスできます。

例4-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.
}

}

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

オプションで、バンドルがこのJARからこのバンドルに依存する他のバンドルにパッケージをエクスポートする必要がある場合、このパッケージをエクスポートできます。そうすると、パッケージのOSGiエクスポータを作成するためのPackage-Export MANIFESTエントリが更新されます。

パッケージをエクスポートするには:

1. Oracle CEP IDE for Eclipse内で、図4-41に表示されているように、META-INFディレクトリを展開します。

図4-41 Oracle CEP IDE for Eclipse libディレクトリ

「図4-41 Oracle CEP IDE for Eclipseのlibディレクトリ」の説明

2. MANIFEST.MFファイルを右クリックし、次で開く>プラグイン・マニフェストエディタを選択します。
図4-42に表示されているように、マニフェスト・エディタが開きます。

図4-42 マニフェスト・エディタの 「ランタイム」タブ

「図4-42 マニフェスト・エディタの「ランタイム」タブ」の説明

3. 「ランタイム」タブをクリックします。
図4-42に表示されているように、 「ランタイム」タブが表示されます。

4. エクスポート・パッケージ領域で、「追加」ボタンをクリックします。
図4-43に表示されているように、パッケージの選択ダイアログが表示されます。

図4-43 パッケージの選択ダイアログ

「図4-43 パッケージ選択ダイアログ」の説明

5. エクスポートするパッケージを選択します。
名前でリスト内のパッケージを検索するには、テキスト・フィールドに名前を入力します。

この例では、javax.jws.soapパッケージを選択します。

6. 「OK」をクリックします。
図4-44に表示されているように、選択したパッケージがエクスポート・パッケージ領域に追加されます。

図4-44 パッケージをエクスポートした後のマニフェスト・エディタの 「ランタイム」タブ

「図4-44 パッケージをエクスポートした後のマニフェスト・エディタの 「ランタイム」タブ」の説明

7. すべてのファイルを保存するには、[CTRL]-[SHIFT]-[S]キーを押します。

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

オプションで、バンドルでJARからパッケージをインポートする必要がある場合、このパッケージをインポートできます。そうすると、パッケージのOSGiインポータを作成するためのPackage-Import MANIFESTエントリが更新されます。

パッケージをインポートするには、次の手順を実行します。

1. Oracle CEP IDE for Eclipse内で、図4-45に表示されているように、META-INFディレクトリを展開します。

図4-45 Oracle CEP IDE for Eclipse libディレクトリ

「図4-45 Oracle CEP IDE for Eclipseのlibディレクトリ」の説明

2. MANIFEST.MFファイルを右クリックし、次で開く>プラグイン・マニフェストエディタを選択します。
図4-46に表示されているように、マニフェスト・エディタが開きます。

図4-46 マニフェスト・エディタ:「依存関係」タブ

「図4-46 マニフェスト・エディタ:「依存関係」タブ」の説明

3. 「依存関係」タブをクリックします。
図4-46に示すように、「依存関係」タブが表示されます。

4. インポート・パッケージ領域で、「追加」ボタンをクリックします。
図4-47に表示されているように、パッケージの選択ダイアログが表示されます。

図4-47 パッケージの選択ダイアログ

「図4-47 パッケージ選択ダイアログ」の説明

5. インポートするパッケージを選択します。
名前でリスト内のパッケージを検索するには、テキスト・フィールドに名前を入力します。

この例では、javax.jws.soapパッケージを選択します。

6. 「OK」をクリックします。
図4-48に表示されているように、選択したパッケージがインポート・パッケージ領域に追加されます。

図4-48 パッケージをインポートした後のマニフェスト・エディタの 「依存関係」タブ

「図4-48 パッケージをインポートした後のマニフェスト・エディタの 「依存関係」タブ」の説明

7. すべてのファイルを保存するには、[CTRL]-[SHIFT]-[S]キーを押します。

4.8 Oracle CEP IDE for Eclipseプリファレンスの構成

ニーズにあわせてOracle CEP IDE for Eclipseをカスタマイズするように、様々なプリファレンスを構成できます。それには、次のような構成が含まれます。

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

- 4.8.2項「問題の重大度プリファレンスの構成方法」

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

Oracle CEPランタイムを拡張するアプリケーション・ライブラリを含むOracle CEPサーバー・ドメイン・ディレクトリへのパスを定義できます。

24.3.1項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリ・ディレクトリの定義方法」

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

Oracle CEP IDE for EclipseがOracle CEPプロジェクトおよびアプリケーションで検出する様々な問題に重大度を割り当てられます。

個別のプロジェクトごとにこれらのプリファレンスを構成するか、または特定ワークスペースのすべてのプロジェクトに対して同じプリファレンスを構成できます。

問題の重大度プリファレンスを構成するには:

1. EPNエディタを開きます(6.1項「EPNエディタを開く」を参照)

2. 「ウィンドウ」>「プリファレンス」を選択します。
図4-49に表示されているように、「プリファレンス」ダイアログが表示されます。

図4-49 「プロパティ」ダイアログ

「図4-49 「プロパティ」ダイアログ」の説明

3. 「Oracle CEPの問題の重大度」を選択します。

4. 構成スコープを選択します。

- ワークスペースのすべてのプロジェクトの問題の重大度を構成するには、「ワークスペース設定の構成」をクリックします。
図4-50に表示されているように、「Oracle CEPの問題の重大度」ダイアログが表示されます。

図4-50 「Oracle CEPの問題の重大度」ダイアログ: ワークスペース

「図4-50 「Oracle CEPの問題の重大度」ダイアログ: ワークスペース」の説明

- 現在のプロジェクトのみの問題の重大度を構成するには、「プロジェクト固有の設定を有効化」をクリックします。
図4-51に表示されているように、「Oracle CEPの問題の重大度」ダイアログが表示されます。

図4-51 「Oracle CEPの問題の重大度」ダイアログ: プロジェクト

「図4-51 「Oracle CEPの問題の重大度」ダイアログ: プロジェクト」の説明

5. 各タイプの問題の重大度を選択します。次のいずれかを選択できます。

- Error: 問題をエラーとして処理します。

- Warning: 問題を警告として処理します。

- Ignore: 問題を無視します。

表4-7は、構成できる各問題領域を説明しています。

表4-7 Oracle CEP問題の重大度

カテゴリ

問題

説明

キャッシュ構成

未解決のキャッシュ・ローダーまたはインタフェース宣言が正しくない解決済のローダー

アセンブリ・ファイルには、各wlevs:cache-loader要素のキャッシュ・ローダー・クラスを識別するbean要素があることを確認し、キャッシュ・ローダー・クラスが適切なインタフェースを実装することを確認します。

詳細は、次を参照してください:

- 12.2.3項「Oracle CEPローカル・キャッシュ・ローダーの構成」

- 12.3.4.1項「Oracle Coherenceキャッシュ・ローダーの構成」

未解決のキャッシュ・ストアまたはインタフェース宣言が正しくない解決済のストア

アセンブリ・ファイルには、各wlevs:cache-store要素のキャッシュ・ストア・クラスを識別するbean要素があることを確認し、キャッシュ・ストア・クラスが適切なインタフェースを実装することを確認します。

詳細は、次を参照してください:

- 12.2.4項「Oracle CEPローカル・キャッシュ・ストアの構成」

- 12.3.4.2項「Oracle Coherenceキャッシュ・ストアの構成」

イベント処理ネットワーク

一致するアセンブリ定義がない構成オブジェクト

EPN構成要素は、名前およびIDそれぞれでアセンブリ定義にリンクされています。構成要素の名前が、同じアプリケーション内のアセンブリ要素とIDが完全に一致していることを確認します。

重複した名前の宣言を持つ構成オブジェクト

Oracle CEP構成ファイルの構成要素は名前で識別されます。アプリケーションで名前が重複する構成要素がないことを確認します。

未解決のイベント・リスナーまたはインタフェース宣言が正しくない解決済のリスナー

イベント処理ネットワークは、ネットワークの要素がアプリケーションの他の要素にイベントをプルまたは送信する方法を定義することによってビルドされます。イベント送信のターゲット、EPNアセンブリ要素でのリスナーの宣言が、送信したイベントの受信に必要なインタフェースを実装します。

未解決のイベント・ソースまたはインタフェース宣言が正しくない解決済のソース

イベント処理ネットワークは、ネットワークの要素がアプリケーションの他の要素にイベントをプルまたは送信する方法を定義することによってビルドされます。イベント・プルのソース、EPNアセンブリ要素でのソースの宣言が、プル・イベントの指定に必要なインタフェースを実装します。

チャネルに構成されている未解決の問合せセレクタ

1つ以上のルールを定義するアップストリームOracle CQLプロセッサのあるチャネルを指定している場合、チャネル・コンポーネント構成ファイルselector要素には、アップストリームOracle CQLプロセッサで定義しているルールの名前のみが含まれることを確認します。

詳細は、D.82項「セレクタ」を参照してください。

外部ステージ(外部アプリケーションで定義されたステージ)への参照

外部ステージへの参照が解決できることを確認します。

詳細は、1.1.1.9項「外部ステージ」を参照してください。

CQLプロセッサに関連付けられていないチャネルの''event-type''宣言なし

アップストリームOracle CQLプロセッサのないチャネルを指定している場合、アセンブリ・ファイルwlevs:channel要素がevent-type属性で構成されていることを確認します。

詳細は、第9章「チャネルの構成」を参照してください。

非推奨のEPN要素

Oracle CEPでは、旧バージョン向けに構築されたアプリケーションとの下位互換性を供給します。アプリケーションの非推奨のXML要素の使用を確認します。

イベント・タイプ・リポジトリ

事前定義済の型でない、または既知のクラスで解決できないイベント・プロパティ・タイプの値

イベント・タイプは、properties要素でダイナミックSpring Beanを使用して定義できます。property値は、サポートされているタイプの固定のセットに制限されます。propertyタイプが許可されたいずれかのタイプであることを確認します。

詳細は、1.1.2項「Oracle CEPイベント・タイプ」を参照してください。

問合せの検証

CQL文の検証で検出した問題

プロセッサ構成のOracle CQL文が現行のアプリケーションで指定しているように正しいことを確認します。プロパティ名、イベント・タイプ、構文、およびOracle CQL参照の他のアセンブリを検証します。

CQL文の検証を阻止する問題

一部の基本的なアプリケーション・エラーでは、Oracle CQL文が検証されません。たとえば、Oracle CQL要件を満たす前に、プロセッサ構成には一致するプロセッサ・アセンブリ定義がある必要があります。プロセッサのOracle CQL文を検証するための最低要件を満たしていることを確認します。

欠落したバインド・パラメータによって直接または間接的に影響を受けるCQL文。

パラメータ化された問合せ。

切断されたプロセッサのCQL文(EPNにアップストリーム・チャネルなし)

すべてのOracle CQLプロセッサがEPNのアップストリーム・ステージに接続していることを確認します。アップストリーム・ステージがない場合、Oracle CQLプロセッサのルールには操作するイベント・ストリームがありません。

6. 「適用」をクリックします。

7. 「OK」をクリックします。

5 Oracle CEP IDE for EclipseおよびOracle CEPサーバー

この章では、イベント駆動型アプリケーションを開発およびデバッグするOracle CEPサーバーを作成および管理するためにOracle Complex Event Processing (Oracle CEP) IDE for Eclipseを使用する方法について説明します。

この章では次について説明します:

- 5.1項「Oracle CEPサーバーの概要」

- 5.2項「Oracle CEPサーバーの作成」

- 5.3項「Oracle CEPサーバーの管理」

- 5.4項「Oracle CEPサーバー上で実行されるOracle CEPアプリケーションのデバッグ」

5.1 Oracle CEPサーバーの概要

Oracle CEP IDE for Eclipseでは、開発中に使用されるOracle CEPサーバーを設定して管理できる機能が提供されます。このツールによって次のことが可能です。

- Oracle CEPサーバーのインスタンスの構成

- 外部Oracle CEPサーバー・インスタンスへのアタッチ

- 開始コマンド、停止コマンドおよびデバッグ・コマンドによるOracle CEPサーバー・ライフサイクルの管理

- 開発中におけるアプリケーションのOracle CEPサーバーへの関連付けおよびデプロイ

表5-1では、Oracle CEP IDE for Eclipseに使用されるEclipse用語がOracle CEPサーバー用語にマップされます。

表5-1 EclipseおよびOracle CEPサーバーの概念

Eclipse IDEの概念

Oracle CEPサーバーの概念

説明

ランタイム

Oracle CEPサーバーのインストール

Oracle CEP IDE for Eclipseにはランタイムの概念があります。ランタイムでは、Oracle CEP IDE for Eclipseが特定のOracle CEPサーバーのインストールを見つけられる場所が定義されます。この情報は、プロジェクトのクラスパスに追加するJARファイルおよびOSGiバンドルを見つけて、サーバーおよびサーバー・インスタンスを定義するために使用されます。

ランタイムは、それ自体は実行可能アーティファクトではないことに注意してください。

サーバーおよびサーバー・インスタンス

ドメイン

Oracle CEP IDE for Eclipseでは、実際の実行可能なOracle CEPサーバー・インスタンスを表すためにサーバーという用語が使用されます。これに、起動スクリプトを持つものだと考えることができます。たとえば、Oracle CEPサーバーの用語では、これはドメインと同じです。サーバーを設定する場合、このインスタンスを実行するドメインを指定します。

ドメインの詳細は、次を参照してください。

- 詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPスタンドアロン・サーバー・ドメインの管理に関する項を参照してください。

- 詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPスタンドアロン・サーバー・ドメインの管理に関する項を参照してください。

パブリッシュ

デプロイ

通常、Oracle CEP IDE for Eclipseでは、サーバーにアプリケーションを物理的にデプロイする方法を表すために、パブリッシュという用語を使用します。

プロジェクト

アプリケーションまたはデプロイメント

Oracle CEP IDE for Eclipse内のプロジェクトは、OSGiバンドルとしてパッケージされた単一のOracle CEPアプリケーションです。これは、サーバーにデプロイされ、Oracle CEPサーバーのdeployments.xmlファイルに表示されます。

サーバー定義は、Oracle CEP IDE for EclipseからのOracle CEPサーバーの制御の主要概念です。サーバー定義からサーバーを起動または停止できます。プロジェクトをサーバーと関連付けた後、Oracle CEP IDE for Eclipseを使用したまま、サーバーにアプリケーションをパブリッシュ(デプロイ)したり、サーバーからアプリケーションをアンパブリッシュ(アンデプロイ)したりすることができます。詳細は、5.2項「Oracle CEPサーバーの作成」を参照してください。

Oracle CEP IDE for Eclipseで、実行中のOracle CEPサーバーと通信するには、次の方法に従います。

- Oracle CEP IDE for Eclipse内からサーバーを起動します。
この場合、Oracle CEPサーバー・コンソールがOracle CEP IDE for Eclipse内のコンソール・ビューに直接送信されます。Oracle CEPサーバーのすべての機能(起動、停止、パブリッシュ、アンパブリッシュ、デバッグおよびOracle CEP Visualizerの起動など)が使用できます。Oracle CEPサーバー・プロセス自体がOracle CEP IDE for Eclipse内から管理されます。すなわち、Oracle CEP IDE for EclipseからOracle CEPサーバーを停止すると、実際のOracle CEPサーバー・プロセスが終了されます。Oracle CEPサーバーからのコンソール・メッセージがOracle CEP IDE for Eclipseコンソール・ビューに送信されます。

詳細は、次を参照してください:

- 5.3.1項「ローカルOracle CEPサーバーの起動方法」

- 5.3.2項「ローカルOracle CEPサーバーの停止方法」

- 実行中のOracle CEPサーバーにアタッチします。
この場合、ユーザーは、コマンド・ラインからOracle CEPサーバーを起動します。その後、Oracle CEP IDE for Eclipse内のそのサーバーのために「開始」ボタンをクリックします。アタッチするかどうかを尋ねるダイアログが表示されます。ユーザーが「はい」をクリックすると、Oracle CEP IDE for Eclipseがアタッチ・モードに入ります。Oracle CEPサーバーのデバッグ以外のすべての機能を使用できます。しかし、Oracle CEPサーバー・プロセスはOracle CEP IDE for Eclipseでは管理されません。「停止」ボタンをクリックすると、アタッチされたOracle CEPサーバーが切断され、実際のOracle CEPサーバー・プロセスは終了されません。Oracle CEPサーバーからのコンソール・メッセージがOracle CEPサーバー・コンソール(これが実行されているターミナル・ウィンドウへの標準出力)に送信されます。Oracle CEP IDE for Eclipseでは、コンソール・ビューで限られた範囲でOracle CEP IDE for Eclipse操作メッセージが表示されます。

詳細は、次を参照してください:

- 5.3.3項「既存のローカルOracle CEPサーバー・インスタンスにアタッチする方法」

- 5.3.5項「既存のOracle CEPサーバー・インスタンスからデタッチする方法」

5.2 Oracle CEPサーバーの作成

サーバーを作成すると、Oracle CEP IDE for Eclipse内からサーバー・インスタンスを起動および停止できます。また、サーバーにアプリケーションを自動的にデプロイできます。

ローカルまたはリモートOracle CEPサーバーを作成できます。

- ローカル・サーバー: ローカルOracle CEPサーバーでは、サーバーおよびサーバー・ランタイムの両方が同じホスト上にあります。

- リモート・サーバー: リモートOracle CEPサーバーでは、サーバーおよびサーバー・ランタイムが別々のホスト上にあります。サーバーはリモート・ホスト上にあり、サーバー・ランタイムはローカル・ホスト(Oracle CEP IDE for Eclipseを実行するホスト)にあります。

この項では次について説明します:

- 5.2.1項 「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

- 5.2.2項 「リモートOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

- 5.2.3項 「Oracle CEPサーバー・ランタイムの作成方法」

5.2.1 ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法

この項では、ローカル・サーバーおよびサーバー・ランタイムの両方を作成する方法について説明しています。初期サーバーおよびサーバー・ランタイムを作成した後、追加のサーバー・ランタイムを作成できます。

ローカルOracle CEPサーバーでは、サーバーおよびサーバー・ランタイムの両方が同じホスト上にあります。または、リモート・サーバーおよびサーバー・ランタイムを作成できます。

注意:

Eclipseで作成しているサーバーが構成ウィザードを使用したドメインから作成したものである場合、Eclipseプロジェクトにサーバーを追加する前に、必ずコマンドラインからサーバーを実行してください。そうすることにより、すべてのサーバー・アーティファクトが作成されたことが保証されます。また、Eclipseの新規サーバー・ウィザードでドメイン構成情報を指定する際に、必ず「詳細」タブをクリックして、ドメインの作成時に使用するユーザー名およびパスワードを指定してください。

コマンドラインからサーバーを実行する場合の詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のスタンドアロン・サーバー・ドメインでのOracle CEPサーバーの起動および停止に関する項を参照してください。

詳細は、次を参照してください:

- 5.2.3項 「Oracle CEPサーバー・ランタイムの作成方法」

- 5.2.2項 「リモートOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

ローカルOracle CEPサーバーおよびサーバー・ランタイムを作成するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図5-1に示すように、「サーバー」ビューが表示されます。

図5-1 Oracle CEP IDE for Eclipseのサーバー・ビュー

「図5-1 Oracle CEP IDE for Eclipseのサーバー・ビュー」の説明

2. 「サーバー」ビュー・ペインで右クリックして、「新規」>「サーバー」を選択します。

3. サーバー・ランタイムが作成されているかどうかを検討してください。

1. Oracle CEPサーバーを初めて作成する場合、インストールされたサーバー・ランタイムがありません。ステップ4に進みます。

2. Oracle CEPサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。ステップ5に進みます。

4. Oracle CEPサーバーを初めて作成する場合、インストールされたサーバー・ランタイムがありません。

この場合、図5-2に示すように、新しいサーバー:新しいサーバーの定義ダイアログが表示されます。

図5-2 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)

「図5-2 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)」の説明

次の手順に従い、新しいサーバーを構成します。

1. 表5-2に示すように、ダイアログを構成します。

表5-2 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)の属性

属性

説明

サーバーのホスト名

Oracle CEPサーバーがインストールされたコンピュータのホスト名。

開発の場合、通常、localhostとなります。

サーバー型の選択

Oracle CEPサーバーの型。

この例では、Oracle CEP v11を選択します。

サーバー名

このOracle CEPサーバーの名前。

デフォルト: 「Oracle CEP v11.1」のHOSTNAME

ここでは、HOSTNAMEは、サーバーのホスト名フィールドに入力された値です。

2. 「次へ」をクリックします。
図5-3に示すように、新しいサーバー:新しいOracle CEP v11ランタイムダイアログが表示されます。

図5-3 新しいサーバー:新しいOracle CEP v11.1ランタイムダイアログ

「図5-3 新しいサーバー:新しいOracle CEP v11.1ランタイムダイアログ」の説明

3. 表5-3に示すように、ダイアログを構成します。

表5-3 新しいサーバー:新しいOracle CEP v11ランタイムダイアログの属性

属性

説明

Oracleミドルウェア・ホーム・ディレクトリ

Oracle CEPサーバー・インストール・ディレクトリへの完全修飾パス。これは、サーバーをインストールするとき選択した「ミドルウェア・ホーム」と同じです。

このディレクトリを選択する場合、Oracle CEPディレクトリ自体ではなく、Oracle CEPインストールを含むディレクトリを選択します。たとえば、次を選択します:

C:\OracleCEP

しかし、次は選択しません:

C:\OracleCEP\ocep_11.1

ランタイム・ウィザードでは、適切なOracle CEPインストール・ディレクトリを検索するために、インストールが使用されます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のOracle Fusion Middlewareのディレクトリ構造および概念に関する項を参照してください。

JRE

使用するJRE型。

プルダウン・メニューから使用するJREのタイプを選択するか、またはインストールされたJREのプリファレンスリンクをクリックして、新しいJREを作成します。

必ず、Java 6 JREを選択します。

注意: Oracle CEPサーバーJREは、サーバー・ドメイン・ディレクトリ内のsetDomainEnv.cmdまたはsetDomainEnv.shスクリプトのJAVA_HOME設定で設定されます。

4. ステップ6に進みます。

5. Oracle CEPサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。

この場合、図5-4に示すように、新しいサーバー:新しいサーバーの定義ダイアログが表示されます。

図5-4 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログ

「図5-4 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログ」の説明

表5-4に示すように、ダイアログを構成します。

表5-4 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログの属性

属性

説明

サーバーのホスト名

Oracle CEPサーバーがインストールされたコンピュータのホスト名。

開発の場合、通常、localhostとなります。

サーバー型の選択

Oracle CEPサーバーの型。

この例では、Oracle CEP v11を選択します。

サーバー・ランタイム

プルダウン・メニューからサーバー・ランタイムを選択します。

サーバー・ランタイムを作成または編集するには、インストールされたランタイムをクリックします。詳細は、5.2.3項「Oracle CEPサーバー・ランタイムの作成方法」を参照してください。

6. 「次へ」をクリックします。

図5-5に示すように、新しいサーバー:新しいOracle CEP v11.1サーバーダイアログが表示されます。

図5-5 新しいサーバー:新しいOracle CEP v11.1サーバー

「図5-5 新しいサーバー:新しいOracle CEP v11.1サーバー」の説明

7. 「ローカル・サーバー」を選択します。

8. 「次へ」をクリックします。
図5-6に示すように、新しいサーバー:新しいOracle CEP v11サーバーダイアログが表示されます。

図5-6 ローカル・サーバー用の新しいサーバー:新しいOracle CEP v11サーバーダイアログ

「図5-6 ローカル・サーバー用の新しいサーバー:新しいOracle CEP v11サーバーダイアログ」の説明

9. 「詳細設定」をクリックして、表5-5に示すように、ダイアログを構成します。

表5-5 ローカル・サーバー用の新しいサーバー:新しいOracle CEP v11サーバーダイアログの属性

属性

説明

ドメイン・ディレクトリ

このサーバー用のドメインを含むディレクトリへの完全修飾パス。

「参照」をクリックして、ディレクトリを選択します。

デフォルト: ORACLE-CEP-HOME\user_projects\domains\ocep_domain\defaultserver

起動スクリプト

Oracle CEP IDE for Eclipseにおいて、Oracle CEPサーバーを起動するために使用されるスクリプト。

UNIXのデフォルト: ORACLE-CEP-HOME/user_projects/domains/ocep_domain/defaultserver/startwlevs.sh

Windowsのデフォルト: ORACLE-CEP-HOME\user_projects\domains\ocep_domain\defaultserver\startwlevs.cmd

停止スクリプト

Oracle CEP IDE for Eclipseにおいて、Oracle CEPサーバーを停止するために使用されるスクリプト。

UNIXのデフォルト: ORACLE-CEP-HOME/user_projects/domains/ocep_domain/defaultserver/stopwlevs.sh

Windowsのデフォルト: ORACLE-CEP-HOME\user_projects\domains\ocep_domain\defaultserver\stopwlevs.cmd

デバッグ・ポート

Oracle CEPサーバーをデバッグするときに、Oracle CEP IDE for Eclipseが接続されるOracle CEPサーバー・ポート

デフォルト: 8453

サーバー名

Oracle CEPサーバーの名前。

デフォルト: Oracle CEP v11

ユーザー名

Oracle CEPサーバーにログインするときに、Oracle CEP IDE for Eclipseで使用されるユーザー名。

デフォルト: wlevs。

ユーザー・パスワード

Oracle CEPサーバーにログインするときに、Oracle CEP IDE for Eclipseで使用されるユーザー・パスワード。

デフォルト: wlevs。

自動パブリッシュ

デフォルトでは、アプリケーションを変更するときは、Oracle CEPサーバーに手動で変更をパブリッシュする必要があります。

「ワークスペースのデフォルトを使用」を選択すると、Oracle CEP IDE for Eclipseが構成され、Oracle CEPサーバーに変更が自動的にパブリッシュされます。

デフォルト: 無効

10. 「終了」をクリックします。

11. 「自動パブリッシュ」を「ワークスペースのデフォルトを使用」に構成した場合、「Windows」>「プリファレンス」を選択します。
図5-7に示すように、「プリファレンス」ダイアログが表示されます。

図5-7 「プリファレンス」-「サーバー」

「図5-7 「プリファレンス」-「サーバー」」の説明

12. 「サーバー」オプションを選択します。

13. 自動パブリッシュ・オプションを構成します。

- ローカル・サーバーに自動パブリッシュ: 必要に応じて、このオプションを有効または無効にします。
デフォルト: 有効。

- パブリッシュ間隔: Oracle CEP IDE for Eclipseがサーバーに変更をパブリッシュする頻度(秒)を構成します。
デフォルト: 60秒。

- リモート・サーバーに自動パブリッシュ: 必要に応じて、このオプションを有効または無効にします。
デフォルト: 有効。

- パブリッシュ間隔: Oracle CEP IDE for Eclipseがサーバーに変更をパブリッシュする頻度(秒)を構成します。
デフォルト: 60秒。

14. 「OK」をクリックします。

5.2.2 リモートOracle CEPサーバーおよびサーバー・ランタイムの作成方法

この項では、リモート・サーバーおよびサーバー・ランタイムの両方を作成する方法について説明しています。初期サーバーおよびサーバー・ランタイムを作成した後、追加のサーバー・ランタイムを作成できます。

リモートOracle CEPサーバーでは、サーバーおよびサーバー・ランタイムが別々のホスト上にあります。サーバーはリモート・ホスト上にあり、サーバー・ランタイムはローカル・ホスト(Oracle CEP IDE for Eclipseを実行するホスト)にあります。

または、ローカル・サーバーおよびサーバー・ランタイムを作成できます。

詳細は、次を参照してください:

- 5.2.3項 「Oracle CEPサーバー・ランタイムの作成方法」

- 5.2.1項 「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

リモートOracle CEPサーバーおよびサーバー・ランタイムを作成するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図5-1に示すように、「サーバー」ビューが表示されます。

図5-8 Oracle CEP IDE for Eclipseのサーバー・ビュー

「図5-8 Oracle CEP IDE for Eclipseのサーバー・ビュー」の説明

2. 「サーバー」ビュー・ペインで右クリックして、「新規」>「サーバー」を選択します。

3. サーバー・ランタイムが作成されているかどうかを検討してください。

1. Oracle CEPサーバーを初めて作成する場合、インストールされたサーバー・ランタイムがありません。ステップ4に進みます。

2. Oracle CEPサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。ステップ5に進みます。

4. Oracle CEPサーバーを初めて作成する場合、インストールされたサーバー・ランタイムがありません。

この場合、図5-2に示すように、新しいサーバー:新しいサーバーの定義ダイアログが表示されます。

図5-9 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)

「図5-9 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)」の説明

次の手順に従い、新しいサーバーを構成します。

1. 表5-2に示すように、ダイアログを構成します。

表5-6 新しいサーバー:新しいサーバーの定義ダイアログ(インストールされたランタイムなし)の属性

属性

説明

サーバーのホスト名

Oracle CEPサーバーがインストールされたコンピュータのホスト名。

開発の場合、通常、localhostとなります。

サーバー型の選択

Oracle CEPサーバーの型。

この例では、Oracle CEP v11を選択します。

サーバー名

このOracle CEPサーバーの名前。

デフォルト: 「Oracle CEP v11.1」のHOSTNAME

ここでは、HOSTNAMEは、サーバーのホスト名フィールドに入力された値です。

2. 「次へ」をクリックします。
図5-3に示すように、新しいサーバー:新しいOracle CEP v11ランタイムダイアログが表示されます。

図5-10 新しいサーバー:新しいOracle CEP v11.1ランタイムダイアログ

「図5-10 新しいサーバー:新しいOracle CEP v11.1ランタイムダイアログ」の説明

3. 表5-3に示すように、ダイアログを構成します。

表5-7 新しいサーバー:新しいOracle CEP v11ランタイムダイアログの属性

属性

説明

Oracleミドルウェア・ホーム・ディレクトリ

Oracle CEPサーバー・インストール・ディレクトリへの完全修飾パス。これは、サーバーをインストールするとき選択した「ミドルウェア・ホーム」と同じです。

このディレクトリを選択する場合、Oracle CEPディレクトリ自体ではなく、Oracle CEPインストールを含むディレクトリを選択します。たとえば、次を選択します:

C:\OracleCEP

しかし、次は選択しません:

C:\OracleCEP\ocep_11.1

ランタイム・ウィザードでは、適切なOracle CEPインストール・ディレクトリを検索するために、インストールが使用されます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のOracle Fusion Middlewareのディレクトリ構造および概念に関する項を参照してください。

JRE

使用するJRE型。

プルダウン・メニューから使用するJREのタイプを選択するか、またはインストールされたJREのプリファレンスリンクをクリックして、新しいJREを作成します。

必ず、Java 6 JREを選択します。

注意: Oracle CEPサーバーJREは、サーバー・ドメイン・ディレクトリ内のsetDomainEnv.cmdまたはsetDomainEnv.shスクリプトのJAVA_HOME設定で設定されます。

4. ステップ6に進みます。

5. Oracle CEPサーバーを作成するのが初めてではない場合、1つ以上のインストールされたサーバー・ランタイムがあります。

この場合、図5-4に示すように、新しいサーバー:新しいサーバーの定義ダイアログが表示されます。

図5-11 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログ

「図5-11 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログ」の説明

次の手順に従い、新しいサーバーを構成します。

表5-8 新しいサーバー:新しいサーバーの定義(インストールされたランタイムあり)ダイアログの属性

属性

説明

サーバーのホスト名

Oracle CEPサーバーがインストールされたコンピュータのホスト名。

開発の場合、通常、localhostとなります。

サーバー型の選択

Oracle CEPサーバーの型。

この例では、Oracle CEP v11を選択します。

サーバー・ランタイム

プルダウン・メニューからサーバー・ランタイムを選択します。

サーバー・ランタイムを作成または編集するには、インストールされたランタイムをクリックします。詳細は、5.2.3項「Oracle CEPサーバー・ランタイムの作成方法」を参照してください。

6. 「次へ」をクリックします。

図5-5に示すように、新しいサーバー:新しいOracle CEP v11.1サーバーダイアログが表示されます。

図5-12 新しいサーバー:新しいOracle CEP v11.1サーバー

「図5-12 新しいサーバー:新しいOracle CEP v11.1サーバー」の説明

7. 「リモート・サーバー」を選択します。

8. 「次へ」をクリックします。
図5-13に示すように、新しいサーバー:新しいOracle CEP v11サーバーダイアログが表示されます。

図5-13 リモート・サーバー用の新しいサーバー:新しいOracle CEP v11サーバーダイアログ

「図5-13 リモート・サーバー用の新しいサーバー:新しいOracle CEP v11サーバーダイアログ」の説明

9. 表5-9に示すように、ダイアログを構成します。

表5-9 ローカル・サーバー用の新しいサーバー:新しいOracle CEP v11サーバーダイアログの属性

属性

説明

リモート・サーバーのIPアドレス

リモートOracle CEPサーバーのIPアドレス。

デフォルト: ローカルホストのIPアドレス

リモート・サーバーのポート

Oracle CEPドメインを表す、リモートOracle CEPサーバーDOMAIN_DIR/config/config.xmlファイルに指定されたポート。DOMAIN_DIRはドメイン・ディレクトリを示します。

ポート番号は、Netio要素のポート子要素の値です。

<Netio>
<Name>NetIO</Name>
<Port>9002</Port>
</Netio>

デフォルト: 9002

ユーザー名

Oracle CEP IDE for Eclipseで、リモート・サーバーにログインするために使用されるユーザー名。

デフォルト: wlevs

ユーザー・パスワード

Oracle CEP IDE for Eclipseで、リモート・サーバーにログインするために使用されるパスワード。

デフォルト: wlevs

10. 「終了」をクリックします。

5.2.3 Oracle CEPサーバー・ランタイムの作成方法

サーバーを作成する前に、ランタイム・ウィザードを使用してサーバー・ランタイムを作成することで、Oracle CEPサーバー・インストールの場所にOracle CEP IDE for Eclipseを構成する必要があります。新しいサーバー・ウィザード、新しいプロジェクト・ウィザード、ワークスペース・プリファレンス・ダイアログなどの数箇所からランタイム・ウィザードにアクセスできます。

Oracle CEPサーバーがまだ作成されていない場合、ランタイムを明示的に作成することのみが必要です。

詳細は、次を参照してください:

- 5.2.1項 「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

- 5.2.2項 「リモートOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

Oracle CEPサーバー・ランタイムを作成するには:

1. 「Windows」>「プリファレンス」を選択します。
図5-14に示すように、「プリファレンス」ダイアログが表示されます。

図5-14 「プリファレンス」-「サーバー」(インストールされたランタイム)

「図5-14 「プリファレンス」-「サーバー」(インストールされたランタイム)」の説明

2. 「サーバー」オプションを展開して、ランタイム環境を選択します。

3. 「追加」をクリックします。
図5-15に示すように、新しいサーバー・ランタイム環境ダイアログが表示されます。

図5-15 新しいサーバー・ランタイム環境ダイアログ

「図5-15 新しいサーバー・ランタイム環境ダイアログ」の説明

4. 表5-10に示すように、ダイアログを構成します。

表5-10 新しいサーバー・ランタイムダイアログの属性

属性

説明

ランタイム環境のタイプの選択

Oracle CEPサーバーの型。

この例では、「Oracle CEP v11.1」を選択します。

新しいローカル・サーバーの作成

オプションで、サーバーがまだ作成されていない場合、これをチェックして新しいローカル・サーバーを作成します。詳細は、5.2.1項「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

5. 「次へ」をクリックします。
図5-16に示すように、新しいサーバー・ランタイム環境ダイアログが表示されます。

図5-16 新しいサーバー:新しいOracle CEP v11.1ランタイムダイアログ

「図5-16 新しいサーバー・ランタイム環境:新しいOracle CEP v11.1ランタイムダイアログ」の説明

6. 表5-11に示すように、ダイアログを構成します。

表5-11 新しいサーバー・ランタイムダイアログの属性

属性

説明

Oracleミドルウェア・ホーム・ディレクトリ

Oracle CEPサーバー・インストール・ディレクトリへの完全修飾パス。これは、サーバーをインストールするとき選択した「ミドルウェア・ホーム」と同じです。

このディレクトリを選択する場合、Oracle CEPディレクトリ自体ではなく、Oracle CEPインストールを含むディレクトリを選択します。たとえば、次を選択します:

C:\OracleCEP

しかし、次は選択しません:

C:\OracleCEP\ocep_11.1

ランタイム・ウィザードでは、適切なOracle CEPインストール・ディレクトリを検索するために、インストールが使用されます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のOracle Fusion Middlewareのディレクトリ構造および概念に関する項を参照してください。

JRE

使用するJRE型。

プルダウン・メニューから使用するJREのタイプを選択するか、またはインストールされたJREのプリファレンスリンクをクリックして、新しいJREを作成します。

Oracle CEPインストールとともにインストールされたJRockit JDKまたはJRockit Real Timeを必ず選択します。

7. 「終了」をクリックします。

5.3 Oracle CEPサーバーの管理

Oracle CEP IDE for EclipseおよびOracle CEP IDE for EclipseからアクセスできるOracle CEP Visualizerを使用して、開発中にOracle CEPサーバーの様々な側面を管理できます。

この項では、Oracle CEP IDE for Eclipseから実行できる次のOracle CEPサーバー管理タスクについて説明します。

- 5.3.1項「ローカルOracle CEPサーバーの起動方法」

- 5.3.2項「ローカルOracle CEPサーバーの停止方法」

- 5.3.3項「既存のローカルOracle CEPサーバー・インスタンスにアタッチする方法」

- 5.3.4項「既存のリモートOracle CEPサーバー・インスタンスにアタッチする方法」

- 5.3.5項「既存のOracle CEPサーバー・インスタンスからデタッチする方法」

- 5.3.6項「Oracle CEPサーバーにアプリケーションをデプロイする方法」

- 5.3.7項「Oracle CEPサーバーの接続およびコントロール設定の構成方法」

- 5.3.8項「Oracle CEPサーバーのドメイン(ランタイム)設定の構成方法」

- 5.3.9項「Oracle CEP IDE for EclipseからOracle CEP Visualizerを起動する方法」

5.3.1 ローカルOracle CEPサーバーの起動方法

ローカル・サーバーを作成した後、Oracle CEP IDE for EclipseからOracle CEPサーバーを起動できます。

また、デバッグ・モードで、ローカルOracle CEPサーバーを起動することもできます。

または、コマンド・ラインからローカルOracle CEPサーバーを起動して、Oracle CEP IDE for Eclipseを使用してローカルOracle CEPサーバーへアタッチできます。

詳細は、次を参照してください:

- 5.2.1項 「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

- 5.4.1項「Oracle CEPサーバー上で実行されるOracle CEPアプリケーションのデバッグ方法」

- 5.3.3項「既存のローカルOracle CEPサーバー・インスタンスにアタッチする方法」

ローカルOracle CEPサーバーを起動するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図5-17に示すように、「サーバー」ビューが表示されます。

図5-17 Oracle CEPサーバーの起動

「図5-17 Oracle CEPサーバーの起動」の説明

2. 次のいずれかを選択して、サーバーを起動します。

1. 「サーバー」ビュー・ツール・バーのサーバーの起動アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックし、「開始」を選択します。

サーバーを起動した後、「コンソール」ビューにサーバーからのログ・メッセージが表示されます。

5.3.2 ローカルOracle CEPサーバーの停止方法

Oracle CEP IDE for EclipseからローカルOracle CEPサーバーを起動した後、Oracle CEP IDE for EclipseからOracle CEPサーバーを停止できます。

詳細は、5.3.1項「ローカルOracle CEPサーバーの起動方法」を参照してください。

ローカルOracle CEPサーバーを停止するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図5-18に示すように、「サーバー」ビューが表示されます。

図5-18 Oracle CEPサーバーの停止

「図5-18 Oracle CEPサーバーの停止」の説明

2. 次のいずれかを選択して、サーバーを停止します。

1. 「サーバー」ビュー・ツール・バーのサーバーの停止アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックし、「停止」を選択します。

5.3.3 既存のローカルOracle CEPサーバー・インスタンスにアタッチする方法

ローカル・サーバーを作成した後、コマンド・ラインからローカルOracle CEPサーバーを起動して、すでに稼働しているこの既存ローカルOracle CEPサーバー・インスタンスにOracle CEP IDE for Eclipseをアタッチできます。

または、Oracle CEP IDE for Eclipse内からローカルOracle CEPサーバーを直接起動できます。

詳細は、次を参照してください:

- 5.2.1項 「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

- 5.3.1項「ローカルOracle CEPサーバーの起動方法」

既存のローカルOracle CEPサーバー・インスタンスにアタッチするには:

1. コマンド・ラインからOracle CEPサーバーを起動します。
詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPサーバーの起動および停止に関する項を参照してください。

2. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図5-17に示すように、「サーバー」ビューが表示されます。

図5-19 既存のローカルOracle CEPサーバー・インスタンスへのアタッチ

「図5-19 既存のローカルOracle CEPサーバー・インスタンスへのアタッチ」の説明

3. 次のいずれかを選択して、すでに稼働しているローカル・サーバーにアタッチします。

1. 「サーバー」ビュー・ツール・バーのサーバーの起動アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックし、「開始」を選択します。

図5-20に示すように、「稼働しているCEPサーバーにアタッチしますか」ダイアログが表示されます。

図5-20 「稼働しているCEPサーバーにアタッチしますか」

「図5-20 「稼働しているCEPサーバーにアタッチしますか」」の説明

4. 「はい」をクリックします。
サーバーにアタッチした後、「コンソール」ビューにサーバーからのログ・メッセージは表示されません。

Oracle CEP Visualizerを使用して、サーバー・コンソールを表示できます。詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のコンソール出力の表示方法に関する項を参照してください。

5.3.4 既存のリモートOracle CEPサーバー・インスタンスにアタッチする方法

リモート・サーバーを作成した後、コマンド・ラインからリモートOracle CEPサーバーを起動して、すでに稼働しているこの既存リモートOracle CEPサーバー・インスタンスにOracle CEP IDE for Eclipseをアタッチできます。

詳細は、5.2.2項「リモートOracle CEPサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

既存のリモートOracle CEPサーバー・インスタンスにアタッチするには:

1. コマンド・ラインからリモートOracle CEPサーバーを起動します。
詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPサーバーの起動および停止に関する項を参照してください。

2. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図5-17に示すように、「サーバー」ビューが表示されます。

図5-21 既存のリモートOracle CEPサーバー・インスタンスへのアタッチ

「図5-21 既存のリモートOracle CEPサーバー・インスタンスへのアタッチ」の説明

3. 次のいずれかを選択して、すでに稼働しているリモート・サーバーにアタッチします。

1. 「サーバー」ビュー・ツール・バーのサーバーの起動アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックし、「開始」を選択します。

リモート・サーバーにアタッチした後、Oracle CEP IDE for Eclipseから「コンソール」ビューに、次のような1つのステータス・メッセージが書き込まれます:

[3/23/10 12:32 PM] Attached to remote CEP server at address 10.11.12.13 and port 9002

「コンソール」ビューにはリモート・サーバーからのログ・メッセージは表示されません。

Oracle CEP Visualizerを使用して、サーバー・コンソールを表示できます。詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のコンソール出力の表示方法に関する項を参照してください。

5.3.5 既存のOracle CEPサーバー・インスタンスからデタッチする方法

稼働している既存のOracle CEPサーバー・インスタンスにアタッチした後、Oracle CEPサーバーからデタッチして、これを稼働しているままにできます。

詳細は、次を参照してください:

- 5.3.3項「既存のローカルOracle CEPサーバー・インスタンスにアタッチする方法」

- 5.3.4項「既存のリモートOracle CEPサーバー・インスタンスにアタッチする方法」

既存のOracle CEPサーバー・インスタンスからデタッチするには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図5-18に示すように、「サーバー」ビューが表示されます。

図5-22 Oracle CEPサーバーの停止

「図5-22 Oracle CEPサーバーの停止」の説明

2. 次のいずれかを選択して、サーバーからデタッチします。

1. 「サーバー」ビュー・ツール・バーのサーバーの停止アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックし、「停止」を選択します。

Oracle CEP IDE for EclipseがOracle CEPサーバー・インスタンスからデタッチされます。Oracle CEPサーバー・インスタンスは稼働し続けます。

リモートOracle CEPサーバーからデタッチする場合、Oracle CEP IDE for Eclipseから「コンソール」ビューに、次のようなログ・メッセージが書き込まれます。

[3/23/10 12:47 PM] Server communication stopped

5.3.6 Oracle CEPサーバーにアプリケーションをデプロイする方法

Oracle CEP IDE for Eclipse内のプロジェクトがOracle CEPアプリケーションとして作成され、サーバーにデプロイされます。アプリケーションをデプロイするには、まず、サーバーを定義する必要があります。その後、サーバーにアプリケーションをデプロイするには、アプリケーションをサーバーに追加します。サーバーがすでに起動している場合、またはサーバーが停止していて後で起動する場合、アプリケーションがすぐにデプロイされます。

詳細は、次を参照してください:

- 5.2.1項 「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

- 5.2.2項 「リモートOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

Oracle CEPサーバーにアプリケーションをデプロイするには:

1. Oracle CEPプロジェクト(4.2項「Oracle CEPプロジェクトの作成」を参照)を作成します。

2. サーバー(5.2.1項「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」を参照)を作成します。

3. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。
図5-23に示すように、「サーバー」ビューが表示されます。

図5-23 Oracle CEPサーバーへのプロジェクトの追加

「図5-23 Oracle CEPサーバーへのプロジェクトの追加」の説明

4. 「サーバー」ビューでサーバーを右クリックし、追加と削除を選択します。
図5-24に示すように、追加と削除ダイアログが表示されます。

図5-24 追加と削除

「図5-24 追加と削除ダイアログ」の説明

5. 表5-12に示すように、ダイアログを構成します。

表5-12 追加と削除ダイアログの属性

属性

説明

利用可能

リストから1つ以上のプロジェクトを選択し、「追加」または「すべて追加」をクリックして、プロジェクトを「構成済」リストに移動します。

構成済

リストから1つ以上のプロジェクトを選択し、「削除」またはすべて削除をクリックして、プロジェクトを「使用可能」リストに移動します。

サーバーが起動したら、すぐに変更をパブリッシュします。

このオプションを選択して、変更したプロジェクトをすぐにパブリッシュします。サーバーがすでに稼働している場合のみ適用できます。

6. 「終了」をクリックします。
アプリケーションが追加されると、図5-25に示すように、アプリケーションはサーバーの子として「サーバー」ビューに表示されます。

図5-25 プロジェクトを追加した後のサーバー・ビュー

「図5-25 プロジェクトを追加した後のサーバー・ビュー」の説明

7. Oracle CEPサーバーにアプリケーションをデプロイ(パブリッシュ)するには、追加されたアプリケーションを右クリックし、「強制パブリッシュ」を選択します。

1. Oracle CEPサーバーがスタンドアロン・サーバー・ドメインの一部である場合は、アプリケーションはデプロイされます。

2. Oracle CEPサーバーがマルチサーバー・ドメインの一部である場合、図5-26に示すように、「クラスタ・デプロイメント・グループ名の選択」ダイアログが表示されます。

図5-26 「クラスタ・デプロイメント・グループ名の選択」ダイアログ

「図5-26 「クラスタ・デプロイメント・グループ名の選択」ダイアログ」の説明

アプリケーションをデプロイするクラスタ・デプロイメント・グループを選択して、「OK」をクリックします。

クラスタリングの詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のマルチサーバー・ドメインの概要に関する項を参照してください。

アプリケーションがデプロイ(パブリッシュ)されると、図5-27に示すように、アプリケーションがサーバーの子として「サーバー」ビューに表示されます。

図5-27 プロジェクトをデプロイ(パブリッシュ)した後のサーバー・ビュー

「図5-27 プロジェクトをデプロイ(パブリッシュ)した後のサーバー・ビュー」の説明

5.3.7 Oracle CEPサーバーの接続およびコントロール設定の構成方法

サーバーを作成した後、サーバー概要エディタを使用して、Oracle CEP IDE for EclipseがOracle CEPサーバーとの通信のために使用するすべての重要なサーバー接続およびコントロール設定を構成できます。

詳細は、次を参照してください:

- 5.2.1項 「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

- 5.3.8項「Oracle CEPサーバーのドメイン(ランタイム)設定の構成方法」

Oracle CEPサーバーのために接続およびコントロール設定を構成するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。

2. 「サーバー」ビューで、サーバーをダブルクリックします。
図5-28に示すように、サーバー概要エディタが表示されます。

図5-28 サーバー概要エディタ

「図5-28 サーバー概要エディタ」の説明

3. 表5-13に示すように、サーバー概要エディタを構成します。

表5-13 サーバー概要エディタの属性

属性

説明

サーバー名

このサーバーの名前。有用な識別子としてOracle CEP IDE for Eclipse内でのみ使用されます。

詳細は、5.2.1項「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

ホスト名

サーバーがインストールされたホストの名前。

詳細は、5.2.1項「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

ランタイム環境

このサーバー用に選択した現在インストールされているランタイム。

プルダウン・メニューから、新しいランタイムを選択します。または、「編集」リンクをクリックして、選択したランタイムの構成を変更します。

詳細は、5.2.1項「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

ドメイン・ディレクトリ脚注 1

このサーバー用のドメインを含むディレクトリへの完全修飾パス。

「参照」をクリックして、ディレクトリを選択します。

デフォルト: ORACLE-CEP-HOME\user_projects\domains\ocep_domain\defaultserver

起動スクリプト脚注 1

Oracle CEP IDE for Eclipseにおいて、Oracle CEPサーバーを起動するために使用されるスクリプト。

「参照」をクリックして、起動スクリプトを選択します。

UNIXのデフォルト: ORACLE-CEP-HOME\user_projects\domains\ocep_domain\defaultserver\stopwlevs.sh

Windowsのデフォルト: ORACLE-CEP-HOME\user_projects\domains\ocep_domain\defaultserver\stopwlevs.cmd

停止スクリプト脚注 1

Oracle CEP IDE for Eclipseにおいて、Oracle CEPサーバーを停止するために使用されるスクリプト。

「参照」をクリックして、停止スクリプトを選択します。

UNIXのデフォルト: ORACLE-CEP-HOME\user_projects\domains\ocep_domain\defaultserver\startwlevs.sh

Windowsのデフォルト: ORACLE-CEP-HOME\user_projects\domains\ocep_domain\defaultserver\startwlevs.cmd

デバッグ・ポート脚注 1

Oracle CEPサーバーをデバッグするときに、Oracle CEP IDE for Eclipseが接続されるOracle CEPサーバー・ポート

デフォルト: 8453

リモート・サーバーIPアドレス脚注 2

リモートOracle CEPサーバーのIPアドレス。

デフォルト: ローカルホストのIPアドレス

リモート・サーバー・ポート脚注 2

Oracle CEPドメインを表す、リモートOracle CEPサーバーDOMAIN_DIR/config/config.xmlファイルに指定されたポート。DOMAIN_DIRはドメイン・ディレクトリを示します。

ポート番号は、Netio要素のポート子要素の値です。

<Netio>
<Name>NetIO</Name>
<Port>9002</Port>
</Netio>

デフォルト: 9002

ユーザー名脚注 2

Oracle CEP IDE for Eclipseで、リモート・サーバーにログインするために使用されるユーザー名。

デフォルト: wlevs

ユーザー・パスワード脚注 2

Oracle CEP IDE for Eclipseで、リモート・サーバーにログインするために使用されるパスワード。

デフォルト: wlevs

パブリッシュ

デフォルトでは、アプリケーションを変更するときは、Oracle CEPサーバーに手動で変更をパブリッシュする必要があります。

自動パブリッシュしないを選択して、自動パブリッシュを無効にします。

デフォルト設定のオーバーライドを選択して、デフォルト自動パブリッシュ間隔をオーバーライドします。新しいパブリッシュ間隔(秒)を入力します。

デフォルト: 自動パブリッシュしない

タイムアウト

起動(秒)フィールドに正の整数の秒数を入力して、Oracle CEPサーバーが起動すべき制限時間を指定します。

デフォルト: 150秒

停止(秒)フィールドに正の整数の秒数を入力して、Oracle CEPサーバーが起動すべき制限時間を指定します。

デフォルト: 60秒。

脚注 1  「ローカル・サーバー」をクリックして変更します。リモート・サーバーのランタイムおよびローカル・サーバー両方に適用します。

脚注 2  「リモート・サーバー」をクリックして変更します。リモート・サーバーのみに適用します。

4. 「ファイル」>「保存」を選択します。

5. サーバー概要エディタを閉じます。

5.3.8 Oracle CEPサーバーのドメイン(ランタイム)設定の構成方法

サーバーを作成した後、Oracle CEP IDE for Eclipseを使用して、Oracle CEPサーバーconfig.xmlファイルのOracle CEPサーバー・ドメイン(ランタイム)設定を構成できます。

ローカルOracle CEPサーバーでは、サーバーおよびサーバー・ランタイム両方が同じホスト上にあり、リモートOracle CEPサーバーでは、サーバーおよびサーバー・ランタイムが別々のホスト上にあります。サーバーがリモート・ホスト上にあり、サーバー・ランタイムがローカル・ホスト(Oracle CEP IDE for Eclipseを実行するホスト)上にあります。

ローカルOracle CEPサーバーおよびリモートOracle CEPサーバーのどちらの場合も、ドメイン(ランタイム)設定を構成する場合は、ローカル・ホストのOracle CEPサーバーconfig.xmlのみを変更しています。

また、Oracle CEP IDE for Eclipseを使用して、Oracle CEP IDE for EclipseがOracle CEPサーバーと通信するために使用するすべての重要なサーバー接続およびコントロール設定を構成できます。

実行中のOracle CEPサーバーのconfig.xmlファイルに対して行った変更は、Oracle CEPサーバーを再起動するまで読み取られません。

Oracle CEP Visualizerを使用して実行中のOracle CEPサーバーのconfig.xmlファイルを変更した場合は、変更を保存するとすぐに実行中のOracle CEPサーバーに適用されます。Oracle CEP Visualizerは、Oracle CEPサーバーのconfig.xmlファイルを更新し、このconfig.xmlファイルの現在のファイル・システム・バージョンを現在のメモリー内のバージョンで上書きします。

Oracle CEPサーバーのconfig.xmlファイルを手動で編集して変更した後で、Oracle CEP Visualizerを使用してさらに変更を加えた場合は、手動で編集した変更は、Oracle CEP Visualizerによって上書きされます。

これを回避するには、Oracle CEPサーバーのconfig.xmlファイルを手動で編集する場合は、変更をランタイム構成に読み込むために必ずOracle CEPサーバーを停止してから再起動始し、その後でOracle CEP Visualizerを使用してさらに変更を加えてください。

詳細は、次を参照してください:

- 5.2.1項 「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

- 5.2.2項 「リモートOracle CEPサーバーおよびサーバー・ランタイムの作成方法」

- 5.3.7項「Oracle CEPサーバーの接続およびコントロール設定の構成方法」

- 5.3.9項「Oracle CEP IDE for EclipseからOracle CEP Visualizerを起動する方法」

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPサーバー構成に関する項

Oracle CEPサーバーのドメイン(ランタイム)設定を構成するには:

1. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。

2. 「サーバー」ビューで、サーバーを右クリックして、図5-29に示すように、「ドメイン構成ファイルを開く」を選択します。

図5-29 ドメイン構成ファイルの編集

「図5-29 ドメイン構成ファイルの編集」の説明

図5-30に示すように、Oracle CEPサーバー・ドメイン構成ファイルconfig.xmlが開きます。

図5-30 Oracle CEPドメイン構成ファイルconfig.xml

「図5-30 Oracle CEPドメイン構成ファイルconfig.xml」の説明

3. 必要に応じて、ドメイン構成ファイルを編集します。

4. 「ファイル」>「保存」を選択します。

5. ドメイン構成ファイルを閉じます。

5.3.9 Oracle CEP IDE for EclipseからOracle CEP Visualizerを起動する方法

サーバーを作成した後、Oracle CEP IDE for EclipseからOracle CEP Visualizerを起動できます。

Oracle CEP Visualizerは、稼働しているOracle CEPサーバーの管理コンソールです。詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』を参照してください。

詳細は、5.2.1項「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

注意:

Oracle CEP Visualizerを使用してOracle CEPサーバーのconfig.xmlを変更(たとえばデータ・ソースを編集)した場合、config.xmlファイルを手動で変更した内容を上書きしてしまう場合があります。詳細は、5.3.8項「Oracle CEPサーバーのドメイン(ランタイム)設定の構成方法」を参照してください。

Oracle CEP IDE for EclipseからOracle CEP Visualizerを起動するには:

1. サーバー(5.3.1項「ローカルOracle CEPサーバーの起動方法」を参照)を起動します。

2. 「サーバー」ビューで、稼働しているサーバーを右クリックして、図5-31に示すように、「CEP Visualizerを開く」を選択します。

図5-31 Oracle CEP Visualizerの開始

「図5-31 Oracle CEP Visualizerの開始」の説明

図5-32に示すように、Oracle CEP Visualizerが開きます。

図5-32 Oracle CEP Visualizer

「図5-32 Oracle CEP Visualizer」の説明

3. 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』の説明に従って、Oracle CEP Visualizerを使用します。

5.4 Oracle CEPサーバー上で実行されているOracle CEPアプリケーションのデバッグ

Oracle CEPアプリケーションはJavaアプリケーションであるため、このアプリケーションでは、Eclipseで提供されるツールを含む標準のJavaデバッグ・ツールを使用できます。

この項では次について説明します:

- 5.4.1項「Oracle CEPサーバー上で実行されるOracle CEPアプリケーションのデバッグ方法」

また、ロード・ジェネレータおよびcsvgenアダプタを使用して、テスト用のデータフィードをシミュレートできます。詳細は、第25章「ロード・ジェネレータおよびcsvgenアダプタによるアプリケーションのテスト」を参照してください。

5.4.1 Oracle CEPサーバー上で実行されるOracle CEPアプリケーションのデバッグ方法

この項では、Oracle CEPサーバー上で実行されるOracle CEPアプリケーションのデバッグ方法について説明しています。

Oracle CEPサーバー上で実行されるOracle CEPアプリケーションをデバッグするには:

1. デバッグするJavaコードにブレークポイントを設定します。
この場合、ブレークポイントを設定するには、エディタの余白で右クリックして、図5-33に示すように、ブレークポイントの切替えを選択します。

図5-33 ブレークポイントの設定

「図5-33 ブレークポイントを設定」の説明

2. 「ウィンドウ」>「ビューの表示」>「サーバー」を選択します。

3. 図5-34に示すように、次のいずれかを選択して、サーバーをデバッグ・モードで起動します。

1. 「サーバー」ビュー・ツール・バーでデバッグ・モードでサーバーの起動アイコンをクリックします。

2. 「サーバー」ビューでサーバーを右クリックして、「デバッグ」を選択します。

図5-34 デバッグ・モードでOracle CEPサーバーの起動

「図5-34 デバッグ・モードでOracle CEPサーバーの起動」

4. サーバーが起動し、ブレークポイントに到達するとスレッドが停止されます。
Oracle CEP IDE for Eclipseが自動的にデバッグ・パースペクティブに切り替わらない場合、パースペクティブに切り替えるには、「ウィンドウ」>パースペクティブを開く > 「その他」を選択して、パースペクティブのリストから「デバッグ」オプションを選択します。

5. デバッグ・パースペクティブを使用して、アプリケーションをデバッグします。

注意:

場合によっては、行番号の情報が欠落しているためにブレークポイントのインストールに失敗したことを示す警告のダイアログ・ボックスが表示される場合があります。このダイアログはコアEclipseデバッガから出され、通常Oracle CEPサービス・エンジン・アプリケーションにおいては問題ありません。再び確認しないチェック・ボックスを選択して、デバッグを続行します。

6. デバッグを完了したら、通常どおりにサーバーを停止できます(5.3.2項「ローカルOracle CEPサーバーの停止」を参照)。

6 Oracle CEP IDE for Eclipseおよびイベント処理ネットワーク

この章では、アプリケーション・コンポーネントを接続するイベント処理ネットワーク(EPN)を開発するためにOracle Complex Event Processing (Oracle CEP) IDE for Eclipseを使用する方法について説明します。EPNエディタでは、EPNのグラフィカル・ビューを提供し、Oracle CEPアプリケーションの作成に役立つ視覚化とナビゲーションの機能を提供します。

この項では、次のようなエディタおよびエディタに表示される情報を使用する方法を説明します。

- 6.1項「EPNエディタを開く」

- 6.2項「EPNエディタの概要」

- 6.3項「EPNエディタのナビゲート」

- 6.4項「EPNエディタの使用」

6.1 EPNエディタを開く

EPNエディタは、Oracle CEPアプリケーションのプロジェクト・フォルダ、コンテキストまたは構成ファイルから開くことができます。

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

Oracle CEPアプリケーションのEclipseプロジェクト・フォルダからEPNエディタを開くことができます。また、EPNエディタは、コンテキストまたは構成ファイルからも開くことができます(6.1.2項「コンテキストまたは構成ファイルからEPNエディタを開く方法」を参照)。

プロジェクトからEPNエディタを開くには:

1. Oracle CEP IDE for Eclipseを起動します。

2. 「プロジェクト・エクスプローラ」でOracle CEPプロジェクトを開きます。

3. 図6-1に示すように、プロジェクト・フォルダを右クリックして、「EPNエディタを開く」を選択します。

図6-1 プロジェクトからEPNエディタを開く

「図6-1 プロジェクトからEPNエディタを開く」の説明

図6-2に示すように、EPNエディタはEPN:PROJECT-NAMEというタブで開きます。PROJECT-NAMEは、Oracle CEPプロジェクトの名前です。

図6-2 EPNエディタ

「図6-2 EPNエディタ」の説明

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

EPNエディタは、Oracle CEPアプリケーションのSpringコンテキスト・ファイルまたはOracle CEPサーバー構成ファイルから開くことができます。また、コンテキストまたは構成ファイルからEPNエディタを開くこともできます(詳細は、6.1.1項「プロジェクト・フォルダからEPNエディタを開く方法」を参照)。

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

1. Oracle CEP IDE for Eclipseを起動します。

2. 「プロジェクト・エクスプローラ」でOracle CEPプロジェクトを開きます。

3. 図6-3に示すように、コンテキストまたは構成ファイルを右クリックして、「EPNエディタを開く」を選択します。

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

「図6-3コンテキストまたは構成ファイルからEPNエディタを開く」の説明

図6-4に示すように、EPNエディタはEPN:PROJECT-NAMEというタブで開きます。PROJECT-NAMEは、Oracle CEPプロジェクトの名前です。

図6-4 EPNエディタ

「図6-4 EPNエディタ」の説明

6.2 EPNエディタの概要

この項では、EPNの表示を管理するために使用する主なコントロールおよびEPNエディタでのOracle CEPアプリケーションの情報の表示方法について説明します。次の項が含まれます。

- 6.2.1項「フロー表現」

- 6.2.2項「フィルタ処理」

- 6.2.3項「ズーム」

- 6.2.4項「レイアウト」

- 6.2.5項「接続されていないBeanの表示と非表示」

- 6.2.6項「印刷およびイメージへのエクスポート」

- 6.2.7項「構成のバッジング」

- 6.2.8項「リンク指定場所のインジケータ」

- 6.2.9項「ネストされたステージ」

- 6.2.10項「イベント・タイプ・リポジトリ・エディタ」

6.2.1 フロー表現

図6-5に示すように、エディタのプライマリ表示ではアプリケーション内のフローが表示されます。

図6-5 EPNのフロー表現

「図6-5 EPNのフロー表現」の説明

EPNは、リンクおよびストリームで接続されたノードで構成されます。アダプタ、プロセッサ、データベース表、Bean、およびキャッシュなど様々なタイプのノードがあります。EPNエディタによってノード、リンク、およびストリムで使用されるグラフィック表記法の詳細は、次の項を参照してください。

- 6.2.7項「構成のバッジング」

- 6.2.8項「リンク指定場所のインジケータ」

6.2.2 フィルタ処理

通常、EPNは1つのアセンブリ・ファイルに指定しますが、複数のアセンブリ・ファイルにもEPNを指定できます。

デフォルトでは、EPNエディタは単一Oracle CEPアプリケーション・バンドルのEPNとともにすべてのファイルから収集した情報を表示します。

単一アセンブリ・ファイルのネットワークを表示するには、図6-6に示すように、「フィルタ」プルダウン・メニューからそのファイルを選択します。

図6-6 アセンブリ・ファイルによるEPNのフィルタ処理

「図6-6 アセンブリ・ファイルによるEPNのフィルタ処理」の説明

EPNを編集する場合、EPNエディタのフィルタに示されるアセンブリ・ファイルに新規ノードが追加されます。EPNエディタのフィルタが「EPN全体」に設定される場合、フィルタ・リストの最初のアセンブリ・ファイルに新規ノードが追加されます。既存のノードは、それが定義されているアセンブリ・ファイルで編集されるかまたは削除されます。

EPNエディタで編集するアセンブリ・ファイルがEclipseソース・エディタで開いている場合、その開いているファイルへの編集内容がエディタに編集されます。この場合は、ディスク上のファイルに変更が反映されるようにするには、開いているエディタの変更を保存する必要があります。

EPNエディタで編集するアセンブリ・ファイルがEclipseソース・エディタで開いていない場合は、編集内容がすぐにディスク上のファイルに反映されます。

詳細は、4.3項「EPNアセンブリ・ファイルの作成」を参照してください。

6.2.3 ズーム

「ズーム」フィールドにパーセント値を入力するか、または図6-7に示すように「ズーム」フィールドのプルダウン・メニューから値を選択して、EPNエディタのズーム・レベルを変更できます。EPNを現在のEPNエディタ・ウィンドウに合せるには、「ウィンドウに合せる」を選択します。

図6-7 ズーム・レベル

「図6-7 ズーム・レベル」の説明

6.2.4 レイアウト

図6-8に示すように、「EPNのレイアウト」をクリックしてEPNのレイアウトを最適化および単純化できます。

図6-8 レイアウトの最適化

「図6-8 レイアウトの最適化」の説明

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

EPNにおいて参照のない<bean>要素をフィルタ処理で除外できます。図6-9に示すように、「接続されていないBeanの表示/非表示」をクリックして、そのBeanの可視性を切り替えることができます。詳細は、6.4.3項「ノードのレイアウト」を参照してください。

図6-9 接続されていないBeanの表示/非表示

「図6-9 接続されていないBeanの表示/非表示」の説明

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

図6-10に示すように、「イメージとしてエクスポート」をクリックして、EPNエディタのビューをイメージ・ファイルにエクスポートできます。イメージを.bmp、.gif、.jpg、または.pngファイルとしてエクスポートできます。

図6-10 EPNをイメージ・ファイルとしてエクスポート

「図6-10 EPNをイメージ・ファイルとしてエクスポート」の説明

図6-11に示すように、「印刷」をクリックしてEPNエディタのビューを印刷できます。

図6-11 EPNの印刷

「図6-11 EPNの印刷」の説明

6.2.7 構成のバッジング

図6-12に示すように、META-INF/wlevsディレクトリの1つの構成ファイルに構成情報が格納されているノードの右下にそのことを示すインジケータ付きのバッジが付けられます。

図6-12 構成のバッジング

「図6-12 構成のバッジング」の説明

このバッジがついたノードには、「構成のソースに移動」コンテキスト・メニュー項目もあります。

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

ストリームを使用している場合、アセンブリ・ファイルにリンクを次として指定できます:

- ダウンストリーム・ノードのソース要素。

- アップストリーム・ノードのリスナー要素。

線上の円は、アセンブリ・ファイルで特定のリンクが指定される場所を表します。

図6-13に示す例では、ダウンストリーム・ノードoutStream上にソース要素としてリンクが指定されているので、outStreamノードの横に円が表示されます。図6-14は、対応するアセンブリ・ファイルを示します。

図6-13 リンク・ソース

「図6-13 リンク・ソース」の説明

図6-14 リンク・ソースのアセンブリ・ファイル

「図6-14 リンク・ソースのアセンブリ・ファイル」の説明

図6-15に示す例では、リンクがアップストリーム・ノードalgoTradingProcessorでリスナー要素として指定されているので、円がalgoTradingProcessorノードの横に表示されます。図6-16は、対応するアセンブリ・ファイルを示します。

図6-15 リンク・リスナー

「図6-15 リンク・リスナー」の説明

図6-16 リンク・リスナーのアセンブリ・ファイル

「図6-16 リンク・リスナーのアセンブリ・ファイル」の説明

6.2.9 ネストされたステージ

親ノード内に子ノードを定義している場合、その子ノードはネストされているノードと言われます。親ノードのみが子ノードをリスナーとして指定できます。ネストされる要素から参照をドラッグできますが、それらの要素へ参照をドラッグできません。詳細は、6.4.2項「ノードの接続」を参照してください。

図6-17に示したEPNを参照してください。例6-1には、このEPNのEPNアセンブリ・ソースを示します。HelloWorldBeanはhelloworldOutputChannel内でネストされていることに注意してください。その結果、これはEPNダイアグラムのボックス内に表示されます。親helloworldOutputChannelのみが、ネストされたBeanをリスナーとして指定できます。

図6-17 ネストされるBeanを含むEPN

「図6-17 ネストされるBeanを含むEPN」の説明

例6-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>

または、図6-18に示すように、すべてのノードがネストされるようにこのEPNを定義できます。例6-2には、このEPNのEPNアセンブリ・ソースを示します。すべてのノードがネストされているので、EPNダイアグラムではすべてのノードがボックス内に表示されます。helloworldAdapterは、最外部の親ノードであり、EPNダイアグラムではボックス内に表示されません。

図6-18 すべてのノードがネストされたEPN

「図6-18 すべてのノードがネストされたEPN」の説明

例6-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>

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

イベント・タイプ・リポジトリ・エディタを使用して、JavaBeanおよびタプル・イベント・タイプを作成および編集できます。

イベント・タイプ・リポジトリ・エディタを開くには、図6-19に示されているように、EPNエディタで「 イベント・タイプ」タブをクリックします。

図6-19 イベント・タイプ・リポジトリ・エディタ

「図6-19 イベント・タイプ・リポジトリ・エディタ」の説明

詳細は、次を参照してください:

- 2.2.2項「イベント・タイプ・リポジトリ・エディタを使用して、JavaBeanとしてOracle CEPイベント・タイプを作成する方法」

- 2.3.1項「イベント・タイプ・リポジトリ・エディタを使用して、タプルとしてOracle CEPイベント・タイプを作成する方法」

作成できるその他のイベント・タイプの詳細は、1.1.2項「Oracle CEPイベント・タイプ」を参照してください。

6.3 EPNエディタのナビゲート

EPNエディタでは、プロジェクト全体が表示されるので、EPNエディタからOracle CEPアプリケーションを構成する様々なアーティファクトにナビゲートできます。Oracle CEP IDE for Eclipseでは、EPNエディタをナビゲートするのに役立つ次の機能が用意されています。

- 6.3.1項「キャンバスの移動」

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

- 6.3.3項「ハイパーリンク」

- 6.3.4項「コンテキスト・メニュー」

- 6.3.5項「Oracle CEPタイプの参照

6.3.1 キャンバスの移動

水平スクロール・バーおよび垂直スクロール・バーを使用しないでEPNキャンバスを移動するには、次のいずれかのオプションを使用できます。

- キャンバス上にカーソルを置いて、マウスの中ボタンを押しながらマウスをドラッグします。

- 「Space」キーを押しながらキャンバスをクリックしてドラッグします。

- 「概要」ビューで、強調表示されるボックスをクリックしてドラッグします。

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

ノードに関連付けられた構成オブジェクトがある場合、その「ノード」ノードをダブルクリックすると、ノードの動作が定義されているコンポーネント構成ファイルが開きます。

または、「ノード」をダブルクリックすると、そのノードが定義されるEPNアセンブリ・ファイル(Springコンテキスト・ファイル)が開きます。

図6-20に示すように、関連付けられた構成オブジェクトがあるノードの上に構成バッジが表示されます。

図6-20 構成バッジがついたノード

「図6-20 構成バッジがついたノード」の説明

詳細は、次を参照してください:

- 6.2.7項「構成のバッジング」

- 6.3.3項「ハイパーリンク」

6.3.3 ハイパーリンク

コンポーネント構成ファイル、EPNアセンブリ・ファイル、またはOracle CQL文を編集するときに、「Ctrl」キーを押してハイパーリンクを有効にします。ハイパーリンクを使用すると、アセンブリ・ファイルと構成ファイルの間を移動し、参照IDに従ってBeanの実装クラスに簡単に移動できます。

この項では次について説明します:

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

- 6.3.3.2項「Oracle CQL文でのハイパーリンク」

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

図6-21では、「Ctrl」キーを押しながらprocessor要素のname子要素の値の上にカーソルが置いてある構成ファイルを示します。name値にある下線は、ハイパーリンクであることを示します。図6-22に示すように、このリンクをクリックしてEPNアセンブリ・ファイルの対応する要素に移動します。

図6-21 コンポーネント構成ファイル: EPNアセンブリ・ファイルへのハイパーリンク

「図6-21 コンポーネント構成ファイル: EPNアセンブリ・ファイルへのハイパーリンク」の説明

同様に、「Ctrl」キーを押しながらwlevs:processor要素のid子要素の値filterFanoutProcessorにカーソルを合せると、コンポーネント構成ファイルへハイパーリンクが表示されます。

図6-22 EPNアセンブリ・ファイル: コンポーネント構成ファイルへのハイパーリンク

「図6-22 EPNアセンブリ・ファイル: コンポーネント構成ファイルへのハイパーリンク」の説明

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

図6-23では、「Ctrl」キーを押しながらイベント属性の上にカーソルが置いてある構成ファイルを示します。fromRate属性にある下線は、ハイパーリンクであることを示します。図6-24に示すように、このリンクをクリックしてEPNアセンブリ・ファイルの対応するイベント定義に移動します。

注意:

Oracle SQL文でのハイパーリンクは単純な使用を想定していて、より複雑な実装では期待したとおりに動作しない場合があります。

図6-23 Oracle CQL文: イベント・スキーマ

「図6-23 Oracle CQL文: イベント・スキーマ」の説明

図6-24 EPNアセンブリ・ファイルの対応するイベント定義

「図6-24 EPNアセンブリ・ファイルの対応するイベント定義」の説明

同様に、図6-23に示されているように、Oracle CQL文で[Ctrl]キーを押しながらFxQuoteStreamチャネルをクリックしてチャネルの定義に移動できます。これは、外部オブジェクトへの参照がOracle CQL文に存在する場合に有効です。

6.3.4 コンテキスト・メニュー

EPNエディタの各ノードには、ノード固有の機能に簡便にアクセスできるようにするコンテキスト・メニュー項目のグループがあります。「ノード」を右クリックして、そのコンテキスト・メニューを表示します。

ノード・タイプによっては、EPNエディタのコンテキスト・メニューを使用して次のオプションから選択できます。

- 「構成のソースに移動」: 対応するコンポーネント構成ファイルを開いて適切な要素にカーソルを置きます。ハイパーリンクを使用すると、このファイルから対応するEPNアセンブリ・ファイルに素早く移動できます。詳細は、6.3.3項「ハイパーリンク」を参照してください。

- 「アセンブリのソースに移動」: 対応するEPNアセンブリ・ファイルを開いて適切な要素にカーソルを置きます。ハイパーリンクを使用すると、このファイルから対応するコンポーネント構成ファイルに素早く移動できます。詳細は、6.3.3項「ハイパーリンク」を参照してください。

- 「Javaのソースに移動」: このコンポーネントに対応するJavaソース・ファイルを開きます。

- 「削除」: EPNアセンブリ・ファイルとコンポーネント構成ファイル(該当する場合)の両方からコンポーネントを削除します。

- 「名前の変更」: コンポーネントの名前を変更できるようにします。名前がEPNアセンブリ・ファイルとコンポーネント構成ファイル(該当する場合)の両方で更新されます。

- 「ヘルプ」: コンポーネントの文脈に応じたヘルプを表示します。

これらのナビゲーション・オプションは、対応するソース・アーティファクトが見つからない場合は無効になります。たとえば、構成XMLファイルに対応するエントリがないアダプタの場合は、そのアダプタのメニューの「構成のソースに移動」項目がグレー表示になります。

6.3.5 Oracle CEPタイプの参照

通常のOracle CEPプロジェクトには、アダプタ、チャネル、プロセッサ、イベントBeanなど、Oracle CEPタイプの多数のインスタンスが含まれます。大規模で複雑なOracle CEPプロジェクトでは、特定のインスタンスを見つけるのが困難な場合があります。Oracle CEP IDE for Eclipseでは、任意のOracle CEPタイプのインスタンスをすばやく見つけることができるOracle CEPタイプ・ブラウザを用意しています。

6.3.5.1 Oracle CEPタイプの参照方法

キーボード・ショートカットCtrl-Alt-Tを使用して、Oracle CEPタイプ・ブラウザを開きます。

Oracle CEPタイプを参照する手順は次のとおりです。

1. Oracle CEPプロジェクトを開きます。
次の手順では、図6-25に示すOracle CEPプロジェクトを利用します。これは、Oracle CEPのForeign Exchangeの例に基づくものです。この例の詳細は、『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のForeign Exchange (FX)の例に関する項を参照してください。

図6-25 Oracle CEP EPNの例

「図6-25 Oracle CEP EPNの例」の説明

2. キーボード・ショートカットCtrl-Alt-Tを入力します。
図6-26に示すようにOracle CEPタイプ・ブラウザが表示されます。

図6-26 Oracle CEPタイプ・ブラウザ

「図6-26 Oracle CEPタイプ・ブラウザ」の説明

3. 表6-1に示すように、Oracle CEPタイプダイアログを構成します。

表6-1 Oracle CEPタイプダイアログ

属性

説明

開くアイテムの選択

検索するアイテムの名前と一致するフィルタを指定します。

任意の一文字にはワイルドカード?、2文字以上の任意の文字列にはワイルドカード*を使用します。

一致するアイテム

指定したフィルタと一致する名前を持つOracle CEPタイプ・インスタンスのリスト。

デフォルトでは、「一致するアイテム」リストの下のステータスに、「開くアイテムの選択」リストで選択したアイテムへの完全修飾パスが表示されます。ステータス行の表示/非表示を切り替えるには、右端の角にあるプルダウン・メニューをクリックして「Show Status Line」を選択します。

4. 「一致するアイテム」リストでタイプを選択し、「OK OK」をクリックします。
タイプは、そのタイプが定義されたソース・ファイルで開かれます。たとえば、「一致するアイテム」リストからFilterAsiaを選択して「OK OK」をクリックすると、図6-27に示すようにこのプロセッサが定義されたEPNアセンブリ・ファイルcom.oracle.cep.sample.fx.content.xmlが開かれます。

図6-27 EPNアセンブリ・ファイルFilterAsiaを開く

「図6-27 EPNアセンブリ・ファイルFilterAsiaを開く」の説明

図6-28に示されているように、対応するコンポーネント構成ファイルへ移動するには、[Ctrl]キーを押しならがFilterAsiaのid属性値をクリックします。

図6-28 FilterAsiaコンポーネント構成ファイルを開く

「図6-28 FilterAsiaコンポーネント構成ファイルを開く」の説明

詳細は、6.2.3項「ハイパーリンク」を参照してください。

6.4 EPNエディタの使用

EPNエディタを使用すると、エディタの表面でアクションを使用してアプリケーションのEPNを作成および編集できます。EPNエディタで実行したほとんどのアクションによって、そのアプリケーションのアセンブリ・ファイルが編集されます。単一EPNアセンブリ・ファイルを使用するか、または複数のEPNアセンブリ・ファイルを使用できます(詳細は、6.2.2項「フィルタ処理」を参照)。

次の項では、EPNエディタの編集タスクについて説明します。次のタスクが含まれます。

- 6.4.1項「ノードの作成」

- 6.4.2項「ノードの接続」

- 6.4.3項「ノードのレイアウト」

- 6.4.4項「ノード名の変更」

- 6.4.5項「ノードの削除」

詳細は、次を参照してください:

- 4.1項「Oracle CEPプロジェクトの概要」

- 6.2項「EPNエディタの概要」

- 6.1項「EPNエディタを開く」

- 6.3項「EPNエディタのナビゲート」

6.4.1 ノードの作成

EPNエディタを使用してEPNに新しいノードを追加する場合、新規ノードは、EPNエディタでコンテキスト・メニューを表示するためにクリックした場所に表示されます。表6-2にリストされるノードのいずれかを作成できます。

表6-2 EPNエディタのアイコン

ノード

説明

「アダプタ」: イベント・データ・ソースとEPNの間のインタフェースとなる、またイベント・データ・シンクとEPNの間のインタフェースとなるノード。

詳細は、次を参照してください:

- 6.4.1.2項「アダプタ・ノードの作成方法」

- 第7章「JMSアダプタの構成」

- 第8章「HTTPパブリッシュ・サブスクライブ・サーバー・アダプタの構成」

- 第14章「カスタム・アダプタの構成」

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

「チャネル」: イベント・データ・ソースとイベント・データ・シンクの間にイベントを伝達するノードです。

詳細は、次を参照してください:

- 6.4.1.1項「基本ノードの作成方法」

- 第9章「チャネルの構成」

「プロセッサ」: 1つ以上のチャネルによって提供されるイベント・データでOracle CQLルールまたはEPLルールを実行するノード。

詳細は、次を参照してください:

- 6.4.1.3項「プロセッサ・ノードの作成方法」

- 第10章「Oracle CQLプロセッサの構成」

- 第11章「EPLプロセッサの構成」

「イベントBean」: このノードは、Oracle CEP管理フレームワークで管理でき、Oracle CEPサーバー・コンテナの機能を使用できることを除き、標準Spring Beanと同じです。

詳細は、次を参照してください:

- 6.4.1.1項「基本ノードの作成方法」

- 第15章「カスタム・イベントBeanの構成」

「Spring Bean」: イベントを使用するPlain Old Java Object (POJO)ノードです。BeanはSpringフレームワークで管理されます。

詳細は、次を参照してください:

- 6.4.1.1項「基本ノードの作成方法」

- 第16章「カスタムSpring Beanの構成」

「キャッシュ」: イベントを格納する一時記憶域を提供するノード。このノードは、Oracle CEPアプリケーションの全体的なパフォーマンスを改善することを目的として作成されます。

詳細は、次を参照してください:

- 6.4.1.1項「基本ノードの作成方法」

- 第12章「キャッシュの構成」

「表」: リレーショナル・データベース表をイベント・データ・ソースとしてEPNに接続するノード。

詳細は、次を参照してください:

- 6.4.1.1項「基本ノードの作成方法」

- 10.3項「Oracle CQLプロセッサ表ソースの構成」

ユーザーは、EPNエディタでノードを再配置できない場合があります。EPNエディタのノードのレイアウトをリフレッシュするには、EPNエディタ・ツールバーの「EPNのレイアウト」ボタンをクリックします。詳細は、6.4.3項「ノードのレイアウト」を参照してください。

子ノードが親ノード内にネストされている場合、そのアイコンがボックス内に表示されます。詳細は、6.2.9項「ネストされたステージ」を参照してください。

6.4.1.1 基本ノードの作成方法

基本ノードには、Bean、キャッシュ、チャネル、イベントBeanおよび表が含まれます。

その他のノードの作成方法は、6.4.1項「ノードの作成」を参照してください。

基本ノードを作成するには:

1. EPNエディタを開きます(6.1項「EPNエディタを開く」を参照)。

2. 図6-29に示すように、EPNエディタの表面の空の部分を右クリックして、コンテキスト・メニューから「新規」を選択します。

図6-29 基本ノードの作成

「図6-29 基本ノードの作成」の説明

3. 作成するノードのタイプを選択します。
EPNエディタでは、EPNエディタのフィルタに示されるソース・ファイルを編集し、新規EPNノードを表示します。ほとんどのノードの場合は、図6-30に示すように、デフォルトのIDが使用され、名前を変更するように新規ノードがすぐに開かれます。

図6-30 新規基本ノード

「図6-30 新規基本ノード」の説明

ノード名を変更するには、6.4.4項「ノード名の変更」を参照してください。

ノードを再配置して、EPNエディタのレイアウトを更新するには、6.4.3項「ノードのレイアウト」を参照してください。

4. オプションで、追加のノード・オプションを構成します。
参照:

- 第9章「チャネルの構成」

- 10.3項「Oracle CQLプロセッサ表ソースの構成」

- 第12章「キャッシュの構成」

- 第14章「カスタム・アダプタの構成」

- 第15章「カスタム・イベントBeanの構成」

- 第16章「カスタムSpring Beanの構成」

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

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

この項では、次に示すEPNエディタを使用してアダプタを作成する方法について説明します。

- JMSアダプタ(インバウンドまたはアウトバウンド)

- HTTPパブリッシュ・サブスクライブ・サーバー・アダプタ(パブリッシュまたはサブスクライブ)

その他のノードの作成方法は、6.4.1項「ノードの作成」を参照してください。

アダプタ・ノードを作成する手順は次のとおりです。

1. EPNエディタを開きます(6.1項「EPNエディタを開く」を参照)。

2. 図6-31に示すように、EPNエディタの表面の空の部分を右クリックして、コンテキスト・メニューから「新規」を選択します。

図6-31 アダプタ・ノードの作成

「図6-31 アダプタ・ノードの作成」の説明

3. ノード・タイプ「アダプタ」を選択します。
図6-32に示すように、新規アダプタ・ウィザードが表示されます。

図6-32 新規アダプタ・ウィザード

「図6-32 新規アダプタ・ウィザード」の説明

4. 表6-3に示すように、新規アダプタ・ウィザードのページ1を構成します。

表6-3 新規アダプタ・ウィザードのページ1

属性

説明

アダプタID

アダプタのEPN要素のIDおよび関連付けられるアダプタ構成要素の名前を指定します。

プロバイダ

アダプタのプルダウン・メニューから、Oracle CEPコンポーネント構成スキーマですでに定義されているアダプタ・プロバイダ・タイプを選択します。

次の中から1つ選択します。

- jms-inbound: JMSインバウンド・アダプタ。

- jms-outbound: JMSアウトバウンド・アダプタ。

- httppub: パブリッシュ用のHTTPパブリッシュ・サブスクライブ・アダプタ。

- httpsub: サブスクライブ用のHTTPパブリッシュ・サブスクライブ・アダプタ。

クラス

カスタム・アダプタの完全修飾のJavaクラス名を指定します。

注意: カスタム・アダプタ・ファクトリを使用している場合は、手動でwlevs:factory要素を追加する必要があります。詳細は、第14章「カスタム・アダプタの構成」を参照してください。

新規ファイルの作成

新しいファイルにアダプタ・コンポーネント構成を作成します。

アプリケーションのMETA-INF/wlevsディレクトリにアダプタIDと同じ名前の新規ファイルが作成されます。

既存の構成ファイルの使用

既存の構成ファイルにアダプタ・コンポーネント構成を作成します。

新規アダプタ要素が選択したファイルの構成に追加されます。

5. 次に示すようにアダプタの実装をどのように構成したかに応じて進む先が異なります。

1. 「クラス」を選択した場合は、ステップ8に進みます。

2. 「プロバイダ」を選択した場合は、ステップ6に進みます。

6. 「次へ」をクリックします。

プロバイダ固有の新規アダプタ・ウィザードが表示されます。

7. 次の図に示すように、プロバイダ固有の新規アダプタ・ウィザードを構成します。

- 図6-33「新規アダプタ・ウィザード - jms-inbound」
7.6.1項「JMSインバウンド・アダプタのコンポーネント構成」を参照してください。

- 図6-34「新規アダプタ・ウィザード - jms-outbound」
7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」を参照してください。

- 図6-35「新規アダプタ・ウィザード - httppub」
8.5.1項「パブリッシュ用のHTTP Pub-Subアダプタのコンポーネント構成」を参照してください。

- 図6-36「新規アダプタ・ウィザード - httpsub」
8.5.2項「サブスクライブ用のHTTP Pub-Subアダプタのコンポーネント構成」を参照してください。

図6-33 新規アダプタ・ウィザード - jms-inbound

「図6-33 新規アダプタ・ウィザード - jms-inbound」の説明

図6-34 新規アダプタ・ウィザード - jms-outbound

「図6-34 新規アダプタ・ウィザード - jms-outbound」の説明

図6-35 新規アダプタ・ウィザード - httppub

「図6-35 新規アダプタ・ウィザード - httppub」の説明

図6-36 新規アダプタ・ウィザード - httpsub

「図6-36 新規アダプタ・ウィザード - httpsub」の説明

8. 「終了」をクリックします。

9. EPNで新しいアダプタ・ノードを使用します。

EPNエディタでは、新規アダプタ・ウィザードで指定したファイルにアダプタ構成を作成し、エディタのフィルタで示されているソース・ファイルを編集して、図6-37に示すように新規EPNノードを表示します。

図6-37 新規アダプタ・ノード

「図6-37 新規アダプタ・ノード」の説明

ノード名を変更するには、6.4.4項「ノード名の変更」を参照してください。

ノードを再配置して、EPNエディタのレイアウトを更新するには、6.4.3項「ノードのレイアウト」を参照してください。

10. オプションで、追加のノード・オプションを構成します。

詳細は、次を参照してください:

- 第7章「JMSアダプタの構成」

- 第8章「HTTPパブリッシュ・サブスクライブ・サーバー・アダプタの構成」

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

この項では、EPNエディタを使用してプロセッサ・ノードを作成する方法について説明します。他のタイプのノードの作成の詳細は、6.4.1.1項「基本ノードの作成方法」を参照してください。

wlevs:processorノードを使用してOracle CEPアプリケーションをデプロイする場合、プロセッサ構成が存在する場合のみEPNの他のノードがそのプロセッサを参照できます。プロセッサ構成がOracle CEPアプリケーションの構成ファイルで定義されています。CEP構成ファイルの詳細は、1.1.5項「コンポーネント構成ファイル」を参照してください。

プロセッサ・ノードを作成するには:

1. EPNエディタを開きます(6.1項「EPNエディタを開く」を参照)。

2. 図6-38に示すように、EPNエディタの表面の空の部分を右クリックして、コンテキスト・メニューから「新規」を選択します。

図6-38 プロセッサ・ノードの作成

「図6-38 プロセッサ・ノードの作成」の説明

3. ノード・タイプとして「プロセッサ」を選択します。
図6-39に示すように、「新規プロセッサ」ダイアログが表示されます。

図6-39「新規プロセッサ」ダイアログ

「図6-39 「新規プロセッサ」ダイアログ」の説明

4. 表6-4の説明に従って、「新規プロセッサ」ダイアログを構成します。

表6-4 「新規プロセッサ」ダイアログ

属性

説明

プロセッサID

プロセッサのEPN要素のIDおよび関連付けられるプロセッサ構成要素の名前を指定します。

新規ファイルの作成

新規ファイルにプロセッサ構成を作成します。

アプリケーションのMETA-INF/wlevsディレクトリにプロセッサIDと同じ名前の新規ファイルが作成されます。

既存の構成ファイルの使用

既存の構成ファイルにプロセッサ構成を作成します。

新規プロセッサ要素が選択したファイルの構成に追加されます。

5. 「OK」をクリックします。
EPNエディタでは、「新規プロセッサ」ダイアログで指定したファイルにプロセッサ構成を作成し、エディタのフィルタで示されているソース・ファイルを編集して、図6-40に示すように新規EPNノードを表示します。

図6-40 新規プロセッサ・ノード

「図6-40 新規プロセッサ・ノード」の説明

ノード名を変更するには、6.4.4項「ノード名の変更」を参照してください。

ノードを再配置して、EPNエディタのレイアウトを更新するには、6.4.3項「ノードのレイアウト」を参照してください。

注意:

Oracle CEPでは、プッシュ・イベント・ソースをOracle CQLプロセッサに接続して、Oracle CQLプロセッサをイベント・シンクに接続するためにチャネルを使用する必要があります。詳細は、9.1.2項「ストリームおよび関連を表すチャネル」を参照してください。

6. オプションで、追加のプロセッサ・オプションを構成します。
参照:

- 第10章「Oracle CQLプロセッサの構成」

- 第11章「EPLプロセッサの構成」

6.4.2 ノードの接続

EPNのノードは、Oracle CEPアプリケーションのイベント処理ネットワークを介したイベントのフローを表します。ノードがEPNの他のノードにイベントを転送する可能性がある場合、EPNエディタではソース・ノードから宛先ノードへ線を引くことで、そのノードを視覚的に接続できます。

6.4.2.1 ノードを接続する方法

この項では、EPNエディタにおいてノードを接続する方法を説明します。

ノードを接続するには:

1. EPNエディタを開きます(6.1項「EPNエディタを開く」を参照)。

2. イベントのソースを選択して、イベント・フローのターゲットにドラッグします。

- 接続が許可されている場合、図6-41に示すように、ターゲットの最後にプラグ・アイコンが表示されます。

図6-41 ノードの接続: 接続可能

「図6-41 ノードの接続: 接続可能」の説明

- 接続が許可されていない場合、図6-42に示すように、ターゲットの最後に禁止アイコンが表示されます。

図6-42 ノードの接続: 接続禁止

「図6-42 ノードの接続: 接続禁止」の説明

すべてのノードがイベント・フローのターゲットになるとはかぎりません。たとえば、次の場合は接続が禁止されます:

- ノードが有効な識別子を定義していません。

- ノードがネストされています(詳細は、6.2.9項「ネストされたステージ」を参照)。

3. 接続を完了するには、マウスのボタンを解放します。
接続の作成時には、EPNエディタによってEPNアセンブリ・ファイルが更新されます。例:

- アダプタをチャネルに接続するか、またはチャネルをプロセッサやイベントBeanに接続する場合、EPNエディタでは、ターゲット・ノードのIDを参照してソース・ノードにwlevs:listener要素が追加されます。

- 表をプロセッサに接続する場合、EPNエディタでは、ソース表を参照するターゲット・プロセッサ・ノードにwlevs:table-source要素が追加されます。

たとえば、図6-43に示すように、アダプタをチャネルに接続して、チャネルをプロセッサに接続する場合を仮定します。

図6-43 有効な接続

「図6-43 有効な接続」の説明

図6-44では、接続前のEPNアセンブリ・ファイルを示します。

図6-44 EPNアセンブリ・ファイル: 接続前

「図6-44 EPNアセンブリ・ファイル: 接続前」の説明

図6-45では、接続後のEPNアセンブリ・ファイルを示します。

図6-45 EPNアセンブリ・ファイル: 接続後

「図6-45 EPNアセンブリ・ファイル: 接続後」の説明

6.4.3 ノードのレイアウト

EPNエディタのいくつかのアクションでは、アクションの同じ場所に結果が表示されます。たとえば、EPNエディタを使用してEPNに新規ノードを追加する場合、新規ノードは、EPNエディタでコンテキスト・メニューを表示するためにクリックした場所に表示されます。ユーザーは、EPNエディタでノードを再配置できない場合があります。EPNエディタで、ノードのレイアウトをリフレッシュするには、図6-46に示すように、EPNエディタ・ツールバーの「EPNのレイアウト」ボタンをクリックします。

図6-46 ノードのレイアウト

「図6-46 ノードのレイアウト」の説明

詳細は、6.2.4項「レイアウト」を参照してください。

6.4.4 ノード名の変更

ほとんどのノード・タイプでは、名前の変更操作がサポートされます。この操作では、アセンブリと構成XMLファイルの両方においてノードへの参照がすべて変更されます。図6-47に示すように、ノードのコンテキスト・メニューから「名前の変更」を選択します。

図6-47 ノード名の変更

「図6-47 ノード名の変更」の説明

6.4.5 ノードの削除

ノードのコンテキスト・メニューを使用するか、または「削除」キーを使用して、EPNエディタに表示されるほとんどのノードと接続を削除できます。

- キーボードを使用して削除するオブジェクトを選択して、「削除」キーを押します。

- コンテキスト・メニューを使用する場合は、図6-48に示すように、オブジェクトを右クリックしてコンテキスト・メニューを表示してから「削除」を選択します。

図6-48 ノードの削除

「図6-48 ノードの削除」の説明

ノードを削除すると、着信接続および送信接続も削除されます。たとえば、図6-49および図6-51は、それぞれstreamという名前のチャネル・ノードを削除する前のEPNおよびアセンブリ・ファイルを示します。

図6-49 チャネル・ノードの削除前のEPN

「図6-49 チャネル・ノードの削除前のEPN」の説明

図6-50 チャネル・ノードの削除前のアセンブリ・ファイル

「図6-50 チャネル・ノードの削除前のアセンブリ・ファイル」の説明

図6-51では、このチャネル・ノードの削除後のEPNを示し、図6-52では、チャネル・ノードの削除後のアセンブリ・ファイルを示します。

図6-51 チャネル・ノードの削除後のEPN

「図6-51 チャネル・ノードの削除後のEPN」の説明

図6-52 チャネル・ノードの削除後のアセンブリ・ファイル

「図6-52 チャネル・ノードの削除後のアセンブリ・ファイル」の説明

注意:

beanまたは他の匿名要素を削除すると、そのオブジェクトを含むオブジェクトも削除されます。たとえば、beanがwlevs:listener要素内にある場合、beanを削除すると、listener要素も削除されます。

第3部

Oracle CEPイベント処理ネットワークの構築

第3部の章の内容は次のとおりです。

- 第7章「JMSアダプタの構成」

- 第8章「HTTPパブリッシュ・サブスクライブ・サーバー・アダプタの構成」

- 第9章「チャネルの構成」

- 第10章「Oracle CQLプロセッサの構成」

- 第11章「EPLプロセッサの構成」

- 第12章「キャッシュの構成」

- 第13章「イベント・レコードと再生の構成」

7 JMSアダプタの構成

この章では、JMSアダプタを使用して、JMSメッセージを送受信するOracle Complex Event Processing (Oracle CEP)イベント処理ネットワークにJava Message Serviceを接続する方法について説明します。

- 7.1項「JMSアダプタ構成の概要」

- 7.2項「JMSサービス・プロバイダのJMSアダプタの構成」

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

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

- 7.5項「JMSアダプタのEPNアセンブリ・ファイルの構成」

- 7.6項「JMSアダプタのコンポーネント構成ファイルの構成」

7.1 JMSアダプタ構成の概要

Oracle CEP JMSアダプタは、Javaクライアントを提供するJava EE準拠のJMSサービス・プロバイダをサポートします。詳細は、7.1.1項「JMSサービス・プロバイダ」を参照してください。

Oracle CEPでは、Javaコードを記述することなくJMS宛先との間でメッセージを送受信するためにイベント・アプリケーションで使用できる、次のJava Message Service (JMS)アダプタが提供されます。

- 7.1.2項「インバウンドJMSアダプタ」

- 7.1.3項「アウトバウンドJMSアダプタ」

JMSに関する一般情報については、http://java.sun.com/products/jms/でSun Developer NetworkのJava Message Serviceを参照してください。

7.1.1 JMSサービス・プロバイダ

Oracle CEP JMSアダプタは、Javaクライアントを提供するJava EE準拠のJMSサービス・プロバイダをサポートします。

この章では、次のJMSサービス・プロバイダとともに使用するOracle CEP JMSインバウンドおよびアウトバウンド・アダプタの構成方法について説明します。

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

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

ご使用のJMSサービス・プロバイダがこのリストにない場合でも、JMSサービス・プロバイダで使用するOracle CEP JMSアダプタを構成できます。構成モデルとして7.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」の手順を確認し、JMSサービス・プロバイダのドキュメントを参照して、この手順をご使用のJMSサービス・プロバイダに適合するように変更してください。

詳細は、7.2項「JMSサービス・プロバイダのJMSアダプタの構成」を参照してください。

7.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>
...

この項では次について説明します:

- 7.1.2.1項「JMSメッセージとイベント・タイプの間の変換」

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

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

詳細は、次を参照してください:

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

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

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

デフォルトでは、インバウンドJMSアダプタは、次の条件に当てはまる場合にプロパティ名を指定のイベント・タイプと一致させることで、JMSメッセージをイベントに自動的に変換します。

- JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用して、イベント・タイプを指定する必要があります。
JMSアダプタは、着信JMSメッセージをこの要素が指定するOracle CEPイベント・タイプに変換します。

- JMSメッセージは、MapMessageタイプである必要があります。
各着信メッセージについて、指定のイベント・タイプを持つイベントが作成されます。着信メッセージの各マップ要素については、アダプタによってイベント・タイプのプロパティが検索され、見つかった場合は対応する値が設定されます。

オプションで、着信JMSメッセージを1つ以上のイベント・タイプに変換する方法を厳密に指定する独自のJavaクラスを作成することで、JMSメッセージのイベント・タイプへの変換をカスタマイズできます。この場合、JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用して、イベント・タイプを指定しません。

詳細は、7.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

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

デフォルトでは、インバウンドJMSアダプタはシングルスレッドです。つまり、インバウンドJMSアダプタは、シングルスレッドを使用してJMS宛先からメッセージを読み取ります。

インバウンドJMSアダプタがシングルスレッドであると、イベント順序が保証されます。

スケーラビリティを向上させるために、インバウンドJMSアダプタでマルチスレッドを使用してJMS宛先からメッセージを読み取るように構成できます。このように構成する場合、最も簡単な方法はワーク・マネージャを使用してアダプタを構成することです。アダプタだけが使用する専用のワーク・マネージャを指定するか、他のアダプタやJettyなどのいくつかのコンポーネントでワーク・マネージャを共有できます。

インバウンドJMSアダプタがマルチスレッドであると、イベント順序は保証されません。

詳細は、次を参照してください:

- 表7-1「jms-adapterインバウンド子要素」のwork-managerおよびconcurrent-consumers

- 22.2.1項「EventPartitioner」

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

JMSトピックへの恒久サブスクリプション内のクライアントになるように、インバウンドJMSアダプタを構成できます。恒久サブスクリプションでは、アダプタが非アクティブになった場合も、アダプタはパブリッシュされたメッセージを受信することが保証されます。インバウンド・アダプタがJMSサーバーに接続すると、恒久サブスクリプションが登録されます。それ以降にトピックに送信されるメッセージは、サブスクライバが切断されている間も保持され(期限切れではない場合)、再接続すると配信されます。

恒久サブスクリプションは、JMSメッセージをトピックにパブリッシュしているパブリッシャが永続配信モードを使用していることを前提とします。パブリッシャはOracle CEPのアウトバウンドJMSアダプタである(つまりdelivery-modeの値は、デフォルト値のpersistentである必要がある)ことに注意してください。

アダプタに恒久サブスクリプションを作成するには、次を実行します。

- JMSメッセージ・パブリッシャが永続モードでメッセージを配信していることを確認します。

- 接続ファクトリのクライアントIDを指定します。Oracle WebLogic Serverで、管理上、コンソールを使用して接続ファクトリにクライアントIDを設定できます。これは、恒久サブスクライバを使用している各アダプタ・インスタンスに構成された専用の接続ファクトリがあることを意味していることに注意してください。

- jms-adapterの次の3つのプロパティを設定します。

- destination-typeはTOPICに設定する必要があります。

- durable-subscriptionはtrueに設定する必要があります。

- durable-subscription-nameは、サブスクリプション用に一意の識別子に設定します。

これらのプロパティの詳細は、7.6.1項「JMSインバウンド・アダプタのコンポーネント構成」を参照してください。

7.1.3 アウトバウンドJMSアダプタ

アウトバウンドJMSアダプタは、イベントをJMS宛先に送信します。プロパティ名とイベント・タイプを一致させることで、イベントはJMSマップ・メッセージに自動的に変換されます。

通常は、独自のJavaクラスを作成してイベント・タイプを送信JMSメッセージに変換する方法を正確に指定することで、この変換もカスタマイズします。

独自のコンバータ・クラスを指定せずに、メッセージとイベント・タイプの間の変換処理がOracle CEPによって実行されるようにする場合は、次のことが当てはまります。

- JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用して、イベント・タイプを指定する必要があります。
JMSアダプタは、着信JMSメッセージをこの要素が指定するOracle CEPイベント・タイプに変換します。

- デフォルトでは、アウトバウンド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>
...

詳細は、次を参照してください:

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

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

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

この項では、Oracle CEP JMSインバウンドおよびアウトバウンド・アダプタの構成方法を次のような内容で説明します。

- 7.2.1項「Oracle CEP IDE for Eclipseを使用したJMSアダプタの構成方法」

- 7.2.2項「JMSアダプタを手動で構成する方法」

この項では、次のJMSサービス・プロバイダに固有の例を示します。

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

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

ご使用のJMSサービス・プロバイダがこのリストにないが、Javaクライアントを提供している場合は、そのプロバイダで使用するOracle CEP JMSアダプタを構成できます。構成モデルとして7.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」の手順を確認し、JMSサービス・プロバイダのドキュメントを参照して、この手順をご使用のJMSサービス・プロバイダに適合するように変更してください。

詳細は、7.1.1項「JMSサービス・プロバイダ」を参照してください。

注意:

以降の項では、Oracle CEPアプリケーションがEPNアセンブリ・ファイルとコンポーネント構成ファイルを使用してすでに作成済であり、インバウンドまたはアウトバウンドJMSアダプタを使用するようにアプリケーションを更新することを想定しています。そうでない場合、詳細は第1章「Oracle CEPアプリケーションの作成の概要」を参照してください。

7.2.1 Oracle CEP IDE for Eclipseを使用したJMSアダプタの構成方法

JMSアダプタを作成および構成する最も簡単な方法は、Oracle CEP IDE for Eclipseアダプタ・ウィザードを使用することです。

詳細は、6.4.1.2項「アダプタ・ノードの作成方法」を参照してください。

このアダプタ・ウィザードを使用して基本JMSアダプタ構成を作成および指定したら、7.2.2項「JMSアダプタを手動で構成する方法」を確認して構成を完了します。

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

この項では、JMSアダプタを手動で作成および構成する方法について説明します。ご使用のアプリケーションに応じて必要とされる詳細な手順を説明します。

7.2.1項「Oracle CEP IDE for Eclipseを使用したJMSアダプタの構成方法」で説明しているとおり、JMSアダプタを作成および構成する最も簡単な方法はOracle CEP IDE for Eclipseアダプタ・ウィザードを使用することです。このアダプタ・ウィザードを使用して基本JMSアダプタ構成を作成および指定したら、この手順を確認して構成を完了します。

JMSアダプタを手動で構成するには、次の手順を実行します。

1. アプリケーションのEPNアセンブリ・ファイルで、アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにwlevs:adapter要素を追加します。
例7-1は、JMSインバウンド・アダプタのwlevs:adapter要素を示しています。

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

<wlevs:adapter id="inboundJmsAdapter1" provider="jms-inbound">
...
</wlevs:adapter>

参照:

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

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

2. アプリケーションのコンポーネント構成ファイルで、アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにjms-adapter要素を追加します。
例7-2は、例7-1のJMSインバウンド・アダプタのjms-adapter要素を示しています。

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

<jms-adapter>
<name>inboundJmsAdapter1</name>
...
</jms-adapter>

各jms-adapter要素について、name子要素を、対応するwlevs:adapter要素のid子要素に設定する必要があります。

参照:

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

3. JMSメッセージおよびOracle CEPイベント・タイプの間の変換方法を決定します。

1. JMSアダプタで自動変換を行う場合は、JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用してイベント・タイプを指定します。
参照:

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

2. JMSアダプタでカスタム変換を行う場合は、カスタム・コンバータJavaクラスを作成してEPNアセンブリ・ファイルに登録します。
7.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

4. 例7-3のように、JMSプロバイダのjms-adapter要素を構成します。

例7-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 CEP JMSアダプタがサポートするすべてのオプションについては、以下を参照してください。

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

特定のJMSプロバイダのサンプルについては、以下を参照してください。

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

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

詳細は、ご使用のJMSサービス・プロバイダのドキュメントを参照してください。

5. コンポーネント構成ファイルにJMSプロバイダのクライアント・パスワードを指定する場合は、パスワードの暗号化を検討してください。
7.4項「JMSアダプタのコンポーネント構成ファイル内のパスワードの暗号化」を参照してください。

6. 以下の項目を含む、JMSクライアント・アプリケーション・ライブラリを作成します。

- ご使用のJMSサービス・プロバイダが指定するJMSクライアントJARファイル。

- Java Objectメッセージを使用している場合は、メッセージングに使用するJavaクラスをライブラリ・バンドルにパッケージ化する必要があります。
これらのJavaクラスは、このJMSクライアントJARアプリケーション・ライブラリに入れる場合があります。

注意:

このJMSクライアントJARアプリケーション・ライブラリは、次の条件を満たす必要があります。

- すべてのプロバイダ固有のパッケージをエクスポートします。

- (可能な場合)メッセージングに使用するJavaクラスをエクスポートします。

- javax.jmsおよびjavax.namingをインポートします。

アプリケーション・バンドルは、プロバイダ固有のパッケージをエクスポートする必要はありません。

アプリケーション・バンドルは、適用可能な場合、メッセージに使用するJavaクラスをインポートする必要があります。

詳細は、24.1.3.3項「アプリケーション・ライブラリの作成」を参照してください。

特定のJMSプロバイダのサンプルについては、7.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」を参照してください。

7. JMSクライアントJARアプリケーション・ライブラリを該当するOracle CEPサーバー・アプリケーション・ライブラリのディレクトリにコピーします。

1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置く必要があります。
24.1.3.2項「ライブラリ拡張ディレクトリ」を参照してください。

2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。
24.1.3.1「ライブラリ・ディレクトリ」を参照してください。

詳細は、24.3.4項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリの更新方法」を参照してください。

8. ステップ3でカスタム・コンバータ・クラスを作成した場合は、アプリケーションのMANIFEST.MFファイルを更新して、次のパッケージをImport-Packageヘッダーに追加します。

Import-Package: javax.jms,javax.naming, ...
...

4.7.5項「パッケージのインポート方法」を参照してください。

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

Oracle CEPには、WebLogic JMSクライアントが含まれます。

Oracle WebLogicサーバーに接続する際、Oracle CEPはデフォルトでT3クライアントを使用します。

Oracle WebLogic Serverを-useIIOPコマンドライン引数を使用して起動することで、IIOP WebLogicクライアントを使用できます。これは、使用されるJMSコードとは独立した(提供されるアダプタの1つであるか、カスタムJMSコードであるに関係なく)サーバー全体の設定です。

T3とIIOPを実行中のOracle CEPサーバー内で混在させて使用することはできません。

詳細は、7.2項「JMSサービス・プロバイダのJMSアダプタの構成」を参照してください。

Oracle WebLogic Server JMSプロバイダを使用するように、組込みJMSインバウンドおよびアウトバウンド・アダプタを手動で構成できます。

7.2.1項「Oracle CEP IDE for Eclipseを使用したJMSアダプタの構成方法」で説明しているとおり、JMSアダプタを作成および構成する最も簡単な方法はOracle CEP IDE for Eclipseアダプタ・ウィザードを使用することです。このアダプタ・ウィザードを使用して基本JMSアダプタ構成を作成および指定したら、この手順を確認して構成を完了します。

Oracle WebLogic Server JMSのJMSアダプタを手動で構成するには、次の手順を実行します。

1. アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにwlevs:adapter要素を追加して、アプリケーションのEPNアセンブリ・ファイルを更新します。
例7-4は、JMSインバウンド・アダプタのwlevs:adapter要素を示しています。

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

<wlevs:adapter id="inboundJmsAdapter1" provider="jms-inbound">
...
</wlevs:adapter>

参照:

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

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

2. アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにjms-adapter要素を追加することで、アプリケーションのコンポーネント構成ファイルを更新します。
例7-5は、例7-4のJMSインバウンド・アダプタのjms-adapter要素を示しています。

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

<jms-adapter>
<name>inboundJmsAdapter1</name>
...
</jms-adapter>

各jms-adapter要素について、name子要素を、対応するwlevs:adapter要素のid子要素に設定する必要があります。

参照:

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

3. JMSメッセージおよびOracle CEPイベント・タイプの間の変換方法を決定します。

1. JMSアダプタで自動変換を行う場合は、JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用してイベント・タイプを指定します。
参照:

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

2. JMSアダプタでカスタム変換を行う場合は、カスタム・コンバータJavaクラスを作成してEPNアセンブリ・ファイルに登録します。
7.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

4. Oracle WebLogic Server JMSプロバイダのjms-adapter要素を構成します。
例7-6は、JMSインバウンドおよびアウトバウンド・アダプタのjms-adapter要素を示しています。

例7-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>
...

参照:

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

5. コンポーネント構成ファイルにJMSプロバイダのクライアント・パスワードを指定する場合は、パスワードの暗号化を検討してください。
7.4項「JMSアダプタのコンポーネント構成ファイル内のパスワードの暗号化」を参照してください。

6. Java Objectメッセージを使用している場合は、ライブラリ・バンドルにパッケージ化する必要がある、メッセージングに使用するJavaクラスを含んだJMSクライアント・アプリケーション・ライブラリを作成する必要があります。
詳細は、24.1.3.3項「アプリケーション・ライブラリの作成」を参照してください。

注意:

このJMSクライアントJARアプリケーション・ライブラリは、次の条件を満たす必要があります。

- メッセージングに使用するJavaクラスをエクスポートします。

- javax.jmsおよびjavax.namingをインポートします。

アプリケーション・バンドルは、プロバイダ固有のパッケージをエクスポートする必要はありません。

アプリケーション・バンドルは、適用可能な場合、メッセージに使用するJavaクラスをインポートする必要があります。

7. Java Objectメッセージを使用している場合は、メッセージ・アプリケーション・ライブラリのJavaクラスを、該当するOracle CEPサーバー・アプリケーションのディレクトリにコピーします。

1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置く必要があります。
24.1.3.2項「ライブラリ拡張ディレクトリ」を参照してください。

2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。
24.1.3.1「ライブラリ・ディレクトリ」を参照してください。

詳細は、24.3.4項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリの更新方法」を参照してください。

8. ステップ3でカスタム・コンバータ・クラスを作成した場合は、アプリケーションのMANIFEST.MFファイルを更新して、次のパッケージをImport-Packageヘッダーに追加します。

Import-Package: javax.jms,javax.naming, ...
...

4.7.5項「パッケージのインポート方法」を参照してください。

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

Oracle CEPでは、TIBCOエンタープライズ・メッセージ・サービス(EMS)バージョン4.2.0以上をサポートします。

Tibco EMS JMSプロバイダを使用するには、次のTibco EMSクライアントJARファイルをOracle CEPサーバー・ライブラリ・ディレクトリに追加する必要があります。

- tibjms.jar

詳細は、次を参照してください:

- 7.2項「JMSサービス・プロバイダのJMSアダプタの構成」

- 24.1.3.1項「ライブラリ・ディレクトリ」

Tibco EMS JMSプロバイダを使用するように、組込みJMSインバウンドおよびアウトバウンド・アダプタを手動で構成できます。

7.2.1項「Oracle CEP IDE for Eclipseを使用したJMSアダプタの構成方法」で説明しているとおり、JMSアダプタを作成および構成する最も簡単な方法はOracle CEP IDE for Eclipseアダプタ・ウィザードを使用することです。このアダプタ・ウィザードを使用して基本JMSアダプタ構成を作成および指定したら、この手順を確認して構成を完了します。

Tibco EMS JMS用にJMSアダプタを手動で構成するには、次の手順を実行します。

1. アプリケーションのEPNアセンブリ・ファイルで、アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにwlevs:adapter要素を追加します。
例7-7は、JMSインバウンド・アダプタのwlevs:adapter要素を示しています。

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

<wlevs:adapter id="inboundJmsAdapter1" provider="jms-inbound">
...
</wlevs:adapter>

参照:

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

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

2. アプリケーションのコンポーネント構成ファイルで、アプリケーションで使用するインバウンドおよびアウトバウンドJMSアダプタごとにjms-adapter要素を追加します。
例7-8は、例7-7のJMSインバウンド・アダプタのjms-adapter要素を示しています。

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

<jms-adapter>
<name>inboundJmsAdapter1</name>
...
</jms-adapter>

各jms-adapter要素について、name子要素を、対応するwlevs:adapter要素のid子要素に設定する必要があります。

参照:

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

3. JMSメッセージおよびOracle CEPイベント・タイプの間の変換方法を決定します。

1. JMSアダプタで自動変換を行う場合は、JMSアダプタ・コンポーネント構成ファイルでjms-adapter要素のevent-type子要素を使用してイベント・タイプを指定します。
参照:

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

2. JMSアダプタでカスタム変換を行う場合は、カスタム・コンバータJavaクラスを作成してEPNアセンブリ・ファイルに登録します。
7.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

4. 例7-9のように、Tibco EMS JMSプロバイダのjms-adapter要素を構成します。

例7-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など)。

参照:

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

5. コンポーネント構成ファイルにJMSプロバイダのクライアント・パスワードを指定する場合は、パスワードの暗号化を検討してください。
7.4項「JMSアダプタのコンポーネント構成ファイル内のパスワードの暗号化」を参照してください。

6. 以下の項目を含む、JMSクライアント・アプリケーション・ライブラリを作成します。

- tibjms.jar

- Java Objectメッセージを使用している場合は、メッセージングに使用するJavaクラスをライブラリ・バンドルにパッケージ化する必要があります。
これらのJavaクラスは、このJMSクライアント・アプリケーション・ライブラリに入れる場合があります。

注意:

JMSクライアント・アプリケーション・ライブラリは、次の条件を満たす必要があります。

- すべてのプロバイダ固有のパッケージをエクスポートします。

- (可能な場合)メッセージングに使用するJavaクラスをエクスポートします。

- javax.jmsおよびjavax.namingをインポートします。

アプリケーション・バンドルは、プロバイダ固有のパッケージをエクスポートする必要はありません。

アプリケーション・バンドルは、適用可能な場合、メッセージに使用するJavaクラスをインポートする必要があります。

詳細は、24.1.3.3項「アプリケーション・ライブラリの作成」を参照してください。

特定のJMSプロバイダのサンプルについては、7.2.4項「Tibco EMS JMS用にJMSアダプタを手動で構成する方法」を参照してください。

7. アプリケーション・ライブラリを該当するOracle CEPサーバー・アプリケーション・ライブラリのディレクトリにコピーします。

1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置く必要があります。
24.1.3.2項「ライブラリ拡張ディレクトリ」を参照してください。

2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。
24.1.3.1「ライブラリ・ディレクトリ」を参照してください。

詳細は、24.3.4項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリの更新方法」を参照してください。

8. ステップ3でカスタム・コンバータ・クラスを作成した場合は、アプリケーションのMANIFEST.MFファイルを更新して、次のパッケージをImport-Packageヘッダーに追加します。

Import-Package: javax.jms,javax.naming, ...
...

4.7.5項「パッケージのインポート方法」を参照してください。

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

JMSメッセージとイベント・タイプ間の変換をカスタマイズする場合は、独自のコンバータBeanを作成する必要があります。

この項では次について説明します:

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

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

7.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 Complex Event Processing Java APIリファレンスを参照してください。

インバウンドJMSアダプタ用のカスタム・コンバータを作成するには、次の手順を実行します。

1. Oracle CEP IDE for Eclipse (または希望するIDE)を使用して、Javaクラスをアプリケーション・プロジェクトに追加します。

2. com.bea.wlevs.adapters.jms.api.InboundMessageConverterインタフェースを実装します。
例7-10は、実装例を示しています。

例7-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. 例7-11に示すように、アプリケーションEPNアセンブリ・ファイルにコンバータを指定します。

- bean要素を使用してコンバータ・クラスを登録します。

- nameをconverterBeanに設定し、refをbeanのidに設定したwlevs:instance-propertyを追加することで、コンバータ・クラスとJMSアダプタを関連付けます。

例7-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クラスをアプリケーションにパッケージ化します。
詳細は、第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」を参照してください。

7.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 Complex Event Processing Java APIリファレンスを参照してください。

アウトバウンドJMSアダプタ用のカスタム・コンバータを作成するには、次の手順を実行します。

1. Oracle CEP IDE for Eclipse (または希望するIDE)を使用して、Javaクラスをアプリケーション・プロジェクトに追加します。

2. com.bea.wlevs.adapters.jms.api.OutboundMessageConverterインタフェースを実装します。
例7-10は、実装例を示しています。

例7-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. 例7-11に示すように、アプリケーションEPNアセンブリ・ファイルにコンバータを指定します。

- bean要素を使用して変換クラスを登録します。

- nameをconverterBeanに設定し、refをbeanのidに設定したwlevs:instance-propertyを追加することで、コンバータ・クラスとJMSアダプタを関連付けます。

例7-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クラスをアプリケーションにパッケージ化します。
詳細は、第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」を参照してください。

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

JMSアダプタ構成ファイル内のパスワードを暗号化できます。

注意:

この手順では、現在構成ファイルのpassword要素でクリア・テキストのパスワード値を使用していて、パスワードを暗号化するためにencrypted-password要素の使用を開始する必要があると想定しています。

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

JMSアダプタ構成ファイル内のパスワードを暗号化できます。

JMSアダプタ・コンポーネント構成ファイル内のパスワードを暗号化するには、次の手順を実行します。

1. 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項の説明に従って、コマンド・ウィンドウを開き、環境を設定します。

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 CEPをインストールしたメイン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>

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

イベント処理ネットワークのJMSアダプタごとに、対応するwlevs:adapter要素をアプリケーションのEPNアセンブリ・ファイルに追加する必要があります。provider属性を使用して、JMSアダプタがインバウンドまたはアウトバウンドのどちらであるかを指定します。

EPNの他のステージと同様に、wlevs:adapter要素にリスナーを追加してJMSアダプタをイベント処理ネットワークに統合します。通常、インバウンドJMSアダプタは(メッセージを受信するため)EPNの最初のステージであり、アウトバウンドJMSアダプタは(メッセージを送信するため)より後方のステージです。ただし、JMSアダプタがネットワーク内に配置される場所は、独自のOracle CEPアプリケーションの要件に応じて定義されます。

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でイベント・タイプが指定されることが想定されるためです。

この項では次について説明します:

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

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

詳細は、次を参照してください:

- 1.1.5項「コンポーネント構成ファイル」

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

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

インバウンドJMSアダプタを指定する場合は、次のようにprovider属性をjms-inboundに設定します。

<wlevs:adapter id="jmsInbound" provider="jms-inbound"/>

id属性の値(この場合はjmsInbound)は、構成ファイルのこのJMSアダプタに指定した名前と一致している必要があります。構成ファイルでは、このインバウンドJMSアダプタがメッセージを取得するJMS宛先を構成します。

コンバータBeanが指定されていないため、Oracle CEPではプロパティ名のマップによって、着信メッセージがコンポーネント構成ファイルで指定されているイベント・タイプに自動的に変換されます。

次の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>

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

アウトバウンドJMSアダプタを指定する場合は、次のようにprovider属性をjms-outboundに設定します。

<wlevs:adapter id="jmsOutbound" provider="jms-outbound"/>

id属性の値(この場合はjmsOutbound)は、構成ファイルのこのJMSアダプタに指定した名前と一致している必要があります。構成ファイルでは、このアウトバウンドJMSアダプタがメッセージを送信するJMS宛先を構成します。

コンバータBeanが指定されていないため、Oracle CEPではプロパティ名のマップによって、着信イベント・タイプが発信JMSメッセージに自動的に変換されます。

次のEPNアセンブリ・ファイルの例は、アウトバウンドJMSアダプタの構成方法を示しています。ネットワークは単純です。カスタム・アダプタgetDataがフィードから受信したデータはイベント・タイプに変換されてmyProcessorに渡されます。イベントはstreamOneチャネルを通じてjmsOutboundJMSアダプタに送信されます。Oracle CEPではこれらのイベントが自動的に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>

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

JMSアダプタの構成は、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントを構成する場合と同様に、それぞれの構成ファイルで行います。

JMSアダプタを構成する場合のルート要素はjms-adapterです。特定のアダプタのname子要素は、このアダプタが宣言されているEPNアセンブリ・ファイル内の対応するwlevs:adapter要素のid属性と一致している必要があります。

この項では次について説明します:

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

- 7.6.2項「JMSアウトバウンド・アダプタのコンポーネント構成」

詳細は、次を参照してください:

- 1.1.5項「コンポーネント構成ファイル」

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

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

表7-1には、JMSインバウンド・アダプタに適用できる、jms-adapter要素の子要素がリストされます。

表7-1 jms-adapterインバウンド子要素

子要素

説明

bindings

バインドは水平的なスケールアウトを構成する場合に使用する高度な機能です。com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanを使用して、ActiveActiveGroupBeanで作成された通知グループによって、Oracle CEPアプリケーションの受信JMSストリームをパーティション化できます。この要素を使用して、通知グループを特定のmessage-selector値と関連付けます。

詳細は、22.2.2項「ActiveActiveGroupBean」を参照してください。

concurrent-consumers

作成するコンシューマ数。デフォルト値は1です。

この値に1より大きい数を設定した場合:

- work-manager構成の使用を検討してください。

- コンバータBeanはコンシューマ間で共有されるため、コンバータBeanがスレッド・セーフであることを確認してください。詳細は、7.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

connection-jndi-name

オプション。JMS接続ファクトリのJNDI名。Oracle CEPサーバーJMSの場合、デフォルト値はweblogic.jms.ConnectionFactoryです。

connection-password

connection-encrypted-password

オプション。connection-userのパスワード(または暗号化されたパスワード)。

注意: connection-passwordまたはconnection-encrypted-passwordの両方ではなく、どちらか1つを指定します。

パスワードの暗号化の詳細は、7.4項「JMSアダプタ・コンポーネント構成ファイルでのパスワードの暗号化」を参照してください。

connection-user

オプション。Oracle CEPが、JMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドを呼び出すとき、構成されている場合は、connection-userおよびconnection-password (またはconnection-encrypted-password)設定を使用します。それ以外の場合は、Oracle CEPは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 CEPでJMSメッセージとイベント間の変換を自動的に実行する場合にのみ指定します。独自のコンバータBeanを作成した場合は、このプロパティを指定しないでください。

詳細は、7.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

jndi-factory

オプション。JNDIファクトリ名。Oracle CEPサーバーJMSの場合、デフォルト値はweblogic.jndi.WLInitialContextFactoryです。

jndi-provider-url

必須。JNDIプロバイダのURL。

message-selector

メッセージのフィルタ処理に使用されるJMSメッセージ・セレクタ。セレクタと一致するメッセージだけがイベントを生成します。

デフォルト: セレクタなしです。すべてのメッセージがイベントを生成します。

password

encrypted-password

必須。userのパスワード(または暗号化されたパスワード)。

注意: passwordまたはencrypted-passwordの両方ではなく、どちらか1つを指定します。

パスワードの暗号化の詳細は、7.4項「JMSアダプタ・コンポーネント構成ファイルでのパスワードの暗号化」を参照してください。

session-ack-mode-name

メッセージの確認方法を決定します。メッセージが一度正常に確認されると、失敗の後でも再送信されません。

javax.jms.Sessionからの有効な値。

- AUTO_ACKNOWLEDGE: この確認モードを使用するとセッションが受信コールから正常に戻された場合か、またはセッションがメッセージ処理のためにコールしたメッセージ・リスナーが正常に戻る場合のいずれでもセッションは自動的にクライアントがメッセージを受信したことを確認します。

- CLIENT_ACKNOWLEDG: この確認モードを使用するとメッセージの確認メソッドをコールすることによって、クライアントは消費されたメッセージを確認します。

- DUPS_OK_ACKNOWLEDGE: この確認モードはセッションにメッセージ送信の確認を遅延するように命令します。

デフォルト: AUTO_ACKNOWLEDGE

session-transacted

セッションがトランザクションであるかとうかを指定するブール値。

セッションがトランザクションである場合は、session-ack-mode-nameを指定しないでください。

デフォルト: False。

user

必須。Oracle CEPがJNDI InitialContextを取得する際、ユーザーおよびpassword (またはencrypted-password)設定が使用されます。

work-manager

Oracle CEPサーバーの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>

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

表7-2には、JMSアウトバウンド・アダプタに適用できる、jms-adapter要素の子要素がリストされます。

表7-2 jms-adapterアウトバウンド・コンポーネント構成の子要素

子要素

説明

connection-jndi-name

オプション。JMS接続ファクトリのJNDI名。Oracle CEPサーバーJMSの場合、デフォルト値はweblogic.jms.ConnectionFactoryです。

connection-password

connection-encrypted-password

オプション。connection-userのパスワード(または暗号化されたパスワード)。

注意: connection-passwordまたはconnection-encrypted-passwordの両方ではなく、どちらか1つを指定します。

パスワードの暗号化の詳細は、7.4項「JMSアダプタ・コンポーネント構成ファイルでのパスワードの暗号化」を参照してください。

connection-user

オプション。Oracle CEPが、JMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドを呼び出すとき、構成されている場合は、connection-userおよびconnection-password (またはconnection-encrypted-password)設定を使用します。それ以外の場合は、Oracle CEPは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 CEPでJMSメッセージとイベント間の変換を自動的に実行する場合にのみ指定します。独自のコンバータBeanを作成した場合は、このプロパティを指定しないでください。

詳細は、7.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」を参照してください。

jndi-factory

オプション。JNDIファクトリ名。Oracle CEPサーバーJMSの場合、デフォルト値はweblogic.jndi.WLInitialContextFactoryです。

jndi-provider-url

必須。JNDIプロバイダのURL。

password

encrypted-password

必須。userのパスワード(または暗号化されたパスワード)。

注意: passwordまたはencrypted-passwordの両方ではなく、どちらか1つを指定します。

パスワードの暗号化の詳細は、7.4項「JMSアダプタ・コンポーネント構成ファイルでのパスワードの暗号化」を参照してください。

session-transacted

セッションがトランザクションであるかとうかを指定するブール値。

セッションがトランザクションである場合は、session-ack-mode-nameを指定しないでください。

デフォルト: False。

user

必須。Oracle CEPが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>

8 HTTPパブリッシュ・サブスクライブ・サーバー・アダプタの構成

この章では、HTTPパブリッシュ・サブスクライブ・サーバー・アダプタを使用してOracle Complex Event Processing (Oracle CEP)イベント処理ネットワークをHTTP pub-subサーバーと接続する方法について説明します。

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

- 8.2項「HTTP Pub-Subアダプタの構成」

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

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

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

HTTPパブリッシュ・サブスクライブ・サーバー(pub-subサーバー)は、ブラウザ・ベースのクライアントなどのWebクライアントが、すべてHTTP上での非同期メッセージを使用して、チャネルにサブスクライブし、利用可能なメッセージを受信し、これらのチャネルにメッセージをパブリッシュするためのメカニズムです。チャネルはJMSトピックと同じです。

Oracle CEPの各インスタンスには、アプリケーションにHTTPパブリッシュ/サブスクライブ機能を実装するためにプログラマが使用できるpub-subサーバーが含まれています。pub-subサーバーは、JettyやJDBCデータ・ソースなどの他のサーバー・サービスと共にconfig.xmlファイルで構成されます。pub-subサーバーはcometdプロジェクト(http://cometd.com/を参照)で提案されているBayeuxプロトコルに基づいています(http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.htmlを参照)。Bayeuxプロトコルには、クライアントとサーバーがHTTPを介して非同期メッセージで通信するための規約が定義されています。

Oracle CEPでは、プログラマは次の組込みHTTPパブリッシュ・サブスクライブ・アダプタを使用してHTTPパブリッシュ/サブスクライブ機能にアクセスします(pub-subアダプタ)。

- チャネルへのパブリッシュ: 8.1.1項「パブリッシュ用組込みPub-Subアダプタの概要」を参照してください。

- チャネルへのローカル・パブリッシュ: 8.1.1.1項「ローカル・パブリッシュ」を参照してください。

- チャネルへのリモート・パブリッシュ: 8.1.1.2項「リモート・パブリッシュ」を参照してください。

- チャネルへのサブスクライブ: 8.1.2項「サブスクライブ用組込みPub-Subアダプタの概要」を参照してください。

CEPでは、組込みのpub-subアダプタの機能が不十分な場合にチャネルへのパブリッシュおよびサブスクライブのための独自のカスタムpub-subアダプタを作成するプログラマ向けのpub-sub APIも提供されます。たとえば、サブスクライブしたチャネルからの着信メッセージをフィルタ処理する場合や、ローカル・チャネルを動的に作成または破棄する場合などがあります。組込みのpub-subアダプタではこれらの機能が提供されないため、このような場合にプログラマは独自のカスタムpub-subアダプタを実装する必要があります。詳細は、第14章「カスタム・アダプタの構成」を参照してください。

デフォルトでは、Oracle CEPではOracle CEPイベントの範囲で自動的に変換が実行されます。かわりに、カスタム・コンバータも作成できます。8.3項「HTTP Pub-Subメッセージとイベント・タイプの間でのカスタム・コンバータの作成」を参照してください。

Oracle CEPでは、JSONメッセージとOracle CEPイベント・タイプ間の自動変換も可能です。8.1.3項「JSONメッセージとイベント・タイプの間の変換」を参照してください。

組込みpub-subアダプタは他のどのアダプタとも同様に動作します。つまり、イベント処理ネットワークのステージであり、EPNアセンブリ・ファイルで定義され、標準のコンポーネント構成ファイルで構成されます。通常の構成オプションには、チャネルの指定、ローカルまたはリモートのpub-subサーバーの指定、およびユーザー認証などが含まれます。

pub-subサーバーはBayeuxプロトコルを理解するすべてのクライアントと通信することができます。プログラマは、次のフレームワークのいずれかを使用してWebクライアントを開発します。

- BayeuxプロトコルをサポートするDojo JavaScriptライブラリ(http://dojotoolkit.org/を参照)。Oracle CEPではこのライブラリは提供されません。

- Bayeuxプロトコルを使用してpub-subサーバーと通信するFlexクライアントの開発を可能にするWebLogic Workshop Flexプラグイン。

HTTP pub-subサーバー・チャネルの確保の詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のHTTPパブリッシュ・サブスクライブ・サーバー・チャネル・セキュリティの構成に関する項を参照してください。

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

組込みのpub-subアダプタを使用してチャネルにイベントをパブリッシュできます。組込みのpub-subアダプタでは、次のパブリッシュ・モードがサポートされています。

- 8.1.1.1項「ローカル・パブリッシュ」

- 8.1.1.2項「リモート・パブリッシュ」

詳細は、8.1項「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要」を参照してください。

8.1.1.1 ローカル・パブリッシュ

図8-1に、ローカル・パブリッシュ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。任意のアダプタおよびプロセッサは必須ではなく、これらは単にpub-subアダプタの他にアプリケーションで使用可能なコンポーネントの例として示されています。

図8-1 ローカル・パブリッシュ用の組込みPub-Subアダプタ

「図8-1 ローカル・パブリッシュ用の組込みPub-Subアダプタ」の説明

図8-1では、次の点に注意してください。

- あるソースからのイベントが、Oracle CEPで実行中のアプリケーションのアダプタに到着します。このアダプタは必須ではなく、単に例として示されています。

- アダプタからのイベントが任意のプロセッサに到着します。ここでも、このプロセッサは必須ではありません。

- プロセッサからローカル・パブリッシュ用の組込みpub-subアダプタにイベントが送信されます。アダプタによって、アプリケーションがデプロイされているOracle CEPインスタンスに構成されているローカルのHTTP pub-subサーバーにイベントが送信されます。pub-subアダプタでは構成されているチャネルにメッセージが送信されます。

- Oracle CEPに構成されているローカルHTTP pub-subサーバーによって、ローカル・チャネルのすべてのサブスクライバにイベントがメッセージとして送信されます。

8.1.1.2 リモート・パブリッシュ

図8-2に、リモート・パブリッシュ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。

図8-2 リモート・パブリッシュ用の組込みPub-Subアダプタ

「図8-2 リモート・パブリッシュ用の組込みPub-Subアダプタ」の説明

図8-2では、次の点に注意してください。

- あるソースからのイベントが、Oracle CEPで実行中のアプリケーションのアダプタに到着します。任意のアダプタは必須ではなく、単に例として示されています。

- アダプタからのイベントが任意のプロセッサに到着します。ここでも、このプロセッサは必須ではありません。

- プロセッサからリモート・パブリッシュ用の組込みpub-subアダプタにイベントが送信されます。アダプタによって、アダプタが構成されているリモートHTTP pub-subサーバーにイベントがメッセージとして送信されます。このHTTP pub-subサーバーは別のOracle CEPインスタンス、WebLogic Serverインスタンス、または任意の他のサード・パーティ実装です。pub-subアダプタでは構成されているチャネルにメッセージが送信されます。

- リモートHTTP pub-subサーバーによって、チャネルのすべてのサブスクライバにメッセージが送信されます。

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

図8-3に、サブスクライブ用の組込みpub-subアダプタが単純なイベント処理ネットワーク内に配置されるしくみを示します。任意のプロセッサおよびビジネスPOJOは必須ではなく、これらは単にpub-subアダプタの他にアプリケーションで使用可能なコンポーネントの例として示されています。

図8-3 サブスクライブ用の組込みPub-Subアダプタ

「図8-3 サブスクライブ用の組込みPub-Subアダプタ」の説明

図8-3では、次の点に注意してください。

- メッセージがリモートHTTP pub-subサーバーにパブリッシュされます。これは、Oracle CEPの別のインスタンス、WebLogic Server、またはサード・パーティ実装です。メッセージは通常、図に示されるようなWebベースのクライアント、HTTP pub-subサーバー自身、または別のサーバー・アプリケーションによってパブリッシュされます。

- Oracle CEPアプリケーションで実行中の組込みpub-subアダプタはHTTP pub-subサーバーをサブスクライブし、指定されたチャネルからのメッセージを受信します。アダプタでは、アダプタに構成されているイベント・タイプにメッセージが変換されます。

- pub-subアダプタからプロセッサにイベントが送信されます。このプロセッサは必須ではなく、単に一般的なOracle CEPアプリケーションの例として示されています。

- プロセッサはビジネスPOJOにイベントを送信します。ここでも、このビジネスPOJOは必須ではありません。

詳細は、8.1項「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタ構成の概要」を参照してください。

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

Oracle CEPでは受信JSON (JavaScript Object Notation)メッセージからイベント・タイプへの変換、およびアウトバウンドの場合はその逆の変換を自動的に実行できます。ただし、JSONメッセージ(サブスクライブでのHTTP pub-subアダプタ経由のインバウンド、またはパブリッシュでのHTTP pub-subアダプタ経由のアウトバウンド)からイベント・タイプへの変換方法、または逆方向の変換方法をカスタマイズする場合は、独自のコンバータBeanを作成する必要があります。詳細は、8.3項「HTTP Pub-Subメッセージとイベント・タイプの間のカスタム・コンバータの作成」を参照してください。

独自のコンバータ・クラスを指定せずに、メッセージとイベント・タイプの間の変換処理がOracle CEPによって実行されるようにする場合は、次のことが当てはまります。

- Oracle CEPの変換で使用されるイベント・タイプを指定する必要があります。詳細は、8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」を参照してください。

- サブスクライブ用のHTTPアダプタで使用されるデフォルトのコンバータでは、各着信メッセージについて指定されたタイプの新しいイベントが作成されます。指定されたイベント・タイプの各プロパティについて、メッセージを構成するJSONオブジェクトの対応するプロパティ名が参照され、見つかった場合は対応する値が設定されます。

- パブリッシュ用のHTTPアダプタで使用されるデフォルトのコンバータでは、各イベントについてJSONメッセージが作成されます。指定されたイベント・タイプの各プロパティについて、出力JSONメッセージの対応する要素が作成されます。

詳細は、http://www.json.org/を参照してください。

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

この項では、パブリッシュ用とサブスクライブ用の両方のOracle CEP HTTP Pub-Subアダプタを構成する方法について説明します。

- 8.2.1項「Oracle CEP IDE for Eclipseを使用したHTTP Pub-Subアダプタの構成方法」

- 8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」

注意:

この項では、Oracle CEPアプリケーションがEPNアセンブリ・ファイルとコンポーネント構成ファイルを使用してすでに作成済であり、組込みのpub-subアダプタを使用するようにアプリケーションを更新する必要があると想定しています。まだOracle CEPアプリケーションを作成していない場合は、Oracle CEPアプリケーションの作成の概要について、第1章「Oracle CEPアプリケーションの作成の概要」を参照してください。

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

HTTP Pub-Subアダプタを作成および構成する最も簡単な方法は、Oracle CEP IDE for Eclipseアダプタ・ウィザードを使用することです。

詳細は、6.4.1.2項「アダプタ・ノードの作成方法」を参照してください。

このアダプタ・ウィザードを使用して基本HTTP Pub-Subアダプタ構成を作成および指定したら、8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」を確認して構成を完了します。

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

この項では、HTTP Pub-Subアダプタを手動で作成および構成する方法について説明します。ご使用のアプリケーションに応じて必要とされる詳細な手順を説明します。

8.2.1項「Oracle CEP IDE for Eclipseを使用したHTTP Pub-Subアダプタの構成方法」で説明しているとおり、HTTP Pub-Subアダプタを作成および構成する最も簡単な方法はOracle CEP IDE for Eclipseアダプタ・ウィザードを使用することです。このアダプタ・ウィザードを使用して基本HTTP Pub-Subアダプタ構成を作成および指定したら、この手順を確認して構成を完了します。

組込みpub-subアダプタの構成は、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントを構成する場合と同様に、それぞれの構成ファイルで行います。これらの構成ファイルの一般情報は、1.1.5項「コンポーネント構成ファイル」を参照してください。

次の手順では、アプリケーションの組込みpub-subアダプタを構成するための主な手順を示します。簡略化のため、この手順ではアプリケーションのすべてのコンポーネントが1つの構成XMLファイルに構成され、アプリケーションのこのファイルがすでに作成されていると想定します。

組込みpub-subアダプタの構成が記述された完全なXSDスキーマは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

HTTP Pub-Subアダプタを手動で構成するには:

1. 任意のXMLエディタを使用して構成XMLファイルを開きます。

2. 構成する必要のある各組込みpub-subアダプタについて、configルート要素のhttp-pub-sub-adapter子要素を追加します。<name>子要素を使用して一意に識別します。このname値は、後で、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルにあるwlevs:adapterタグのid属性として使用します。このように指定することで、Oracle CEPでは、このアダプタ構成が適用されるEPNアセンブリ・ファイル内の特定のアダプタを認識します。
たとえば、構成ファイルにはすでにプロセッサが含まれており(簡略化のため内容は省略します)、3つの組込みpub-subアダプタの各インスタンスを構成する必要があると想定します。更新されたファイルは、次のようになります。アダプタの構成の詳細は、後述します。

<?xml version="1.0" encoding="UTF-8"?>
<n1:config
xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/application wlevs_application_config.xsd"
xmlns:n1="http://www.bea.com/ns/wlevs/config/application"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<processor>
...
</processor>
<http-pub-sub-adapter>
<name>remotePublisher</name>
...
</http-pub-sub-adapter>
<http-pub-sub-adapter>
<name>remoteSubscriber</name>
...
</http-pub-sub-adapter>
<http-pub-sub-adapter>
<name>localPublisher</name>
...
</http-pub-sub-adapter>
</n1:config>

3. (パブリッシュおよびサブスクライブ用の)各リモートpub-subアダプタについて、http-pub-sub-adapterのserver-url子要素を追加して、Oracle CEPアプリケーションでパブリッシュまたはサブスクライブされるremoteHTTP pub-subサーバーのURLをそれぞれ指定します。リモートpub-subサーバーには、Oracle CEPの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP pub-subサーバーを指定できます。例:

<http-pub-sub-adapter>
<name>remotePublisher</name>
<server-url>http://myhost.com:9102/pubsub</server-url>
...
</http-pub-sub-adapter>

この例ではremotePublisherアダプタがイベントをパブリッシュする対象のリモートHTTPパブリッシュ/サブスクライブ・サーバーのURLはhttp://myhost.com:9102/pubsub となります。

4. パブリッシュ用の各ローカル pub-subアダプタについて、server-context-path要素を追加して、現在のOracle CEPアプリケーションをホストするOracle CEPインスタンスに関連付けられたローカルHTTP pub-subサーバーのパスを指定します。
デフォルトでは、各Oracle CEPサーバーはパス/pubsubのHTTP pub-subサーバーで構成されていますが、新しいローカルHTTP pub-subサーバーを作成した場合や、デフォルトの構成を変更した場合は、サーバーのconfig.xmlファイルのhttp-pubsub要素のpath子要素の値を指定します。例:

<http-pub-sub-adapter>
<name>localPublisher</name>
<server-context-path>/pubsub</server-context-path>
...
</http-pub-sub-adapter>

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 CEPでは受信メッセージのキーと値のペアを使用して、メッセージ・データが指定のイベント・タイプにマップされます。
event-type要素で指定されたイベントにのみパブリッシュするイベントの種類を限定する場合はオプションでパブリッシュ用のパブリッシュ/サブスクライブ・アダプタにevent-type要素を使用できます。それ以外の場合はパブリッシュ/サブスクライブ・アダプタに送信されるすべてのイベントがパブリッシュされます。例:

<http-pub-sub-adapter>
<name>remoteSubscriber</name>
<server-url>http://myhost.com:9102/pubsub</server-url>
<channel>/channel3</channel>
<event-type>com.mycompany.httppubsub.PubsubEvent</event-type>
</http-pub-sub-adapter>

このイベント・タイプが、wlevs:event-type-repository要素の子要素として指定することによってEPNアセンブリ・ファイルに登録されていることを必ず確認してください。

7. 最後に、Oracle CEPアプリケーションがパブリッシュするHTTP pub-subサーバーでユーザー認証が要求される場合は、userおよびpassword (または encrypted-password)要素を追加してユーザー名とパスワードまたは暗号化されたパスワードを指定します。例:

<http-pub-sub-adapter>
<name>remotePublisher</name>
<server-url>http://myhost.com:9102/pubsub</server-url>
<channel>/channel1</channel>
<event-type>com.mycompany.httppubsub.PubsubEvent</event-type>
<user>wlevs</user>
<password>wlevs</password>
</http-pub-sub-adapter>

8. 着信または発信メッセージがイベント・タイプに変換される方法をカスタマイズする必要がある場合は、必要に応じてコンバータJavaクラスを作成します。メッセージと特定のイベント・タイプの間のマップ・プロパティ名に基づいてOracle CEPで変換が行われるよう指定できるため、この手順は省略できます。
8.3項「HTTP Pub-Subメッセージとイベント・タイプの間のカスタム・コンバータの作成」を参照してください。

9. Oracle CEPインスタンスに関連付けられたローカルのHTTP pub-subサーバーをローカル・パブリッシュ用に使用する場合は、Oracle CEP管理ツールのVisualizerを使用して、アプリケーションで必要なチャネル・パターンで新しいチャネルを作成します。
詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のHTTPパブリッシュ・サブスクライブ・チャネルのセキュリティの構成方法に関する項を参照してください。

10. アプリケーションに追加される各組込みpub-subアダプタの宣言を追加して、EPNアセンブリ・ファイルを更新します。
8.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",
...

マニフェスト・ファイルの追加情報は、24.2.2.1項「MANIFEST.MFファイルの作成」を参照してください。

8.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 Complex Event Processing Java APIリファレンスを参照してください。

次の例は、InboundMessageConverterおよびOutboundMessageConvertの両方を実装するカスタム・コンバータBeanのJavaソースを示します。このBeanはインボウンドおよびアウトバウンドの両方のHTTP pub-subアダプタで使用できます。

package com.sample.httppubsub;
import com.bea.wlevs.adapters.httppubsub.api.InboundMessageConverter;
import com.bea.wlevs.adapters.httppubsub.api.OutboundMessageConverter;
import com.bea.httppubsub.json.JSONObject;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class TestConverter implements InboundMessageConverter, OutboundMessageConverter {
public List convert(JSONObject message) throws Exception {
List eventCollection = new ArrayList();
PubsubTestEvent event = new PubsubTestEvent();
event.setMessage("From TestConverter: " + message);
eventCollection.add(event);
return eventCollection;
}
public List<JSONObject> convert(Object event) throws Exception {
List<JSONObject> list = new ArrayList<JSONObject>(1);
Map map = new HashMap();
map.put("message", ((PubsubTestEvent) event).getMessage());
list.add(new JSONObject(map));
return list;
}
}

JavaオブジェクトをJSON形式に変換するためにGSON Javaライブラリを使用できます。

詳細は、次を参照してください:

- http://www.json.org/

- http://code.google.com/p/google-gson

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

イベント処理ネットワークの各HTTP Pub-Subアダプタについて、アプリケーションのEPNアセンブリ・ファイルに対応するwlevs:adapter要素を追加する必要があります。provider属性を使用して、HTTP Pub-Subアダプタがパブリッシュ用かサブスクライブ用かを指定します。

EPNの他の段階と同様に、リスナーをwlevs:adapter要素に追加して、HTTP Pub-Subアダプタをイベント処理ネットワークに統合します。ご使用のOracle CEPアプリケーションの要件によって、EPNでHTTP Pub-Subアダプタが適合する場所が決まります。

この項では次について説明します:

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

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

詳細は、次を参照してください:

- 1.1.5項「コンポーネント構成ファイル」

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

8.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 CEPアプリケーションの要件に応じて定義されます。

また、pub-subアダプタで使用されるイベント・タイプがwlevs:event-type-repository要素を使用してイベント・タイプ・リポジトリに登録されていることを必ず確認してください。

次のEPNファイルの例は、ローカルおよびリモートのパブリッシュ用の2つの組込みpub-subアダプタが含まれたイベント処理ネットワークを示します。例の後に説明があります。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:wlevs="http://www.bea.com/ns/wlevs/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd
http://www.bea.com/ns/wlevs/spring
http://www.bea.com/ns/wlevs/spring/spring-wlevs.xsd">
<wlevs:event-type-repository>
<wlevs:event-type type-name="com.mycompany.httppubsub.PubsubEvent">
<wlevs:class>com.mycompany.httppubsub.PubsubEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>
<wlevs:adapter id="receiveFromFeed"
class="com.mycompany.httppubsub.ReceiveFromFeed">
</wlevs:adapter>
<wlevs:processor id="pubsubProcessor" />
<wlevs:adapter id="remotePublisher" provider="httppub"/>
<wlevs:adapter id="localPublisher" provider="httppub"/>
<wlevs:channel id="feed2processor">
<wlevs:source ref="receiveFromFeed"/>
<wlevs:listener ref="pubsubProcessor"/>
</wlevs:channel>
<wlevs:channel id="pubsubStream">
<wlevs:listener ref="remotePublisher"/>
<wlevs:listener ref="localPublisher"/>
<wlevs:source ref="pubsubProcessor"/>
</wlevs:channel>
</beans>

上記の例で注目すべき点は以下のとおりです。

- receiveFromFeedアダプタはあるデータ・フィードからのデータを受信するカスタム・アダプタです。このアダプタの詳細はこのトピックには関係ありません。receiveFromFeedアダプタは、feed2processorストリームを介してpubsubProcessorにイベントを送信します。

- pubsubProcessorはreceiveFromFeedアダプタからのイベントを処理し、pubsubStreamチャネルに送信します。イベントはここからremotePublisherとlocalPublisherの2つの組込みpub-subアダプタに送信されます。

- これらの2つのpub-subアダプタの構成に基づいて(「8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」の例を参照)、remotePublisherではcom.mycompany.httppubsub.PubsubEventタイプのイベントのみが、http://myhost.com:9102/pubsub.でホストされるリモートHTTP pub-subサーバーのチャネル/channel1にパブリッシュされます。
localPublisher pub-subアダプタは受信したすべてのイベントをローカルHTTP pub-subサーバーにパブリッシュします。つまり、これはアプリケーションが実行中のOracle CEPサーバーに関連付けられているサーバーです。ローカルpub-subサーバーのパスは/pubsubであり、アダプタがパブリッシュするチャネルは/channel2です。

次のEPNファイルの例は、サブスクライブ用の組込みpub-subアダプタが含まれたイベント処理ネットワークを示します。例の後に説明があります。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:wlevs="http://www.bea.com/ns/wlevs/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd
http://www.bea.com/ns/wlevs/spring
http://www.bea.com/ns/wlevs/spring/spring-wlevs.xsd">
<wlevs:event-type-repository>
<wlevs:event-type type-name="com.mycompany.httppubsub.PubsubEvent">
<wlevs:class>com.mycompany.httppubsub.PubsubEvent</wlevs:class>
</wlevs:event-type>
</wlevs:event-type-repository>
<wlevs:adapter id="remoteSubscriber" provider="httpsub">
<wlevs:listener ref="myEventBean"/>
</wlevs:adapter>
<bean id="myEventBean"
class="com.mycompany.httppubsub.MyEventBean">
</bean>
<wlevs:channel id="pubsubStream" advertise="true">
<wlevs:listener>
<bean id="mySink"
class="com.mycompany.httppubsub.MySink"/>
</wlevs:listener>
<wlevs:source ref="myEventBean"/>
</wlevs:channel>
</beans>

上記の例で注目すべき点は以下のとおりです。

- remoteSubscriberアダプタはサブスクライブ用の組込みpub-subアダプタです。
アダプタの構成に基づいて(8.2.2項「HTTP Pub-Subアダプタを手動で構成する方法」の例を参照)、remoteSubscriberは、http://myhost.com:9102/pubsubでホストされるリモートHTTP pub-subサーバー用に構成されたチャネル/channel3をサブスクライブします。Oracle CEPではこのチャネルから受信された各メッセージがcom.mycompany.httppubsub.PubsubEventのインスタンスに変換され、myEventBeanというSpring Beanに送信されます。

- myEventBeanはcom.mycompany.httppubsub.MyEventBeanクラスの記述に従ってイベントを処理し、pubsubStreamチャネルを通じてmySinkイベント・ソースをイベントに渡します。これらのコンポーネントの詳細はHTTP pub-subアダプタのトピックと関係がないため、この項では取り上げません。

8.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>

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

HTTP Pub-Subアダプタの構成は、プロセッサやストリームなどのイベント処理ネットワークの他のコンポーネントを構成する場合と同様に、それぞれの構成ファイルで行います。

HTTP Pub-Subアダプタを構成する場合のルート要素はhttp-pub-sub-adapterです。特定のアダプタのname子要素は、このアダプタが宣言されているEPNアセンブリ・ファイル内の対応するwlevs:adapter要素のid属性と一致している必要があります。

この項では次について説明します:

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

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

詳細は、次を参照してください:

- 1.1.5項「コンポーネント構成ファイル」

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

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

表8-1には、パブリッシュ用のHTTP Pub-Subアダプタに適用できる、http-pub-sub-adapter要素の子要素がリストされます。

表8-1 パブリッシュ用コンポーネント構成のhttp-pub-sub-adapterの子要素

子要素

説明

server-context-path

必須。パブリッシュ用の各ローカルHTTP Pub-Subアダプタについて、現在のOracle CEPアプリケーションをホストするOracle CEPインスタンスに関連付けられたローカルHTTP Pub-SubサーバーのOracle CEPサーバーのconfig.xmlファイル要素http-pubsubの子要素pathの値を指定します。

デフォルト: /pubsub

新たにローカルHTTPパブリッシュ・サブスクライブ・サーバーを作成、またはデフォルトの構成を変更した場合は、該当するpath子要素の値を指定します。

注意: リモートHTTP Pub-Subアダプタにはこのオプションを指定しないでください。

server-url

必須。パブリッシュ用の各リモートHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のリモートHTTP Pub-SubサーバーのURLを指定します。リモートHTTP Pub-Subサーバーには、Oracle CEPの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP Pub-Subサーバーを指定できます。例:

http://myhost.com:9102/pubsub

注意: ローカルHTTP Pub-Subアダプタにはこのオプションを指定しないでください。

channel

必須。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、HTTP Pub-Subアダプタがパブリッシュする先のチャネルを指定します。

event-type

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、パブリッシュされるイベントのタイプを制限するために、JavaBeanイベントの完全修飾クラス名を指定します。指定しない場合、HTTP pub-subアダプタに送信されたすべてのイベントがパブリッシュされます。

このクラスをEPNアセンブリ・ファイルにwlevs:event-type-repository要素、wlevs:class子要素として登録する必要があります。詳細は、2.2項「JavaBeanとしてOracle CEPイベント・タイプの作成」を参照してください。

user

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、ユーザー名を指定します。

password

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、パスワードを指定します。

passwordまたはencrypted-passwordのどちらかを選択します。両方は選択できません。

encrypted-password

オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先の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>

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

表8-2には、サブスクライブ用のHTTP Pub-Subアダプタに適用できる、http-pub-sub-adapter要素の子要素がリストされます。

表8-2 サブスクライブ用コンポーネント構成のhttp-pub-sub-adapterの子要素

子要素

説明

server-url

必須。サブスクライブ用の各リモートHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のリモートHTTP Pub-SubサーバーのURLを指定します。リモートHTTP Pub-Subサーバーには、Oracle CEPの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP Pub-Subサーバーを指定できます。

注意: ローカルHTTP Pub-Subアダプタにはこのオプションを指定しないでください。

channel

必須。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、HTTP Pub-Subアダプタがサブスクライブする先のチャネルを指定します。

event-type

必須。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、着信メッセージがマップされるJavaBeanの完全修飾クラス名を指定します。実行時、Oracle CEPでは受信メッセージのキーと値のペアを使用して、メッセージ・データが指定のイベント・タイプにマップされます。

このクラスをEPNアセンブリ・ファイルにwlevs:event-type-repository要素、wlevs:class子要素として登録する必要があります。詳細は、2.2項「JavaBeanとしてOracle CEPイベント・タイプの作成」を参照してください。

user

オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、ユーザー名を指定します。

password

オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先のHTTP Pub-Subアダプタでユーザー認証が必要な場合は、パスワードを指定します。

passwordまたはencrypted-passwordのどちらかを選択します。両方は選択できません。

encrypted-password

オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、Oracle CEPアプリケーションがパブリッシュする先の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>

9 チャネルの構成

この章では、イベント処理ネットワークを介してOracle Complex Event Processing (Oracle CEP)のチャネルおよびイベントのパイプを構成する方法について説明します。

- 9.1項「チャネル構成の概要」

- 9.2項「チャネルの構成」

- 9.3項「チャネル構成ファイルの例」

9.1 チャネル構成の概要

Oracle CEPアプリケーションには、1つ以上のチャネル・コンポーネントが含まれます。チャネルは、アダプタとプロセッサ間やプロセッサとイベントBean(ビジネス・ロジックPOJO)間のような、他のコンポーネント同士をイベントが往来する物理的なパイプを表します。

チャネルはストリームとリレーションの両方に使用できます。詳細は、9.1.2項「ストリームおよびリレーションを表すチャネル」を参照してください。

イベント処理ネットワーク(EPN)でチャネルを作成する場合、デフォルト構成があります。完全な詳細は、C.10項「wlevs:channel」を参照してください。

デフォルトのチャネル構成は、通常、大半のアプリケーションに適しています。

ただし、この構成を変更する場合は、コンポーネント構成ファイル内にchannel要素を作成する必要があります。このchannel要素では、デフォルト構成をオーバーライドするチャネル構成を指定できます。

コンポーネント構成ファイルのchannel要素のname要素は、EPNアセンブリ・ファイルのchannel要素のid属性に一致する必要があります。たとえば、例9-1に示すようにEPNアセンブリ・ファイルのchannel要素の場合、対応するコンポーネント構成ファイルのchannel要素は例9-2で示されます。

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

<wlevs:channel id="priceStream" event-type="PriceEvent">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>

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

<channel>
<name>priceStream</name>
<max-size>10000</max-size>
<max-threads>4</max-threads>
</channel>

次のコンポーネント構成ファイルのいずれかでchannel要素を作成できます。

- デフォルトのOracle CEPアプリケーションの構成ファイル(デフォルトでは、META-INF/wlevs/config.xml)。

- 個別の構成ファイル。

アプリケーションが1つ以上のチャネルを持つ場合、デフォルトのconfig.xmlファイル内でそれぞれのチャネルのchannel要素を作成したり、それぞれのMETA-INF/wlevsで個別のXMLファイルを作成したり、すべてのチャネルの構成またはアプリケーションのすべてのコンポーネント(アダプタ、プロセッサ、およびチャネル)さえも含むMETA-INF/wlevsで単一のXMLファイルを作成したりできます。開発環境に最も適した方法を選択します。

デフォルトでは、Oracle CEP IDE for Eclipseは1つのコンポーネント構成ファイルと1つのEPNアセンブリ・ファイルを作成します。

コンポーネント構成ファイルは、Oracle CEPアプリケーション・バンドルの一部としてデプロイされます。Oracle CEP Visualizer、wlevs.Adminユーティリティを使用するか、または適切なJMX Mbeanを直接操作して、後で実行時にこの構成を更新できます。

この項では次について説明します:

- 9.1.1項「チャネルを使用するタイミング」

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

- 9.1.3項「システム・タイムスタンプ・チャネル」

- 9.1.4項「アプリケーション・タイムスタンプ・チャネル」

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

- 9.1.6項「バッチ処理チャネル」

- 9.1.7項「EventPartitionerチャネル」

詳細は、次を参照してください:

- 1.1.5項「コンポーネント構成ファイル」

- 4.3項「EPNアセンブリ・ファイルの作成」

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のwlevs.Adminコマンドライン・リファレンスに関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPのJMXの構成に関する項

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

EPNを構成するとき、次のルールを考慮してください。

- Oracle CQLプロセッサをダウンストリーム・ステージに接続するとき、チャネルは必須です。

- プッシュ・ソース・ストリームまたはリレーションをプロセッサに接続するとき、チャネルは必須です。
チャネルは、Oracle CQLプロセッサがその形状を認識される必要があり(つまり、DDLが必須)、チャネルも仲介者として機能する必要があるため、プッシュ・ソースに必須です。

- 外部リレーション、またはキャッシュや表のソースのようなプル・ソースをプロセッサに接続するとき、チャネルはオプションです。
チャネルは、キャッシュや表などのプル・ソースとプロセッサの間では、プル・ソースが外部リレーションを示すため必要ありません。外部リレーションでは、有効な操作はストリームとNOWウィンドウ演算子間の結合のみとなるため、プル・ソースとみなされます。つまり、結合は実際には、Oracle CQLプロセッサの外部で発生します。これはプルであるため、Oracle CQLプロセッサはその形状を認識される必要はありません(つまり、DDLは必要ありません)。そのため、チャネルを仲介者として機能させる必要もありません。

通常、コンポーネント間のチャネルは次の場合に使用します。

- バッファリングは、発行するコンポーネントと受信側の間で必要です。

- 受信側のコンポーネントにはキューイングまたは同時実行性が必要です。

- カスタム・アダプタが使用される場合は、スレッド制御が必要です。

EPNにチャネルを含めることは、今後の設計ライフサイクルでパフォーマンス・チューニング(バッファリング、キューイング、および同時実行性のオプションを使用)の柔軟性を提供するため、設計上よく行われます。チャネルの属性max-threadsを0に設定すると、パススルー・モードでチャネルを設置し、パフォーマンス・ペナルティを起こしません。

詳細は、次を参照してください:

- 9.1.7項「EventPartitionerチャネル」

- 表C-9「wlevs:channelアプリケーション・アセンブリ要素の属性」

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

チャネルは、ストリームまたはリレーションのいずれかを示します。

詳細は、次を参照してください:

- 1.1.3.2項「ストリームおよび関係のソース」

- 9.1項「チャネル構成の概要」

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

ストリームは追加のみサポートします。EPNアセンブリ要素のwlevs:channel属性のis-relationをfalse(デフォルト)に設定することによって、チャネルをストリームとして指定できます。

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

リレーションは、挿入、削除、および更新をサポートします。EPNアセンブリ要素のwlevs:channel属性のis-relationをtrueに設定することによって、チャネルをリレーションとして指定できます。

チャネルがリレーションである場合は、例9-3に示すように、wlevs:channel属性primary-keyを使用してイベント・アイデンティティを定義する、1つ以上のイベント・プロパティを指定する必要があります。

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

...
<wlevs:channel id="priceStream" event-type="PriceEvent" primary-key="stock,broker">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>
...

例9-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を参照してください。

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

デフォルトでは、チャネルはシステムにタイムスタンプを付けられます。この場合、Oracle CEPは2つの条件下でCPUクロックから新しい時間を割り当てます。新規イベントの到着時、および構成可能なハートビートのタイムアウトが期限切れになったとき。

詳細は、次を参照してください:

- 9.2.1項「Oracle CEP IDE for Eclipseを使用してシステム・タイムスタンプ・チャネルを構成する方法」

- D.49項「heartbeat」

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

オプションで、チャネルをアプリケーションがタイムスタンプを付けるように構成できます。この場合、イベントのタイムスタンプは、構成可能なwlevs:expression要素によって判定されます。式のよくある例は、イベントでのプロパティへの参照です。式が指定されていない場合、タイムスタンプは前のイベントから伝播されます。たとえば、別のダウンストリームOracle CQLプロセッサのアプリケーション・タイムスタンプ・チャネルにイベントを送信する1つのOracle CQLプロセッサからのシステム・タイムスタンプ・チャネルを持つ場合などです。

また、アプリケーションはStreamSender.sendHeartbeatメソッドを使用して、イベント型heart-beatダウンストリームをEPNのStreamSinkリスナーに送信することが可能です。

詳細は、次を参照してください:

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

- C.3項「wlevs:application-timestamped」

- C.14項「wlevs:expression」

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

1つ以上の問合せを使用してOracle CQLプロセッサを構成する場合、デフォルトではすべての問合せの結果がダウンストリーム・チャネルに出力されます。

どの問合せの結果をダウンストリーム・チャネルに出力するかは、チャネルselector子要素を使用して制御できます。

図9-1はアップストリームOracle CQLプロセッサfilteredFanoutProcessorに接続されたチャネルfilteredStreamを備えたEPNを示します。

図9-1 Oracle CQLプロセッサおよびダウンストリーム・チャネルを備えたEPN

「図9-1 Oracle CQLプロセッサおよびダウンストリーム・チャネルを備えたEPN」の説明

例9-5は、Oracle CQLプロセッサに構成された問合せを示します。

例9-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>

例9-5に示すように、Oracle CQLプロセッサに1つ以上の問合せを指定する場合、デフォルトでは、すべての問合せ結果がプロセッサのアウトバウンド・チャネルに出力されます(図9-1のfilteredStream)。オプションで、コンポーネント構成ソースでchannel要素のselector子要素を使用し、例9-6が示すようにチャネルに結果を出力する1つ以上のOracle CQL問合せ名のスペース区切りのリストを指定できます。この例では、問合せYr3SectorおよびYr2Sectorの問合せ結果はfilteredStreamに出力されますが、問合せYr1Sectorの問合せ結果は出力されません。

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

<channel>
<name>filteredStream</name>
<selector>Yr3Sector Yr2Sector</selector>
</channel>

アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

注意:

selector子要素は、アップストリーム・ノードがOracle CQLプロセッサである場合のだけ適用できます。詳細は、第10章「Oracle CQLプロセッサの構成」を参照してください。

詳細は、付録D「selector」を参照してください。

9.1.6 バッチ処理チャネル

デフォルトでは、チャネルはイベントが到達した時点でイベントを処理します。あるいは、例9-7に示すように、wlevs:channel属性batchingをtrueに設定することで、同じタイムスタンプを持ち、同じ問合せからの出力のイベントをまとめてバッチ処理するように構成できます。

例9-7 バッチ処理チャネル

...
<wlevs:channel id="priceStream" event-type="PriceEvent" batching="true">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>
...

詳細は、次を参照してください:

- 1.1.3.2項「ストリームおよび関係のソース」

- 1.1.3.3項「ストリームおよび関係のシンク」

- 表C-9「wlevs:channelアプリケーション・アセンブリ要素の属性」のbatching

9.1.7 EventPartitionerチャネル

デフォルトでは、チャネルは各リスナーに各イベントをブロードキャストします。

EventPartitionerを使用するようにチャネルを構成した場合、受信イベントが到着するたびにチャネルはリスナーを選択し、各リスナーに各イベントをブロードキャストするかわりに、そのリスナーにイベントをディスパッチします。

チャネルでEventPartitionerを使用してスケーラビリティを向上できます。

詳細は、22.2.1項「EventPartitioner」を参照してください。

9.2 チャネルの構成

チャネルを手動で構成するか、またはOracle CEP IDE for Eclipseを使用して構成できます。

チャネル・コンポート構成ファイルを記述する完全なXSDスキーマについては、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

チャネル構成ファイルの完全な例については、9.3項「チャネル構成ファイルの例」を参照してください。

この節では、次のトピックについて説明します。

- 9.2.1項「Oracle CEP IDE for Eclipseを使用してシステム・タイムスタンプ・チャネルを構成する方法」

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

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

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

この項では、システム・タイムスタンプ・チャネルの作成方法を説明します。

デフォルトのコンポーネント構成ファイルでチャネル構成を作成・編集するための最も効率的でエラーの発生が少ない方法は、Oracle CEP IDE for Eclipseを使用することです。オプションで、チャネル構成ファイルを手動で作成できます(9.2.3項「手動によるチャネル・コンポーネント構成ファイルの作成方法」を参照)。

詳細は、次を参照してください:

- 9.1.3項「システム・タイムスタンプ・チャネル」

- 第6章「Oracle CEP IDE for Eclipseおよびイベント処理ネットワーク」

Oracle CEP IDE for Eclipseを使用してチャネルを構成するには:

1. Oracle CEP IDE for Eclipseを使用してチャネルを作成します。
6.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 CEP IDE for Eclipseは、コンポーネント構成ファイルをwlevsディレクトリに追加します。

5. 使用するように選択したコンポーネント構成ファイルを右クリックし、次で開く>XMLエディタを選択します。

ファイルがXMLエディタで開きます。

6. 新しいコンポーネント構成ファイルを作成した場合、例9-8で示されているヘッダーおよびconfig要素を追加します。それ以外の場合は、ステップ7に進みます。

例9-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要素を例9-9で示されるように追加します。

例9-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属性に一致する必要があります。

たとえば、例9-10に示すようにEPNアセンブリ・ファイルのchannel要素の場合、対応するコンポーネント構成ファイルのchannel要素は例9-11で示されます。

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

<wlevs:channel id="priceStream" event-type="PriceEvent">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>

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

<channel>
<name>priceStream</name>
</channel>

注意:

XMLファイルの識別子および名前は大/小文字が区別されます。EPNアセンブリ・ファイル内のコンポーネントの識別子を参照するときは、必ず大/小文字を同じにして指定します。

9. オプションで、channel子要素を追加することによって、デフォルトのチャネル構成をオーバーライドします。

- max-threads子要素を追加すると、Oracle CEPサーバーがこのチャネルのイベントを処理するために使用するスレッドの最大数を指定できます。
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>

- heartbeat子要素を追加すると、Oracle CEPが時間を進めるためにハートビート・イベントを生成する前にチャネルが待機できる時間をナノ秒数で指定できます。
heartbeatの子要素は、プロセッサに送信を行うイベント・チャネルにイベントが到着しない場合のみ、システムがタイムスタンプを付けた関係またはストリームに適用されます。プロセッサは、時間ベースのウィンドウや期間のパターン照合などの、一時的な演算子をいくつか含む文を用いて構成されています。

<channel>
<name>MatchOutputChannel</name>
<heartbeat>10000</heartbeat>
</channel>

- selector子要素を追加すると、どのアップストリームOracle CQLプロセッサの問合せがチャネルに結果を出力することを許可されるかを指定できます。
アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

詳細は、9.1.5項「ダウンストリーム・チャネルに対する問合せ出力の制御: selector」を参照してください。

注意:

selector属性はアップストリーム・ノードがOracle CQLプロセッサの場合のみ該当します。詳細は、第10章「Oracle CQLプロセッサの構成」を参照してください。

10. 「ファイル」>「保存」を選択します。
EPNエディタは、図9-2で示すように構成バッジをチャネルに追加します。詳細は、6.2.7項「バッジの構成」を参照してください。

図9-2 構成バッジを備えたチャネル

「図9-2 構成バッジを備えたチャネル」の説明

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

この項では、アプリケーション・タイムスタンプ・チャネルの作成方法を説明します。

デフォルトのコンポーネント構成ファイルでチャネル構成を作成・編集するための最も効率的でエラーの発生が少ない方法は、Oracle CEP IDE for Eclipseを使用することです。オプションで、チャネル構成ファイルを手動で作成できます(9.2.3項「手動によるチャネル・コンポーネント構成ファイルの作成方法」を参照)。

詳細は、次を参照してください:

- 9.1.4項「アプリケーション・タイムスタンプ・チャネル」

- 第6章「Oracle CEP IDE for Eclipseおよびイベント処理ネットワーク」

Oracle CEP IDE for Eclipseを使用してチャネルを構成するには:

1. Oracle CEP IDE for Eclipseを使用してチャネルを作成します。
6.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 CEPがタイムスタンプ値を出力するために使用する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 CEP IDE for Eclipseは、コンポーネント構成ファイルをwlevsディレクトリに追加します。

5. 使用するように選択したコンポーネント構成ファイルを右クリックし、次で開く>XMLエディタを選択します。
ファイルがXMLエディタで開きます。

6. 新しいコンポーネント構成ファイルを作成した場合、例9-8で示されているヘッダーおよびconfig要素を追加します。それ以外の場合は、ステップ7に進みます。

例9-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要素を例9-9で示されるように追加します。

例9-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属性に一致する必要があります。

たとえば、例9-10に示すようにEPNアセンブリ・ファイルのchannel要素の場合、対応するコンポーネント構成ファイルのchannel要素は例9-11で示されます。

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

<wlevs:channel id="priceStream" event-type="PriceEvent">
<wlevs:listener ref="filterFanoutProcessor" />
<wlevs:source ref="PriceAdapter" />
</wlevs:channel>

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

<channel>
<name>priceStream</name>
</channel>

注意:

XMLファイルの識別子および名前は大/小文字が区別されます。EPNアセンブリ・ファイル内のコンポーネントの識別子を参照するときは、必ず大/小文字を同じにして指定します。

9. オプションで、channel子要素を追加することによって、デフォルトのチャネル構成をオーバーライドします。

- max-threads子要素を追加すると、Oracle CEPサーバーがこのチャネルのイベントを処理するために使用するスレッドの最大数を指定できます。
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>

- selector子要素を追加すると、どのアップストリームOracle CQLプロセッサの問合せがチャネルに結果を出力することを許可されるかを指定できます。
アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

詳細は、9.1.5項「ダウンストリーム・チャネルに対する問合せ出力の制御: selector」を参照してください。

注意:

selector属性はアップストリーム・ノードがOracle CQLプロセッサの場合のみ該当します。詳細は、第10章「Oracle CQLプロセッサの構成」を参照してください。

詳細は、D.82項「selector」を参照してください。

10. 「ファイル」>「保存」を選択します。
EPNエディタは、図9-2で示すように構成バッジをチャネルに追加します。詳細は、6.2.7項「バッジの構成」を参照してください。

図9-3 構成バッジを備えたチャネル

「図9-3 構成バッジを備えたチャネル」の説明

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

Oracle CEP IDE for Eclipseは、チャネル構成ファイルを作成するのに最も効率的でエラーの発生が少ない方法ですが(9.2.1項「Oracle CEP IDE for Eclipseを使用してシステム・タイムスタンプ・チャネルを構成する方法」を参照)、別の方法として、チャネル構成ファイルを手動で作成・維持することもできます。

簡略化するために、次の手順では、単一のXMLファイルでアプリケーションのすべてのコンポーネントを構成すると仮定しています。

手動でチャネル・コンポーネント構成ファイルを作成するには:

1. EPNアセンブリ・ファイルを作成し、アプリケーションの各チャネルのwlevs:channel要素を追加します。
id属性を持つそれぞれのwlevs:channelを一意で識別します。

詳細は、4.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 CEPが認識する仕組みです。詳細は、4.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 CEPサーバーがこのチャネルのイベントを処理するために使用するスレッドの最大数を指定できます。
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>

- heartbeat子要素を追加すると、Oracle CEPが時間を進めるためにハートビート・イベントを生成する前にチャネルが待機できる時間をナノ秒数で指定できます。
heartbeatの子要素は、プロセッサに送信を行うイベント・チャネルにイベントが到着しない場合のみ、システムがタイムスタンプを付けた関係またはストリームに適用されます。プロセッサは、時間ベースのウィンドウや期間のパターン照合などの、一時的な演算子をいくつか含む文を用いて構成されています。

<channel>
<name>MatchOutputChannel</name>
<heartbeat>10000</heartbeat>
</channel>

- selector子要素を追加すると、どのアップストリームOracle CQLプロセッサの問合せがチャネルに結果を出力することを許可されるかを指定できます。
アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

詳細は、9.1.5項「ダウンストリーム・チャネルに対する問合せ出力の制御: selector」を参照してください。

注意:

selector属性はアップストリーム・ノードがOracle CQLプロセッサの場合のみ該当します。詳細は、第10章「Oracle CQLプロセッサの構成」を参照してください。

詳細は、D.82項「selector」を参照してください。

6. 構成ファイルを保存して閉じます。

9.3 チャネル構成ファイルの例

図9-4は、2つのチャネルを含むEPNの一部を示します: priceStreamおよびfilteredStream。priceStreamチャネルは、PriceAdapterイベント・ソースとそのPriceEventイベントをOracle CQLプロセッサのfilterFanoutProcessorに接続するインバウンド・チャネルです。filteredStreamチャネルは、Oracle CQLプロセッサの問合せ結果(FilteredPriceEventイベント)をダウンストリーム・コンポーネント(図9-4では示されていません)に接続するアウトバウンド・チャネルです。

図9-4 2つのチャネルを持つEPN

「図9-4 2つのチャネルを持つEPN」の説明

この項では、次を含むチャネル構成ファイルの例を提供します。

- 9.3.1項「チャネル・コンポーネント構成ファイル」

- 9.3.2項「チャネルEPNアセンブリ・ファイル」

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

例9-16は、図9-4で示されるように2つのチャネルを構成するサンプルのコンポーネント構成ファイルを示します。

例9-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>

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

例9-17は、図9-4で示されるように2つのチャネルを構成するEPNアセンブリ・ファイルを示します。

例9-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>

10 Oracle CQLプロセッサの構成

この章では、Oracle Complex Event Processing (Oracle CEP)イベント処理ネットワーク用にOracle Continuous Query Language (CQL)プロセッサを構成する方法について説明します。これには、プロセッサのデータ・ソースの構成およびパフォーマンスの最適化に関する情報も含まれます。

- 10.1項「Oracle CQLプロセッサ構成の概要」

- 10.2項「Oracle CQLプロセッサの構成」

- 10.3項「Oracle CQLプロセッサ表ソースの構成」

- 10.4項「Oracle CQLプロセッサ・キャッシュ・ソースの構成」

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

- 10.6項「Oracle CQLプロセッサ構成ファイルの例」

注意:

イベント処理言語(EPL)は、Oracle CEP 11gリリース1 (11.1.1)ではOracle CQLによって置き換えられます。Oracle CEPは、EPLとの下位互換性をサポートします。詳細は、第11章「EPLプロセッサの構成」を参照してください。

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

Oracle CEPアプリケーションには、1つ以上の複雑なイベント・プロセッサ、もしくはプロセッサが含まれています。各プロセッサは1つまたは複数のアダプタからのイベントを入力として受け取ります。これらのアダプタでは、ソースから連続的なデータ・ストリームを送信するデータ・フィードにリスニングします。金融データ・フィードやOracle CEPロード・ジェネレータなど、任意のソースを使用できます。

Oracle CQLプロセッサの主な機能は、その関連付けられたOracle CQL (Oracle Continuous Query Language)ルールであり、これらのルールは、プロセッサにリスニング・コンポーネントに渡すイベントのサブセットを持ちます。リスニングするコンポーネントには、他のプロセッサまたは通常はイベント処理ネットワークの最後を定義し、クライアント・アプリケーションへのパブリッシュなどイベントでなんらかの処理を実行するビジネス・オブジェクトPOJOを指定できます。Oracle CQLの詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』を参照してください。

アプリケーションの各Oracle CQLプロセッサに対して、コンポーネント構成ファイルでprocessor要素を作成する必要があります。このprocessor要素では、プロセッサのOracle CQLルールの初期セット、および任意のプロセッサ構成を指定します。

Oracle CQLプロセッサEPNアセンブリ・ファイルで、任意の追加Oracle CQLプロセッサの機能を構成できます。

コンポーネント構成ファイルprocessor要素のname要素は、EPNアセンブリ・ファイルprocessor要素のid属性と一致している必要があります。たとえば、例10-1に示すEPNアセンブリ・ファイルprocessor要素の場合、例10-2に示す対応するコンポーネント構成ファイルprocessor要素が指定されます。

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

<wlevs:processor id="proc">
<wlevs:table-source ref="Stock" />
</wlevs:processor>

例10-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 CEPアプリケーションの構成ファイル(デフォルトでは、META-INF/wlevs/config.xml)。

- 個別の構成ファイル。

アプリケーションに1つ以上のプロセッサが含まれている場合は、デフォルトconfig.xmlファイルでプロセッサごとにprocessor要素を作成できます。また、プロセッサごとにMETA-INF/wlevsに個別のXMLファイルを作成するか、またはすべてのプロセッサの構成のみでなく、アプリケーション内のすべてのコンポーネント(アダプタ、プロセッサ、およびチャネル)が含まれる単一のXMLファイルをMETA-INF/wlevsに作成できます。開発環境に最も適した方法を選択します。

デフォルトでは、Oracle CEP IDE for Eclipseは1つのコンポーネント構成ファイルと1つのEPNアセンブリ・ファイルを作成します。Oracle CEP IDE for Eclipseを使用してOracle CQLプロセッサを作成する場合、デフォルトでプロセッサ要素がデフォルト・コンポーネント構成ファイルのMETA-INF/wlevs/config.xmlファイルに追加されます。Oracle CEP IDE for Eclipseを使用して、Oracle CQLプロセッサの作成時に新しい構成ファイルを作成するか、または既存の構成ファイルを使用するかを選択できます。

コンポーネント構成ファイルは、Oracle CEPアプリケーション・バンドルの一部としてデプロイされます。Oracle CEP Visualizer、wlevs.Adminユーティリティを使用するか、または適切なJMX Mbeanを直接操作して、後で実行時にこの構成を更新できます。

詳細は、次を参照してください:

- 1.1.5項「コンポーネント構成ファイル」

- 1.1.4項「EPNアセンブリ・ファイル」

- 4.3項「EPNアセンブリ・ファイルの作成」

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のwlevs.Adminコマンドライン・リファレンスに関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPのJMXの構成に関する項

Oracle CQLプロセッサ構成の詳細は、次の項を参照してください。

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

- 10.2項「Oracle CQLプロセッサの構成」

- 10.3項「Oracle CQLプロセッサ表ソースの構成」

- 10.4項「Oracle CQLプロセッサ・キャッシュ・ソースの構成」

- 10.6項「Oracle CQLプロセッサ構成ファイルの例」

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

1つ以上の問合せを使用してOracle CQLプロセッサを構成する場合、デフォルトではすべての問合せの結果がダウンストリーム・チャネルに出力されます。

どの問合せの結果をダウンストリーム・チャネルに出力するかは、チャネルselector要素を使用してこのチャネルに結果を出力する問合せ名のリストをスペースで区切って指定することで制御できます。

アップストリーム・プロセッサに問合せを作成する前に、selectorでchannel要素を構成することもできます。この場合、selector内の名前と一致する問合せ名を指定する必要があります。

詳細は、9.1.5項「ダウンストリーム・チャネルに対する問合せ出力の制御: selector」を参照してください。

10.2 Oracle CQLプロセッサの構成

プロセッサは手動で構成するか、またはOracle CEP IDE for Eclipseを使用して構成できます。

プロセッサ・コンポーネント構成ファイルを記述する完全なXSDスキーマは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

Oracle CQLプロセッサ・コンポーネント構成ファイルおよびアセンブリ・ファイルの完全な例は、10.6項「Oracle CQLプロセッサ構成ファイルの例」を参照してください。

この節では、次のトピックについて説明します。

- 10.2.1項「Oracle CEP IDE for Eclipseを使用したOracle CQLプロセッサの構成方法」

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

10.2.1 Oracle CEP IDE for Eclipseを使用したOracle CQLプロセッサの構成方法

プロセッサを作成および編集する最も効率的かつ間違いの少ない方法は、Oracle CEP IDE for Eclipseを使用することです。オプションで、プロセッサは手動で作成および編集できます(10.2.2項「Oracle CQLプロセッサ・コンポーネント構成ファイルの手動による作成方法」を参照してください)。

Oracle CEP IDE for Eclipseを使用してOracle CQLプロセッサを構成するには:

1. Oracle CEP IDE for Eclipseを使用してプロセッサを作成します。
6.4.1.3項「プロセッサ・ノードの作成方法」を参照してください。

EPNエディタを使用してOracle CQLプロセッサを作成する場合、Oracle CEP IDE for Eclipseでは、デフォルト・コンポーネント構成ファイルまたは新しいコンポーネント構成ファイルの選択が求められます。詳細は、第6章「Oracle CEP IDE for Eclipseおよびイベント処理ネットワーク」を参照してください。

2. 「プロセッサ」ノードを右クリックし、「構成のソースに移動」を選択します。
Oracle CEP IDE for Eclipseは、適切なコンポーネント構成ファイルを開きます。デフォルト・プロセッサ・コンポーネント構成は、例10-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要素が含まれます。

例10-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 Complex Event Processing CQL言語リファレンス』のOracle CQL問合せ、ビュー、および結合の概要に関する項を参照してください。

4. 「ファイル」>「保存」を選択します。

5. オプションで、アセンブリ・ファイルで追加のOracle CQLプロセッサの機能を構成します。

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

- 10.3項「Oracle CQLプロセッサ表ソースの構成」

- 10.4項「Oracle CQLプロセッサ・キャッシュ・ソースの構成」

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

プロセッサ構成を作成、および編集する最も効率的かつ間違いの少ない方法は、Oracle CEP IDE for Eclipseを使用することではありますが(10.2.1項「Oracle CEP 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 Complex Event Processing CQL言語リファレンス』のOracle CQL問合せ、ビュー、および結合の概要に関する項を参照してください。

2. アプリケーションの各プロセッサに対して、前の手順で設計したOracle CQLルールおよび他の任意の機能を含むプロセッサ構成XMLファイルを作成します。
このXMLファイルの名前は自分で決定しますが、その拡張は.xmlで終了することが必要です。

プロセッサ構成ファイルのルート要素はconfigで、ネームスペース定義は次の手順に示します。

3. アプリケーションの各プロセッサに対して、configのprocessor子要素を追加します。
各プロセッサをname子要素で一意に識別します。この名前は、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルのwlevs:processor要素のid属性の値と同じである必要があります。これによって、Oracle CEPは、このプロセッサ構成はEPNアセンブリ・ファイルのどのプロセッサ・コンポーネントに適用されるかを理解します。詳細は、4.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 [Now]
WHERE  price > 10000
]]></query>
</rules>
</processor>
</n1:config>]]></query>

5. ファイルを保存して閉じます。

6. オプションで、アセンブリ・ファイルで追加のOracle CQLプロセッサの機能を構成します。

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

- 10.3項「Oracle CQLプロセッサ表ソースの構成」

- 10.4項「Oracle CQLプロセッサ・キャッシュ・ソースの構成」

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

表の各行がタプルとして表現されるイベント・ストリームとしてリレーショナル・データベース内の表にアクセスするよう、Oracle CQLプロセッサを構成できます。

この項では、例10-4に示されるSQL文を使用して、アクセスする表を作成することを想定します。

例10-4 表作成SQL文

create table Stock (symbol varchar(16), exchange varchar(16));

構成した後に、イベント・ストリームであるようにStock表にアクセスするOracle CQL問合せを定義できます。次の例では、問合せは1つのイベント・ストリームExchangeStreamをStock表と結合します。

例10-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 Complex Event Processing CQL言語リファレンス』のOracle JDBCデータ・カートリッジに関する項を参照してください。

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

リレーショナル・データベース表にアクセスするようにOracle CQLプロセッサを構成する最も効率的かつ間違いの少ない方法は、Oracle CEP IDE for Eclipseを使用することです。

Oracle CEP IDE for Eclipseを使用してOracle CQLプロセッサ表ソースを構成するには:

1. 使用する表が含まれるデータベースのデータ・ソースを作成します。

例10-6では、データ・ソースStockDSのOracle CEPサーバーconfig.xmlファイルの例を示します。

例10-6 データ・ソースStockDSがあるOracle CEP Server 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 Complex Event Processing管理者ガイド』のリレーショナル・データベースへのアクセスの構成に関する項を参照してください。

2. 表ノードを作成するには、Oracle CEP IDE for Eclipseを使用します。
6.4.1.1項「基本ノードの作成方法」を参照してください。

3. Oracle CQLプロセッサを作成するには、Oracle CEP IDE for Eclipseを使用します。
6.4.1.3項「プロセッサ・ノードの作成方法」を参照してください。

4. 表ノードをOracle CQLプロセッサ・ノードに接続します。
6.4.2.1項「ノードの接続方法」を参照してください。

EPNエディタは、ソース表を参照するターゲット・プロセッサ・ノードにwlevs:table-source要素を追加します。

5. EPNの表ノードを右クリックし、「アセンブリのソースに移動」を選択します。
Oracle CEP IDE for Eclipseはこの表ノードに対するEPNアセンブリ・ファイルを開きます。

6. 例10-7に示すようにtable要素を編集し、表10-1に示すようにtable要素属性を構成します。

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

<wlevs:table id="Stock" event-type="StockEvent" data-source="StockDs" />

表10-1 EPNアセンブリ・ファイル表要素属性

属性

説明

id

表ソースの名前。この表ソースの以降の参照ではこの名前を使用します。

event-type

ステップ9で作成する表event-typeに対して指定するtype-name。

data-source

ステップ1でOracle CEPサーバーconfig.xmlファイルで指定したdata-source名。

7. EPN内の表に接続しているOracle CQLプロセッサノードを右クリックし、「アセンブリのソースに移動」を選択します。
Oracle CEP IDE for EclipseはこのOracle CQLプロセッサに対するEPNアセンブリ・ファイルを開きます。

8. Oracle CQLプロセッサ要素のtable-source子要素を、例10-8に示されているように編集します。
ref属性をステップ6で指定したtable要素のidに設定します。

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

<wlevs:processor id="proc">
<wlevs:table-source ref="Stock" />
</wlevs:processor>

9. 例10-9に示されているように、EPNアセンブリ・ファイルを編集し、表に対してevent-type-repository要素を新しいevent-type子要素で更新します。

アクセスする表の各列にproperty子要素を作成し、表10-2に示されているようにプロパティ属性を構成します。

例10-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>

表10-2 EPNアセンブリ・ファイルevent-type要素プロパティ属性

属性

説明

name

SQL CREATE TABLE文で指定されている、アクセスする表の列の名前。すべての列を指定する必要はありません。

type

列のSQLデータ型に対応している表10-3内のOracle CEP Javaタイプ。

例10-4では、symbol列のtype値はchar[]です。

length

SQL CREATE TABLE文で指定されている列サイズ。

例10-4では、symbol列の長さは16です。

表10-3 SQL列タイプおよびOracle CEPタイプの対応するもの

SQLタイプ

Oracle CEP 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 1 またはDOUBLEFoot 2

java.lang.Double

double

java.lang.Doubleのインスタンス。

BINARY_FLOATFootref 1または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 Complex 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。

イベント・タイプの作成の詳細は、次の項を参照してください。

- 第2章「Oracle CEPイベント・タイプの作成」

- 2.1.3項「イベント・タイプ・データ型」

10. EPN内の表に接続しているOracle CQLプロセッサノードを右クリックし、「構成のソースに移動」を選択します。
Oracle CEP IDE for EclipseはこのOracle CQLプロセッサに対するコンポーネント構成ファイルを開きます。

11. 例10-10に示されているように、コンポーネント構成ファイルを編集して、表のevent-typeを使用するOracle CQL問合せを追加します。

例10-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 Complex Event Processing CQL言語リファレンス』のS[Now]に関する項を参照してください。

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

Oracle CEPキャッシュにアクセスするようにOracle CQLプロセッサを構成できます。

詳細は、次を参照してください:

- 12.1項「Oracle CEPキャッシュ構成の概要」

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

- 12.5項「Oracle CQL文からキャッシュへのアクセス」

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

パフォーマンス向上のため、CQL問合せを、デフォルトで行われているシリアル実行ではなく、パラレル実行できるようにすることが可能です。CQLコードがこれをサポートしている場合、CQLプロセッサで複数のスレッドが使用可能なときは、着信イベントをパラレルに実行するように問合せを構成できます。

問合せ出力イベントの相対的な順序が問合せのダウンストリーム・クライアントにとって重要ではない場合のみ、パラレル問合せ実行を有効にします。たとえば、トランザクション・シーケンスが無関係な、特定の会社に関係する証券取引のセットを顧客に伝えるなど、問合せの主な目的がイベントのフィルタ処理である場合、イベントの順序付けは重要ではないと考えられます。

デフォルト(パラレル実行を有効にしない)では、問合せはチャネルからイベントをシリアルに処理します。システム・タイムスタンプを使用するチャネルを経由してルーティングされるイベントの場合、イベント順序は、イベントが受信される順序です。アプリケーションがタイムスタンプを付けるチャネルを経由する場合、イベント順序は、イベントに含まれるタイムスタンプの値によって決定された順序です。全体順序の制約を緩和すると、構成された問合せは、可能な場合はイベントをパラレルに処理しながら、その問合せのイベント順序を考慮しないようにできます。

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

パラレル問合せ実行のサポートの指定が主に単純な構成タスクである場合は、機能を最大限に活用できるように、次の手順に必ず従ってください。

- パラレル実行をサポートするように、ordering-constraint属性を使用します。

- プロセッサに呼び出すスレッドが、パフォーマンスの目標を達成するのに十分であることを確認します。パラレル問合せ実行の最大量は、CQLプロセッサで使用できるスレッドの数によって制約されます。たとえば、プロセッサのアダプタ・アップストリームが必要なスレッドの数をサポートし、アダプタとプロセッサの間にチャネルがある場合、パススルーとして機能するように、max-threadsの数を0にしてチャネルを構成してください。
パススルーを行わない場合、必ずmax-threadsの値を1より大きくして、問合せのアップストリーム・チャネルを構成してください。(max-threadsの値の設定を有用にするには、max-size属性を0より大きい値に設定する必要もあります。)詳細は、第9章「チャネルの構成」を参照してください。

- max-threads属性値の設定に関連するその他のガイドラインに従います。たとえば、max-threadsの値の設定を有用にするには、max-size属性を0より大きい値に設定する必要もあります。

- 必要に応じて、同期化されたブロックの使用などによって、問合せ結果を受け取るBeanがスレッドを認識していることを確認します。たとえば、Beanのコードによって、複数のスレッドで実行された問合せから受け取った結果のリストを作成する場合に、これを行う必要がある可能性があります。

10.5.2 ordering-constraint属性の使用

イベントがシリアルに処理されることを保証する、デフォルトの順序付けの制約を緩和することで、パラレル問合せ実行を有効にします。これを行うには、queryまたはview要素でordering-constraint属性を設定します。

例10-11では、可能であれば常に、問合せをパラレルに実行するように、ordering-constraint属性をUNORDEREDに設定します。

例10-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属性を追加して、パーティション化用のどの式をパーティション間の順序付けの制約を緩和するための基準とするかも指定する必要があります。

例10-12では、GROUP BY句はsymbolの値に基づいて出力をパーティション化します。partition-expression属性は、特定のsymbolの値に対応するイベントの指定されたサブセット内のイベントをシリアルに処理するよう指定します。一方、パーティション間では順序を無視できます。

例10-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>

10.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.67項「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を使用可能なスレッド数より大きく設定しても、場合によっては有用なことがあります。

- 非常に高い値を指定すると、使用するメモリーでリソース・コストがかかります。

- このパラメータの調整は、アプリケーションおよび入力率の詳細に大きく依存します。実験によって調整することは、最適な値を決定するのに必要な場合があります。

10.5.4 制限事項

可能であれば常にCQLプロセッサによって使用できるように、サポートを指定するパフォーマンス強化機能として、パラレル問合せ実行を検討してください。すべての問合せをパラレルで実行できるわけではありません。これには、特定のCQL言語機能を使用した問合せが含まれています。

たとえば、問合せで集計のフォーム(値の範囲から最大値を検索するなど)を使用する場合、CQLプロセッサは問合せを完全にはパラレルで実行できない可能性があります(これには、順序付けの制約を考慮して正しい結果を保証する必要があります)。一部の問合せのセマンティクスがそれ自体でも順序付け処理への問合せを制限しています。パラレル実行のサポートを指定しているかどうかに関係なく、このような問合せはシリアルで実行されます。

また、IStream、RStreamおよびDStream演算子は、処理のためにそのオペランドの状態を維持し、問合せを実行するために、CQLプロセッサがスレッドを同期化する必要があるようにします。

CQLプロセッサは、常に問合せのセマンティク目的に配慮していることに注意してください。ordering-constraint属性によってこの目的を変更する場合、この属性は目的を元のままに残す値に強制変換されます。

partitioning-expression属性を使用している場合、この属性は単一の式のみをサポートしていることに留意してください。値への複数のプロパティ名の入力はサポートされていません。

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

この項では、Oracle CQLプロセッサ構成ファイルの例を記載します。次のものが含まれます。

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

- 10.6.2項「Oracle CQLプロセッサEPNアセンブリ・ファイル」

10.6.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要素が含まれている必要があることを意味します。(10.6.2項「Oracle CQL Processor EPNアセンブリ・ファイル」を参照)。

このOracle CQLプロセッサ・コンポーネント構成ファイルは、Oracle CQL view文(副問合せ同等のOracle CQL)を指定するための表示の要素も定義します。ビュー選択の結果はダウンストリーム・チャネルに出力されません。

最後に、このOracle CQLプロセッサ・コンポーネント構成ファイルはquery要素を定義し、Oracle CQL問合せ文を指定します。問合せ文は、ビューから選択します。デフォルトでは、問合せの結果はダウンストリーム・チャネルに出力されます。selector要素を使用して、チャネル構成でこの動作を制御できます。詳細は、次を参照してください:

- 9.2.1項「Oracle CEP IDE for Eclipseを使用してシステム・タイムスタンプ・チャネルを構成する方法」

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

10.6.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>

11 EPLプロセッサの構成

この章では、Oracle Complex Event Processing (Oracle CEP)イベント処理ネットワーク用にOracle Event Processing Language (EPL)プロセッサを構成する方法について説明します。EPLは非推奨です。新しいアプリケーションではOracle Continuous Query Languageを使用する必要があります。

- 11.1項「EPLプロセッサ・コンポーネント構成の概要」

- 11.2項「EPLプロセッサの構成」

- 11.3項「EPLプロセッサ・キャッシュ・ソースの構成」

- 11.4項「EPLプロセッサ構成ファイルの例」

注意:

イベント処理言語(EPL)は、Oracle CEP 11gリリース1 (11.1.1)ではOracle CQLによって置き換えられます。Oracle CEPは、EPLとの下位互換性をサポートします。詳細は、第10章「Oracle CQLプロセッサの構成」を参照してください。

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

Oracle CEPアプリケーションには、1つ以上の複雑なイベント・プロセッサ、もしくはプロセッサが含まれています。各プロセッサは1つまたは複数のアダプタからのイベントを入力として受け取ります。これらのアダプタでは、ソースから連続的なデータ・ストリームを送信するデータ・フィードにリスニングします。金融データ・フィードからOracle CEPロード・ジェネレータまで、任意のソースを使用できます。

EPLプロセッサの主な機能は、受信イベントのサブセットを選択してプロセッサをリスニングしているコンポーネントに渡す、関連付けられたEvent Processing Language (EPL)のルールです。リスニングするコンポーネントには、他のプロセッサまたは通常はイベント処理ネットワークの最後を定義し、クライアント・アプリケーションへのパブリッシュなどイベントでなんらかの処理を実行するビジネス・オブジェクトPOJOを指定できます。EPLの詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing EPL言語リファレンス』を参照してください。

アプリケーションの各EPLプロセッサに対して、コンポーネント構成ファイルにprocessor要素を作成する必要があります。このprocessor要素には、プロセッサのEPLルールの初期セット、および次のような任意のプロセッサ構成を指定します。

- Oracle CEPアプリケーションでリレーショナル・データベースへの接続が必要な場合は、JDBCデータ・ソースのリファレンス。

- プロセッサのモニターの有効化。

EPLプロセッサEPNアセンブリ・ファイルに、任意の追加EPLプロセッサの機能を構成できます。

コンポーネント構成ファイルprocessor要素のname要素は、EPNアセンブリ・ファイルprocessor要素のid属性と一致している必要があります。たとえば、例11-1に表示されるEPNアセンブリ・ファイルprocessor要素が指定され、例11-2に表示される対応するコンポーネント構成ファイルprocessor要素が指定されています。

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

<wlevs:processor id="proc" provider="epl" >
<wlevs:table-source ref="Stock" />
</wlevs:processor>

例11-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 CEP 11gリリース1 (11.1.1)では、Event Processing Language (EPL)はOracle CQLで置換されているため、デフォルトのプロセッサ・プロバイダはcqlです。EPNアセンブリ・ファイルにEPLプロセッサを指定するには、例11-1に示すように、wlevs:processor要素のprovider属性をeplに設定する必要があります。Oracle CEPは、EPLとの下位互換性をサポートします。詳細は、第10章「Oracle CQLプロセッサの構成」を参照してください。

processor要素は、次のいずれかの任意のコンポーネント構成ファイルに作成できます。

- デフォルトのOracle CEPアプリケーションの構成ファイル(デフォルトでは、META-INF/wlevs/config.xml)。

- 個別の構成ファイル。

アプリケーションに1つ以上のプロセッサが含まれている場合は、デフォルトconfig.xmlファイルでプロセッサごとにprocessor要素を作成できます。また、プロセッサごとにMETA-INF/wlevsに個別のXMLファイルを作成するか、またはすべてのプロセッサの構成のみでなく、アプリケーション内のすべてのコンポーネント(アダプタ、プロセッサ、およびチャネル)が含まれる単一のXMLファイルをMETA-INF/wlevsに作成できます。開発環境に最も適した方法を選択します。

デフォルトでは、Oracle CEP IDE for Eclipseは1つのコンポーネント構成ファイルと1つのEPNアセンブリ・ファイルを作成します。Oracle CEP IDE for Eclipseを使用してEPLプロセッサを作成する場合、デフォルトでプロセッサ要素がデフォルト・コンポーネント構成ファイルMETA-INF/wlevs/config.xmlファイルに追加されます。

コンポーネント構成ファイルは、Oracle CEPアプリケーション・バンドルの一部としてデプロイされます。Oracle CEP Visualizer、wlevs.Adminユーティリティを使用するか、または適切なJMX Mbeanを直接操作して、後で実行時にこの構成を更新できます。

詳細は、次を参照してください:

- 1.1.5項「コンポーネント構成ファイル」

- 1.1.4項「EPNアセンブリ・ファイル」

- 4.3項「EPNアセンブリ・ファイルの作成」

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のwlevs.Adminコマンドライン・リファレンスに関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPのJMXの構成に関する項

EPLプロセッサ構成の詳細は、次の項を参照してください。

- 11.2項「EPLプロセッサの構成」

- 11.3項「EPLプロセッサ・キャッシュ・ソースの構成」

- 11.4項「EPLプロセッサ構成ファイルの例」

11.2 EPLプロセッサの構成

以下の手順では、プロセッサの構成ファイルを作成する主な手順について示します。簡略化のため、この手順ではすべてのプロセッサを1つのXMLファイルに構成することを想定しています。ただし、各プロセッサごとに個別のファイルを作成することもできます。

プロセッサ構成ファイルを記述する完全なXSDスキーマは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

プロセッサ構成ファイルの完全な例は、11.4項「EPLプロセッサ構成ファイルの例」を参照してください。

11.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 Complex Event Processing EPL言語リファレンス』を参照してください。

2. アプリケーションの各プロセッサについて上記の手順で設計されたEPLルールおよびオプションの機能が含まれた、プロセッサ構成XMLファイルを作成します。
このXMLファイルの名前は自分で決定しますが、その拡張は.xmlで終了することが必要です。

プロセッサ構成ファイルのルート要素はconfigで、ネームスペース定義は次の手順に示します。

3. アプリケーションの各プロセッサに対して、configのprocessor子要素を追加します。
各プロセッサをname子要素で一意に識別します。この名前は、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルのwlevs:processor要素のid属性の値と同じである必要があります。これによって、Oracle CEPは、このプロセッサ構成はEPNアセンブリ・ファイルのどのプロセッサ・コンポーネントに適用されるかを理解します。詳細は、4.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 CEP 11gリリース1 (11.1.1)では、Event Processing Language (EPL)はOracle CQLで置換されているため、デフォルトのプロセッサ・プロバイダはcqlです。EPNアセンブリ・ファイルにEPLプロセッサを指定するには、wlevs:processor要素のprovider属性をeplに設定する必要があります。Oracle CEPは、EPLとの下位互換性をサポートします。詳細は、第10章「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 Complex Event Processing管理者ガイド』のリレーショナル・データベースへのアクセスの構成に関する項を参照してください。

例:

<processor>
<name>firstProcessor</name>
<rules>
....
</rules>
<database>
<name>myDataSource</name>
<data-source-name>rdbmsDataSource</data-source-name>
</database>
</processor>

6. ファイルを保存して閉じます。

7. 必要に応じて、アセンブリ・ファイルに追加のEPLプロセッサ機能を構成します。

- 11.3項「EPLプロセッサ・キャッシュ・ソースの構成」

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

EPLプロセッサを構成してOracle CEPキャッシュにアクセスできます。

詳細は、次を参照してください:

- 12.1項「Oracle CEPキャッシュ構成の概要」

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

- 12.6項「EPL文からキャッシュへのアクセス」

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

この項では、Oracle CQLプロセッサ構成ファイルの例を記載します。次のものが含まれます。

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

- 11.4.2項「EPLプロセッサEPNアセンブリ・ファイル」

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

次の例は、11.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" />要素を含む必要があることを示します(11.4.2項「EPLプロセッサEPNアセンブリ・ファイル」を参照してください)。

11.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>

12 キャッシュの構成

この章では、Oracle Complex Event Processing (Oracle CEP)イベント処理ネットワークで使用するためのキャッシュ・システムの構成方法について説明します。これには、Oracle Coherence、Oracle CEPおよびサードパーティのキャッシュ・プロバイダに基づくキャッシュを構成し、Oracle Continuous Query Language、Javaクラスおよびその他のコードからアクセスする方法に関する情報が含まれます。

- 12.1項「Oracle CEPキャッシュ構成の概要」

- 12.2項「Oracle CEPローカル・キャッシュ・システムおよびキャッシュの構成」

- 12.3項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」

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

- 12.5項「Oracle CQL文からキャッシュへのアクセス」

- 12.6項「EPL文からキャッシュへのアクセス」

- 12.7項「アダプタからキャッシュへのアクセス」

- 12.8項「ビジネスPOJOからキャッシュへのアクセス」

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

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

- 12.11項「JMXの使用によるキャッシュへのアクセス」

12.1 Oracle CEPキャッシュ構成の概要

キャッシュとはイベントの一時保存領域で、Oracle CEPアプリケーションの全体のパフォーマンスを向上するために排他的に作成されます。アプリケーションが正常に機能するためには必要ありません。Oracle CEPアプリケーションはオプションでイベントをキャッシュにパブリッシュしたりキャッシュから消費したりして、イベントの可用性およびアプリケーションのパフォーマンスを向上させることができます。

キャッシュ・システムとは、キャッシュ実装の構成されたインスタンスです。キャッシュ・システムは、構成されたキャッシュの名前付きセットを定義すると共に、任意のキャッシュが複数のマシンに渡って配信される場合、リモート通信用の構成を定義します。

Oracle CEPは、次のキャッシュ・システムをサポートします。

- Oracle CEPローカル・キャッシュ: メモリー内のローカル・シングルJVMキャッシュ。

- Oracle Coherence: クラスタリングされたアプリケーションおよびアプリケーション・サーバーのJCacheに準拠したメモリー内の分散型データ・グリッドソリューション。クラスタ全体の同時実行性制御を使用してデータへの更新を調整し、利用可能な最高性能のクラスタ・プロトコルを使用してクラスタ全体のデータ変更をレプリケートして、データ修正の通知をリクエストする任意のサーバーへの通知を分散化します。標準Java collections APIを使用してOracle Coherenceの機能を利用してデータへのアクセスおよびデータ変更を行い、標準JavaBeanイベント・モデルを使用してデータ変更通知を受信します。

注意:

Oracle Coherenceと共にOracle CEPを使用する前に、Coherence Enterprise Edition、Coherence Grid Edition、またはOracle WebLogic Application Grid用ライセンスなどの有効なOracle Coherenceライセンスを取得する必要があります。Oracle Coherenceに関する詳細は、http://www.oracle.com/technology/products/coherence/index.htmlを参照してください。

- サードパーティのキャッシュ: Oracle CEPをサードパーティの他のキャッシュ実装で機能することを可能にするプラグインを作成できます。

キャッシュは、イベント処理ネットワーク内のステージとみなされ、ここでは外部要素(キャッシュ)の消費やイベントの作成が行われます。これはJMSの宛先を使用するアダプタに似ています。ただし、キャッシュが実際にネットワークのステージである必要はありません。他のコンポーネントまたはSpring BeanではプログラムからキャッシングAPIを使用してキャッシュにアクセスできます。

キャッシュ・システムは、アプリケーション・レベルで常に構成されます。個別のバンドルで他のOracle CEPアプリケーションもキャッシュ・システムを使用できます。

アプリケーション内の各キャッシュ・システムの場合、コンポーネント構成ファイル内でcaching-system要素を作成する必要があります。このcaching-system要素では、キャッシュ・システム名および1つ以上のcache要素を指定します。cache要素では、次のようなオプションのキャッシュ構成を定義します。

- 最大キャッシュ・サイズ

- 削除ポリシー

- 存続時間

- アイドル時間

- 書込みポリシー(write-none、write-through、またはwrite-behind)

- ワーク・マネージャ

コンポーネント構成ファイルのcaching-system要素のname要素は、EPNアセンブリ・ファイルのcaching-system要素のid属性に一致する必要があります。たとえば、例12-1に示すようにEPNアセンブリ・ファイルのcaching-system要素の場合、対応するコンポーネント構成ファイルのcaching-system要素は例12-2で示されます。

例12-1 EPNアセンブリ・ファイルのキャッシュ・システムID: cacheSystem

<wlevs:caching-system id="cacheSystem">
...
</wlevs:caching-system>

<wlevs:cache id="cache1">
<wlevs:caching-system ref="cacheSystem"/>
</wlevs:cache>

例12-2 コンポーネント構成ファイルのキャッシュ・システム名: cacheSystem

<caching-system>
<name>cacheSystem</name>
<cache>
<name>cache1</name>
...
</cache>
</caching-system>

同様に、コンポーネント構成ファイルのcache要素のname要素は、EPNアセンブリ・ファイルのcache要素のid属性に一致する必要があります。たとえば、例12-1に示すようにEPNアセンブリ・ファイルのcache要素の場合、対応するコンポーネント構成ファイルのcache要素は例12-2で示されます。

例12-3 EPNアセンブリ・ファイルのキャッシュID: cache1

<wlevs:caching-system id="cacheSystem">
...
</wlevs:caching-system>

<wlevs:cache id="cache1">
<wlevs:caching-system ref="cacheSystem"/>
</wlevs:cache>

例12-4 コンポーネント構成ファイルのキャッシュ名: cache1

<caching-system>
<name>cacheSystem</name>
<cache>
<name>cache1</name>
...
</cache>
</caching-system>

次のコンポーネント構成ファイルのいずれかでcaching-system要素を作成できます。

- デフォルトのOracle CEPアプリケーションの構成ファイル(デフォルトでは、META-INF/wlevs/config.xml)。

- 個別の構成ファイル。

アプリケーションが1つ以上のキャッシュ・システムを持つ場合、デフォルトのconfig.xmlファイル内でそれぞれのキャッシュのcaching-system要素を作成したり、それぞれのMETA-INF/wlevsで個別のXMLファイルを作成したり、すべてのキャッシュ・システムの構成またはアプリケーションのすべてのコンポーネント(アダプタ、プロセッサ、およびチャネル)さえも含むMETA-INF/wlevsで単一のXMLファイルを作成したりできます。開発環境に最も適した方法を選択します。

デフォルトでは、Oracle CEP IDE for Eclipseは1つのコンポーネント構成ファイルと1つのEPNアセンブリ・ファイルを作成します。Oracle CEP IDE for Eclipseを使用してEPNにキャッシュを追加するとき、キャッシュ要素をEPNアセンブリ・ファイルに追加します。手動でcaching-system要素をEPNアセンブリ・ファイルおよびコンポーネント構成ファイルに追加する必要があります。

コンポーネント構成ファイルは、Oracle CEPアプリケーション・バンドルの一部としてデプロイされます。Oracle CEP Visualizer、wlevs.Adminユーティリティを使用するか、または適切なJMX Mbeanを直接操作して、後で実行時にこの構成を更新できます。

詳細は、次を参照してください:

- 1.1.5項「コンポーネント構成ファイル」

- 1.1.4項「EPNアセンブリ・ファイル」

- 4.3項「EPNアセンブリ・ファイルの作成」

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のwlevs.Adminコマンドライン・リファレンスに関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPのJMXの構成に関する項

キャッシュの構成に関する詳細は、次を参照してください。

- 12.1.1項「キャッシュのユース・ケース」

- 12.1.2項「追加キャッシュ機能」

- 12.1.3項「キャッシュAPI」

12.1.1 キャッシュのユース・ケース

次の項では、主要なOracle CEPキャッシュのユース・ケースを説明します。

12.1.1.1 ユース・ケース: イベントのキャッシュへのパブリッシュ

このユース・ケースは、金融市場が開いている間はイベントをキャッシュにパブリッシュし、マーケット終了後にキャッシュのデータを処理する金融アプリケーションです。

イベントをキャッシュにパブリッシュすると、イベントを高可用性にしたり、サーバー上で稼働する他のOracle CEPアプリケーションで使用可能になったりします。イベントをキャッシュにパブリッシュすると、キャッシュの実装によってセカンダリ・ストレージへの非同期的書込みも可能になります。イベント(入力アダプタ、チャネル、ビジネスPOJO、またはプロセッサ)を生成し、そのイベントをキャッシュにパブリッシュするOracle CEPアプリケーション内の任意のステージを構成できます。

12.1.1.2 ユース・ケース: キャッシュからのデータの消費

Oracle CEPアプリケーションでは、ときには処理を実行するためストリーミング以外のデータにアクセスする必要があります。このようなデータをキャッシュすることで、アプリケーションのパフォーマンスが向上します。

プログラムによりキャッシュに直接アクセスできるOracle CEPアプリケーションの標準のコンポーネントは、入力および出力アダプタ、およびビジネスPOJOです。

また、アプリケーションは、ユーザー定義関数またはOracle CQL/EPL文から直接のいずれの方法でも、Oracle CQL/EPLからキャッシュにアクセスできます。

ユーザー定義関数の場合、プログラマはSpringを使用してキャッシュ・リソースを関数の実装に組み込みます。詳細は、1.4項「Oracle CEPリソース・アクセスの構成」を参照してください。

アプリケーションは、プロセッサ内で実行されるOracle CQL/EPL文から直接キャッシュに問い合せることもできます。この場合、データがキャッシュから抽出される場合を除いて、キャッシュへの問合せがチャネルへの問合せに酷似するように、キャッシュは必然的にプロセッサへの別の種類のストリーム・データ・ソースとして機能します。

キャッシュに問い合せるためにOracle CQLを使用する例は、注文や注文をキャッシュに実行するために使用される取引をパブリッシュする金融アプリケーションにみられます。一日の最後のマーケット終了時に、アプリケーションは、特定の注文に関連したすべての取引を検索するためにキャッシュに問い合せます。

12.1.1.3 ユース・ケース: キャッシュ内データの更新および削除

Oracle CEPアプリケーションでは、必要に応じてキャッシュのデータを更新および削除できます。

たとえば、金融アプリケーションでは注文を実現する個々の取引が実行されるたびにキャッシュ内の注文を更新し、注文が取り消された場合はこれを削除する必要があります。キャッシュ内のデータの使用が許可されたアプリケーションのコンポーネントには、データの更新も許可されます。

12.1.1.4 ユース・ケース: マルチサーバー・ドメインにおけるキャッシュの使用

キャッシュを使用するOracle CEPアプリケーションを構築する場合、そのアプリケーションをマルチサーバー・ドメインでデプロイし、分散型キャッシュをサポートするキャッシュ・システムを使用する必要があります。

この場合、Oracle Coherenceまたは分散型キャッシュをサポートするサードパーティのキャッシュ・システムのいずれかを使用する必要があります。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPネイティブ・クラスタリングによるマルチサーバー・ドメインの管理に関する項

- 12.3項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」

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

12.1.2 追加キャッシュ機能

上記に示す主なキャッシング機能のほか、Oracle CEPキャッシングには次の機能もあります。

- アプリケーションのデプロイ前にキャッシュにデータをあらかじめロードします。

- キャッシュのデータを定期的にリフレッシュ、無効化、およびフラッシュします。これらのタスクはすべてインクリメンタルに行われ、アプリケーションの停止や待機時間スパイクは発生しません。

- 動的にキャッシュの構成を更新します。

12.1.3 キャッシュAPI

Oracle CEPには、アプリケーションで特定のタスクを実行するために使用できる多数の キャッシングAPI が用意されています。APIの2つのパッケージがあります。

- com.bea.cache.jcache: キャッシュへのアクセスおよびキャッシュ・ローダー、キャッシュ・リスナー、キャッシュ・ストアの作成に使用されるAPIを含みます。

- com.bea.wlevs.cache.spi: キャッシュ・システムへのアクセスに使用されるAPIを含みます。

キャッシュ・システムおよびキャッシュの作成、構成、書込みは、すべてEPNアセンブリ・ファイルおよびコンポーネント構成ファイルによって行われます。つまり、通常は、アプリケーションでCacheおよびCachingSystemインタフェースを明示的に使用しないことになります。それらを使用する唯一の理由は、標準の構成に追加する要件がある場合のみです。例: サードパーティのキャッシュ・プロバイダに統合する場合、CachingSystemインタフェースを使用する必要があります。java.util.Mapインタフェースの一部ではないキャッシュ上の操作を行う場合、Cacheインタフェースを使用できます。

Oracle CEPのローカル・キャッシュ用のキャッシュ・リスナー、キャッシュ・ローダー、またはキャッシュ・ストアを作成する場合、書き込むSpring BeanはCacheListener、CacheLoader、またはCacheStoreインタフェースを実装する必要があります。

Oracle Coherenceキャッシュ用のキャッシュ・リスナー、キャッシュ・ローダー、またはキャッシュ・ストアを作成する場合、書き込むSpring Beanは適切なOracle Coherenceインタフェースを実装する必要があります。

サードパーティのキャッシュ用のキャッシュ・リスナー、キャッシュ・ローダー、またはキャッシュ・ストアを作成する場合、書き込むSpring Beanは適切なサードパーティのキャッシュ・インタフェースを実装する必要があります。

詳細は、次を参照してください:

- 12.2項「Oracle CEPローカル・キャッシュ・システムおよびキャッシュの構成」

- 12.3項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」

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

- Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンス

12.2 Oracle CEPローカル・キャッシュ・システムおよびキャッシュの構成

Oracle CEPローカル・キャッシュ・システムおよびキャッシュを使用するようにアプリケーションを構成できます。Oracle CEPローカル・キャッシュ・システムは、アプリケーションをマルチサーバー・ドメインにデプロイしようと計画しない場合に適切です。アプリケーションをマルチサーバー・ドメインにデプロイしようと計画する場合、Oracle Coherenceのキャッシュを使用することを考慮してください(詳細は、12.3項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」を参照)。

注意:

この項では、EPNアセンブリ・ファイルを伴うOracle CEPアプリケーションを作成済で、アプリケーションを更新してキャッシュを使用すると仮定します。そうでない場合、詳細は第1章「Oracle CEPアプリケーションの作成の概要」を参照してください。

Oracle CEPローカル・キャッシュ・システムおよびキャッシュを構成するには:

1. EPNアセンブリ・ファイルでキャッシング・システムを宣言します。

Oracle CEPの実装をEPNアセンブリ・ファイルで宣言して使用するキャッシュ・システムを宣言するには、次の例に示すように、wlevs:caching-system要素を追加属性なしに使用します。

<wlevs:caching-system id="caching-system-id"/>

id属性の値は、外部構成メタデータでキャッシュ・システムに指定される名前と一致する必要があります。

他のアプリケーションがキャッシュ・システムを使用できるようにするには、advertise属性(デフォルトではfalseに設定されています)を使用してキャッシュ・システムが通知されるように指定します。

<wlevs:caching-system id="caching-system-id" advertise="true"/>

2. EPNアセンブリ・ファイルでキャッシュ・システムに1つ以上のキャッシュを宣言します。

アプリケーションのキャッシュ・システムを宣言した後、wlevs:cache要素を使用して1つ以上のキャッシュを構成します。

<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>

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インタフェースを実装します。

3. お気に入りのXMLエディタを使用してアプリケーションのコンポーネント構成XMLファイルを開きます。

4. configルート要素を更新し、caching-system子要素に追加します。name子要素を使用して一意でそれを識別します。
この名前は、ステップ1においてEPNアセンブリ・ファイルで指定したwlevs:caching-system要素のid属性と一致する必要があります。これが、このキャッシュ構成が適用される対象の、EPNアセンブリ・ファイル内の特定のキャッシュ・システムをOracle CEPが認識する仕組みです。

たとえば、構成ファイルにはすでにプロセッサとアダプタが含まれているとします(簡略化のため内容は省略します)。更新されたファイルは、次のようになります。

<?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>

5. 作成する各キャッシュでは、caching-system要素を更新し、cache子要素を追加します。name子要素を使用すると、一意でそれを識別できます。
このnameは、ステップ2においてEPNアセンブリ・ファイルで指定したwlevs:cache要素のid属性と一致する必要があります。これが、この構成が適用される対象の、EPNアセンブリ・ファイル内の特定のキャッシュをOracle CEPが認識する仕組みです。

次の例は、キャッシュ・システムにおける2つのキャッシュを示します。

<caching-system>
<name>caching-system-id</name>
<cache>
<name>cache-id</name>
...
</cache>
<cache>
<name>second-cache-id</name>
...
</cache>
</caching-system>

6. 各キャッシュについて、必要に応じて次の単純データ型の要素を追加して、キャッシュを構成します。

- 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>

7. オプションで、write-throughまたはwrite-behindのいずれかをcacheの子要素として追加し、それぞれのキャッシュ・ストアへの同期/非同期書込みを指定します。デフォルトでは、ストアへの書込みは同期的(<rite-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>

8. オプションで、cache要素のlisteners子要素を追加し、キャッシュをリスニングするコンポーネントの動作を構成できます。
asynchronousのブール属性を使用すると、リスナーを起動するかどうかを指定できます。

- 非同期: true。

- 同期: falseで、リスナーは同期的に起動されることになります(デフォルト)。

listeners要素には、work-manager-nameという単一の子要素があり、これが非同期的なリスナーの起動に使用されるワーク・マネージャを指定します。この値は、同期的起動が有効化されている場合は無視されます。ワーク・マネージャがキャッシュそのものに指定されている場合、この値はリスナーのみを起動するためにオーバーライドします。この要素の値は、Oracle CEPサーバーの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」を参照してください。

9. オプションで、1つ以上の追加cache要素の子要素を持つEPNアセンブリ・ファイルを更新することによって、デフォルトのキャッシュ構成をオーバーライドします。

- イベント・シンクをイベント処理ネットワーク内で別のコンポーネントへのリスナーとして構成することによって、キャッシュがイベント・シンクであると指定します。
詳細は、12.2.1項「イベント・リスナーとしてのOracle CEPローカル・キャッシュの構成」を参照してください。

- キャッシュが、イベント処理ネットワーク内の別のコンポーネントがリスニングする対象のイベント・ソースであると指定します。
詳細は、12.2.2項「イベント・ソースとしてのOracle CEPローカル・キャッシュの構成」を参照してください。

- キャッシュのキャッシュ・ローダーを構成します。
詳細は、12.2.3項「Oracle CEPローカル・キャッシュ・ローダーの構成」を参照してください。

- キャッシュのキャッシュ・ストアを構成します。
詳細は、12.2.4項「Oracle CEPローカル・キャッシュ・ストアの構成」を参照してください。

10. Oracle CEPローカル・キャッシュへのアクセス。

- オプションで、問合せ文内でOracle CEPローカル・キャッシュを参照します。
参照:

- 12.5項「Oracle CQL文からキャッシュへのアクセス」

- 12.6項「EPL文からキャッシュへのアクセス」

- オプションで、カスタム・アダプタ、ビジネスPOJO、またはOracle CQL/EPLのユーザー定義関数を構成およびプログラムし、Oracle CEPローカル・キャッシュにアクセスします。
構成はEPNアセンブリ・ファイルで実行され、プログラミングはアダプタ、POJO、またはユーザー定義関数を実装するJavaファイルで実行されます。

参照:

- 12.7項「アダプタからキャッシュへのアクセス」

- 12.8項「ビジネスPOJOからキャッシュへのアクセス」

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

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

- オプションで、JMXを使用してOracle CEPローカル・キャッシュにアクセスします。
詳細は、12.11項「JMXの使用によるキャッシュへのアクセス」を参照してください。

11. アプリケーションをアセンブルする場合は、図12-1に示すように、META-INF/MANIFEST.MFファイルに次のインポートが含まれていることを確認してください。

com.bea.wlevs.cache.spi; version ="11.1.0.0"

MANIFEST.MFファイルがこのインポートを含まない場合、MANIFEST.MFファイルを更新し、アプリケーションをデプロイする前にこのインポートを追加します。

図12-1 MANIFEST.MFファイルの編集

「図12-1 MANIFEST.MFファイルの編集」の説明

12.2.1 イベント・リスナーとしてのOracle CEPローカル・キャッシュの構成

Oracle CEPローカル・キャッシュは、イベントを受信するためのイベント処理ネットワーク内の明示的なリスナーとして構成可能です。

たとえば、キャッシュがチャネルをリスニングすることを指定するには、次に示すようにwlevs:channel要素の子要素としてキャッシュへの参照を持つ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(出力ウィンドウに存在する古いイベント)がチャネルによって送信される場合、そのイベントはキャッシュから削除されます。

12.2.1.1 Oracle CEPローカル・キャッシュの索引作成に使用されるキーの指定

Oracle CEPローカル・キャッシュがリスナーとなるように構成するとき、イベントはキャッシュに挿入されます。この項では、このインスタンスでキャッシュの作成に使用されるキーを指定するために利用可能な各種オプションを説明します。

明示的にキーを指定しない場合、イベントがキャッシュに挿入されるときにイベント・オブジェクト自体はキーおよび値の両方として提供されます。この場合、イベント・クラスには、キー・プロパティ値を考慮するequalsおよびhashcodeメソッドの有効な実装が含まれる必要があります。

キーの明示的な指定方法については、次を参照してください。

- 12.3.2.1.1項「EPNアセンブリ・ファイルにおけるキー・プロパティの指定」

- 12.3.2.1.2項「キーを指定するためのメタデータ注釈の使用」

- 12.3.2.1.3項「複合キーの指定」

12.2.1.1.1 EPNアセンブリ・ファイルにおけるキー・プロパティの指定

第1オプションは、次の例で示されるように、key-properties属性を使用してEPNアセンブリ・ファイル内でキャッシュが宣言されるときにキー・プロパティのプロパティ名を指定することです。

<wlevs:cache id="cache-id" key-properties="key-property-name">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

この場合、キャッシュに挿入されるすべてのイベントで実行時にこの名前のプロパティを保持することが要求され、それ以外の場合はOracle CEPで例外がスローされます。

たとえば、キャッシュに挿入されているイベント型は次のように見えると仮定します。ここで、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="cache-id" key-properties="key">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

12.2.1.1.2 キーを指定するためのメタデータ注釈の使用

第2オプションは、イベント型を実装するJavaクラスにおけるイベント・プロパティに注釈を付けるためのメタデータ注釈com.bea.wlevs.ede.api.Keyを使用することです。この注釈には属性がありません。

メタデータ注釈を使用してキーを指定するには、次のステップを実行します。

1. com.bea.wlevs.ede.api.Keyパッケージをインポートします。
詳細は、4.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;
}
...
}

12.2.1.1.3 複合キーの指定

最後のオプションは、複数のプロパティがキーを形成する複合キーを指定するためのwlevs:cache要素のkey-class属性を使用することです。key-class属性値は、パブリック・フィールドがイベント・クラスのフィールドに一致するJavaBeanとなる必要があります。照合はフィールド名に従って実行されます。例:

<wlevs:cache id="cache-id" key-class="key-class-name">
<wlevs:caching-system ref="caching-system-id"/>
</wlevs:cache>

12.2.2 イベント・ソースとしてのOracle CEPローカル・キャッシュの構成

Oracle CEPローカル・キャッシュは、イベント処理ネットワーク内の別のコンポーネントがリスニングする対象のイベント・ソースとして構成可能です。リスニングするコンポーネントは、アダプタまたは標準のSpring Beanです。キャッシュをリスニングする任意のコンポーネントは、com.bea.cache.jcache.CacheListenerインタフェースを実装する必要があります。次の例では、キャッシュをSpring Beanのイベント・ソースとなるように構成する方法を示します。

<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クラスは自分でプログラムする必要があります。

12.2.3 Oracle CEPローカル・キャッシュ・ローダーの構成

Oracle CEPローカル・キャッシュ・ローダーは、オブジェクトをOracle CEPローカル・キャッシュにロードするオブジェクトです。wlevs:cache要素のwlevs:cache-loader子要素を使用することによって、キャッシュ・ローダーを構成し、次の例で示すようにロード処理を行うBeanを指定します。

<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-loader ref="cache-loader-id" />
</wlevs:cache>
...
<bean id="cache-loader-id" class="wlevs.example.MyCacheLoader"/>

この例では、cache-loader-idのSpring Beanはキャッシュのロード処理を行い、wlevs:cache-loader子要素のref属性を使用してキャッシュによって参照されます。

wlevs.example.MyCacheLoaderクラスは自分でプログラムする必要があり、com.bea.cache.jcache.CacheLoaderインタフェースを実装する必要があります。このインタフェースには、単一のオブジェクトのキャッシュへのロードをカスタマイズするためのloadメソッドが含まれます。Oracle CEPは、リクエストされたオブジェクトがキャッシュ内にないときにこのメソッドをコールします。このインタフェースには、キャッシュ全体のロードをカスタマイズするために実装するloadAllメソッドも含まれます。

12.2.4 Oracle CEPローカル・キャッシュ・ストアの構成

カスタム・ストアを持つOracle CEPローカル・キャッシュを構成することができます。これは、データベースの表などのバッキング・ストアにキャッシュからのデータを書き込む処理を行います。wlevs:cache要素のwlevs:cache-store子要素を使用することによって、キャッシュ・ストアを構成し、次の例で示すように実際の保存処理を行うBeanを指定します。

<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-store ref="cache-store-id" />
</wlevs:cache>
...
<bean id="cache-store-id" class="wlevs.example.MyCacheStore"/>

この例では、cache-store-idのSpring Beanはバッキング・ストアにキャッシュからのデータを書き込む処理を行い、wlevs:cache-store子要素のref属性を使用してキャッシュによって参照されます。

wlevs.example.MyCacheStoreクラスは自分でプログラムする必要があり、com.bea.cache.jcache.CacheStoreインタフェースを実装する必要があります。このインタフェースには、受け渡されたキーを使用してバッキング・ストアにデータを保存するstoreメソッドが含まれます。Oracle CEPは、データをキャッシュに挿入するときにこのメソッドをコールします。このインタフェースは、write-behind構成要素を使用してキャッシュに非同期書込みを構成した場合に、バッキング・ストアへのデータの一括保存に使用するstoreAllメソッドも含みます。

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

Oracle Coherenceキャッシュ・システムおよびキャッシュを使用するようにアプリケーションを構成できます。アプリケーションをマルチサーバー・ドメインにデプロイしようとする場合は、このキャッシュ・システムを使用します。

Oracle Coherenceを使用すると、第1キャッシュ・システムのみがサーバー内に構成されます。Oracle CEPは、構成する可能性がある他のキャッシュ・システムは無視します。

注意:

Oracle Coherenceと共にOracle CEPを正式に使用する前に、Coherence Enterprise Edition、Coherence Grid Edition、またはOracle WebLogic Application Grid用ライセンスなどの有効なCoherenceライセンスを取得する必要があります。Oracle Coherenceに関する詳細は、http://www.oracle.com/technology/products/coherence/index.htmlを参照してください。

注意:

この項では、EPNアセンブリ・ファイルを伴うOracle CEPアプリケーションを作成済で、アプリケーションを更新してキャッシュを使用すると仮定します。そうでない場合、詳細は第1章「Oracle CEPアプリケーションの作成の概要」を参照してください。

Oracle Coherenceキャッシュ・システムおよびキャッシュを構成するには:

1. Oracle Coherenceキャッシュをこのアプリケーションだけが使用するか、2つ以上のアプリケーションで共有するかを決定します。
詳細は、12.3.5項「共有Oracle Coherenceキャッシュの構成」を参照してください。

2. EPNアセンブリ・ファイル内でOracle Coherenceキャッシュ・システムを宣言します。
Oracle Coherenceの実装をEPNアセンブリ・ファイルで宣言して使用するキャッシュ・システムを宣言するには、次の例に示すように、wlevs:caching-system要素を使用します。

<wlevs:caching-system id="caching-system-id" provider="coherence" advertise="false"/>

id属性値は、アプリケーションのコンポーネント構成ファイル内でキャッシュ・システムに指定する名前と一致する必要があります(ステップ4を参照)。

3. EPNアセンブリ・ファイルでキャッシュ・システムに1つ以上のキャッシュを宣言します。
アプリケーションのキャッシュ・システムを宣言した後、wlevs:cache要素を使用して1つ以上のキャッシュを構成します。

<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>

wlevs:cache要素のid属性は必須です。この属性は、Oracle Coherence構成ファイル内のキャッシュ名にマップします(ステップ4を参照)。

name属性はオプションです。キャッシュ・システムでキャッシュ名がそのIDと異なる場合のみ指定します。wlevs:caching-systemの子要素は、キャッシュを含む宣言済のキャッシュ・システムを参照します。この子要素はキャッシング・システムがあいまいな場合にのみ指定する必要があります。複数のキャッシング・システムが(暗黙的または明示的に)宣言されている場合や、キャッシング・システムが異なるアプリケーションまたはバンドルに含まれている場合などです。

キャッシュ・システムは、特定の名前に関連付けられたキャッシュの作成およびキャッシュへの参照の戻しに関する処理を行います。その結果となるキャッシュBeanは、java.util.Mapインタフェースを実装します。

詳細は、12.3.5項「共有Oracle Coherenceキャッシュの構成」を参照してください。

4. アプリケーションのキャッシュ構成ファイルを更新することによって、キャッシュ・システムおよびそのキャッシュを構成します。

詳細は、12.3.1項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」を参照してください。

5. オプションで、1つ以上の追加cache要素の子要素を持つEPNアセンブリ・ファイルを更新することによって、デフォルトのキャッシュ構成をオーバーライドします。

- イベント・シンクをイベント処理ネットワーク内で別のコンポーネントへのリスナーとして構成することによって、キャッシュがイベント・シンクであると指定します。
詳細は、12.3.1項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」を参照してください。

- キャッシュが、イベント処理ネットワーク内の別のコンポーネントがリスニングする対象のイベント・ソースであると指定します。
詳細は、12.3.2項「イベント・リスナーとしてのOracle Coherenceキャッシュの構成」を参照してください。

- EPNアセンブリ・ファイル内の<wlevs:cache>要素の<wlevs:cache-loader>または<wlevs:cache-store>子要素のいずれかを構成します。ただし、両方は構成できません。
これは、Oracle Coherenceがローダーとストアを組み合せて単一のコンポーネントにするからです。バッキング・ストアが読取り専用の場合にキャッシュ・ローダーを指定し、バッキング・ストアが読取り/書込みの場合にキャッシュ・ストアを指定します。

詳細は、12.3.4項「Oracle Coherenceキャッシュ・ローダーまたはストアの構成」を参照してください。

6. Oracle Coherenceキャッシュへのアクセス:

- オプションで、問合せ文内でOracle Coherenceキャッシュを参照します。
参照:

- 12.5項「Oracle CQL文からキャッシュへのアクセス」

- 12.6項「EPL文からキャッシュへのアクセス」

- オプションで、カスタム・アダプタ、ビジネスPOJO、またはOracle CQL/EPLのユーザー定義関数を構成およびプログラムし、Oracle Coherenceキャッシュにアクセスします。
構成はEPNアセンブリ・ファイルで実行され、プログラミングはアダプタ、POJO、またはユーザー定義関数を実装するJavaファイルで実行されます。

参照:

- 12.7項「アダプタからキャッシュへのアクセス」

- 12.8項「ビジネスPOJOからキャッシュへのアクセス」

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

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

- オプションで、JMXを使用してOracle Coherenceキャッシュにアクセスします。
詳細は、12.11項「JMXの使用によるキャッシュへのアクセス」を参照してください。

7. パッケージcom.bea.wlevs.cache.spiをインポートするようにMANIFEST.MFを編集します。
詳細は、4.7.5項「パッケージのインポート方法」を参照してください。

8. アプリケーションをアセンブルし、デプロイします。
詳細は、第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」を参照してください。

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

Oracle CEPは、Oracle Coherenceによって提供されるネイティブ構成を活用します。Oracle Coherenceキャッシュを使用するアプリケーション・バンドル内で、指定の名前を持つ次の2つのOracle Coherenceファイルをパッケージ化することによって、これを行います。

- coherence-cache-config.xml: Oracle Coherenceキャッシュの構成情報です。各キャッシュはcache-name要素で識別され、この要素の値は、EPNアセンブリ・ファイル内のwlevs:cache要素のid属性にマップします。このファイルとマッピング例の詳細は、12.3.1.1項「coherence-cache-config.xmlファイル」を参照してください。

- tangosol-coherence-override.xml: Oracle Coherenceクラスタ構成です。このファイルおよび例の詳細は、12.3.1.2項「tangosol-coherence-override.xmlファイル」を参照してください。

アプリケーションをアセンブルするとき、次を考慮します。

- coherence-cache-config.xmlは、アプリケーションごとの構成ファイルで、このファイルをバンドルJARのMETA-INF/wlevs/coherenceディレクトリに配置してください。このディレクトリは、メモリー内のローカルOracle CEPキャッシュ・プロバイダのコンポーネント構成ファイルを保存するディレクトリ(META-INF/wlevs)とは異なることに注意してください。

- tangosol-coherence-override.xmlは、サーバーごとのグローバル・ファイル(Oracle Coherenceドキュメント内では「操作構成」と呼ばれます)で、このファイルはOracle CEPサーバーのconfigディレクトリに配置します。

例12-5で示すように、アプリケーション構成ファイルを更新します。

例12-5 アプリケーション構成ファイル: 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 CEPローカル構成ではなく、必ずOracle Coherence構成にマップします。そうしない場合、Oracle CEPが例外をスローします。

12.3.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 CEPと共にOracle Coherenceを使用する場合、別の要件例示します。Oracle Coherenceファクトリは、キャッシュのローダーまたはストアを構成するためにSpringを使用するときに宣言される必要があります。これは、ファクトリ・クラスを指定するためにOracle Coherence構成ファイル内でcachestore-scheme要素を使用することによって行います。このファクトリ・クラスによって、Oracle CoherenceはOracle CEPにコールして、キャッシュに構成されるローダーまたはストアへの参照を取得できるようになります。ローダーまたはストアの構成における唯一の差異は、method-name要素が、ローダーが使用されるときはgetLoaderの値を持ち、ストアが使用されているときはgetStoreの値を持つことです。ファクトリへの入力パラメータとしてキャッシュ名を渡します。

coherence-cache-config.xmlファイルの詳細は、Oracle Coherenceドキュメント(http://www.oracle.com/technology/products/coherence/index.html)を参照してください。

12.3.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 CEPの起動時にOracle Coherenceが既存のOracle Coherenceクラスタに結合しようとするのを防ぐために、cluster-name要素を指定する必要がある点に注意してください。結合すると、問題の原因になり、Oracle CEPが起動できなくなる場合があります。

tangosol-coherence-override.xmlファイルの詳細は、Oracle Coherenceドキュメント(http://www.oracle.com/technology/products/coherence/index.html)を参照してください。

Oracle CEPクラスタの詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPネイティブ・クラスタリングによるマルチサーバー・ドメインの管理に関する項を参照してください。

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

Oracle Coherenceキャッシュは、イベントを受信するためのイベント処理ネットワーク内の明示的なリスナーとして構成可能です。

たとえば、キャッシュがチャネルをリスニングすることを指定するには、次に示すようにwlevs:channel要素の子要素としてキャッシュへの参照を持つwlevs:listener要素を指定します。

<wlevs:coherence-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(出力ウィンドウに存在する古いイベント)がチャネルによって送信される場合、そのイベントはキャッシュから削除されます。

12.3.2.1 Oracle Coherenceキャッシュの索引作成に使用されるキーの指定

Oracle Coherenceキャッシュがリスナーとなるように構成するとき、イベントはキャッシュに挿入されます。この項では、このインスタンスでキャッシュの作成に使用されるキーを指定するために利用可能な各種オプションを説明します。

明示的にキーを指定しない場合、イベントがキャッシュに挿入されるときにイベント・オブジェクト自体はキーおよび値の両方として提供されます。この場合、イベント・クラスには、キー・プロパティ値を考慮するequalsおよびhashcodeメソッドの有効な実装が含まれる必要があります。

キーの明示的な指定方法については、次を参照してください。

- 12.3.2.1.1項「EPNアセンブリ・ファイルにおけるキー・プロパティの指定」

- 12.3.2.1.2項「キーを指定するためのメタデータ注釈の使用」

- 12.3.2.1.3項「複合キーの指定」

12.3.2.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 CEPで例外がスローされます。

たとえば、キャッシュに挿入されているイベント型は次のように見えると仮定します。ここで、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>

12.3.2.1.2 キーを指定するためのメタデータ注釈の使用

第2オプションは、イベント型を実装するJavaクラスにおけるイベント・プロパティに注釈を付けるためのメタデータ注釈com.bea.wlevs.ede.api.Keyを使用することです。この注釈には属性がありません。

メタデータ注釈を使用してキーを指定するには、次のステップを実行します。

1. com.bea.wlevs.ede.api.Keyパッケージをインポートします。
詳細は、4.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;
}
...
}

12.3.2.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>

12.3.3 イベント・ソースとしてのOracle Coherenceキャッシュの構成

Oracle Coherenceキャッシュは、イベント処理ネットワーク内の別のコンポーネントがリスニングする対象のイベント・ソースとして構成可能です。リスニングするコンポーネントは、アダプタまたは標準のSpring Beanです。キャッシュをリスニングする任意のコンポーネントは、com.tangosol.util.MapListenerインタフェースを実装する必要があります。次の例では、Oracle CoherenceキャッシュをSpring Beanのイベント・ソースとなるように構成する方法を示します。

<wlevs:coherence-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-listener ref="localListener"/>
</wlevs:cache>
<bean id="localListener"
class="com.bea.wlevs.example.provider.coherence.LocalListener"/>

この例では、cache-listener-idのSpring Beanはキャッシュからのイベントをリスニングし、このコンポーネントを実装するクラス、com.bea.wlevs.example.provider.coherence.LocalListenerは、com.tangosol.util.MapListenerなどの適切なOracle Coherence専用のJavaインタフェースを実装する必要があります。例12-6で示すように、このLocalListenerクラスは自分でブログラムする必要があります。

例12-6 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++;
}
}

12.3.4 Oracle Coherenceキャッシュ・ローダーまたはストアの構成

Oracle Coherenceキャッシュを使用すると、EPNアセンブリ・ファイル内でwlevs:cache要素のwlevs:cache-loaderまたはwlevs:cache-store子要素のいずれかを構成できます。ただし、両方を構成することはできません。これは、Oracle Coherenceがローダーとストアを組み合わせて単一のコンポーネントにするからです。

- バッキング・ストアが読取り専用の場合にキャッシュ・ローダーを指定します。
詳細は、12.3.4.1項「Oracle Coherenceキャッシュ・ローダーの構成」を参照してください。

- バッキング・ストアが読取り/書込みの場合にキャッシュ・ストアを指定します。
詳細は、12.3.4.2項「Oracle Coherenceキャッシュ・ストアの構成」を参照してください。

12.3.4.1 Oracle Coherenceキャッシュ・ローダーの構成

例12-7では、localLoaderのSpring Beanは、バッキング・ストアが読取り専用のときにイベントをOracle Coherenceキャッシュにロードします。バッキング・ストアが読取り/書込みの場合は、キャッシュ・ストアを使用します(詳細は、12.3.4.2項「Oracle Coherenceキャッシュ・ストアの構成」を参照)。

このコンポーネントを実装するクラス、com.bea.wlevs.example.provider.coherence.LocalLoaderは、com.tangosol.net.cache.CacheLoaderなどの適切なOracle Coherence専用Javaインタフェースを実装する必要があります。例12-8で示すように、このLocalLoaderクラスは自分でブログラムする必要があります。

Spring構成ファイルでキャッシュ・ローダーを指定した場合、Coherenceキャッシュ構成ファイルで対応するクラス・ファクトリ・メソッド名も指定する必要があることに注意してください。キャッシュ・ローダーには、com.bea.wlevs.cache.coherence.configuration.SpringFactoryのgetLoaderメソッドを指定します。サンプル・コードは、12.3.1.1項「coherence-cache-config.xmlファイル」を参照してください。

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

<wlevs:coherence-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"/>

例12-8 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;
}
}

12.3.4.2 Oracle Coherenceキャッシュ・ストアの構成

例12-9では、localStoreのSpring Beanは、バッキング・ストアが読取り/書込みのときにイベントをキャッシュにロードします。バッキング・ストアが読取り専用の場合は、キャッシュ・ローダーを使用します(詳細は、12.3.4.1項「Oracle Coherenceキャッシュ・ローダーの構成」を参照)。

このコンポーネントを実装するクラス、com.bea.wlevs.example.provider.coherence.LocalStoreは、com.tangosol.net.cache.CacheStoreなどの適切なOracle Coherence専用Javaインタフェースを実装する必要があります。例12-10で示すように、このLocalStoreクラスは自分でブログラムする必要があります。

Spring構成ファイルでキャッシュ・ストアを指定した場合、Coherenceキャッシュ構成ファイルで対応するクラス・ファクトリ・メソッド名も指定する必要があることに注意してください。キャッシュ・ストアには、com.bea.wlevs.cache.coherence.configuration.SpringFactoryのgetStoreメソッドを指定します。サンプル・コードは、12.3.1.1項「coherence-cache-config.xmlファイル」を参照してください。

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

<wlevs:coherence-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"/>

例12-10 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;
}
}

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

同一のOracle CEPサーバーにデプロイされた1つ以上のアプリケーションのEPNアセンブリ・ファイル内で、Oracle Coherenceキャッシュを宣言するとき、ローダーまたはストアを使用して同一キャッシュの複数のインスタンスを絶対に構成しないでください。各EPNアセンブリ・ファイル内でローダーまたはストアを使用して同一のOracle Coherenceキャッシュをそれぞれ構成する、複数のアプリケーションを使用することによって、これを不注意で行う可能性があります。複数のインスタンスを構成した場合、Oracle CEPは例外をスローします。

複数のアプリケーション・バンドルが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>

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

サードパーティのキャッシュ・システムおよびキャッシュを使用するようにアプリケーションを構成できます。

注意:

この項では、EPNアセンブリ・ファイルを伴うOracle CEPアプリケーションを作成済で、アプリケーションを更新してキャッシュを使用すると仮定します。そうでない場合、詳細は第1章「Oracle CEPアプリケーションの作成の概要」を参照してください。

サードパーティのキャッシュ・システムおよびキャッシュを構成するには:

1. サードパーティのキャッシュ・システムをOracle CEPキャッシュ・システム・プロバイダとして定義するためのプラグインを作成します。
構成:

- com.bea.wlevs.cache.spi.CachingSystemインタフェースの実装

- この種類のキャッシュ・システムを作成するファクトリの作成。

- プロバイダ・タイプを識別する属性を持つファクトリの登録。

2. EPNアセンブリ・ファイルでキャッシング・システムを宣言します。
wlevs:caching-system要素を使用すると、サードパーティの実装を宣言できます。classまたはprovider属性を使用すると、追加情報を指定できます。

簡略化するために、Oracle CEPアプリケーション・バンドル自体の内部にサードパーティの実装を組み込み、パッケージのインポート/エクスポート、サードパーティの実装を含む個別のバンドルのライフサイクル管理を避けることができます。この場合、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 Complex Event Processing Java APIリファレンスに関する項を参照してください。

ただし、サードパーティのキャッシュ処理実装を、それを使用しているOracle CEPアプリケーションとして同一のバンドル内に組み込むことができないか、または組み込みたくない場合があります。この場合、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. サードパーティのキャッシュへのアクセス:

- オプションで、問合せ文内でサードパーティのキャッシュを参照します。
参照:

- 12.5項「Oracle CQL文からキャッシュへのアクセス」

- 12.6項「EPL文からキャッシュへのアクセス」

- オプションで、カスタム・アダプタ、ビジネスPOJO、またはOracle CQL/EPLのユーザー定義関数を構成およびプログラムし、サードパーティのキャッシュにアクセスします。
構成はEPNアセンブリ・ファイルで実行され、プログラミングはアダプタ、POJO、またはユーザー定義関数を実装するJavaファイルで実行されます。

参照:

- 12.7項「アダプタからキャッシュへのアクセス」

- 12.8項「ビジネスPOJOからキャッシュへのアクセス」

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

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

- オプションで、JMXを使用してサードパーティのキャッシュにアクセスします。
詳細は、12.11項「JMXの使用によるキャッシュへのアクセス」を参照してください。

7. アプリケーションをアセンブルする場合は、図12-1に示すように、META-INF/MANIFEST.MFファイルに次のインポートが含まれていることを確認してください。

com.bea.wlevs.cache.spi; version ="11.1.0.0"

MANIFEST.MFファイルがこのインポートを含まない場合、MANIFEST.MFファイルを更新し、アプリケーションをデプロイする前にこのインポートを追加します。

図12-2 MANIFEST.MFファイルの編集

「図12-2 MANIFEST.MFファイルの編集」の説明

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

チャネルを参照するのとまったく同じ方法でOracle CQL文からキャッシュを参照できます。この機能によって、標準ストリーミング・データを個別ソースからのデータを使用して質を高めることができます。例12-11は、S1という標準チャネルからの取引イベントとstockCacheというキャッシュからのストック・シンボル・データを結合する、有効なOracle CQL問合せを示します。

例12-11 キャッシュに対して有効な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 CEPサーバー・エラー「外部リレーションは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 CEPがデータを抽出します。つまり、例12-11のケースを継続し、問合せはチャネルがtradeイベントを問合せに押し出すときのみ実行されます。キャッシュ内のストック・シンボル・データは問合せを実行せず、必要に応じて問合せによって抽出されるのみです。

- キャッシュ・キーに基づいて参照を行うには、必要なすべてのキー・プロパティを指定する必要があります。
スキーマ(id、group、value)を持つ(キャッシュ・キーはid、group)、2つのストリームSおよびCを検討してください。

次の問合せは、WHERE句でidとgroupの両方のキー・プロパティを指定していますが、問合せでキー・プロパティの1つ(id)に値を設定していないため、無効です。

select count(*) as n from S [now], C
where S.group = C.group and S.id is not null

有効な問合せは次のとおりです。

select count(*) as n from S [now], C
where S.group = C.group and S.id = C.id

キャッシュ・キーの指定に関する命令は、次を参照してください。

- 12.2.1.1項「Oracle CEPローカル・キャッシュの索引作成に使用されるキーの指定」

- 12.3.2.1項「Oracle Coherenceキャッシュの索引作成に使用されるキーの指定」

- 結合はキャッシュのキーを参照することでのみ実行される必要があります。

- ビューでキャッシュは使用できません。かわりに、結合を使用します。

- キャッシュ・データ・ソースを結合するOracle CQL文のFROM句では、1つのチャネル・ソースのみが発生できます。

- キャッシュがプロセッサ・ソースである場合は、図12-3に示すように、キャッシュをEPNのプロセッサに直接接続します。

- キャッシュがプロセッサ・シンクである場合は、図12-4に示すように、チャネルを使用してプロセッサをキャッシュに接続します。

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

この項では、Oracle CQL問合せ文でキャッシュを参照する方法を説明します。

この手順では、キャッシュ・システムおよびキャッシュを構成済と仮定します。詳細は、次を参照してください:

- 12.2項「Oracle CEPローカル・キャッシュ・システムおよびキャッシュの構成」

- 12.3項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」

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

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

1. まだ構成済でない場合、キャッシュ・データに対応するイベント型を作成し、イベント・リポジトリに登録します。
第2章「Oracle CEPイベント・タイプの作成」を参照してください。

2. キャッシュ内のデータからキー・プロパティを指定します。
キャッシュ・キーの指定に関する命令は、次を参照してください。

- 12.2.1.1項「Oracle CEPローカル・キャッシュの索引作成に使用されるキーの指定」

- 12.3.2.1項「Oracle Coherenceキャッシュの索引作成に使用されるキーの指定」

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. キャッシュがプロセッサ・ソースである場合は、図12-3に示すように、キャッシュをEPNのプロセッサに直接接続します。

図12-3 プロセッサ・ソースとしてキャッシュ

「図12-3 プロセッサ・ソースとしてキャッシュ」の説明

キャッシュを参照する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. キャッシュがプロセッサ・シンクである場合は、図12-4に示すように、EPNのチャネルを使用してプロセッサをキャッシュに接続します(つまり、プロセッサとキャッシュ・シンクの間にチャネルが必要です)。

図12-4 プロセッサ・シンクとしてキャッシュ

「図12-4 プロセッサ・シンクとしてキャッシュ」の説明

この場合、アプリケーション・アセンブリ・ファイルは次のようになります。

<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>

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

チャネルを参照するのとまったく同じ方法でEPL文からキャッシュを参照できます。この機能によって、標準ストリーミング・データを個別ソースからのデータを使用して質を高めることができます。たとえば、次の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 CEPがデータを抽出します。つまり、前述の例を継続し、問合せはチャネルが取引イベントを問合せに押し出すときのみ実行されます。キャッシュ内の会社データは問合せを実行せず、必要に応じて問合せによって抽出されるのみです。

EPL問合せでキャッシュを使用する場合は、以下の制限に従う必要があります。

- キャッシュ内のデータのキー・プロパティを指定する必要があります。
キャッシュ・キーの指定に関する命令は、次を参照してください。

- 12.2.1.1項「Oracle CEPローカル・キャッシュの索引作成に使用されるキーの指定」

- 12.3.2.1項「Oracle Coherenceキャッシュの索引作成に使用されるキーの指定」

- 結合はキャッシュのキーを参照することでのみ実行される必要があります。

- RETAIN句をキャッシュから抽出したデータに指定することはできません。キャッシュからデータを取得するイベント型がRETAIN句に含まれる場合、Oracle CEPはそれを無視します。

- 相関サブ問合せではキャッシュを使用できません。かわりに、結合を使用します。

- キャッシュ・データ・ソースを結合するEPL文のFROM句では、1つのチャネル・ソースのみが発生できます。1つ以上のキャッシュ・ソースおよびパラメータ化したSQL問合せの使用がサポートされています。

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

この項では、EPL問合せ文でキャッシュを参照する方法を説明します。

この手順では、キャッシュ・システムおよびキャッシュを構成済と仮定します。詳細は、次を参照してください:

- 12.2項「Oracle CEPローカル・キャッシュ・システムおよびキャッシュの構成」

- 12.3項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」

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

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

1. まだ構成済でない場合、前述の例におけるCompanyなどのキャッシュ・データに対応するイベント・タイプを作成し、イベント・リポジトリに登録します。第2章「Oracle CEPイベント・タイプの作成」を参照してください。

2. キャッシュ内のデータからキー・プロパティを指定します。これを行う方法は各種あります。次を参照してください。

- 12.2.1.1項「Oracle CEPローカル・キャッシュの索引作成に使用されるキーの指定」

- 12.3.2.1項「Oracle Coherenceキャッシュの索引作成に使用されるキーの指定」

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などのキャッシュによって提供されるイベント型に一致するとき、プロセッサはキャッシュからそのイベント型のインスタンスを抽出します。

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

アダプタも、他の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 CEPは、自動的にアダプタにキャッシュ(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) {...}
}

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

EPNアセンブリ・ファイルで標準のSpring Beanとして構成されたビジネスPOJOでは、他のBeanを参照するための標準のSpringメカニズムを使用して、キャッシュを挿入することができます。この方法によって、POJOではキャッシュを表示および操作できます。キャッシュBeanでは、ビジネスPOJOが挿入されたキャッシュにアクセスするために使用するjava.util.Mapインタフェースが実装されます。キャッシュBeanではjava.util.Mapのベンダー固有のサブインタフェースを実装することもできますが、移植性のためにMapを実装することをお薦めします。

まず、EPNアセンブリ・ファイル内のビジネスPOJOの構成は、FX例(『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のHelloWorld例に関する項を参照)のOutput Beanに基づいた次の例で示されるように、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 class="com.bea.wlevs.example.helloworld.HelloWorldBean">
<property name="map" ref="cache-id"/>
</bean>

この例では、property要素のref属性はwlevs:cache要素のid値を参照します。Oracle CEPは、自動的にビジネス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) {...}
}

12.9 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 CEPは、自動的にユーザー定義関数にキャッシュ(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 Complex Event Processing CQL言語リファレンス』の関数: ユーザー定義に関する項を参照してください。

12.10 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 CEPは、自動的にユーザー定義関数にキャッシュ(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 Complex Event Processing EPL言語リファレンス』のユーザー定義関数に関する項を参照してください。

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

実行時、Oracle CEPがキャッシュ・システムと定義するキャッシュにデプロイするMBeansおよびJMXを使用して、キャッシュにプログラムからアクセスできます。

この項では次について説明します:

- 12.11.1項「Oracle CEP Visualizerを使用したJMXによるキャッシュへのアクセス方法」

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

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPのJMXの構成に関する項を参照してください。

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

JMXを使用してキャッシュ・システムまたはキャッシュにアクセスする最も単純かつエラーの少ない方法は、Oracle CEP Visualizerを使用することです。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のサーバーおよびドメインのタスクに関する項を参照してください。

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

JMXを使用してキャッシュ・システムまたはキャッシュにアクセスする最も単純かつエラーの少ない方法は、Oracle CEP Visualizerを使用することです(12.11.1項『Oracle CEP Visualizerを使用したJMXによるキャッシュへのアクセス方法』)に関する項を参照)。あるいは、書き込まれるJavaコードを使用したJMXによるキャッシュ・システムまたはキャッシュにアクセスできます。

Oracle CEPは、アプリケーションがステージとして使用する各キャッシュのStageMBeanを作成します。このMBeanのTypeはStageです。

Javaを使用したJMXでキャッシュにアクセスするには:

1. Oracle CEPサーバーが提供するJMXサービスに接続します。
詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPの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のメソッドを使用してキャッシュにアクセスします。

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

この章では、イベント永続ストアを指定してストアに問い合せる方法など、Oracle Complex Event Processing (Oracle CEP)イベント処理ネットワークをデバッグするためにイベントの記録および再生を構成する方法について説明します。

- 13.1項「イベント・レコードと再生の構成の概要」

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

- 13.3項「カスタム・イベント・ストア・プロバイダの作成」

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

Oracle CEPイベント・リポジトリ機能を使用すると、イベント処理ネットワーク(EPN)コンポーネントを離れたイベントをデータベース表などのストアに永続化し、後からそれらを再生したり、イベントBeanなどのコンポーネントからイベントに対する問合せを明示的に実行したりすることができます。

この機能の一般的な使用例には、現在実行中のアプリケーションの問題をデバッグする機能があります。問題発生時にEPNのノードでイベントを記録していた場合は、後から同じイベント・リストを再生し、デバッグ目的のために問題のシナリオを再現できます。

次の図は、イベント・レコードと再生の例のEPNを示し、イベントがどの時点で記録され、どこで再生されるかを示しています。simpleEventSourceアダプタはイベントを記録が構成されています。図に示すように、イベントがアダプタを離れた時点で記録が行われます。eventStreamチャネルではイベントの再生が構成されています。図に示すように、イベントがチャネルに到着した時点で再生が行われます。

図13-1 EPNでの記録と再生の構成

「図13-1 EPNでの記録と再生の構成」の説明

この項では次について説明します:

- 13.1.1項「永続イベント・ストアへのイベントの格納」

- 13.1.2項「イベントの記録」

- 13.1.3項「イベントの再生」

- 13.1.4項「格納されたイベントの問合せ」

- 13.1.5項「記録と再生の例」

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

イベントを記録する場合、Oracle CEPサーバーは永続イベント・ストアにそのイベントを格納します。Oracle CEPサーバーが提供またはユーザー自身で定義する独自の永続イベント・ストアを使用できます。

- 13.1.1.1項「デフォルトの永続イベント・ストア」

- 13.1.1.2項「カスタム永続イベント・ストア」

- 13.1.1.3項「永続イベント・ストア・スキーマ」

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

デフォルトでは、Oracle CEPは、Oracle CEPサーバーにバンドルされているBerkeley DBインスタンスを使用して記録されたイベントを格納します。

Berkeley DBは、産業レベルの信頼性や可用性のある、高速でスケーラブルなトランザクション・データベース・エンジンです。詳細は、次を参照してください:

- http://www.oracle.com/technology/products/berkeley-db/je/index.html

- http://www.oracle.com/technology/documentation/berkeley-db/je/index.html

デフォルトでは、Oracle CEPサーバーは次の場所にBerkeley DBインスタンスを作成します。

ORACLE_CEP_HOME/user_projects/domains/domainname/servername/bdb

ORACLE_CEP_HOMEは、Oracle CEP (/oracle_homeなど)をインストールしたディレクトリ、domainnameはドメイン名、そしてservernameは、(/oracle_cep/user_projects/domains/mydomain/myserverなど)サーバー名です。

13.2.1項「Oracle CEPサーバーのイベント・ストアの構成」の説明に従って、bdb-config要素db-env-path子要素を構成することによりこのデフォルトを変更できます。

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

オプションで、カスタム永続イベント・ストア・プロバイダを作成して記録したイベントを格納できます。たとえば、OracleデータベースまたはDerbyのリレーショナル・データベース管理システムを永続イベント・ストアとして指定できます。

詳細は、13.3項「カスタム・イベント・ストア・プロバイダの作成」を参照してください。

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

記録したイベントを格納するための実際のデータベース・スキーマは作成しません。レコードおよび再生機能を使用するアプリケーションをデプロイし、記録が始めると、Oracle CEPサーバーが自動的に実際のデータベース・スキーマを作成します。

詳細は、13.2.5項「Berkeleyデータベース・スキーマの説明」を参照してください。

13.1.2 イベントの記録

プロセッサ、アダプタ、ストリーム、イベントBeanなど、イベント処理ネットワーク(EPN)でイベントを生成する任意のコンポーネントの記録を構成できます。プロセッサおよびストリームでは常にイベントが生成されます。アダプタおよびイベントBeanではEventSourceインタフェースを実装する必要があります。また、EPNの異なるコンポーネントからのイベントを異なる永続ストアに格納したり、すべてのイベントを同じストアに格納したりするよう構成できます。コンポーネントによって出力されるイベントのみが記録されることに注意してください。

コンポーネントのイベントの記録を有効にするには、構成ファイルを更新し、record-parameters要素を追加します。record-parametersの子要素を使用して、イベントの記録先となるイベント・ストア、記録が行われる最初の期間、格納するイベント・タイプのリストなどを指定します。

アプリケーションのデプロイが完了し、イベントがネットワーク内で循環を開始すると、特定の開始時間を構成した場合は記録が自動的に開始され、または管理ツールを使用して記録が動的に開始されます。記録が構成された各コンポーネントについて、Oracle CEPではコンポーネントを離れたイベントが、記録時のタイム・スタンプと共に適切なストアに格納されます。

13.1.3 イベントの再生

プロセッサ、アダプタ、ストリーム、イベントBeanなど、イベント処理ネットワーク(EPN)の任意のコンポーネントの再生を構成できます。一般に、再生コンポーネントはネットワーク内でイベントを記録するノードよりも後のノードです。

コンポーネントのイベントの再生を有効にするには、構成ファイルを更新し、playback-parameters要素を追加します。playback-parametersの子要素を使用して、イベントを再生するイベント・ストア、再生するイベント・タイプのリスト(デフォルトではすべて再生)、再生する記録されたイベントの期間などを指定します。デフォルトでは、Oracle CEPでは正確な速度でイベントが再生されますが、イベントが記録元のコンポーネントを離れたときの元の速度よりも速いまたは遅い速度で再生されるように構成できます。

アプリケーションのデプロイが完了し、イベントがネットワーク内で循環を開始すると、管理ツール(Oracle CEP Visualizerまたはwlevs.Admin)を使用して再生を開始する必要があります。Oracle CEPでは適切な永続ストアからイベントが読み込まれ、EPNの適切な場所に挿入されます。

コンポーネントが再生イベントを取得した場合は、元のイベントとまったく同じように見えることに注意してください。また、ネットワークの後ろのコンポーネントでイベントの記録が構成されている場合、Oracle CEPでは再生イベントが「実際の」イベントと共に記録されます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNを流れるイベントの記録と再生に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のイベントの記録と再生を制御するコマンドに関する項

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

イベント・ストアAPIを使用して、記録時間の範囲とイベント記録元のコンポーネントを指定することで、ストア内の過去のイベントに対する問合せを実行できます。実際に使用する問合せはイベント・リポジトリ・プロバイダによって異なります。たとえば、Oracle CEPに含まれるデフォルト永続イベント・ストア・プロバイダではOracle CQLまたはEPLを使用します。これらのAPIを使用してイベント・ストアの古いイベントを削除することもできます。

13.1.5 記録と再生のサンプル

この項のサンプル・コードは、ORACLE_CEP_HOME\ocep_11.1\samples\source\applications\recplayディレクトリにあるイベント・レコードと再生の例からの抜粋です。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle CEPのメイン・インストール・ディレクトリです。

例の実行およびビルドの詳細は、『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のイベントの記録および再生の例に関する項を参照してください。

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

次の手順で説明しているとおり、イベント・リポジトリを使用する方法に応じて異なるタスクを実行する必要があります。追加の詳細を示す節を参照してください。

注意:

この項では、コンポーネント構成ファイルを使用してOracle CEPアプリケーションをすでに作成済であり、コンポーネントがイベントを記録および再生するようにアプリケーションを更新することを想定しています。まだ作成していない場合は、詳細は第1章「Oracle CEPアプリケーションの作成の概要」を参照してください。

アプリケーションのイベントの記録と再生を構成するには:

1. オプションでは、Oracle CEPサーバー・インスタンスのためBerkeleyデータベース・イベント・ストアを構成します。
デフォルトBerkeleyデータベース構成はそのままで使用できます。Berkeleyデータベース・インスタンスの位置をカスタマイズしたり、またはパフォーマンスをチューニングする場合のみ、構成を変更する必要があります。

13.2.1項「Oracle CEPサーバーのイベント・ストアの構成」を参照してください。

2. コンポーネント構成ファイルを更新して、イベントを記録するためにEPNのコンポーネントを構成します。
コンポーネントは、プロセッサ、アダプタ、チャネルまたはイベントBeanにできます。コンポーネントを離れるイベントのみ記録します。

13.2.2項「イベントを記録するコンポーネントの構成」を参照してください。

3. コンポーネント構成ファイルを更新して、イベントを再生するためにEPNのコンポーネントを構成します。
コンポーネントは、プロセッサ、アダプタ、チャネルまたはイベントBeanにできます。イベント・シンクもあるコンポーネントのみイベントを再生でき、イベントはコンポーネントの入力側に再生されます。

13.2.3項「イベントを再生するコンポーネントの構成」を参照してください。

4. 変更を反映するためアプリケーションを再デプロイします。

5. イベントの記録の明示的な開始および終了時間を指定していない場合は、Oracle CEP Visualizerまたはwlevs.Adminを使用して記録を開始する必要があります。常にこれらの管理ツールを使用して、イベントの再生を開始または終了する必要があります。
13.2.4項「イベントの記録と再生の開始および終了」を参照してください。

13.2.1 Oracle CEPサーバーのイベント・ストアの構成

デフォルトBerkeleyデータベース構成はそのままで使用できます。Berkeleyデータベース・インスタンスの位置をカスタマイズしたり、またはパフォーマンスをチューニングする場合のみ、構成を変更する必要があります。

詳細は、13.3項「カスタム・イベント・ストア・プロバイダの作成」を参照してください。

Oracle CEPサーバーのイベント・ストアを構成するには:

1. 実行中であれば、Oracle CEPサーバー・インスタンスを停止します。

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要素を編集します。
例13-1は、完全に構成されたbdb-config要素を示します。

例13-1 bdb-config要素

<bdb-config>
<db-env-path>bdb</db-env-path>
<cache-size>1000</cache-size>
</bdb-config>

表13-1は指定できるbdb-configの子要素の一覧を示します。

表13-1 bdb-configの子要素

子要素

説明

db-env-path

Oracle CEPサーバーは、サブディレクトリ内でサーバーの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 CEPサーバー・インスタンスを再起動します。

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

アプリケーションの任意のプロセッサ、アダプタ、チャネル、またはイベントBeanでイベントの記録を構成できます。すべての他のコンポーネントの構成と同様、構成ファイルを更新してコンポーネントでのイベントの記録を指定します。これらの構成ファイルの概要は、1.1.5項「コンポーネント構成ファイル」を参照してください。

この項では、イベントを記録するコンポーネントを構成するための主な手順について説明します。簡略化のため、この手順ではイベントを記録するアダプタを構成し、コンポーネント構成ファイルがすでに作成されていることを想定しています。

イベント・レコードの構成ファイル要素が記述された完全なXSDスキーマは、B.2項「コンポーネント構成スキーマwlevs_application_config.xsd」を参照してください。

任意のXMLエディタを使用してコンポーネント構成XMLファイルを開き、イベントの記録を構成するコンポーネントにrecord-parameters子要素を追加します。たとえば、アダプタsimpleEventSourceを構成する場合は、次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<n1:config xmlns:n1="http://www.bea.com/ns/wlevs/config/application"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<adapter>
<name>simpleEventSource</name>
<record-parameters>
...
</record-parameters>
...
</adapter>
...
</n1:config>

record-parametersに子要素を追加して、イベント・ストア・プロバイダの名前、格納されるイベント、記録の開始および終了時間などを指定します。例:

<adapter>
<name>simpleEventSource</name>
<record-parameters>
<dataset-name>recplay_sample</dataset-name>
<event-type-list>
<event-type>SimpleEvent</event-type>
</event-type-list>
<batch-size>1</batch-size>
<batch-time-out>10</batch-time-out>
</record-parameters>
</adapter>

表13-2は指定できるrecord-parametersの子要素の一覧を示します。dataset-nameのみ必須です。

表13-2 record-parametersの子要素

子要素

説明

dataset-name

グループにまとめる必要のあるデータのグループを指定します。

BDBプロバイダの場合は、データセット名はBerkeleyデータベースにあるデータベース環境として使用されます。

Oracle RDBMSベースのプロバイダの場合は、記録されたイベントを格納する表が作成されるデータベース領域またはスキーマを指定します。

Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。

event-type-list

イベント・ストアに記録されるイベント・タイプを指定します。この要素を指定しない場合、Oracle CEPではコンポーネントを離れるすべてのイベント・タイプが記録されます。

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 CEP 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 CEP Visualizerまたはwlevs.Adminを使用して明示的に開始するまで記録は行われません。

time-rangeまたはtime-range-offsetを指定できますが、両方は指定できません。

batch-size

イベント・バッファからイベント・ストアに書き込むためにOracle CEPによって単一のバッチで選択されるイベント数を指定します。

デフォルト値は1000です。

batch-time-out

イベント・ストアに書き込む前に、イベント・バッファ枠がbatch-sizeのイベント数を満たすまでOracle CEPが待機する秒数を指定します。

デフォルト値は60です。

max-size

指定した場合、Oracle CEPではイベント・ストアへの書込みにストリームが使用され、この要素はストリーム・サイズを指定します。0以外の値は非同期の書込みを示します。

デフォルト値は1024です。

max-threads

指定した場合、Oracle CEPではイベント・ストアへの書込みにストリームが使用され、この要素によって、このストリームのイベントの処理に使用するスレッドの最大数が指定されます。max-sizeが0の場合は、この値の設定に影響はありません。

デフォルト値は1です。

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

アプリケーションの任意のプロセッサ、アダプタ、チャネル、またはイベントBeanでイベントの再生を構成できます。ただし、実際にイベントを受信し、それらのイベントを再生できるように、再生コンポーネントは記録コンポーネントの下流ノードである必要があります。すべての他のコンポーネントの構成と同様、構成ファイルを更新してコンポーネントでのイベントの再生を指定します。これらの構成ファイルの概要は、1.1.5項「コンポーネント構成ファイル」を参照してください。

この項では、イベントを再生するコンポーネントを構成するための主な手順について説明します。簡略化のため、この手順ではイベントの記録元であるEPNの上流ノードからのイベントを再生するチャネルを構成し、チャネルの構成ファイルがすでに作成されていることを想定しています。

イベント再生の構成ファイル要素が記述された完全なXSDスキーマを参照してください。

任意のXMLエディタを使用してコンポーネント構成XMLファイルを開き、イベントの再生を構成するコンポーネントにplayback-parameters子要素を追加します。たとえば、チャネルeventStreamを構成する場合は、次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<n1:config xmlns:n1="http://www.bea.com/ns/wlevs/config/application"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<channel>
<name>eventStream</name>
<playback-parameters>
...
</playback-parameters>
</channel>
...
</n1:config>

playback-parametersに子要素を追加して、イベント・ストア・プロバイダの名前、再生されるイベントなどを指定します。例:

<channel>
<name>eventStream</name>
<playback-parameters>
<dataset-name>recplay_sample</dataset-name>
<event-type-list>
<event-type>SimpleEvent</event-type>
</event-type-list>
</playback-parameters>
</channel>

表13-3は指定できるplayback-parametersの子要素の一覧を示します。dataset-nameのみ必須です。

表13-3 playback-parametersの子要素

子要素

説明

dataset-name

グループにまとめる必要のあるデータのグループを指定します。

BDBプロバイダの場合は、データセット名はBerkeleyデータベースにあるデータベース環境として使用されます。

Oracle RDBMSベースのプロバイダの場合は、記録されたイベントが格納され、再生イベントの問合せが実行される表のデータベース領域またはスキーマを指定します。

Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。

event-type-list

イベント・ストアから再生されるイベント・タイプを指定します。この要素を指定しない場合、Oracle CEPではすべてのイベント・タイプが再生されます。

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 CEP 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 CEP Visualizerまたはwlevs.Adminを使用して明示的に開始するまで再生は行われません。

time-rangeまたはtime-range-offsetを指定できますが、両方は指定できません。

playback-speed

再生速度を正のfloatとして指定します。

デフォルト値は1で、これは通常速度に相当します。2の値は、イベントが元の記録速度の倍の速度で再生されることを意味します。同様に、0.5の値は、イベントが半分の速度で再生されることを意味します。

repeat

指定された期間の再生が終了した後に、イベントをもう一度再生するかどうかを指定します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。true値は、意図的に停止されるまで再生が無限に繰り返されることを意味します。Falseの場合はイベントが一度のみ再生されます。

max-size

指定した場合、Oracle CEPではイベント・ストアからのイベントの再生にストリームが使用され、この要素はストリーム・サイズを指定します。0以外の値は非同期の書込みを示します。

デフォルト値は1024です。

max-threads

指定した場合、Oracle CEPではイベント・ストアからのイベントの再生にストリームが使用され、この要素によって、このストリームのイベントの処理に使用されるスレッドの最大数が指定されます。max-sizeが0の場合は、この値の設定に影響はありません。

デフォルト値は1です。

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

アプリケーションのコンポーネントで記録および再生機能構成が完了し、Oracle CEPにアプリケーションをデプロイしたら、最初の構成で開始および終了時間を明示的に指定した場合にのみサーバーでイベントの記録が開始されます。

たとえば、コンポーネント構成に次の要素が含まれているとします。

<time-range>
<start>2010-01-20T05:00:00</start>
<end>2010-01-20T18:00:00</end>
</time-range>

この場合、2010年1月20日午前5時に記録が自動的に開始されます。

ただし、イベントの再生を開始するにはOracle CEP Visualizerまたはwlevs.Adminを使用するのが唯一の方法です。これらの管理ツールは、イベントの記録を動的に開始または終了する際にも使用します。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNを流れるイベントの記録と再生に関する項

- 『Oracle Fusion Middleware Oracle Complex 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 Complex Event Processing管理者ガイド』のOracle CEPのJMXの構成に関する項

- Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンス

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

イベント・レコードと再生のステージを構成した場合、dataset-nameを指定して記録したデータを識別します。

Oracle CEPサーバーは、bdb-config要素で指定するdb-env-pathの下にこの名前のサブディレクトリを作成します。

たとえば、bdb-config要素は例13-2のようになります。

例13-2 デフォルトbdb-config要素

<bdb-config>
<db-env-path>bdb</db-env-path>
</bdb-config>

dataset-nameがtest1の場合、Oracle CEPサーバーは、データを次のディレクトリに格納します。

ORACLE_CEP_HOME/user_projects/domains/domainname/servername/bdb/test1

ORACLE_CEP_HOMEは、Oracle CEP (/oracle_homeなど)をインストールしたディレクトリ、domainnameはドメイン名、そしてservernameは、(/oracle_cep/user_projects/domains/mydomain/myserverなど)サーバー名です。

Oracle CEPは、data-setサブディレクトリ内に、記録された各イベント・タイプ別のデータベースを含むBerkeleyデータベース環境を作成します。データベース名は、イベント・タイプ・リポジトリに指定したイベント・タイプ名と同じです。

データベース・キーは、レコード時間およびシーケンス番号です。

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

Oracle CEPには、カスタム・イベント・ストア・プロバイダの作成に使用できる イベント・ストアAPI が用意されています。Oracleは、リレーショナル・データベースにイベントを格納するためのRDBMSベースの実装、またはJDBC接続をサポートする実装を提供します。異なる種類のデータベースにイベントを格納する必要がある場合や、何らかの理由でOracle RDBMSプロバイダがニーズに合致しない場合は、イベント・ストアAPIを使用して独自のイベント・ストア・プロバイダを作成できます。

イベント・ストアAPIはcom.bea.wlevs.eventstoreパッケージに含まれています。次のリストに最も重要なインタフェースについて説明します。

- EventStore: 単一のイベント・ストアを表現するオブジェクト。このインタフェースのメソッドを使用すると、イベントをストアに永続化し、プロバイダ固有の問合せを使用してストアの内容への問合せを実行できます。

- EventStoreManager: イベント・ストアを管理します。特定のOracle CEPサーバーにはEventStoreManagerのインスタンスが1つのみ存在し、このインスタンスは自身をOSGiレジストリに登録するため、イベント・ストア・プロバイダは自身をイベント・ストア・マネージャに登録できるようになります。このインタフェースを使用して、既存のイベント・ストアの検索、新しいイベント・ストアの作成、特定のイベント・ストアのプロバイダの取得、イベント・プロバイダの登録を行います。イベント・ストア・マネージャは実際の作業をイベント・ストア・プロバイダに委任します。

- EventStoreProvider: イベント・ストア・サービスをクライアントに提供する基礎となるリポジトリ。

詳細は、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

第4部

Oracle CEPイベント処理ネットワークの拡張

第4部の章の内容は次のとおりです。

- 第14章「カスタム・アダプタの構成」

- 第15章「カスタム・イベントBeanの構成」

- 第16章「カスタムSpring Beanの構成」

- 第17章「Webサービスの構成」

- 第18章「データ・カートリッジでアプリケーションの構成」

- 第19章「コンポーネント構成の拡張」

14 カスタム・アダプタの構成

この章では、イベント・ソースおよびイベント・シンクとしてアダプタを実装する方法、アダプタからログイン資格証明を渡す方法など、イベント・タイプとのデータの変換のためのOracle Complex Event Processing (Oracle CEP)アダプタの実装および構成方法について説明します。

- 14.1項「カスタム・アダプタの概要」

- 14.2項「カスタム・アダプタの実装」

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

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

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

14.1 カスタム・アダプタの概要

アダプタの主な役割の1つには、マーケット・データ・フィードなどのチャネルからのデータをOracle CEPイベントに変換する作業があります。これらのイベントはその後、プロセッサなどのアプリケーションの他のコンポーネントに渡されます。通常、アダプタはOracle CEPアプリケーションへのエントリ・ポイントです。アダプタは中間コンポーネントからのイベントを受信し、外部アプリケーションで読取り可能な形式にデータを変換し、それらのデータを送信するためアプリケーションの出口ポイントになる場合もあります。

『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のForeign Exchange (FX)の例に関する項には、通貨データ・フィードからデータを読み込み、ネットワークの次のコンポーネントであるプロセッサに特定のイベント・タイプの形式でデータを渡す3つのアダプタが示されています。

着信データの形式およびアダプタ・コードで変換に使用される技術に応じて、さまざまなタイプのアダプタを作成できます。最も一般的なタイプのアダプタは、以下のとおりです。

- Reuters、Wombat、またはBloombergなどのデータ・ベンダーAPIを使用します。

- 標準のJMS APIを使用して着信JMSメッセージを変換します。

- TIBCO Rendezvousなどの他のメッセージング・システムを使用します。

- 顧客独自のデータ・プロトコルへのソケット接続を使用します。

アダプタは、特定のOracle CEPインタフェースを実装するJavaクラスです。アプリケーション全体を記述するEPNアセンブリ・ファイルでアダプタ・クラスを登録します。

オプションで、アダプタのデフォルト構成を変更できます。また、構成を拡張したり、新しい構成要素および属性を追加することもできます。

構成データをアダプタに渡す方法は2つあります。デプロイの後で構成を動的に変更するかどうかに応じて選択する方法が異なります。

- アダプタのデプロイ後に構成データを変更しない場合、アダプタをEPNアセンブリ・ファイルで構成できます。

- ただし、構成要素を動的に変更する場合は、構成をアダプタ固有のコンポーネント構成ファイルに配置する必要があります。

この項では次について説明します:

- 14.1.1項「カスタム・アダプタのイベント・ソースとイベント・シンク」

- 14.1.2項「カスタム・アダプタ・ファクトリ」

- 14.1.3項「シングルおよびマルチスレッド・アダプタ」

14.1.1 カスタム・アダプタのイベント・ソースとイベント・シンク

アダプタは、イベント・ソース、イベント・シンク、またはその両方に使用できます。イベント・ソースはイベントを生成し、イベント・シンクはイベントを受信します。

14.1.1.1 イベント・ソースとしてのカスタム・アダプタ

com.bea.wlevs.ede.api.StreamSourceまたはRelationSource APIを実装して、EPN内のアダプタ・コンポーネントがイベント・ソースであることを指定します。

イベント・ソースであるカスタム・アダプタの実装クラスは、アプリケーションのプライベートとして指定するか、または他のアプリケーションによる再利用が可能な公開されたOSGIサービスとして指定できます。

wlevs:adapter要素を使用してEPNアセンブリ・ファイルにアダプタを登録します。例:

<wlevs:adapter id="myAdapterSource" class="com.acme.MySourceAdapter">
</wlevs:adapter>

この例では、JavaクラスMySourceAdapter.javaがcom.bea.wlevs.ede.api.StreamSourceまたはRelationSource APIを実装します。

詳細は、14.2.1.1項「カスタム・アダプタをイベント・ソースとして実装」を参照してください。

14.1.1.2 イベント・シンクとしてのカスタム・アダプタ

カスタム・アダプタのイベント・シンクはcom.bea.wlevs.ede.api.StreamSinkまたはRelationSink APIを実装する必要がある以外はイベント・シンクとしてのカスタム・アダプタの機能はイベント・ソースによく似ています。

イベント・シンクはアクティブではないため、Runnableインタフェースを実装している場合、Oracle CEPではこれらを個別のスレッドで実行しません。

wlevs:listener要素を使用してEPNアセンブリ・ファイルでイベント・シンクを参照します。

<wlevs:adapter id="myAdapterSink" class="com.acme.MySinkAdapter">
</wlevs:adapter>

<wlevs:channel id="myStream" >
<wlevs:listener ref="myAdapterSink" />
</wlevs:channel>

この例では、JavaクラスMySinkAdapter.javaがcom.bea.wlevs.ede.api.StreamSinkまたはRelationSink APIを実装します。

詳細は、14.2.1.2項「カスタム・アダプタをイベント・シンクとして実装」を参照してください。

14.1.2 カスタム・アダプタ・ファクトリ

アダプタが単一のOracle CEPアプリケーションによってのみ使用される場合は、ファクトリを作成する必要はありません。ただし、同一のアダプタが複数のアプリケーションで使用される場合は、ファクトリもプログラミングする必要があります。この場合、それぞれのアプリケーションで固有のアダプタ・インスタンスが取得されます。

アダプタのファクトリはcom.bea.wlevs.ede.api.Factoryインタフェースを実装する必要があります。このインタフェースには、アダプタまたはイベントBeanのインスタンスを作成するために実装する単一のメソッドcreateが含まれています。

wlevs:factory要素を使用してEPNアセンブリ・ファイルにファクトリを登録します。

<wlevs:factory provider-name="myprovider" class="my.Implementation"/>

サービスのプロパティを指定する必要がある場合は、osgi:service要素を使用してファクトリを登録する必要があります。

14.1.3 シングルおよびマルチスレッド・アダプタ

デフォルトでは、アダプタはシングルスレッドです。つまり、アダプタは、シングルスレッドを使用してデータ・ソースからメッセージを読み取ります。

アダプタがシングルスレッドであると、イベント順序が保証されます。

スケーラビリティを向上させるために、アダプタでマルチスレッドを使用してデータ・ソースから読み取るように構成できます。このように構成する場合、最も簡単な方法はワーク・マネージャを使用してアダプタを構成することです。アダプタだけが使用する専用のワーク・マネージャを指定するか、他のアダプタやJettyなどのいくつかのコンポーネントでワーク・マネージャを共有できます。

アダプタがマルチスレッドであると、イベント順序は保証されません。

詳細は、次を参照してください:

- F.45項「work-manager」

- 22.2.1項「EventPartitioner」

14.2 カスタム・アダプタの実装

作成するJavaクラスにカスタム・アダプタを実装します。このJavaクラスを作成するには、次のどちらかの手順を実行します。

- 14.2.1項「カスタム・アダプタを手動で構成する方法」で説明するように、アダプタJavaクラスを手動で作成します。

詳細は、14.1項「カスタム・アダプタの概要」を参照してください。

14.2.1 カスタム・アダプタを手動で実装する方法

次の手順は、カスタム・アダプタを手動で作成するための一般的なステップを示します。

注意:

次の手順では、プロセッサ、ストリーム、ビジネス・ロジックPOJOなどのイベント・ネットワークの他のコンポーネントが含まれている同一のアプリケーションJARファイルにカスタム・アダプタがバンドルされると想定しています。複数のアプリケーションで共有できるようにカスタム・アダプタを固有のJARファイルにバンドルする必要がある場合は、24.2.4.1項「カスタム・アダプタの固有のバンドルでのアセンブリ方法」を参照してください。

カスタム・アダプタを実装するには、次の手順を実行します。

1. カスタム・アダプタJavaクラスをプログラミングします。
カスタム・アダプタがイベント・ソースである場合は、14.2.1.1項「カスタム・アダプタをイベント・ソースとして実装」を参照してください。

カスタム・アダプタがイベント・シンクである場合は、14.2.1.2項「カスタム・アダプタをイベント・シンクとして実装」を参照してください。

カスタム・アダプタがイベント・ソースおよびイベント・シンクの両方である場合は、両方の項を参照してください。

カスタム・アダプタがデータ・フィード・プロバイダを使用して自身を認証する必要がある場合は、14.3項「アダプタからデータ・フィード・プロバイダへのログイン資格証明の受け渡し」を参照してください。

2. オプションとして、ファクトリ・クラスをプログラミングします。
多数のアプリケーションでカスタム・アダプタを使用する場合に限りこの処理が必要です。

14.2.2項「カスタム・アダプタ・ファクトリの実装」を参照してください。

3. オプションとして、デフォルトのコンポーネント構成が適切でない場合に、カスタム・アダプタのコンポーネント構成を拡張します。
第19章「コンポーネント構成の拡張」を参照してください。

4. カスタム・アダプタを構成します。
詳細は、次を参照してください:

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

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

14.2.1.1 カスタム・アダプタをイベント・ソースとして実装

この項では、イベント・ソースとして動作するカスタム・アダプタを作成する方法について説明します。このカスタム・アダプタは着信データを受け取り、それをEPNの次のコンポーネントに送信するイベントを生成します。

着信カスタム・アダプタ・クラスは、通常マーケット・データ・フィードなどからの着信データのストリームを読み込み、アプリケーションの残りの部分によって認識されるOracle CEPイベント・タイプに変換し、ネットワークの次のコンポーネントにイベントを送信します。

次の例は、空間サンプルのカスタム・アダプタ・クラスを示します。Javaコードの太字部分に対応するコーディングのガイドラインについては、例の後で説明しています。

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;

import oracle.spatial.geometry.JGeometry;
import com.oracle.cep.cartridge.spatial.Geometry;

public class BusStopAdapter implements RunnableBean, StreamSource, StreamSink
{
private final static String APP_NAME              = "spatial_sample";
...
private String              m_eventTypeName;
private EventType           m_eventType;
private StreamSender        m_eventSender;
...
public BusStopAdapter()
{
super();
}

...
@Service(filter = EventTypeRepository.SERVICE_FILTER)
public void setEventTypeRepository(EventTypeRepository etr)
{
m_etr = etr;
}

public void setShow(boolean b)
{
m_show = b;
}

public void run()
{
m_stopped = false;

// Need to store running thread so that it can be interrrupted in case of
// suspend.
m_runningThread = Thread.currentThread();

if (m_etr == null)
{
throw new RuntimeException("EventTypeRepoitory is not set");
}

m_eventType = m_etr.getEventType(m_eventTypeName);
if (m_eventType == null)
{
throw new RuntimeException("EventType(" + m_eventType + ") is not found.");
}

s_logger.info("fileSource " + m_filePath);

if (m_initialDelay > 0)
{
try
{
s_logger.info("Sleeping for : " + m_initialDelay);
Thread.sleep(m_initialDelay);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}

synchronized (this)
{
while (!m_start)
{
try
{
this.wait();
} catch (InterruptedException e)
{
}
}
}
BufferedReader reader = null;

System.out.println("Sending " + m_eventType + " from " + m_filePath);
while ((m_repeat != 0) && (!m_stopped))
{
try
{
s_logger.info("Starting fileSource " + m_filePath);
m_lineno = 0;
reader = new BufferedReader(new FileReader(m_filePath));
} catch (Exception e)
{
s_logger.warn(e.toString());
m_stopped = true;
break;
}
while (!isStopped())
{
try
{
Object ev = null;
ev = readLine(reader);
if (ev == null)
{
reader.close();
break;
}
m_eventSender.sendInsertEvent(ev);
if (m_show)
{
System.out.println(ev.toString());
}
} catch (Exception e)
{
s_logger.fatal("Failed to get tuple from " + m_filePath + ":"
+ m_lineno + "\n" + e.toString() + "\n");
m_stopped = true;
break;
}
if (m_sleep > 0)
{
try
{
synchronized (this)
{
// We need to save thread so that it can be interrupted in case of
// suspend.
wait(m_sleep);
}
} catch (InterruptedException e)
{
s_logger.warn(e);
break;
}
}
} // while
if (m_repeat > 0)
m_repeat--;
} // while
s_logger.info("FileAdaptor  " + hashCode() + " stopped. " + m_filePath);
}

public void setEventSender(StreamSender sender)
{
m_eventSender = sender;
}

...
}

アダプタJavaクラスのプログラミングでは、次のガイドラインに従います。上記の例でガイドラインのコード・スニペットは太字で示されています。

- Oracle CEP APIのインタフェースおよびクラスをインポートします。

import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.ede.api.RunnableBean;

アダプタはイベント・ソースであるため、StreamSourceインタフェースを実装する必要があります。アダプタをスレッドで実行する必要がある場合は、RunnableBeanも実装します。StreamSenderインタフェースは、イベント・タイプをアプリケーション・ネットワークの次のコンポーネントに送信します。これらのAPIの完全な詳細は、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

- アダプタ・クラスはイベント・ソースであり、固有のスレッドで実行されるため、StreamSourceおよびRunnableBeanインタフェースを実装する必要があります。

public class BusStopAdapter implements RunnableBean, StreamSource, StreamSink

StreamSourceインタフェースではイベントの送信に使用されるStreamSenderが提供されます。

- RunnableBeanインタフェースが実装されるため、アダプタではrunメソッドを実装する必要があります。

public void run() {...

ここに、マーケット・フィードなどからの着信データを読み込み、Oracle CEPイベント・タイプに変換し、ネットワークの次のコンポーネントにイベントを送信するコードを配置する必要があります。着信データの読込み方法の詳細については、データ・フィード・プロバイダのドキュメントを参照してください。サード・パーティJARファイルにパッケージ化されているベンダーAPIに確実にアクセスできるための情報は、24.2.2.2項「サード・パーティJARファイルへのアクセス」を参照してください。

空間サンプルでは、readLine保護メソッドを使用してアダプタ自体が着信データを生成します。これは説明のためであり、実際のシナリオではありません。

詳細は、第2章「Oracle CEPイベント・タイプの作成」を参照してください。

- アダプタではStreamSourceが実装されるため、イベントの送信に使用されるStreamSenderを渡すsetEventSenderメソッドを実装する必要があります。

public void setEventSender(StreamSender sender) { ...

- 通常のケースと同様、アダプタでSuspendableBeanが実装される場合は、たとえばアプリケーションがアンデプロイされた場合などにアダプタを停止するsuspendメソッドを実装する必要があります。

public synchronized void suspend() throws Exception { ...

14.2.1.2 カスタム・アダプタをイベント・シンクとして実装

次のコード例は、HelloWorldアプリケーションでイベント・シンクとして動作するSpring Beanです。太字部分のコードについては、例の後で説明しています。

次の例は、空間サンプルのカスタム・アダプタ・クラスを示します。Javaコードの太字部分に対応するコーディングのガイドラインについては、例の後で説明しています。

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;

import oracle.spatial.geometry.JGeometry;
import com.oracle.cep.cartridge.spatial.Geometry;

public class BusStopAdapter implements RunnableBean, StreamSource, StreamSink
{
private final static String APP_NAME              = "spatial_sample";
...
private String              m_eventTypeName;
private EventType           m_eventType;
private StreamSender        m_eventSender;
...
public BusStopAdapter()
{
super();
}

...
@Service(filter = EventTypeRepository.SERVICE_FILTER)
public void setEventTypeRepository(EventTypeRepository etr)
{
m_etr = etr;
}

public void setShow(boolean b)
{
m_show = b;
}

public void run()
{
m_stopped = false;

// Need to store running thread so that it can be interrrupted in case of
// suspend.
m_runningThread = Thread.currentThread();

if (m_etr == null)
{
throw new RuntimeException("EventTypeRepoitory is not set");
}

m_eventType = m_etr.getEventType(m_eventTypeName);
if (m_eventType == null)
{
throw new RuntimeException("EventType(" + m_eventType + ") is not found.");
}

s_logger.info("fileSource " + m_filePath);

if (m_initialDelay > 0)
{
try
{
s_logger.info("Sleeping for : " + m_initialDelay);
Thread.sleep(m_initialDelay);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}

synchronized (this)
{
while (!m_start)
{
try
{
this.wait();
} catch (InterruptedException e)
{
}
}
}
BufferedReader reader = null;

System.out.println("Sending " + m_eventType + " from " + m_filePath);
while ((m_repeat != 0) && (!m_stopped))
{
try
{
s_logger.info("Starting fileSource " + m_filePath);
m_lineno = 0;
reader = new BufferedReader(new FileReader(m_filePath));
} catch (Exception e)
{
s_logger.warn(e.toString());
m_stopped = true;
break;
}
while (!isStopped())
{
try
{
Object ev = null;
ev = readLine(reader);
if (ev == null)
{
reader.close();
break;
}
m_eventSender.sendInsertEvent(ev);
if (m_show)
{
System.out.println(ev.toString());
}
} catch (Exception e)
{
s_logger.fatal("Failed to get tuple from " + m_filePath + ":"
+ m_lineno + "\n" + e.toString() + "\n");
m_stopped = true;
break;
}
if (m_sleep > 0)
{
try
{
synchronized (this)
{
// We need to save thread so that it can be interrupted in case of
// suspend.
wait(m_sleep);
}
} catch (InterruptedException e)
{
s_logger.warn(e);
break;
}
}
} // while
if (m_repeat > 0)
m_repeat--;
} // while
s_logger.info("FileAdaptor  " + hashCode() + " stopped. " + m_filePath);
}

@Override
public void onInsertEvent(Object event) throws EventRejectedException  {
if (!m_start)
{
m_start = true;
synchronized (this)
{
notify();
}
}
// Throw com.bea.wlevs.ede.api.EventRejectedException to have exceptions propagated
// up to senders. Other errors will be logged and dropped.
}
...
}

上記の例に示したプログラミングのガイドラインは、次のとおりです。

- カスタム・アダプタはcom.bea.wlevs.ede.api.StreamSinkインタフェースを実装する必要があります。

public class BusStopAdapter implements RunnableBean, StreamSource, StreamSink

- StreamSinkインタフェースは、実装する必要のあるonInsertEvent (java.lang.Object)という単一のメソッドがあります。このメソッドは、イベントを受信するためのコールバック・メソッドです。メソッドパラメータはオブジェクトであり、イベントを送信したコンポーネントからBeanが受信した実際のイベントを表現します。

public void onInsertEvent(Object event)

実装は、com.bea.wlevs.ede.api.EventRejectedExceptionをスローして、例外が送信者に伝播されるようにします。その他のエラーは記録されてから削除されます。

この項で説明しているOracle CEP APIの完全なAPIリファレンス情報については、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

14.2.2 カスタム・アダプタ・ファクトリの実装

アダプタ・ファクトリ・クラスはcom.bea.wlevs.ede.api.AdapterFactoryインタフェースを実装する必要があり、これには1つのメソッドcreateが含まれていますが、ここに特定のアダプタ・クラスを作成するコードを作成します。イベントBeanはFactoryを実装します。

次の例は、HelloWorldのサンプルで使用可能なアダプタ・ファクトリ・クラスです。

package com.bea.adapter.wlevs.example.helloworld;
import com.bea.wlevs.ede.api.Adapter;
import com.bea.wlevs.ede.api.AdapterFactory;
public class HelloWorldAdapterFactory implements Factory {
public HelloWorldAdapterFactory() {
}
public synchronized Adapter create() throws IllegalArgumentException {
return new HelloWorldAdapter();
}
}

これらのAPIの詳細は、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

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

外部データ・フィードにアクセスする場合、アダプタはユーザー認証のためログイン資格証明(ユーザー名とパスワード)をデータ・フィードに渡す必要がある場合があります。

最も簡単で安全性の低い方法は、アダプタのJavaコード内に暗号化されていないログイン資格証明をハード・コード化することです。ただし、この方法ではパスワードを暗号化することができず、アダプタのJavaコードを再コンパイルせずに後からログイン資格証明を変更することもできません。

次の手順では、これらの問題が考慮された異なる方法について説明します。この手順では、データ・フィードにアクセスするユーザー名にjuliet、パスワードにsuperSecretを想定しています。

ログイン資格証明をEPNアセンブリ・ファイルで静的に構成するか、アダプタの構成を拡張して動的に構成するかを指定する必要があります。EPNアセンブリ・ファイルで資格証明を静的に構成する方が簡単ですが、後から資格証明が変更された場合は、EPNアセンブリ・ファイルへの更新が反映されるようにアプリケーションを再起動する必要があります。アダプタの構成を拡張する方法では、アプリケーションを再起動せずに資格証明を動的に変更できますが、構成の拡張には、XSDファイルの作成や、JAXBオブジェクトへのコンパイルなどの追加の手順が必要になります。

この項では次について説明します:

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

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

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

詳細は、第19章「コンポーネント構成の拡張」を参照してください。

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

この手順では、EPNアセンブリ・ファイルで静的に構成したログイン資格証明を渡す方法について説明します。

データ・フィード・プロバイダへ静的ログイン資格証明を受け渡すには、次の手順を実行します。

1. 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項の説明に従って、コマンド・ウィンドウを開き、環境を設定します。

2. アプリケーションのEPNアセンブリ・ファイルがあるディレクトリに移動します。

3. 任意のXMLエディタを使用し、EPNアセンブリ・ファイルを編集して、アダプタを宣言している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 CEPのインストール先のメイン・ディレクトリです。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 Complex Event Processing管理者ガイド』のencryptMSAConfigコマンドライン・ユーティリティに関する項を参照してください。

コマンドを実行すると、EPNアセンブリ・ファイルのpassword要素の値が暗号化されます。

6. EPNアセンブリ・ファイルを編集します。
password要素の暗号化された値をpasswordインスタンス・プロパティのvalue属性にコピーします。

password要素をXMLファイルから削除します。

例:

<wlevs:adapter id="myAdapter" provider="myProvider">
<wlevs:instance-property name="user" value="juliet"/>
<wlevs:instance-property name="password"
value="{Salted-3DES}B7L6nehu7dgPtJJTnTJWRA=="/>
</wlevs:adapter>

7. 構成されたログイン資格証明のプロパティにアクセスしてパスワードを復号化するよう、アダプタのJavaコードを更新します。
14.3.1項「データ・フィード・プロバイダへの静的ログイン資格証明の受け渡し」を参照してください。

8. アプリケーションのMANIFEST.MFファイルを編集し、Import-Packageヘッダーにcom.bea.core.encryptionパッケージを追加します。24.2.2.1項「MANIFEST.MFファイルの作成」を参照してください。

9. アプリケーションを通常通り再アセンブルしてデプロイします。第24章「Oracle CEPアプリケーションのアセンブルおよびデプロイ」を参照してください。

14.3.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>

詳細は、第19章「コンポーネント構成の拡張」を参照してください。

2. 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項の説明に従って、コマンド・ウィンドウを開き、環境を設定します。

3. アダプタのコンポーネント構成XMLファイルがあるディレクトリに移動します。

4. 任意のXMLエディタを使用してこのコンポーネント構成XMLファイルを編集し、<user>および<password>要素を使用して必要なログイン資格証明を追加します。ここで、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 CEPのインストール先のメイン・ディレクトリです。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 Complex Event Processing管理者ガイド』のencryptMSAConfigコマンドライン・ユーティリティに関する項を参照してください。

コマンドを実行すると、password要素の値が暗号化されます。

7. 構成されたログイン資格証明のプロパティにアクセスしてパスワードを復号化するよう、アダプタのJavaコードを更新します。
14.3.1項「データ・フィード・プロバイダへの静的ログイン資格証明の受け渡し」を参照してください。

8. アプリケーションのMANIFEST.MFファイルを編集し、Import-Packageヘッダーにcom.bea.core.encryptionパッケージを追加します。24.2.2.1項「MANIFEST.MFファイルの作成」を参照してください。

9. アプリケーションを通常通り再アセンブルしてデプロイします。第24章「Oracle CEPアプリケーションのアセンブルおよびデプロイ」を参照してください。

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

この項では、拡張されたアダプタ構成から動的にユーザーとパスワードの値を取得し、com.bea.core.encryption.EncryptionService APIを使用して暗号化されたパスワードを復号化するようにカスタム・アダプタのJavaコードを更新する方法について説明します。

次に示すコード・スニペットは、14.2.1.1項「カスタム・アダプタをイベント・ソースとして実装」に示したアダプタのJavaコードのHelloWorldを基に作成されます。

実行時にログイン資格証明プロパティにアクセスするには、次の手順を実行します。

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();
...
}

拡張されたアダプタ構成へのアクセスに関する情報は、19.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を使用してこれらの資格証明をデータ・フィード・プロバイダに渡します。

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

次の項で説明しているように、アダプタおよびアダプタ・ファクトリ(使用する場合)をEPNアセンブリ・ファイルに登録する必要があります。

- 14.4.1項「カスタム・アダプタ・ファクトリの登録」

- 14.4.2項「アプリケーションのカスタム・アダプタ・コンポーネントの宣言」

アプリケーションの他のコンポーネントの登録を含む、構成ファイルの完全な説明は、4.3項「EPNアセンブリ・ファイルの作成」を参照してください。

14.4.1 カスタム・アダプタ・ファクトリの登録

wlevs:factory要素を使用してEPNアセンブリ・ファイルにファクトリを登録します。

<wlevs:factory provider-name="myprovider" class="my.Implementation"/>

サービスのプロパティを指定する必要がある場合は、osgi:service>要素を使用して、EPNアセンブリ・ファイルにOSGIサービスとしてファクトリを登録する必要があります。OSGIサービス・レジストリのスコープはOracle CEP全体です。このため、指定のサーバーにデプロイされた複数のアプリケーションが同じアダプタ・ファクトリを使用する場合は、アダプタ・ファクトリをOSGIサービスとして登録するのが必ず一度きりになるようにします。

エントリを追加して、サービスをcom.bea.wlevs.ede.api.AdapterFactoryインタフェースの実装として登録します。key属性のtype、およびこのアダプタ・プロバイダを参照する名前を使用して、プロパティを指定します。最後に、ネストされた標準のSpring bean要素を追加して、Springアプリケーション・コンテキストで特定のアダプタ・クラスを登録します。

たとえば、EPNアセンブリ・ファイルの次の部分では、HelloWorldAdapterFactoryをタイプhellomsgsのプロバイダとして登録します。

<osgi:service interface="com.bea.wlevs.ede.api.AdapterFactory">
<osgi:service-properties>
<entry key="type" value="hellomsgs"</entry>
</osgi:service-properties>
<bean  class="com.bea.adapter.wlevs.example.helloworld.HelloWorldAdapterFactory" />
</osgi:service>

typeでファクトリを参照する方法については、14.4.2項「アプリケーションのカスタム・アダプタ・コンポーネントの宣言」を参照してください。

14.4.2 アプリケーションのカスタム・アダプタ・コンポーネントの宣言

EPNアセンブリ・ファイルでは、wlevs:adapter要素を使用してアダプタをイベント・プロセッサ・ネットワークのコンポーネントとして宣言します。例:

<wlevs:adapter id="recplayEventSink"
class="com.bea.wlevs.example.recplayRecplayEventSink">
<wlevs:listener ref="playbackHttpPublisher"/>
</wlevs:adapter>

オプションのファクトリをOSGIサービスとして登録した場合は、provider属性を使用して、osgi:serviceエントリでtypeとして指定した名前を参照します。例:

<wlevs:adapter id="helloworldAdapter" provider="hellomsgs"/>

これにより、アダプタはタイプhellomsgsで登録されたファクトリによってインスタンス化されます。

wlevs:adapterのwlevs:instance-property子要素を使用して、アダプタBeanの静的プロパティを設定することもできます。静的プロパティはアダプタのデプロイ後に動的に変更されないプロパティです。

たとえば、アダプタ・クラスにsetPortメソッドが含まれている場合は、次のようにポート番号を渡すことができます。

<wlevs:adapter id="myAdapter" provider="myProvider">
<wlevs:instance-property name="port" value="9001" />
</wlevs:adapter>

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

アプリケーションの各アダプタにはデフォルトの構成があり、オプションで拡張コンポーネント構成を持つものがあります。

アプリケーションに複数のアダプタが含まれている場合は、各アダプタごとに個別のコンポーネント構成XMLファイルを作成するか、すべてのアダプタの構成が含まれた単一のコンポーネント構成XMLファイルを作成するか、またはアプリケーションのすべてのコンポーネント(アダプタ、プロセッサ、およびストリーム)が含まれたファイルを作成できます。開発環境に最も適した方法を選択します。

次の手順では、アダプタの構成ファイルを作成する主なステップについて示します。簡略化のため、この手順ではアプリケーションのすべてのコンポーネントを1つのXMLファイルに構成することを想定しています。

詳細は、次を参照してください:

- 19項「コンポーネント構成の拡張」

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

14.5.1 カスタム・アダプタを手動で構成する方法

次の手順では、カスタム・アダプタを手動で構成する方法について説明します。

カスタム・アダプタ・コンポーネント構成ファイルを構成するには、次の手順を実行します。

1. お気に入りのXMLエディタを使用してXMLファイルを作成します。
このXMLファイルの名前は自分で決定しますが、その拡張は.xmlで終了することが必要です。

構成ファイルのルート要素はconfigであり、次のステップに示すネームスペース定義を使用します。

2. アプリケーションの各アダプタは、configのadapter子要素を追加します。
name子要素で各アダプタを一意に識別します。この名前は、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルのwlevs:adapter要素のid属性の値と一致している必要があります。このように指定することで、Oracle CEPでは、このアダプタ構成が適用されるEPNアセンブリ・ファイル内の特定のアダプタ・コンポーネントを認識します。詳細は、4.3項「EPNアセンブリ・ファイルの作成」を参照してください。

たとえば、アプリケーションに2つのアダプタがある場合、構成ファイルは最初に次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<helloworld:config
xmlns:helloworld="http://www.bea.com/xml/ns/wlevs/example/helloworld">
<processor>
...
</processor>
<adapter>
<name>firstAdapter</name>
...
</adapter>
<adapter>
<name>secondAdapter</name>
...
</adapter>
</helloworld:config>

この例では、構成ファイルにfirstAdapterとsecondAdapterの2つのアダプタが含まれています。このため、EPNアセンブリ・ファイルには同じ識別子を持つアダプタが少なくとも2つ登録されている必要があります。

<wlevs:adapter id="firstAdapter" ...>
...
</wlevs:adapter>
<wlevs:adapter id="secondAdapter" ...>
...
</wlevs:adapter>

注意:

XMLファイルの識別子と名前は大/小文字が区別されるため、EPNアセンブリ・ファイルでコンポーネントの識別子を参照するときは、必ず大/小文字を同一にします。

14.5.1.1 カスタム・アダプタ構成ファイルの例

次のXMLファイルの例は、firstAdapterおよびsecondAdapterの2つのアダプタを構成する方法を示します。

<?xml version="1.0" encoding="UTF-8"?>
<sample:config
xmlns:sample="http://www.bea.com/xml/ns/wlevs/example/sample">
<adapter>
<name>firstAdapter</name>
</adapter>
<adapter>
<name>secondAdapter</name>
</adapter>
</sample:config>

15 カスタム・イベントBeanの構成

この章では、イベント・シンクおよびイベント・ソースとしてカスタム・イベントBeanを実装する方法など、Oracle Complex Event Processing (Oracle CEP)カスタム・イベントBeanの実装および構成方法について説明します。

- 15.1項「カスタム・イベントBeanの概要」

- 15.2項「カスタム・イベントBeanの実装」

- 15.3項「カスタム・イベントBean EPNアセンブリ・ファイルの構成」

- 15.4項「カスタム・イベントBeanコンポーネント構成ファイルの構成」

15.1 カスタム・イベントBeanの概要

イベントBeanはOracle CEP管理フレームワークによって管理されるPOJO (Plain Old Java Object)です。イベントBeanは標準のbean要素ではなく、Oracle CEP wlevs:event-beanステージを使用してEPNアセンブリ・ファイルに登録します。

イベントBeanはステージの一種であり、Oracle CEP監視フレームワークによって監視でき、構成メタデータの注釈を利用します。また、Beanを通過するイベントを記録および再生するよう設定できます。イベントBeanは、Oracle CEPサーバーAPIインタフェースを実装するのではなく、XML宣言にメソッドを指定することによって、Oracle CEPサーバーBeanライフサイクルに参加することもできます。

POJO (Plain Old Java Object)をOracle CEPアプリケーションに追加する手順:

- Oracle CEPサーバー・コンテナの能力を積極的に使用するためにイベントBeanを使用します。

- Springへのレガシー統合にはSpring Beanを使用します。
詳細は、第16章「カスタムSpring Beanの構成」を参照してください。

15.1.1 カスタム・イベントBeanイベント・ソースおよびイベント・シンク

イベントBeanはイベント・ソースまたはイベント・シンク、あるいはその両方に使用できます。イベント・ソースはイベントを生成し、イベント・シンクはイベントを受信します。

15.1.1.1 イベント・ソースとしてのカスタム・イベントBean

com.bea.wlevs.ede.api.StreamSourceまたはRelationSource APIを実装して、EPN内のイベントBeanコンポーネントがイベント・ソースであることを指定します。

イベント・ソースであるイベントBeanの実装クラスは、アプリケーションのプライベートとして指定するか、または他のアプリケーションによる再利用が可能な公開されたOSGIサービスとして指定できます。

EPNコンポーネントとしてのカスタム・イベントBeanをフレームワークで完全に管理できるようにするには、標準のSpring Beanではなく、イベントBeanとして指定する必要があります。管理タスクにはモニターおよび記録再生が含まれます。

wlevs:event-bean要素を使用してイベントBeanをEPNアセンブリ・ファイルに登録します。例:

<wlevs:event-bean id="myEventBeanSource" class="com.acme.MySourceEventBean">
</wlevs:event-bean>

この例では、JavaクラスMySourceEventBean.javaによってcom.bea.wlevs.ede.api.StreamSourceまたはRelationSource APIが実装されます。

詳細は、15.2.1項「カスタム・イベントBeanをイベント・ソースとして実装」を参照してください。

15.1.1.2 イベント・シンクとしてのカスタム・イベントBean

カスタム・イベントBeanのイベント・シンクとしての機能は、カスタム・イベントBeanシンクでcom.bea.wlevs.ede.api.StreamSinkまたはRelationSink APIを実装する必要がある以外は、イベント・ソースによく類似しています。

イベント・シンクはアクティブではないため、Runnableインタフェースを実装している場合、Oracle CEPではこれらを個別のスレッドで実行しません。

wlevs:listener要素を使用してEPNアセンブリ・ファイルでイベント・シンクを参照します。

<wlevs:event-bean id="myEventBeanSink" class="com.acme.MySinkEventBean">
</wlevs:event-bean>
...
<wlevs:channel id="myStream" >
<wlevs:listener ref="myEventBeanSink" />
</wlevs:channel>

この例では、JavaクラスMySinkEventBean.javaによってcom.bea.wlevs.ede.api.StreamSinkまたはRelationSink APIが実装されます。

詳細は、15.2.2項「カスタム・イベントBeanをイベント・シンクとして実装」を参照してください。

15.1.2 カスタム・イベントBeanファクトリ

イベントBeanが単一のOracle CEPアプリケーションによってのみ使用される場合は、ファクトリを作成する必要はありません。ただし、同一のイベントBeanが複数のアプリケーションで使用される場合は、ファクトリもプログラミングする必要があります。この場合、それぞれのアプリケーションで固有のアダプタ・インスタンスが取得されます。

イベントBeanのファクトリはcom.bea.wlevs.ede.api.Factoryインタフェースを実装する必要があります。このインタフェースには、アダプタまたはイベントBeanのインスタンスを作成するために実装する単一のメソッドcreateが含まれています。

wlevs:factory要素を使用してEPNアセンブリ・ファイルにファクトリを登録します。

<wlevs:factory provider-name="myprovider" class="my.Implementation"/>

サービスのプロパティを指定する必要がある場合は、<osgi:service>を使用してファクトリを登録する必要があります。

15.2 カスタム・イベントBeanの実装

以下の手順では、カスタム・イベントBeanを作成する通常のステップについて説明します。

カスタム・イベントBeanを実装する手順:

注意:

次の手順では、カスタム・イベントBeanはプロセッサ、ストリームおよびビジネス・ロジックPOJOなど、EPNの他のコンポーネントを組み込んだ同一アプリケーションJARファイルにバンドルされたとみなされます。カスタム・イベントBeanを固有のJARファイルにバンドルし、複数のアプリケーション間で共有できるようにするには、24.2.4.2項「固有のバンドルでのカスタム・イベントBeanのアセンブル方法」を参照してください。

1. カスタム・イベントBean Javaクラスをプログラミングします。
カスタム・イベントBeanがイベント・ソースの場合、15.2.1項「カスタム・イベントBeanをイベント・ソースとして実装」を参照してください。

カスタム・イベントBeanがイベント・シンクの場合、15.2.2項「カスタム・イベントBeanをイベント・シンクとして実装」を参照してください。

カスタム・イベントBeanがイベント・ソースとイベント・シンクの両方である場合は、両方の項を参照してください。

2. オプションで、ファクトリ・クラスをプログラミングします。
これは、多数のアプリケーションでカスタム・イベントBeanを使用する場合のみ必要です。

15.2.3項「カスタム・イベントBeanファクトリの実装」

3. カスタム・イベントBeanの基本構成が不十分な場合は、必要に応じてその構成を拡張します。
第19章「コンポーネント構成の拡張」を参照してください。

4. カスタム・イベントBeanを構成します。
詳細は、次を参照してください:

- 15.3項「カスタム・イベントBean EPNアセンブリ・ファイルの構成」

- 15.4項「カスタム・イベントBeanコンポーネント構成ファイルの構成」

15.2.1 カスタム・イベントBeanをイベント・ソースとして実装

次の例は、イベント・ソースとしてのカスタム・イベントBeanクラスを示します。Javaコードの太字部分に対応するコーディングのガイドラインについては、例の後で説明しています。

package com.acme;

import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.ede.api.RunnableBean;

public class EventBeanSource implements RunnableBean, StreamSource {

public void setEventSender (StreamSender streamSender) {
...
}

public void run() {
...
}

public synchronized void suspend() throws Exception {
...
}
}

カスタム・イベントBean Javaクラスのプログラミングでは、次のガイドラインに従います。上記の例でガイドラインのコード・スニペットは太字で示されています。

- Oracle CEP APIのインタフェースおよびクラスをインポートします。

import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.ede.api.RunnableBean;

カスタム・イベントBeanはイベント・ソースであるため、StreamSourceインタフェースを実装する必要があります。カスタム・イベントBeanをスレッドで実行する必要がある場合は、RunnableBeanも実装します。StreamSenderインタフェースは、イベント・タイプをアプリケーション・ネットワークの次のコンポーネントに送信します。これらのAPIの完全な詳細は、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

- カスタム・イベントBeanクラスはイベント・ソースであり、固有のスレッドで実行されるため、StreamSourceおよびRunnableBeanインタフェースを実装する必要があります。

public class HelloWorldAdapter implements RunnableBean, StreamSource {

StreamSourceインタフェースではイベントの送信に使用されるStreamSenderが提供されます。

- RunnableBeanインタフェースが実装されるため、カスタム・イベントBeanではrunメソッドを実装する必要があります。

public void run() {...

ここに、マーケット・フィードなどからの着信データを読み込み、Oracle CEPイベント・タイプに変換し、ネットワークの次のコンポーネントにイベントを送信するコードを配置する必要があります。着信データの読込み方法の詳細については、データ・フィード・プロバイダのドキュメントを参照してください。サード・パーティJARファイルにパッケージ化されているベンダーAPIに確実にアクセスできるための情報は、24.2.2.2項「サード・パーティJARファイルへのアクセス」を参照してください。

- カスタム・イベントBeanではStreamSourceが実装されるため、イベントの送信に使用されるStreamSenderを渡すsetEventSenderメソッドを実装する必要があります。

public void setEventSender(StreamSender sender) { ...

- 通常のケースと同様、カスタム・イベントBeanでSuspendableBeanが実装される場合は、たとえばアプリケーションがアンデプロイされた場合などにカスタム・イベントBeanを停止するsuspendメソッドを実装する必要があります。

public synchronized void suspend() throws Exception { ...

15.2.2 カスタム・イベントBeanをイベント・シンクとして実装

次のコード例は、HelloWorldアプリケーションでイベント・シンクとして動作するSpring Beanです。太字部分のコードについては、例の後で説明しています。

package com.bea.wlevs.example.helloworld;

import com.bea.wlevs.ede.api.StreamSink;
import com.bea.wlevs.event.example.helloworld.HelloWorldEvent;

public class HelloWorldBean implements StreamSink {

public void onInsertEvent(Object event) {
if (event instanceof HelloWorldEvent) {
HelloWorldEvent helloWorldEvent = (HelloWorldEvent) event;
System.out.println("Message: " + helloWorldEvent.getMessage());
}
// Throw com.bea.wlevs.ede.api.EventRejectedException to have exceptions propagated
// up to senders. Other errors will be logged and dropped.
}

}

上記の例に示したプログラミングのガイドラインは、次のとおりです。

- Beanではアプリケーションのイベント・タイプをインポートする必要があります。HelloWorldの場合はHelloWorldEventです。

import com.bea.wlevs.event.example.helloworld.HelloWorldEvent;

- Beanはcom.bea.wlevs.ede.api.StreamSinkインタフェースを実装する必要があります。

public class HelloWorldBean implements StreamSink {...

- StreamSinkインタフェースは、実装する必要のあるonInsertEvent (java.lang.Object)という単一のメソッドがあります。このメソッドは、イベントを受信するためのコールバック・メソッドです。メソッドパラメータはオブジェクトであり、イベントを送信したコンポーネントからBeanが受信した実際のイベントを表現します。

public void onInsertEvent(Object event)

実装は、com.bea.wlevs.ede.api.EventRejectedExceptionをスローして、例外が送信者に伝播されるようにします。その他のエラーは記録されてから削除されます。

- イベントのデータ型は、アプリケーションのEPNアセンブリ・ファイルに登録されたイベント・タイプによって決定されます。この例のイベント・タイプはHelloWorldEventです。コードでは、受信したイベントが実際にHelloWorldEventであることがまず確認されます。

if (event instanceof HelloWorldEvent) {
HelloWorldEvent helloWorldEvent = (HelloWorldEvent) event;

このイベント・タイプは、EPNアセンブリ・ファイルで以下のように構成されたJavaBeanです。

<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>

EPNアセンブリ・ファイルの作成手順に関する情報は、4.3項「EPNアセンブリ・ファイルの作成」を参照してください。参照情報は、付録C「スキーマ参照: EPNアセンブリspring-wlevs-v11_1_1_6.xsd」を参照してください。

- イベントは該当するJavaBeanのインスタンスであるため、標準のgetXXXメソッドを使用して個々のプロパティにアクセスします。この例では、HelloWorldEventにはmessageというプロパティがあります。次のようにメソッドgetMessageを使用して、このプロパティにアクセスします。

System.out.println("Message: " + helloWorldEvent.getMessage());

この項で説明しているOracle CEP APIの完全なAPIリファレンス情報については、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

15.2.3 カスタム・イベントBeanファクトリの実装

アダプタ・ファクトリ・クラスはcom.bea.wlevs.ede.api.EventBeanFactoryインタフェースを実装する必要があり、これには1つのメソッドcreateが含まれていますが、ここに特定のアダプタ・クラスを作成するコードを作成します。イベントBeanはFactoryを実装します。

次の例は、HelloWorldのサンプルで使用可能なアダプタ・ファクトリ・クラスです。

package com.acem;

import com.bea.wlevs.ede.api.EventBean;
import com.bea.wlevs.ede.api.EventBeanFactory;

public class MyEventBeanFactory implements Factory {
public MyEventBeanFactory() {
}
public synchronized EventBean create() throws IllegalArgumentException {
return new MyEventBeanFactory();
}
}

これらのAPIの詳細は、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

15.3 カスタム・イベントBean EPNアセンブリ・ファイルの作成

次の項で説明しているとおり、カスタム・イベントBean、およびイベントBeanファクトリ(使用している場合)をEPNアセンブリ・ファイルに登録する必要があります。

- 15.3.1項「カスタム・イベントBeanファクトリの登録」

- 15.3.2項「アプリケーションのカスタム・イベントBeanコンポーネントの宣言」

アプリケーションの他のコンポーネントの登録を含む、構成ファイルの完全な説明は、4.3項「EPNアセンブリ・ファイルの作成」を参照してください。

15.3.1 カスタム・イベントBeanファクトリの登録

wlevs:factory要素を使用してEPNアセンブリ・ファイルにファクトリを登録します。

<wlevs:factory provider-name="myprovider" class="my.Implementation"/>

サービスのプロパティを指定する必要がある場合は、osgi:service>要素を使用して、EPNアセンブリ・ファイルにOSGIサービスとしてファクトリを登録する必要があります。OSGIサービス・レジストリのスコープはOracle CEP全体です。このため、指定のサーバーにデプロイされた複数のアプリケーションが同じアダプタ・ファクトリを使用する場合は、アダプタ・ファクトリをOSGIサービスとして登録するのが必ず一度きりになるようにします。

エントリを追加して、サービスを com.bea.wlevs.ede.api.EventBeanFactoryインタフェースの実装として登録します。key属性のtype、およびこのアダプタ・プロバイダを参照する名前を使用して、プロパティを指定します。最後に、ネストされた標準のSpring bean要素を追加して、Springアプリケーション・コンテキストで特定のアダプタ・クラスを登録します。

たとえば、EPNアセンブリ・ファイルの次の部分では、MyEventBeanFactoryをタイプhellomsgsのプロバイダとして登録します。

<osgi:service interface="com.bea.wlevs.ede.api.EventBeanFactory">
<osgi:service-properties>
<entry key="type" value="myprovider"</entry>
</osgi:service-properties>
<bean  class="com.acme.MyEventBeanFactory" />
</osgi:service>

ファクトリをtypeで参照する方法については、15.3.2項「アプリケーションのカスタム・イベントBeanコンポーネントの宣言」を参照してください。

15.3.2 アプリケーションのカスタム・イベントBeanコンポーネントの宣言

EPNアセンブリ・ファイルでは、wlevs:event-bean要素を使用してカスタム・イベントBeanをイベント・プロセッサ・ネットワークのコンポーネントとして宣言します。例:

<wlevs:event-bean id="recplayEventSink"
class="com.bea.wlevs.example.recplayRecplayEventSink">
<wlevs:listener ref="playbackHttpPublisher"/>
</wlevs:event-bean>

オプションのファクトリをOSGIサービスとして登録した場合は、provider属性を使用して、osgi:serviceエントリでtypeとして指定した名前を参照します。例:

<wlevs:event-bean id="myEventBean" provider="myprovider"/>

これにより、アダプタはタイプmyproviderで登録されたファクトリによってインスタンス化されます。

wlevs:adapterのwlevs:instance-property子要素を使用して、アダプタBeanの静的プロパティを設定することもできます。静的プロパティはアダプタのデプロイ後に動的に変更されないプロパティです。

たとえば、アダプタ・クラスにsetPortメソッドが含まれている場合は、次のようにポート番号を渡すことができます。

<wlevs:event-bean id="myEventBean" provider="myProvider">
<wlevs:instance-property name="port" value="9001" />
</wlevs:event-bean>

15.4 カスタム・イベントBeanコンポーネント構成ファイルの構成

アプリケーション内の各カスタム・イベントBeanにはデフォルトの構成があり、必要に応じて拡張コンポーネント構成もあります。

アプリケーションに複数のカスタム・イベントBeanが含まれている場合は、各カスタム・イベントBeanごとに個別のXMLファイルを作成するか、すべてのカスタム・イベントBeanの構成を含む単一のXMLファイルを作成するか、またはアプリケーションのすべてのコンポーネント(アダプタ、プロセッサ、およびストリーム)を含むファイルを作成できます。開発環境に最も適した方法を選択します。

次の手順では、カスタム・イベントBean構成ファイルを作成する主なステップについて示します。簡略化のため、この手順ではアプリケーションのすべてのコンポーネントを1つのXMLファイルに構成することを想定しています。

詳細は、次を参照してください:

- 19項「コンポーネント構成の拡張」

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

15.4.1 手動でカスタム・イベントBeanを構成する方法

次の手順では、カスタム・イベントBeanを手動で構成する方法について説明します。

カスタム・イベントBean構成ファイルを構成する手順:

1. お気に入りのXMLエディタを使用してXMLファイルを作成します。
このXMLファイルの名前は自分で決定しますが、その拡張は.xmlで終了することが必要です。

構成ファイルのルート要素はconfigであり、次のステップに示すネームスペース定義を使用します。

2. アプリケーションの各イベントBeanには、configのevent-bean子要素を追加します。
各カスタム・イベントBeanをname子要素で一意に識別します。この名前は、アプリケーションのイベント処理ネットワークを定義するEPNアセンブリ・ファイルのwlevs:event-bean要素のid属性の値と同じである必要があります。これによって、Oracle CEPは、このアダプタ構成が、EPNアセンブリ・ファイルのどのカスタム・イベントBeanコンポーネントに適用されるかを把握します。詳細は、4.3項「EPNアセンブリ・ファイルの作成」を参照してください。

たとえば、アプリケーションに2つのカスタム・イベントBeanがある場合、構成ファイルは最初に次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<helloworld:config
xmlns:helloworld="http://www.bea.com/xml/ns/wlevs/example/helloworld">
<processor>
...
</processor>
<event-bean>
<name>firstEventBean</name>
...
</event-bean>
<event-bean>
<name>firstEventBean</name>
...
</event-bean>
</helloworld:config>

この例では、構成ファイルにfirstEventBeanとsecondEventBeanの2つのカスタム・イベントBeanが含まれています。このため、EPNアセンブリ・ファイルには同じ識別子を持つカスタム・イベントBeanが少なくとも2つ登録されている必要があります。

<wlevs:event-bean id="firstEventBean" ...>
...
</wlevs:event-bean>
<wlevs:event-bean id="secondEventBean" ...>
...
</wlevs:event-bean>

注意:

XMLファイルの識別子と名前は大/小文字が区別されるため、EPNアセンブリ・ファイルでコンポーネントの識別子を参照するときは、必ず大/小文字を同一にします。

15.4.1.1 カスタム・イベントBean構成ファイルの例

次のサンプルXMLファイルでは、firstEventBeanおよびsecondEventBeanの2つのカスタム・イベントBeanを構成する方法を示します。

<?xml version="1.0" encoding="UTF-8"?>
<sample:config
xmlns:sample="http://www.bea.com/xml/ns/wlevs/example/sample">
<event-bean>
<name>firstEventBean</name>
...
</event-bean>
<event-bean>
<name>firstEventBean</name>
...
</event-bean>
</sample:config>

16 カスタムSpring Beanの構成

この章では、イベント・シンクおよびイベント・ソースとして実装する方法など、Oracle Complex Event Processing (Oracle CEP)で使用するためのカスタムSpring Beanを実装および構成する方法について説明します。

- 16.1項「カスタムSpring Beanの概要」

- 16.2項「カスタムSpring Beanの実装」

- 16.3項「カスタムSpring Bean EPNファイルの構成」

16.1 カスタムSpring Beanの概要

Spring BeanはSpringフレームワークによって管理されるPOJO (Plain Old Java Object)です。標準のbean要素を使用して、Spring BeanをEPNアセンブリ・ファイルに登録します。

Spring Beanはステージの一種ではなく、Oracle CEP監視フレームワークによって監視できません。また、構成メタデータの注釈も使用できず通過するイベントを記録および再生するように設定できません。

POJOをOracle CEPアプリケーションに追加する手順:

- Springへのレガシー統合にはSpring Beanを使用します。

- Oracle CEPサーバー・コンテナの能力を積極的に使用するためにイベントBeanを使用します。
詳細は、第15章「カスタム・イベントBeanの構成」を参照してください。

16.1.1 Spring Beanイベント・ソースおよびイベント・シンク

標準のSpring Beanはイベント・ソースまたはイベント・シンク、あるいはその両方に使用できます。イベント・ソースはイベントを生成し、イベント・シンクはイベントを受信します。

16.1.1.1 イベント・ソースとしてのSpring Bean

com.bea.wlevs.ede.api.StreamSourceまたはRelationSource APIを実装して、EPN内の標準のSpring Beanコンポーネントがイベント・ソースであることを指定します。

Beanは、オプションで、InitializingBean、DisposableBeanのような様々なライフサイクル・インタフェース、およびRunnableBeanのようなアクティブなインタフェースを実装することがあります。Spring BeanがRunnableを実装し、RunnableBeanは実装しない場合、Oracle CEPはそれをスレッドで実行しません。これは、イベントBeanと異なった動作になります。

Spring Beanイベント・ソースでは、@Prepare、@Rollback、@Activateなどの構成メタデータの注釈を利用できます。

bean要素を使用して、標準的な方法でSpring BeanをEPNアセンブリ・ファイルに登録します。例:

<bean id="bean" class="com.acme.BeanSource" />

この例では、JavaクラスBeanSource.javaによってcom.bea.wlevs.ede.api.StreamSourceまたはRelationSource APIが実装されます。

16.1.1.2 イベント・シンクとしてのSpring Bean

com.bea.wlevs.ede.api.StreamSinkまたはRelationSink APIを実装して、EPN内の標準のSpring Beanコンポーネントがイベント・シンクであることを指定します。

Beanは、オプションで、InitializingBean、DisposableBeanのような様々なライフサイクル・インタフェース、およびRunnableBeanのようなアクティブなインタフェースを実装することがあります。Spring BeanがRunnableを実装し、RunnableBeanは実装しない場合、Oracle CEPはそれをスレッドで実行しません。これは、イベントBeanと異なった動作になります。

Spring Beanイベント・ソースでは、@Prepare、@Rollback、@Activateなどの構成メタデータの注釈を利用できます。

bean要素を使用して、標準的な方法でSpring BeanをEPNアセンブリ・ファイルに登録します。その後、このBeanをEPNの他のステージに対するイベント・シンクとして指定できます。

wlevs:listener要素を使用してEPNアセンブリ・ファイルでイベント・シンクを参照します。

<wlevs:channel id="S2" advertise="true" event-type="StockEvent" >
<wlevs:listener ref="bean"/>
<wlevs:source ref="cacheProcessor"/>
</wlevs:channel>

<bean id="bean" class="com.bea.wlevs.example.cachecql.Bean" />

この例では、JavaクラスBean.javaによってcom.bea.wlevs.ede.api.StreamSinkまたはRelationSink APIが実装されます。

16.2 カスタムSpring Beanの実装

以下の手順では、カスタム・イベントBeanを作成する通常のステップについて説明します。

カスタム・イベントBeanを実装する手順:

1. カスタム・イベントBean Javaクラスをプログラミングします。
カスタム・イベントBeanがイベント・ソースの場合、16.2.1項「カスタムSpring Beanをイベント・ソースとして実装」を参照してください。

カスタム・イベントBeanがイベント・シンクの場合、16.2.2項「カスタムSpring Beanをイベント・シンクとして実装」を参照してください。

カスタム・イベントBeanがイベント・ソースとイベント・シンクの両方である場合は、両方の項を参照してください。

2. カスタム・イベントBeanおよびカスタム・イベントBeanファクトリ(使用する場合)の登録情報を使用して、EPNアセンブリ・ファイルを更新します。
16.3項「カスタムSpring Bean EPNファイルの構成」を参照してください。

3. カスタム・イベントBeanの基本構成が不十分な場合は、必要に応じてその構成を拡張します。
第19章「コンポーネント構成の拡張」を参照してください。

16.2.1 カスタムSpring Beanをイベント・ソースとして実装

次の例は、イベント・ソースとしてのカスタムSpring Beanクラスを示します。Javaコードの太字部分に対応するコーディングのガイドラインについては、例の後で説明しています。

package com.acme;

import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.ede.api.RunnableBean;

public class SpringBeanSource implements RunnableBean, StreamSource {

public void setEventSender (StreamSender streamSender) {
...
}

public void run() {
...
}

public synchronized void suspend() throws Exception {
...
}
}

カスタムSpring Bean Javaクラスのプログラミングでは、次のガイドラインに従います。上記の例でガイドラインのコード・スニペットは太字で示されています。

- Oracle CEP APIのインタフェースおよびクラスをインポートします。

import com.bea.wlevs.ede.api.StreamSender;
import com.bea.wlevs.ede.api.StreamSource;
import com.bea.wlevs.ede.api.RunnableBean;

カスタムSpring Beanはイベント・ソースであるため、StreamSourceインタフェースを実装する必要があります。カスタムSpring Beanをスレッドで実行する必要がある場合は、RunnableBeanも実装します。StreamSenderインタフェースは、イベント・タイプをアプリケーション・ネットワークの次のコンポーネントに送信します。これらのAPIの完全な詳細は、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

- カスタムSpring Beanクラスはイベント・ソースであり、固有のスレッドで実行されるため、StreamSourceおよびRunnableBeanインタフェースを実装する必要があります。

public class HelloWorldAdapter implements RunnableBean, StreamSource {

StreamSourceインタフェースではイベントの送信に使用されるStreamSenderが提供されます。

- RunnableBeanインタフェースが実装されるため、カスタムSpring Beanではrunメソッドを実装する必要があります。

public void run() {...

ここに、マーケット・フィードなどからの着信データを読み込み、Oracle CEPイベント・タイプに変換し、ネットワークの次のコンポーネントにイベントを送信するコードを配置する必要があります。着信データの読込み方法の詳細については、データ・フィード・プロバイダのドキュメントを参照してください。サード・パーティJARファイルにパッケージ化されているベンダーAPIに確実にアクセスできるための情報は、24.2.2.2項「サード・パーティJARファイルへのアクセス」を参照してください。

- カスタムSpring BeanではStreamSourceが実装されるため、イベントの送信に使用されるStreamSenderを渡すsetEventSenderメソッドを実装する必要があります。

public void setEventSender(StreamSender sender) { ...

- 通常のケースと同様、カスタムSpring BeanでSuspendableBeanが実装される場合は、たとえばアプリケーションがアンデプロイされた場合などにアダプタを停止するsuspendメソッドを実装する必要があります。

public synchronized void suspend() throws Exception { ...

16.2.2 カスタムSpring Beanをイベント・シンクとして実装

次のコード例は、HelloWorldアプリケーションでイベント・シンクとして動作するSpring Beanです。太字部分のコードについては、例の後で説明しています。

package com.bea.wlevs.example.helloworld;

import com.bea.wlevs.ede.api.StreamSink;
import com.bea.wlevs.event.example.helloworld.HelloWorldEvent;

public class HelloWorldBean implements StreamSink {

public void onInsertEvent(Object event) {
if (event instanceof HelloWorldEvent) {
HelloWorldEvent helloWorldEvent = (HelloWorldEvent) event;
System.out.println("Message: " + helloWorldEvent.getMessage());
}
// Throw com.bea.wlevs.ede.api.EventRejectedException to have
// exceptions propagated up to senders. Other errors will be
// logged and dropped.
}

}

上記の例に示したプログラミングのガイドラインは、次のとおりです。

- Beanではアプリケーションのイベント・タイプをインポートする必要があります。HelloWorldの場合はHelloWorldEventです。

import com.bea.wlevs.event.example.helloworld.HelloWorldEvent;

- Beanはcom.bea.wlevs.ede.api.StreamSinkインタフェースを実装する必要があります。

public class HelloWorldBean implements StreamSink {...

- StreamSinkインタフェースは、実装する必要のあるonInsertEvent (java.lang.Object)という単一のメソッドがあります。このメソッドは、イベントを受信するためのコールバック・メソッドです。メソッドパラメータはオブジェクトであり、イベントを送信したコンポーネントからBeanが受信した実際のイベントを表現します。

public void onInsertEvent(Object event)

実装は、com.bea.wlevs.ede.api.EventRejectedExceptionをスローして、例外が送信者に伝播されるようにします。その他のエラーは記録されてから削除されます。

- イベントのデータ型は、アプリケーションのEPNアセンブリ・ファイルに登録されたイベント・タイプによって決定されます。この例のイベント・タイプはHelloWorldEventです。コードでは、受信したイベントが実際にHelloWorldEventであることがまず確認されます。

if (event instanceof HelloWorldEvent) {
HelloWorldEvent helloWorldEvent = (HelloWorldEvent) event;

このイベント・タイプは、EPNアセンブリ・ファイルで以下のように構成されたJavaBeanです。

<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>

EPNアセンブリ・ファイルの作成手順に関する情報は、4.3項「EPNアセンブリ・ファイルの作成」を参照してください。参照情報は、付録C「スキーマ参照: EPNアセンブリspring-wlevs-v11_1_1_6.xsd」を参照してください。

- イベントは該当するJavaBeanのインスタンスであるため、標準のgetXXXメソッドを使用して個々のプロパティにアクセスします。この例では、HelloWorldEventにはmessageというプロパティがあります。次のようにメソッドgetMessageを使用して、このプロパティにアクセスします。

System.out.println("Message: " + helloWorldEvent.getMessage());

この項で説明しているOracle CEP APIの完全なAPIリファレンス情報については、Oracle Fusion Middleware Oracle Complex Event Processing Java APIリファレンスを参照してください。

16.3 カスタムSpring Bean EPNファイルの構成

次の項で説明しているとおり、カスタム・イベントBean、およびイベントBeanファクトリ(使用している場合)をEPNアセンブリ・ファイルに登録する必要があります。

- 16.3.1項「アプリケーションのカスタムSpring Beanコンポーネントの宣言」

アプリケーションの他のコンポーネントの登録を含む、構成ファイルの完全な説明は、4.3項「EPNアセンブリ・ファイルの作成」を参照してください。

16.3.1 アプリケーションのカスタムSpring Beanコンポーネントの宣言

EPNアセンブリ・ファイルでは、bean要素を使用してカスタムSpring Beanをイベント・プロセッサ・ネットワークのコンポーネントとして宣言します。例:

<bean id="recplayEventSink"
class="com.bea.wlevs.example.recplayRecplayEventSink">
</bean>

17 Webサービスの構成

この章では、Oracle CEPアプリケーションからサービスを起動してOracle CEPアプリケーションをWebサービスとして公開する方法など、Oracle Complex Event Processing (Oracle CEP)で使用するためにWebサービスを構成する方法について説明します。

- 17.1項「Oracle CEPとWebサービスについて」

- 17.2項「Oracle CEPアプリケーションからのWebサービスの起動方法」

- 17.3項「Oracle CEPアプリケーションをWebサービスとして公開する方法」

17.1 Oracle CEPとWebサービスについて

Webサービスを使用して、Oracle CEP アプリケーションと他のシステムを統合できます。

Oracle CEPは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)

17.2 Oracle CEPアプリケーションからのWebサービスの起動方法

このプロシージャがWebサービスを起動するOracle CEPアプリケーションの作成方法を説明します。このシナリオでは、Oracle CEPアプリケーションはWebサービス・クライアントです。

Oracle CEPアプリケーションから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 CEPがインストールされているディレクトリ(/oracle_homeなど)です。

3. Oracle CEPアプリケーションJARファイル内に生成された.classファイルをアーカイブします。
詳細は、4.7項「Oracle CEPプロジェクトにおけるライブラリと他の非クラス・ファイルの管理」を参照してください。

4. Export-Packageヘッダーを使用して、MANIFEST.MFファイルのクライアントコード用のWebサービスJavaパッケージをエクスポートします。

Export-Package: com.oracle.ocep.sample.echoService;

詳細は、4.7.4項「パッケージのエクスポート方法」を参照してください。

5. Import-Packageヘッダーを使用して、MANIFEST.MFファイルのOracle CEPアプリケーションに次のパッケージをインポートします。

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;

詳細は、4.7項「Oracle CEPプロジェクトにおけるライブラリと他の非クラス・ファイルの管理」を参照してください。

6. 他のJavaアップリケーションと同様に、クライアントコードを使用して、Webサービスを起動します。

EchoService service = new EchoService();
EchoPort port = service.getEchoServicePort();
String echo = port.echo("foo");

17.3 Oracle CEPアプリケーションをWebサービスとして公開する方法

このプロシージャは、Oracle CEPアプリケーションをWebサービスとして公開する方法を説明します。このシナリオでは、Oracle CEPアプリケーションはWebサービス・プロバイダです。

Oracle CEPアプリケーションをWebサービスとして公開するには:

1. WebサービスのためにWSDLを作成または取得します。
この例ではEchoService.WSDLというWSDLの使用を想定します。

2. サービスを実装します。
java.jws注釈の@WebServiceおよび@WebMethodの使用を考慮してください。

3. 例17-1のように、アプリケーション・バンドルにbea-jaxws.xmlファイルを追加します。表17-1では、このファイル内の属性について説明します。

例17-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>

表17-1 bea-jaxws.xmlファイルの属性

属性

説明

name

webサービスの名前

implementation-class

サービスを実行するクラス

url-pattern

WebサービスにアクセスするためのURLパターン

wsdl-location

バンドル内のwsdlへの相対パス

service-name

サービスのQName

port-name

ポートのQName

詳細は、4.7項「Oracle CEPプロジェクトにおけるライブラリと他の非クラス・ファイルの管理」を参照してください。

4. BEA-JAXWS-Descriptorヘッダーを使用して、MANIFEST.MFファイルにあるbea-jaxws.xmlファイルを参照します。

BEA-JAXWS-Descriptor: META-INF/bea-jaxws.xml;

詳細は、4.7項「Oracle CEPプロジェクトにおけるライブラリと他の非クラス・ファイルの管理」を参照してください。

5. Import-Packageヘッダーを使用して、MANIFEST.MFファイルのOracle CEPアプリケーションに次のパッケージをインポートします。

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;

詳細は、4.7項「Oracle CEPプロジェクトにおけるライブラリと他の非クラス・ファイルの管理」を参照してください。

6. Oracle CEPドメインを表すOracle CEPサーバーDOMAIN_DIR/config/config.xmlファイルにglassfish-ws要素を追加します。DOMAIN_DIRはドメイン・ディレクトリを示します。

<glassfish-ws>
<name>JAXWS</name>
<http-service-name>JettyServer</http-service-name>
</glassfish-ws>

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

この章では、Oracle Complex Event Processing (Oracle CEP)で使用するために、Oracle Continuous Query Language (CQL)を拡張するOracle JDBCカートリッジおよびOracle Spatialカートリッジを構成する方法について説明します。

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

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

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

データ・カートリッジの詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のデータ・カートリッジの概要に関する項を参照してください。

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

データ・カートリッジの実装によって、Oracle CEPサーバーがデータ・カートリッジのインスタンスとインスタンスによって提供される複合オブジェクトに伝播するアプリケーション・コンテキストを定義できます。

次のデータ・カートリッジに対してアプリケーション・コンテキストを構成できます。

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

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

データ・カートリッジの詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のデータ・カートリッジの概要に関する項を参照してください。

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

Oracle CEPアプリケーションのイベント処理ネットワーク(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 Complex Event Processing CQL言語リファレンス』のOracle Spatialに関する項

Oracle Spatialアプリケーション・コンテキストを構成する手順:

1. Oracle CEP IDE for EclipseのEPNエディタを開きます。
6.1項「EPNエディタを開く」を参照してください。

2. パッケージcom.oracle.cep.cartridge.spatialをOracle CEPアプリケーションのMANIFEST.MFファイルにインポートします。
詳細は、4.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 Complex 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 Complex 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 Complex Event Processing CQL言語リファレンス』のOracle JDBCデータ・カートリッジに関する項を参照してください。

Oracle JDBCデータ・カートリッジ・アプリケーション・コンテキストを構成する手順:

1. Oracle CEP IDE for EclipseのEPNエディタを開きます。
6.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 Complex 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. 値がOracle CEPサーバーのconfig.xmlファイルで定義されているデータソース名となる、data-source子要素を追加します。
詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex 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 Complex 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 Complex Event Processing CQL言語リファレンス』のOracle JDBCデータ・カートリッジを使用したOracle CQL問合せの定義に関する項を参照してください。

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

この章では、構成XMLを生成するためのJava注釈の使用に関する情報など、Oracle Complex Event Processing (Oracle CEP)で使用されるアダプタおよびイベントBeanのデフォルト構成を拡張するXMLスキーマの使用方法について説明します。

- 19.1項「コンポーネント構成の拡張の概要」

- 19.2項「コンポーネント構成の拡張」

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

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

アダプタとイベントBeanにはデフォルトの構成データがあります。このデフォルト構成は通常、単純な基本的アプリケーションに適しています。

ただし、XMLスキーマ定義(XSD)スキーマの使用によってこの構成を拡張して、Oracle CEPで提供される組込みのXMLタイプを拡張するアダプタ構成ファイルの新しいXML形式を指定することもできます。XSDスキーマを拡張することで、任意の数の新しい要素をアダプタ構成に追加できます。新しい要素にname属性を指定する必要がある他は制限もほとんどありません。

この機能は、XSDやJava Architecture for XML Binding (JAXB)などの標準の技術に基づいています。

コンポーネント構成は、次の方法で拡張できます。

- javax.xml.bind.annotationで指定する注釈を使用した、アダプタまたはイベントBean Javaクラスへの注釈付け
19.1.1項「注釈を使用したコンポーネント構成の拡張」を参照してください。

- 手動によるXSDの生成
19.1.2項「XSDを使用したコンポーネント構成の拡張」を参照してください。

- アプリケーション・スキーマを拡張しないカスタム・スキーマの手動生成
これにより、他の要素を定義せずに、独自のネームスペースにカスタム構成を作成できます。このメカニズムは、スキーマ生成後の注釈付けの方法と同様に機能します。

詳細は、次を参照してください:

- 第14章「カスタム・アダプタの構成」

- 第15章「カスタム・イベントBeanの構成」

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

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

コンポーネント構成を拡張する最も簡単で効率的な方法は、javax.xml.bind.annotationで指定する注釈を使用して、アダプタまたはイベントBean Javaクラスに注釈を付けることです。

Oracle CEPでは、EPN構成ファイルの複数のネームスペースの包括、およびクライアント・バンドルではなく提供されているバンドルからの構成情報のソーシングをサポートしています。Oracle CEPではアクセス可能なclass-spaceの複数のObjectFactoriesがスキャンされ、このそれぞれがcreateConfigによって初期化されます。

スキーマ検索には、アダプタ・バンドル内のwlevs:factory要素のprovider-schema子要素も含まれます。独自のバンドルでアダプタを定義している場合は、provider-bundleプロパティを定義していれば、そのバンドルにスキーマを格納することができます。

Oracleでは、elementFormDefault="unqualified"を使用して、ローカルで定義した要素にネームスペースを含まず、グローバル要素でtargetNamespaceを利用することをお薦めします。これによって、過剰に接頭辞を付けなくても、スキーマ間の名前の重複を回避することができます。

詳細は、http://www.xfront.com/HideVersusExpose.htmlを参照してください。

詳細は、次を参照してください:

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

- http://java.sun.com/javaee/6/docs/api/javax/xml/bind/annotation/package-summary.html

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

カスタム・コンポーネント構成をより詳細に制御するため、独自のXSDを作成して、コンポーネント構成を拡張することができます。

詳細は、次を参照してください:

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

- https://jaxb.java.net/

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

次のいずれかの方法で、コンポーネント構成を拡張することができます。

詳細は、19.1項「コンポーネント構成の拡張の概要」を参照してください。

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

コンポーネント構成を拡張する最も簡単で効率的な方法は、アダプタまたはイベントBean Javaクラスに注釈を付けることです。

また、19.2.2項「XSDを使用したコンポーネント構成の拡張方法」の説明のとおり、独自のXSDを作成してコンポーネント構成を拡張できます。

詳細は、19.1.1項「注釈を使用したコンポーネント構成の拡張」を参照してください。

注釈を使用したコンポーネント構成を拡張する手順:

1. カスタム・アダプタまたはイベントBean Javaクラスを実装します。
詳細は、次を参照してください:

- 14.2項「カスタム・アダプタの実装」

- 15.2項「カスタム・イベントBeanの実装」

2. javax.xml.bind.annotationで指定した注釈を使用して、カスタム・アダプタまたはイベントBeanの属性に注釈を付け、コンポーネント構成を指定します。
重要なjavax.xml.bind.annotation注釈には、次のものが含まれます。

- @XmlElement: プロパティはコンポーネント構成のオプション部分です。

- @XmlElement(required=true): プロパティはコンポーネント構成の必須部分です。

- @XmlTransient: プロパティはコンポーネント構成の一部ではありません。

- @XmlJavaTypeAdapter: これで注釈を付けられたプロパティ要素によってカスタム処理を指定し、大部分のJavaデータ型を適応させることができます。

注意:

@XmlJavaTypeAdapterを幅広く活用する必要がある場合は、19.2.2項「XSDを使用したコンポーネント構成の拡張方法」の説明のとおり、独自のカスタム・スキーマの定義を考慮します。

注意:

注釈のないプロパティは、オプションの構成プロパティとみなされます(デフォルト: @XmlElement)。

例19-1では、次を指定するためjavax.xml.bind.annotation注釈によって注釈を付けられたカスタム・アダプタ実装を示します。

- count: コンポーネント構成の一部ではありません。

- doit: コンポーネント構成の必須部分です。

- size: コンポーネント構成の必須部分です。インスタンス・プロパティhowBigにマップされます。

例19-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コード内で、19.3項「カスタム・アダプタまたはイベントBeanの構成へのプログラムからのアクセス」の説明のとおり、拡張された構成にアクセスします。

4. アプリケーションのカスタム・コンポーネントを記述するコンポーネント構成XMLファイルを変更します。
詳細は、14.5項「カスタム・アダプタ・コンポーネント構成ファイルの構成」を参照してください。

5. アプリケーションのコンポーネントを記述するコンポーネント構成XMLファイルを作成する場合は、必ず拡張されたXSDファイルを説明として使用します。また、デフォルトのスキーマではなく、必ずこのスキーマのネームスペースを識別するようにします。
例19-2は、例19-1のカスタム・アダプタのコンポーネント構成ファイルを示します。

例19-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>

注意:

拡張コンポーネント構成スキーマでは、例19-5に示すとおり、ネストされているconfig要素が必要です。

6. アプリケーションをパッケージ化し、デプロイします。
詳細は、第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」を参照してください。

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

カスタム・アダプタまたはイベントBeanのコンポーネント構成は、独自のXSDを使用して拡張できます。

また、19.2.1項「注釈を使用したコンポーネント構成の拡張方法」の説明のとおり、アダプタまたはイベントBean Javaクラスに注釈をつけて、コンポーネント構成を拡張できます。

詳細は、19.1.2項「XSDを使用したコンポーネント構成の拡張」を参照してください。

XSDを使用したコンポーネント構成を拡張する手順:

1. 拡張されたアダプタまたはイベントBean構成を記述する新規XSDスキーマ・ファイルを作成します。
このXSDファイルには、コンポーネントを記述するのにOracle CEPで定義されている組込みのXSDタイプを通常使用する場合でも、アプリケーションの他のコンポーネント(プロセッサやストリーム)の説明も含まれている必要があります。

19.2.2.1項「XSDスキーマ・ファイルの作成」を参照してください。

2. アプリケーション・ビルド・プロセスの一部として、SunのGlassFishリファレンス実装のcom.sun.tools.xjc.XJCTask AntタスクなどのJAXBバインディング・コンパイラを使用して、XSDスキーマ・タイプのJava表現を生成します。ユーザーの利便を図るために、このAntタスクはOracle CEP配布に含まれています。
次のサンプル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 CEP XSDファイルをインポートするため、ビルド・プロセスによってOracle CEP 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クラス・ファイルをアプリケーション・バンドルにパッケージ化します。
24.2項「Oracle CEPアプリケーションのアセンブル」を参照してください。

5. カスタム・アダプタまたはイベントBeanをプログラミングします。
詳細は、次を参照してください:

- 14.2項「カスタム・アダプタの実装」

- 15.2項「カスタム・イベントBeanの実装」

6. カスタム・アダプタまたはイベントBeanコード内で、19.3項「カスタム・アダプタまたはイベントBeanの構成へのプログラムからのアクセス」の説明のとおり、拡張された構成にアクセスします。

7. アプリケーションのコンポーネントを記述するコンポーネント構成XMLファイルを作成する場合は、必ず拡張されたXSDファイルを説明として使用します。また、デフォルトのスキーマではなく、必ずこのスキーマのネームスペースを識別するようにします。
例19-3は19.2.2.1項「XSDスキーマ・ファイルの作成」で作成したXSDのコンポーネント構成ファイルを示しています。

例19-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>

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

新しいXSDスキーマ・ファイルはwlevs_application_config.xsd XSDスキーマを拡張し、アダプタの新規構成要素などの新しいカスタム情報を追加します。カスタム情報には標準のXSDスキーマ構文を使用します。

19.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—デフォルト・プロセッサ構成の説明については、次を参照してください。

- 10.1項「Oracle CQLプロセッサ構成の概要」

- 11.1項「EPLプロセッサ・コンポーネント構成の概要」

- DefaultStreamConfig—デフォルトのチャネル構成の記述は、9.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>

19.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>

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

この節は、アダプタとイベントBeanの両方に当てはまります。簡略化のため、アダプタについてのみ説明します。

アプリケーションをデプロイする場合、Oracle CEPでは(コンポーネント構成XMLファイルに指定された)各コンポーネントの構成がJava Architecture for XML Binding (JAXB)標準を使用してJavaオブジェクトにマップされます(詳細は、https://jaxb.dev.java.net/を参照)。各コンポーネントの構成データは単一のXML要素に含まれるため、JAXBでもこの構成データを表現する単一のJavaクラスが生成されます。コンポーネントの初期化時、およびコンポーネントの構成が動的に変更されるたびに、Oracle CEPでは実行時にこのJavaクラスのインスタンスがコンポーネント(プロセッサ、チャネル、またはアダプタ)に渡されます。

このコンポーネント構成には、実行時に次のいずれかの方法でアクセスできます。

- 19.3.1項「リソース・インジェクションを使用したコンポーネント構成へのアクセス方法」の説明のとおり、リソース・インジェクションを使用します。
これは実行時の、最も簡単で効率的なコンポーネント構成へのアクセス方法です。

- 19.3.2項「ライフサイクル・コールバックを使用したコンポーネント構成へのアクセス方法」の説明のとおり、コールバックを使用します。
これは、実行時にコンポーネント構成にアクセスするための最も柔軟な方法です。リソース・インジェクションを使用しても目的の達成が困難な場合は、このオプションを検討してください。

注意:

アダプタ・プロバイダからのスキーマ使用を必要とするクライアントは、プロバイダのバンドルから適切なパッケージをインポートし、プロバイダのObjectFactoryがクライアント・バンドルに表示されるようにする必要があります。

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

デフォルトでは、Oracle CEPはそのJava Beanプロパティの直接インジェクション、およびその後の通常の構成コールバックにより、アダプタを構成します。

例19-4に示すとおり、注釈付きカスタム・アダプタ実装を検討します。

例19-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;
}
}

例19-5に示すように、このカスタム・アダプタのインスタンスについて、コンポーネント構成ファイルを検討します。

例19-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 CEPはJava Beanプロパティdoitの値(true)を挿入します。

注意:

拡張コンポーネント構成スキーマでは、例19-5に示すとおり、ネストされているconfig要素が必要です。

詳細は、次を参照してください:

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

- 1.4項「Oracle CEPリソース・アクセスの構成」

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

アダプタ実装では、メタデータ注釈を使用して、実行時にOracle CEPで起動されたJavaメソッドを指定することができます。

Oracle CEPは、構成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です。

この項では次について説明します:

- 19.3.2.1項「ライフサイクル・コールバック注釈」

- 19.3.2.2項「ライフサイクル」

19.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」を参照してください。

詳細は、19.3.2.2項「ライフサイクル」を参照してください。

19.3.2.2 ライフサイクル

Oracle CEPでは、カスタム・アダプタおよびイベントBeanのインストール中に、次のライフサイクルに従います。

1. アダプタまたはイベントBeanインスタンスの作成。

2. 静的プロパティのインジェクト。

3. afterPropertiesSetの呼出し。

4. フェーズの準備:

1. 1つ以上の構成引数のある@Prepareがある場合は、これを呼び出します。

2. ない場合は、構成プロパティを直接インジェクトします。
19.3.1項「リソース・インジェクションを使用したコンポーネント構成へのアクセス方法」を参照してください。

3. 引数のない@Prepareがある場合は、これを呼び出します。

5. フェーズの有効化:

1. 1つ以上の構成引数のある@Activateがある場合は、これを呼び出します。

2. 引数のない@Activateがある場合は、これを呼び出します。

6. afterConfigurationActiveを呼び出します。

7. その他の構成で続行します。

第5部

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

第5部の章の内容は次のとおりです。

- 第20章「高可用性について」

- 第21章「高可用性の構成」

20 高可用性について

この章では、Oracle Complex Event Processing (Oracle CEP)コンポーネント、および、Oracle CEPアプリケーションの可用性を向上するために使用できる設計パターンについて説明します。

- 20.1項「高可用性アーキテクチャ」

- 20.2項「サービス品質の選択」

- 20.3項「高可用性用Oracle CEPアプリケーションの設計」

特定の高可用性のサービス品質を実装する方法に関する詳細は、第21章「高可用性の構成」を参照してください。

20.1 高可用性アーキテクチャ

コンピューティング・リソースのように、Oracle CEPサーバーは、データやサービスの損失につながるハードウェアおよびソフトウェアのフォルトの両方に影響を受けやすくなっています。Oracle CEPの高可用性オプションは、そのようなフォルトの可能性および影響を共に軽減しようと検索します。

Oracle CEPは、アクティブ・スタンバイ高可用性アーキテクチャをサポートします。この方法には、高パフォーマンス、簡素性、およびフェイルオーバー時間の短縮という利点があります。

高可用性を高める必要があるOracle CEPアプリケーションは、Oracle CEPマルチサーバー・ドメインで稼働している2つ以上のOracle CEPサーバー・インスタンスのグループにデプロイされます。Oracle CEPは、自動的にグループ内の1つのサーバーをアクティブ・プライマリに選択します。残りのサーバーは、アクティブ・セカンダリとなります。

プライマリ・サーバーおよびセカンダリ・サーバーは、すべて同一の入力イベントを受信するように構成され、それらを並列に処理しますが、プライマリ・サーバーのみがOracle CEPアプリケーション・クライアントにイベントを出力します。選択したサービス品質に依存して、セカンダリ・サーバーはメモリー内の問合せを使用してそのような出力イベントをバッファリングし、プライマリ・サーバーは、プライマリ・サーバーが出力済のイベントを使用してセカンダリ・サーバーを最新に保ちます。

図20-1は通常の構成を示します。

図20-1 Oracle CEPの高可用性: プライマリ・サーバーおよびセカンダリ・サーバー

「図20-1 Oracle CEPの高可用性: プライマリ・サーバーおよびセカンダリ・サーバー」の説明

この項では次について説明します:

- 20.1.1項「高可用性のライフサイクルおよびフェイルオーバー」

- 20.1.2項「デプロイメント・グループおよび通知グループ」

- 20.1.3項「高可用性コンポーネント」

- 20.1.4項「高可用性およびスケーラビリティ」

- 20.1.5項「高可用性およびOracle Coherence」

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

図20-2は、Oracle CEPの高可用性ライフサイクルの状態図を示します。この図では、状態名(SECONDARY、BECOMING_PRIMARYおよびPRIMARY)はOracle CEPの高可用性アダプタのRuntimeMBeanメソッドのgetStateの戻り値に対応します。このような状態はOracle CEP専用です。

図20-2 Oracle CEPの高可用性ライフサイクルの状態図

「図20-2 Oracle CEPの高可用性ライフサイクルの状態図」の説明

初期プライマリとなるサーバーを指定することはできません。初期状態では、マルチサーバー・ドメインで起動する第1サーバーがプライマリになるため、特定の順序でサーバーを起動することによって、プライマリの選択に影響を与えることができます。稼働中の特定のサーバーを強制的にプライマリにすることはできません。プライマリが失敗するとバックアップが機能し、現在のプライマリがフェイルオーバーの起動に失敗しないかぎり、二度と自動的にプライマリになりません。

この項では、Oracle CEPの高可用性ライフサイクルを次のような内容で詳細に説明します。

- 20.1.1.1項「セカンダリの障害」

- 20.1.1.2項「プライマリの障害およびフェイルオーバー」

- 20.1.1.3項「高可用性マルチサーバー・ドメインの再結合」

20.1.1.1 セカンダリの障害

通常、セカンダリ・サーバーに障害が発生しても図20-3に示すようにOracle CEPアプリケーションの動作には影響はありません。選択するサービス品質に関係なくイベントの欠落や重複は発生しません。

図20-3 セカンダリの障害

「図20-3 セカンダリの障害」の説明

20.1.1.2 プライマリの障害およびフェイルオーバー

ただし、プライマリ・サーバーで障害が発生した場合、図20-4で示すように、選択するサービス品質に応じて、Oracle CEPはイベントの欠落や重複を発生させる可能性があるフェイルオーバーを実行します。

図20-4 プライマリの障害およびフェイルオーバー

「図20-4 プライマリの障害およびフェイルオーバー」の説明

フェイルオーバー中、Oracle CEPは自動的に新しいプライマリおよびSECONDARY状態からBECOMING_PRIMARY状態への新しいプライマリの遷移を選択します。選択するサービス品質に依存して、新しいプライマリは構成可能な準備状況のしきい値を満たすまでPRIMARY状態に遷移しません。詳細は、20.2項「サービス品質の選択」にある特定のサービス品質オプションを参照してください。

20.1.1.3 高可用性マルチサーバー・ドメインの再結合

新しいOracle CEPサーバーがOracle CEP高可用性マルチサーバー・ドメインに追加される場合、または既存の障害が発生したサーバーが再起動する場合、サーバーは、サーバーにデプロイされたすべてのアプリケーションが完全に結合するまで、Oracle CEP高可用性デプロイメントと通知グループを完全には結合しません。アプリケーションの種類によって、いつ完全に結合したことが宣言されるかが決定されます。

アプリケーションが完全に同一の出力イベントのシーケンスを既存のセカンダリとして出力する必要がある場合(タイプ1アプリケーション)、一部の有限の期間(warm-up-windowの期間)の入力ストリームを処理することによって、アプリケーションはその内部状態を再構築できます。このwarm-up-windowの時間によって、アプリケーションが完全にOracle CEP高可用性デプロイメントと通知グループを結合するのにかかる最短時間が決定されます。

アプリケーションが完全に同一の出力イベントのシーケンスを既存のセカンダリとして出力する必要がない場合(タイプ2アプリケーション)、warm-up-windowの時間は必要にならず、アプリケーションはデプロイされるとすぐにOracle CEP高可用性デプロイメントと通知グループを完全に結合します。

詳細は、20.3.2.5項「適切なwarm-up-window時間の選択」を参照してください。

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

マルチサーバー・ドメイン内のすべてのサーバーは、同一のデプロイメント・グループに属します。このグループは、アプリケーションをデプロイする対象のグループです。Oracle CEPの高可用性のために同一のアプリケーションをグループ内のすべてのサーバーにデプロイする必要があります。

デフォルトでは、マルチサーバー・ドメイン内のすべてのサーバーも同一の通知グループに属します。サーバーは、サーバーで障害が発生したとき(およびグループを終了したとき)または動作を再開したとき(およびグループを再結合したとき)を示すメンバーシップ通知用の通知グループと共に、プライマリからの同期通知用の通知グループをリスニングします。

Oracle CEPの高可用性アプリケーションのスケールを変更する必要がある場合、ActiveActiveGroupBeanを使用して、すべてのサーバー(プライマリおよびセカンダリ)に広がる単一のデプロイメント・グループの利点を保持する一方で、プライマリ・サーバー・ユニットとして2つ以上のサーバーを機能させることを許可する通知グループを定義できます。

マルチサーバー・ドメインのデプロイメント・グループを作成するためには、Oracle Coherenceベースのクラスタリングを使用する必要があります。デフォルト・グループまたはカスタム・グループのいずれかを使用できます。

詳細は、次を参照してください:

- 20.1.4項「高可用性およびスケーラビリティ」

- 20.1.5項「高可用性およびOracle Coherence」

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

20.1.3 高可用性コンポーネント

Oracle CEPの高可用性オプションを実装するには、各入力アダプタおよび高可用性出力アダプタの後、各出力アダプタの前に、高可用性入力アダプタを使用してイベント処理ネットワーク(EPN)を構成します。

図20-5は、定位置にすべての実行可能な高可用性アダプタを持つ通常のEPNを示します。

図20-5 EPN内の高可用性アダプタ

「図20-5 EPN内の高可用性アダプタ」の説明

注意:

簡略化するために、図20-5ではチャネルを示さずプロセッサを1つのみ示します。ただし、EPNは任意で複数の入力ストリームと出力ストリーム、チャネル、複数のプロセッサ、イベントBeanなどと複合化することができます。唯一の制約は、各入力アダプタは高可用性入力アダプタが次にきて、各出力アダプタは高可用性出力アダプタが先行する必要があるということです。同様に、簡略化するために2つのOracle CEPサーバーのみのマルチサーバー・ドメインが示されますが、任意の数のセカンダリ・サーバーを持つことができます。

プライマリのオプションの高可用性入力アダプタは、各セカンダリの対応する高可用性入力アダプタと通信し、イベント・タイムスタンプを正規化します。

Oracle CEPの高可用性によって、高可用性入力アダプタの1つの種類が提供されます。20.1.3.1項「高可用性入力アダプタ」を参照してください。

プライマリの高可用性出力アダプタは、Oracle CEPアプリケーションをダウンストリーム・クライアントに接続する出力ストリームにイベントを出力する処理を行います。プライマルの高可用性出力アダプタも対応する各セカンダリの高可用性出力アダプタと通信を行い、選択する高可用性のサービス品質に依存して、セカンダリ出力アダプタに出力イベントのメモリー内問合せをトリミングするように命令することができます。

Oracle CEPの高可用性によって、次の高可用性出力アダプタが提供されます。

- 20.1.3.2項「バッファリング出力アダプタ」

- 20.1.3.3項「ブロードキャスト出力アダプタ」

- 20.1.3.4項「相関出力アダプタ」

Oracle CEPの高可用性によって、JMSアプリケーションでスケーラビリティを向上するための通知グループのSpring Beanも提供されます。20.1.3.5項「ActiveActiveGroupBean」を参照してください。

どのアダプタを選択するかは、選択する高可用性のサービス品質によって決定されます。20.2項「サービス品質の選択」を参照してください。

20.1.3.1 高可用性入力アダプタ

プライマリOracle CEPサーバー上のオプションのOracle CEP高可用性入力アダプタは、イベントがアダプタに到着し、イベントに割り当てられた時間値をすべてのセカンダリ・サーバーに転送するとき、時間(ナノ秒)をイベントに割り当てます。これによって、アプリケーションを稼働しているすべてのサーバーが統一された時間値を使用し(および同一の結果を生成し)、分散型クロック同期の必要性がなくなることが保証されます。

時間値は、EPN内の任意のダウンストリーム・チャネルにイベントが到着する前に各イベントに割当てられるため、ダウンストリーム・チャネルは、イベントのチャネル到着時に新しい時間値をイベントに割り当てないようにアプリケーションの時間を使用するように構成する必要があります。

入力イベントは、このアダプタを使用するために各イベントを一意で識別するキーを持つ必要があります。

Oracle CEPの高可用性入力アダプタをハートビート・イベントを送信するように構成できます。

Oracle CEPの高可用性入力アダプタは、すべての高可用性のサービス品質オプションに適用できます。ただし、高可用性入力アダプタはパフォーマンス・オーバーヘッドを向上させるため、一部の高可用性のサービス品質オプションには適切ではありません(20.2.1項「シンプル・フェイルオーバー」および20.2.2項「バッファリングを使用するシンプル・フェイルオーバー」など)。このようなオプションでは、かわりにアプリケーション時間と何らかの着信イベント・プロパティの使用を検討します。

詳細は、次を参照してください:

- 20.2.3項「軽量キュー・トリミング」

- 20.2.4項「JMSによる正確なリカバリ」

- 21.2.1項「高可用性入力アダプタの構成方法」

20.1.3.2 バッファリング出力アダプタ

Oracle CEPの高可用性バッファリング出力アダプタは、バッファリング型キュー・トリミング方式を実装します。バッファはストリームからの出力イベントのスライディング・ウィンドウです。ウィンドウのサイズはミリ秒単位で測定されます。

Oracle CEPの高可用性バッファリング出力アダプタは、シンプル・フェイルオーバーおよび高可用性のサービス品質オプションのバッファリングを使用するシンプル・フェイルオーバーに適用できます。

詳細は、次を参照してください:

- 20.2.1項「シンプル・フェイルオーバー」

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

- 21.2.2項「バッファリング出力アダプタの構成方法」

20.1.3.3 ブロードキャスト出力アダプタ

Oracle CEPの高可用性ブロードキャスト出力アダプタは、分散型キュー・トリミング方式を実装します。アクティブ・プライマリ・インスタンスは、メッセージを通知グループ内のアクティブ・セカンダリ・インスタンスにブロードキャストし、キューのローカル表現をトリミングするタイミングを通知します。

Oracle CEP高可用性ブロードキャスト出力アダプタは、軽量キュー・トリミングの高可用性のサービス品質オプションに適用できます。

詳細は、次を参照してください:

- 20.2.3項「軽量キュー・トリミング」

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

20.1.3.4 相関出力アダプタ

Oracle CEPの高可用性相関出力アダプタは、通常はJMSから2つのイベント・ストリームを関連付けます。このアダプタは、イベントのインバウンド・バッファと同一イベント・ストリームのセカンド・ソースに関連付け、構成可能な時間間隔の後で相関関係付けに障害が発生する場合にバッファを出力します。関連付けられたイベントは、キューからトリミングされます。関連付けられたイベントは、順序通りに整理されると仮定されます。

Oracle CEPの高可用性相関出力アダプタは、JMS高可用性のサービス品質オプションを使用する正確なリカバリに適用できます。

詳細は、次を参照してください:

- 20.2.4項「JMSによる正確なリカバリ」

- 21.2.4項「相関出力アダプタの構成方法」

20.1.3.5 ActiveActiveGroupBean

com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanは、JMS入力アダプタから入力ストリームをパーティション化することを可能にするSpring Beanです。

このコンポーネントは、JMS高可用性のサービス品質のみを使用する正確なリカバリに適用できます。ただし、Oracle CEPアプリケーションのスケーラビリティを向上するための高可用性なしに使用することもできます。

詳細は、次を参照してください:

- 20.1.4項「高可用性およびスケーラビリティ」

- 20.2.4項「JMSによる正確なリカバリ」

- 22.2.2項「ActiveActiveGroupBean」

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

Oracle CEPの高可用性アプリケーションのスケールを変更する必要がある場合、ActiveActiveGroupBeanを使用して、すべてのサーバー(プライマリおよびセカンダリ)に広がる単一のデプロイメント・グループの利点を保持する一方で、高可用性ユニットとして2つ以上のサーバーを機能させることを許可する通知グループを定義できます。

図20-6は、最も単純な構成から高可用性、そして高可能性とスケーラビリティの両方へと至る3つのOracle CEPアプリケーションのシナリオを示します。

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

「図20-6 高可用性およびスケーラビリティ」の説明

大半のアプリケーションは、高可用性を持たないシングルサーバー・ドメインで起動します。この場合、最も単純なシナリオでは、1つのOracle CEPサーバー上で稼働しているOracle CEPアプリケーションが入力イベント・ストリームを処理して出力イベントを生成します。

高可用性のシナリオでは、Oracle CEPアプリケーションはOracle CEP高可用性オプションを使用するように構成されています。このアプリケーションは、2つのサーバーから構成されるマルチサーバー・ドメインのデプロイメント・グループにデプロイされます。このシナリオでは、プライマリ・サーバーのみがイベントを出力します。

高可用性とスケーラビリティの両方を持つシナリオでは、Oracle CEPの高可用性アプリケーションは、通知グループを定義するためにActiveActiveGroupBeanを使用するように構成されています。各通知グループには、単一の高可用性ユニットとして機能する2つ以上のOracle CEPサーバーが含まれます。このシナリオでは、各通知グループ内のプライマリ・サーバーのみがイベントを出力します。通知グループ内のプライマリ・サーバーが万一機能しなくなった場合、Oracle CEPの高可用性フェイルオーバーが発生し、その通知グループ内のセカンダリ・サーバーが新しいプライマリを宣言して、構成するOracle CEP高可用性のサービス品質にてイベントの出力を再開します。

詳細は、次を参照してください:

- 22.2.2項「ActiveActiveGroupBean」

- 23.2.2項「Oracle CEP高可用性のあるJMSアプリケーションでスケーラビリティを構成する方法」

20.1.5 高可用性およびOracle Coherence

Oracle CEPの高可用性オプションは、Oracle Coherenceに依存します。Oracle Coherenceを使用せずにOracle CEPの高可用性オプションを実装することはできません。

パフォーマンスのチューニングを検討する場合、Oracle CEPアプリケーションに加えて必ずOracle Coherenceの構成を評価します。

詳細は、次を参照してください:

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

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle Coherenceクラスタの構成に関する項

- Oracle Coherence開発者ガイド(http://download.oracle.com/docs/cd/E15357_01/coh.360/e15723/toc.htm)

20.2 サービス品質の選択

Oracle CEPの高可用性を使用することによって、表20-1で一覧表示されている任意のサービス品質オプションを選択できます。欠落イベントおよび複製イベントに対するアプリケーションの許容値と共に期待されるイベント・スループットに適するサービス品質オプションを選択します。プライマリ・サーバーおよびセカンダリ・サーバーのハードウェア要件は、サービス品質がより正確になるほど上がるので注意してください。

表20-1 Oracle CEP高可用性のサービス品質

高可用性オプション

欠落イベント?

重複イベント?

パフォーマンス・オーバーヘッド

20.2.1項「シンプル・フェイルオーバー」

はい(多数)

はい(少数)

ごく少数

20.2.2項「バッファリングを使用するシンプル・フェイルオーバー」

はい(少数)脚注 1

はい(多数)

低

20.2.3項「軽量キュー・トリミング」

いいえ

はい(少数)

低-中脚注 2

20.2.4項「JMSによる正確なリカバリ」

いいえ

いいえ

高

脚注 1  大きさが十分なバッファを構成すれば、欠落イベントは発生しません。

脚注 2  パフォーマンス・オーバーヘッドはチューニング可能です。トリミングの頻度を調整してオーバーヘッドを削減できますが、フェイルオーバー時により多くの複製数が発生します。

20.2.1 シンプル・フェイルオーバー

この高可用性のサービス品質は、最低のパフォーマンス・オーバーヘッド(リカバリ時間が速い)および最低のデータ整合性(フェイルオーバー時に欠落イベントと複製イベントの両方の可能性があります)によって特徴付けられます。

プライマリ・サーバーはイベントを出力し、セカンダリ・サーバーはその出力イベントを単に破棄するだけで、出力イベントのバッファリングは行いません。現在のアクティブ・プライマリで障害が発生した場合、通知されると新しいアクティブ・プライマリが選択され、出力イベントの送信を開始します。

フェイルオーバー中には、前のプライマリより前または後で稼働しているかに応じて、新しいプライマリによって多くのイベントが欠落したり複製されたりする場合があります。

フェイルオーバー・ウィンドウ中には、イベントが欠落する場合があります。たとえば、1秒当たり100個のイベントを処理してフェイルオーバーに10秒かかる場合、1000個のイベントが欠落します。

新しいプライマリは、ただちにPRIMARY状態を入力します。BECOMING_PRIMARY状態から新しいプライマリが遷移する前に満たす必要がある構成可能な準備状態のしきい値はありません。

Oracle CEPサーバーがマルチサーバー・ドメインに再結合するとき、セカンダリとしてただちに利用可能になります。

この高可用性のサービス品質を実装するには、各出力アダプタの前に高可用性バッファリング出力アダプタを使用して(サイズがゼロのスライディング・ウィンドウを使用して)EPNを構成します。パフォーマンス・オーバーヘッドを削減するには、高可用性入力アダプタを使用せずに一部の着信イベント・プロパティを持つアプリケーション時間を使用します。

詳細は、21.1.1項「シンプル・フェイルオーバーの構成方法」を参照してください。

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

この高可用性のサービス品質は、低いパフォーマンス・オーバーヘッド(リカバリ時間が速い)および向上したデータ整合性(フェイルオーバー時に欠落イベントはなくても多数の複製イベントの可能性があります)によって特徴付けられます。

プライマリ・サーバーはイベントを出力し、セカンダリ・サーバーはその出力イベントをバッファリングします。現在のアクティブ・プライマリで障害が発生した場合、通知されると新しいアクティブ・プライマリが選択され、出力イベントの送信を開始します。

フェイルオーバー・ウィンドウ中には、イベントが欠落する場合があります。たとえば、1秒当たり100個のイベントを処理してフェイルオーバーに10秒かかる場合、1000個のイベントが欠落します。セカンダリのバッファが大容量の場合、多数の複製が出力される可能性があります。一方、バッファが大容量になるほどメッセージの欠落の可能性は低くなります。

Oracle CEPサーバーがマルチサーバー・ドメインに再結合するとき、ご使用のアプリケーションがOracle CEP高可用性タイプ1アプリケーションの場合(アプリケーションが既存のセカンダリと完全に同一の出力イベントのシーケンスを出力する必要があります)、セカンダリとして利用できるようになる前にOracle CEPの高可用性出力アダプタに構成するwarm-up-window-lengthの時間を待機する必要があります。

この高可用性のサービス品質を実装するには、各出力アダプタの前に高可用性バッファリング出力アダプタを使用して(サイズがゼロより大きいスライディング・ウィンドウを使用して)EPNを構成します。パフォーマンス・オーバーヘッドを削減するには、高可用性入力アダプタを使用せずに一部の着信イベント・プロパティを持つアプリケーション時間を使用します。

詳細は、次を参照してください:

- 20.3.2.5項「適切なwarm-up-window時間の選択」

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

20.2.3 軽量キュー・トリミング

この高可用性のサービス品質は、低いパフォーマンス・オーバーヘッド(リカバリ時間が速い)および向上したデータ整合性(フェイルオーバー時に欠落イベントはなくても少数の複製イベントの可能性があります)によって特徴付けられます。

アクティブ・プライマリはセカンダリに通信し、イベントを実際に処理します。これによって、特定の時点でプライマリによって送信されていないイベントのみを含むようにセカンダリは出力イベントのバッファをトリミングできます。イベントは現在のプライマリによって送信された後でのみトリミングされるので、セカンダリによってフェイルオーバーの発生時に任意の出力イベントが欠落しないようにできます。

アクティブ・プライマリがキュー・トリミング・メッセージをアクティブ・セカンダリに送信する頻度は、次のように構成可能です。

- n個のイベントごと(n>0)
これによって、フェイルオーバー時に複製された出力イベントの数を最大n個に限定します。

- nミリ秒ごと(n>0)

キュー・トリミング・アダプタには、アクティブ・プライマリおよびセカンダリの間で統一的にイベントを識別する方法が必要です。お薦めの方法は、イベントを識別するためにアプリケーション時間を使用することですが、一意にイベントを識別する任意のキー値が役に立ちます。

キュー・トリミングの利点は、出力イベントが絶対に欠落しないことです。ただし、通信の必要があるトリミング・メッセージの送信には、アクティブ・プライマリでわずかなパフォーマンス・オーバーヘッドがあります。このオーバーヘッドは、キュー・トリミング・メッセージ頻度の増加に伴い増加します。

フェイルオーバー中には、新しいプライマリがBECOMING_PRIMARY状態に入り、そのイベント・キュー(セカンダリとして累積していく)がフラッシュされるまで、PRIMARY状態には遷移しません。この遷移中には、新しい入力イベントがバッファリングされ、一部の複製イベントが出力される場合があります。

Oracle CEPサーバーがマルチサーバー・ドメインに再結合するとき、ご使用のアプリケーションがOracle CEP高可用性タイプ1アプリケーションの場合(既存のセカンダリと完全に同一の出力イベントのシーケンスを出力する必要があるアプリケーション)、セカンダリとして利用できるようになる前にOracle CEPの高可用性出力アダプタに構成するwarm-up-window-lengthの時間を待機する必要があります。

この高可用性のサービス品質を実装するには、各入力アダプタおよび高可用性ブロードキャスト出力アダプタの後、各出力アダプタの前に、高可用性入力アダプタを使用してEPNを構成します。

詳細は、21.1.3項「軽量キュー・トリミングの構成方法」を参照してください。

20.2.4 JMSによる正確なリカバリ

この高可用性のサービス品質は、高パフォーマンス・オーバーヘッド(リカバリ時間が遅い)および最大のデータ整合性(フェイルオーバー時に欠落イベントも複製イベントもありません)によって特徴付けられます。

この高可用性のサービス品質は、JMSの入力アダプタおよび出力アダプタにのみ対応します。

この高可用性のサービス品質では、シングルサーバーのイベント・パスに伴うトランザクションの保証は考慮しませんが、サーバーのセットからの単一の出力は保証します。これを達成するため、セカンダリ・サーバーは、プライマリによってパブリッシュされるイベント・ストリームにJMS経由でリスニングします。図20-7は、この受信イベント・ストリームが、セカンダリが出力キューをトリミングするために使用する信頼できるキュー・トリミング・メッセージの必須ソースであることを示します。JMSが信頼できる転送に構成されている場合、セカンダリで確認されるイベントのストリームは、正確にプライマリによって出力されるイベントのストリームであるため、フェイルオーバーは以前のプライマリによって転送されないイベントを新しいプライマリが正確に出力することを可能にします。

図20-7 JMSによる正確なリカバリ

「図20-7 JMSによる正確なリカバリ」の説明

フェイルオーバー中には、新しいプライマリがBECOMING_PRIMARY状態に入り、そのイベント・キュー(セカンダリとして累積していく)がフラッシュされるまで、PRIMARY状態には遷移しません。この遷移中には、新しい入力イベントがバッファリングされ、複製イベントは出力されません。

Oracle CEPサーバーがマルチサーバー・ドメインに再結合するとき、ご使用のアプリケーションがOracle CEP高可用性タイプ1アプリケーションの場合(アプリケーションが既存のセカンダリと完全に同一の出力イベントのシーケンスを出力する必要があります)、セカンダリとして利用できるようになる前にOracle CEPの高可用性出力アダプタに構成するwarm-up-window-lengthの時間を待機する必要があります。

この高可用性のサービス品質を実装するには、各入力アダプタおよび高可用性相関出力アダプタの後、各出力アダプタの前に、高可用性入力アダプタを使用してEPNを構成します。

スケーラビリティを向上するため、高可用性のサービス品質を持つクラスタ・グループBeanも使用できます。

詳細は、次を参照してください:

- 21.1.4項「JMSによる正確なリカバリの構成方法」

- 23.2項「ActiveActiveGroupBeanによるスケーラビリティの構成」

20.3 高可用性用Oracle CEPアプリケーションの設計

Oracle CEPの高可用性を宣言的に実装できますが、選択する高可用性のサービス品質から完全に利点を引き出すには、Oracle CEPアプリケーションがOracle CEPの提供する高可用性オプションを利用するように設計する必要があります。

高可用性用Oracle CEPアプリケーションを設計するときには、次を考慮してください。

- 20.3.1項「プライマリOracle CEPの高可用性のユースケース」

- 20.3.2項「高可用性の設計パターン」

- 20.3.3項「Oracle CQLの問合せの制約」

20.3.1 プライマリOracle CEPの高可用性のユースケース

Oracle CEPの高可用性オプションを様々なOracle CEPアプリケーション設計に適応させることができますが、通常、Oracle CEPの高可用性は次のユースケースを想定して設計されています。

- アプリケーションは1つ以上の外部システムから入力イベントを受信します。

- 外部システムは、パブリッシュ/サブスクライブ・スタイルのシステムで、複数のアプリケーションのインスタンスが同時に接続し、同一のメッセージのストリームを受信することを可能にします。

- アプリケーションは、複数のアプリケーションのコピーが同時に実行される場合、競合が発生しないように外部のシステムを更新しません。

- アプリケーションは、出力イベントを外部のダウンストリーム・システムに送信します。複数のアプリケーションのインスタンスは、一度にメッセージを送信できるアプリケーションのインスタンスは1つのみですが、ダウンストリーム・システムに同時に接続できます。

このような制約では、次の異なるケースが注目されます。

- アプリケーションは、障害の発生時に、一部の出力イベントのダウンストリーム・システムへの送信をスキップすることが許可されます。複製も許可されます。
この場合、次のOracle CEP高可用性のサービス品質オプションが適用されます。

- 20.2.1項「シンプル・フェイルオーバー」

- アプリケーションは、複製イベントをダウンストリーム・システムに送信することを許可されますが、障害の発生時に任意のイベントをスキップすることは禁止されます。
この場合、次のOracle CEP高可用性のサービス品質オプションが適用されます。

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

- 20.2.3項「軽量キュー・トリミング」

- アプリケーションは、障害の発生中にイベントが送信できない短い一時停止を法として、障害の発生時に完全に同一のメッセージ/イベントのストリームを送信する必要があります。
この場合、次のOracle CEP高可用性のサービス品質オプションが適用されます。

- 20.2.4項「JMSによる正確なリカバリ」

20.3.2 高可用性の設計パターン

Oracle CEPの高可用性オプションを使用するOracle CEPアプリケーションを設計するとき、次の設計パターンを順守します。

- 20.3.2.1項「アプリケーションが許容できる最小の高可用性の選択」

- 20.3.2.2項「すべての入口/出口ポイントでOracle CEP高可用性コンポーネントの使用」

- 20.3.2.3項「必要な項目のみ保存」

- 20.3.2.4項「Oracle CEPアプリケーションの状態の制限」

- 20.3.2.5項「適切なwarm-up-window時間の選択」

- 20.3.2.6項「アプリケーションが多重呼出し不変であることの保証」

- 20.3.2.7項「外部のソース・イベント・アイデンティティ」

- 20.3.2.8項「イベント順序の重要性の理解」

- 20.3.2.9項「高可用性を考慮したOracle CQL問合せの記述」

- 20.3.2.10項「サーバーのカップリングの回避」

- 20.3.2.11項「サーバー・リカバリの計画」

20.3.2.1 アプリケーションが許容できる最小の高可用性の選択

正確なリカバリの追加コスト(ノードごとのスループットは減少)がアプリケーションに実際に必要になることを確認してください。

20.3.2.2 すべての入口/出口ポイントでOracle CEP高可用性コンポーネントの使用

各通常入力アダプタの後にOracle CEP高可用性入力アダプタを使用する必要があり、各通常出力アダプタの前にOracle CEP高可用性出力アダプタを使用する必要があります。

20.3.2.3 必要な項目のみ保存

大半のOracle CEPシステムは、少数の「充実した」イベントを出力する問合せの対象となる多数の生の入力イベントによって特徴付けられます。通常、このような充実したイベントは数が少なく、かつ価値があるという両方の理由から、それらだけを保存するのが合理的です。

20.3.2.4 Oracle CEPアプリケーションの状態の制限

Oracle CEPシステムによって、イベントのウィンドウを問い合せることができます。きわめて大きいウィンドウを使用してシステムを構築することは魅力的ですが、障害の発生時に再構築の必要がある状態が増加します。通常、このような技術の高可用性ファシリティは適切に活用されるため、長期状態は分散型キャッシュやデータベースのような安定したストレージに保存されるとみなす方が良さそうです。

20.3.2.5 適切なwarm-up-window時間の選択

新しいOracle CEPサーバーがOracle CEP高可用性マルチサーバー・ドメインに追加される場合、または既存の障害が発生したサーバーが再起動する場合、サーバーは、サーバーにデプロイされたすべてのアプリケーションが完全に結合するまで、Oracle CEP高可用性デプロイメントと通知グループを完全には結合しません。アプリケーションの種類によって、いつ完全に結合したことが宣言されるかが決定されます。

Oracle CEPの高可用性アプリケーションは、表20-2で示すように、タイプ1またはタイプ2のアプリケーションとして記述されます。

表20-2 Oracle CEPの高可用性アプリケーションの種類

アプリケーション・タイプ

出力イベントの完全に同一のシーケンスを生成する必要があるか?

有限の期間内に入力ストリームを処理することによって内部状態を再構築できる必要があるか?

完全に結合する前にこの期間を待機する必要があるか?

タイプ1

はい

はい

はい

タイプ2

いいえ

いいえ

いいえ

詳細は、20.1.1.3項「高可用性マルチサーバー・ドメインの再結合」を参照してください。

20.3.2.5.1 タイプ1アプリケーション

タイプ1アプリケーションは、Oracle CEP高可用性デプロイメントおよび通知グループに完全に結合すると、新しいセカンダリが既存のセカンダリと完全に同一の出力イベントのシーケンスを生成するように要求します。

タイプ1アプリケーションは、アプリケーションを実行している他のセカンダリと完全に同一の出力イベントのストリームを生成した後で、有限の期間(warm-up-windowの時間)にその入力ストリームを処理することによって、内部状態を再構築する必要があります。

warm-up-windowの時間は、Oracle CEP高可用性出力アダプタ上で構成されます。warm-up-windowの時間の長さは、秒または分単位で指定されます。たとえば、アプリケーションに5分、7分、15分の範囲をベースとするウィンドウを持つOracle CQL問合せが含まれる場合、最小のwarm-up-window時間は15分(最大の範囲をベースとするウィンドウ・サイズ)となります。Oracleは、必要な状態が完全に利用可能であることを保証するために数分の値を持つ最大ウィンドウ長もお薦めします。そのため先の例では17分または20分がwarm-up-window時間に適した長さとなります。

Oracle CEPサーバーは、warm-up-windowの期間中はシステム時間を使用するため、処理中のイベントに関連したアプリケーション時間には直接関連付けられません。

タイプ1アプリケーションは、有限の期間中に発生したイベントのみを対象とします。すべての範囲をベースとするOracle CQLウィンドウは、warm-up-window時間よりも短縮する必要があり、タプル・ベースのウィンドウも時間によって条件を付けられる必要があります。たとえば、アプリケーションは、直近の10個のイベントが直近の5分間に発生した場合、それらのイベントのみを考慮します。このプロパティを持たないアプリケーションは、タイプ1アプリケーションではありえずwarm-up-windowの期間を使用できません。たとえば、時間の条件を持たないタプル・ベースでパーティション化されたウィンドウを使用するアプリケーションは、任意の時間量がウィンドウの状態の再構築に必要となるためwarm-up-windowを使用できません。

タイプ1アプリケーションがOracle CEPの高可用性ブロードキャスト出力アダプタを使用する場合、一意のアプリケーション専用キーまたはアプリケーション時間のようなモノトニックなキーを使用することによって、イベントをトリミングできます。アプリケーション時間を使用してイベントをトリミングすることは、出力イベントの生成が失敗する可能性があるアプリケーションにおいて、堅牢性が増すと共に不具合への脆弱性が低下するためお薦めです。

詳細は、次を参照してください:

- 20.3.3項「Oracle CQLの問合せの制約」

- 20.1.3.2項「バッファリング出力アダプタ」

- 20.1.3.3項「ブロードキャスト出力アダプタ」

- 20.1.3.4項「相関出力アダプタ」

20.3.2.5.2 タイプ2アプリケーション

タイプ2アプリケーションは、Oracle CEP高可用性デプロイメントおよび通知グループに完全に結合すると、新しいセカンダリが既存のセカンダリと完全に同一の出力イベントのシーケンスを生成するように要求しません。新しいクラスタ・メンバーが、入力イベントの処理を開始する時点に関して有効な出力イベントを生成するように要求するのみです。

タイプ2アプリケーションはwarm-up-window期間を要求しません。

大半のアプリケーションは、タイプ2アプリケーションとなります。アプリケーションが任意の時点で(プライマリOracle CEPサーバー上で)起動し、その時点で入力ストリームからイベントの処理を開始して、有効な出力イベントを生成することが多くあります。言い換えれば、アプリケーションの起動中は入力ストリームが一時停止されず、入力イベントは常に生成されて受信します。多くの場合、セカンダリ・ノードを想定することは合理的です。このノードは同一の動作を行い、若干異なる時点では、若干のタイミングの違いのためにプライマリによって生成されるイベントと必ずしも同一にはなりませんが、アプリケーションの観点から有効な出力イベントを生成します。たとえば、市場が開いている間のみ実行する経理用アプリケーションは、次のようにタイプ2アプリケーションとして動作する可能性があります。すべてのサーバーが市場が開く前に起動し、市場のデータ・ストリームと同一の時点で受信イベントの処理を開始します。複数のセカンダリは障害に対する保護のために実行され、市場が開いている間はセカンダリの数が十分であるかぎり、障害が発生するセカンダリを再起動する必要はなく、さらにセカンダリを追加する必要もないためどのセカンダリも状態をリカバーする必要がありません。

20.3.2.6 アプリケーションが多重呼出し不変であることの保証

異なるサーバー上でアプリケーションの2つのコピーを実行でき、それらが共有されたキャッシュやデータベースで競合しないようにする必要があります。外部のリレーション(キャッシュや表など)を使用する場合、Oracle CEPサーバーがクラスタに再結合するとき、アプリケーションが以前と同一のキャッシュや表にアクセスすることを保証する必要があります: 同一の外部リレーションに対してもう一度結合する必要があります。サーバー上のデータ・ソースは変更されてはならず、データは必ず同一のデータ・ソースから抽出する必要があります。

20.3.2.7 外部のソース・イベント・アイデンティティ

多数の高可用性ソリューションは、異なるサーバー間でイベントが相関関係を持つことを必要とし、そのためにはイベントが普遍的に識別可能である必要があります。これを行う最善の方法は、イベントをシードするために、これを提供するOracle CEPシステムに頼るのではなく、外部情報(タイムスタンプが望ましい)を使用することです。

詳細は、20.3.3.6項「アプリケーション時間の優先」を参照してください。

20.3.2.8 イベント順序の重要性の理解

キュー・トリミングを使用するOracle CEP高可用性のサービス品質オプションでは、プライマリおよびセカンダリのサーバーが同一の出力イベントを生成するだけでなく、完全に同一の順序で出力イベントを生成する必要があります。

プライマリおよびセカンダリのサーバーは、キュー・トリミングおよび同等ベースのイベント識別子(つまり、モノトニックではないイベント識別子のことで、継続的に増加しないイベント識別子)を使用するOracle CEP高可用性のサービス品質オプションを選択する場合、同一の出力イベントを完全に同一の順序で生成する必要があります。この場合、異なる順序で出力イベントを生成すると、障害の発生時に欠落した出力イベントまたは不要な複製出力イベントのいずれかにつながります。

図20-8で示される出力イベント・ストリームを検討してください。プライマリは、出力イベントa、b、およびcを持ちます。イベントcを出力後、プライマリはセカンダリにキュー・トリミング・メッセージを送信します。

図20-8 イベント順序

「図20-8 イベント順序」の説明

セカンダリは、イベントc自体を含むイベントcの前に生成されたキュー内のすべてのイベントをトリミングします。この場合、イベント・セットは{a, b, e, d, c}となり、これらはプライマリがイベントdおよびeをまだ出力していないため適切ではありません。イベントcのトリミング・メッセージの処理後にフェイルオーバーが発生する場合、イベントは失われます。

イベント順序を管理するには、次の設計パターンを検討してください。

- 20.3.2.8.1項「確定的動作の優先」

- 20.3.2.8.2項「マルチスレッドの回避」

- 20.3.2.8.3項「モノトニックなイベント識別子の優先」

20.3.2.8.1 確定的動作の優先

複数のインスタンス上で実行される場合、アプリケーションが同一の順序でイベントを生成するためには、確定している必要があります。アプリケーションは次の要素に依存させないでください。

- 異なるマシン上に異なる結果を返す可能性がある乱数ジェネレータ。

- System.getTimeMillisまたはSystem.nanoTimeなどのメソッド。これらはシステム・クロックが同期されていないため、異なるマシン上で異なる結果を返す可能性があります。

20.3.2.8.2 マルチスレッドの回避

スレッド・スケジューリング・アルゴリズムは時間への依存度がきわめて高いため、マルチスレッドはアプリケーション内で非確定的なソースとなります。つまり、異なるスレッドは異なるマシン上で異なる時間でスケジューリングすることができます。

たとえば、複数のスレッドがOracle CEPの高可用性アダプタに並列にイベントを送信するEPNを作成しないでください。そのようなチャネルがOracle CEPの高可用性アダプタのイベント・ソースの場合、イベントが異なるスレッドごとに並列にアダプタに送信されるようになり、イベント順序を非確定的にすることができる可能性があります。

避ける必要があるチャネル構成に関する詳細は、次を参照してください。

- 22.2.1項「EventPartitioner」

- 表C-9「wlevs:channelアプリケーション・アセンブリ要素の属性」のmax-threads

20.3.2.8.3 モノトニックなイベント識別子の優先

イベント識別子はモノトニックまたは非モノトニックにできます。

モノトニックな識別子は、継続的に増加する識別子です(時間値など)。

非モノトニックな識別子は、継続的に増加せず、重複を含む可能性があります。

通常、モノトニックなイベント識別子を使用してOracle CEPアプリケーションを設計する必要があります。モノトニックなイベント識別子を使用すると、Oracle CEPの高可用性アダプタは順序通りでないイベントを生成する可能性があるアプリケーションを処理できます。

20.3.2.9 高可用性を考慮したOracle CQL問合せの記述

Oracle CEPの高可用性を使用するとき、Oracle CQLの問合せの使用方法がすべてサポートされるわけではありません。この制約を解決するには、Oracle CQLの問合せを再定義する必要があります。

詳細は、20.3.3項「Oracle CQLの問合せの制約」を参照してください。

20.3.2.10 サーバーのカップリングの回避

Oracle CEPシステムの最もパフォーマンスが高い高可用性は、サーバー間の調整を必要とせずにサーバーが実行できるときです。通常、共有状態が存在せず、ダウンストリーム・システムが複製を許容する場合にこれは達成できます。高可用性のレベルを上げることは、ダウンストリーム・システムが確認するイベントのストリームの忠実度を上げることを目標としますが、このように忠実度を上げることはパフォーマンスのペナルティを伴います。

20.3.2.11 サーバー・リカバリの計画

セカンダリ・サーバーがマルチサーバー・ドメインに再結合するとき、20.3.2.5項「適切なwarm-up-window時間の選択」で説明されているとおり、現在のプライマリおよびアクティブ・セカンダリの状態と一致するようにサーバーはOracle CEPアプリケーションの状態を再構築する時間が必要になります。

マルチサーバー・ドメインに再結合した後に、セカンダリ・サーバーがアクティブ・セカンダリとして利用可能になるためにかかる時間は、要求するアクティブ・セカンダリの数における要因となります。

準備完了前にセカンダリが新しいプライマリになることを宣言される場合、セカンダリは例外をスローします。

20.3.3 Oracle CQLの問合せの制約

Oracle CEPの高可用性オプションを使用するOracle CEPアプリケーションでOracle CQLの問合せを記述するとき、次の制約に従ってください。

- 20.3.3.1項「範囲ベースのウィンドウ」

- 20.3.3.2項「タプル・ベースのウィンドウ」

- 20.3.3.3項「パーティション化されたウィンドウ」

- 20.3.3.4項「スライディング・ウィンドウ」

- 20.3.3.5項「DURATION句および非イベント検出」

- 20.3.3.6項「アプリケーション時間の優先」

Oracle CQLの詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』を参照してください。

20.3.3.1 範囲ベースのウィンドウ

タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)では、すべての範囲ベースのOracle CQLウィンドウは、warm-up-windowの時間よりも短くする必要があります。20.3.2.5項「適切なwarm-up-window時間の選択」を参照してください。

チャネルは、Oracle CQLの問合せが範囲ベースのウィンドウを含む場合にアプリケーション時間を使用する必要があります。20.3.3.6項「アプリケーション時間の優先」を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』の範囲ベースのストリームからリレーションへのウィンドウ演算子に関する項を参照してください。

20.3.3.2 タプル・ベースのウィンドウ

タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)では、すべてのタプル・ベースのウィンドウは、時間によって条件が付けられる必要があります。20.3.2.5項「適切なwarm-up-window時間の選択」を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のタプル・ベースのストリームからリレーションへのウィンドウ演算子に関する項を参照してください。

20.3.3.3 パーティション化されたウィンドウ

パーティション化されたウィンドウを避けることを検討します。 パーティションが再構築できない場合があります。パーティション化されたウィンドウを使用する場合、Oracle CEPサーバーの時間がパーティションを再構築するのに十分な長さとなるようにwarm-up-windowを構成します。20.3.2.5項「適切なwarm-up-window時間の選択」を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のパーティション化されたストリームからリレーションへのウィンドウ演算子に関する項を参照してください。

20.3.3.4 スライディング・ウィンドウ

Oracle CQLの問合せは、マルチサーバー・ドメインに結合する新しいノードが既存ノードと完全に同一の出力イベントを生成することが期待される場合、スライディング・ウィンドウを使用しません。

詳細は、次を参照してください:

- 20.1.1.3項「高可用性マルチサーバー・ドメインの再結合」

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のS[range T1 slide T2]に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のS [rows N1 slide N2]に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のS [partition by A1,..., Ak rows N range T1 slide T2]に関する項

20.3.3.5 DURATION句および非イベント検出

Oracle CQLの問合せが非イベント検出のDURATION句を含む場合、アプリケーション時間を使用する必要があります。

詳細は、次を参照してください:

- 20.3.3.6項「アプリケーション時間の優先」

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のDURATION句に関する項

20.3.3.6 アプリケーション時間の優先

Oracle CEPでは、各イベントはイベントの発生時点で関連付けられます。Oracle CQLは次の2種類を認識します。

- アプリケーション時間: イベントがOracle CQLプロセッサに入る前に、アプリケーションによってOracle CQLの外で各イベントに割り当てられた時間値です。

- システム時間: System.nanoTime()を必ずコールすることによって、Oracle CQLプロセッサに到着時にイベントに関連付けられる時間値です。

アプリケーション時間は、通常、アプリケーションの高可用性のために必要な最善の選択です。アプリケーション時間は、Oracle CEPにイベントが送信される前にイベントに関連付けられるため、アクティブなプライマリおよびセカンダリのインスタンスの全体に渡って整合性があります。一方、システム時間は、システム・クロックが同期されていないことによって、イベントに関連付けられた時間値が各インスタンスで異なる可能性があるためアプリケーションのインスタンスに異なる結果を生成させます。

Oracle CQLの問合せが時間ベースのウィンドウを使用しないアプリケーションにシステム時間を使用できます。イベント・ベースのウィンドウのみ使用するアプリケーションは、受信時間ではなくイベントを受信した順番に依存するためこの場合はシステム時間を使用することができます。

時間ベースのウィンドウを使用するOracle CQLの問合せに関してシステム時間を使用する必要がある場合は、特別なOracle CEPの高可用性入力アダプタを使用する必要があります。このアダプタは、受信イベントを補足し、プライマリおよびセカンダリのインスタンス全体に渡る統一的な時間を割り当てます。

21 高可用性の構成

この章では、フェイルオーバー、リカバリおよびキュー・トリミングの構成、および高可用性アダプタの構成に関する情報など、必要なサービス品質を提供するためにOracle Complex Event Processing (Oracle CEP) アプリケーションの高可用性を構成する方法について説明します。

- 21.1項「高可用性のサービス品質の構成」

- 21.2項「高可用性アダプタの構成」

高可用性オプションに関する詳細は、第20章「高可用性について」を参照してください。

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

EPNアセンブリ・ファイルおよびコンポーネント構成ファイルで、Oracle CEPの高可用性のサービス品質を構成します。このような構成ファイルに関する一般情報は、次を参照してください。

- 1.1.4項「EPNアセンブリ・ファイル」

- 1.1.5項「コンポーネント構成ファイル」

注意:

Oracle CEPの高可用性の構成に変更を加えた後、Oracle CEPアプリケーションを再デプロイする必要があります。24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

この項では次について説明します:

- 21.1.1項「シンプル・フェイルオーバーの構成方法」

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

- 21.1.3項「軽量キュー・トリミングの構成方法」

- 21.1.4項「JMSによる正確なリカバリの構成方法」

スケーラビリティ用Oracle CEPの高可用性アプリケーションの構成に関する詳細は、20.1.4項「高可用性およびスケーラビリティ」を参照してください。

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

スライディング・ウィンドウのサイズをゼロ(0)に設定して、Oracle CEPバッファリング出力アダプタを使用してシンプル・フェイルオーバーを構成します。

この手順は、図21-1で示すEPNの例から始まり、シンプル・フェイルオーバー用に構成するために必要なコンポーネントを加えていきます。例21-1は対応するEPNアセンブリ・ファイルを示し、例21-2は対応するコンポーネント構成ファイルを示します。

このOracle CEPの高可用性のサービス品質に関する詳細は、20.2.1項「シンプル・フェイルオーバー」を参照してください。

図21-1 シンプル・フェイルオーバーのEPN

「図21-1 シンプル・フェイルオーバーのEPN」の説明

例21-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>

例21-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 Complex Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

2. Oracle CEPアプリケーションを作成します。
詳細は、4.2項「Oracle CEPプロジェクトの作成」を参照してください。

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

詳細は、4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」を参照してください。

4. Oracle CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-3に示すように、Oracle CEPの高可用性バッファリング出力アダプタを追加します。

- チャネルhelloworldOutputChannelの後に、providerをha-bufferingに設定したwlevs:adapter要素を追加します。

- idごとにha-bufferingアダプタを参照するように、チャネルhelloworldOutputChannelでwlevs:listener要素を更新します。

- wlevs:listener要素を、HelloWorldBeanクラスを参照するha-bufferingアダプタに追加します。

例21-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)からのチャネル・ダウンストリームを構成し、例21-4で示されるように適切なイベント・プロパティに基づいてアプリケーションのタイムスタンプを構成します。
シンプル・フェイルオーバーの場合、イベントはサーバー間で相関関係を持たないためシステムのタイムスタンプを使用できます。ただし、アプリケーションのタイムスタンプが使用されない場合、若干異なる結果がバッファから出力される可能性があります。

この例では、イベント・プロパティarrivalTimeが使用されます。

wlevs:expressionをこのイベント・プロパティに設定する必要があります。

例21-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 CEPの高可用性ブロードキャスト・バッファリング・アダプタを構成します。
インスタンス・プロパティwindowLengthを、例21-5で示すようにゼロ(0)に設定します。

例21-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>
...

詳細は、21.2.2.1項「バッファリング出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

7. オプションで、コンポーネント構成ファイルを例21-6で示すように、Oracle CEPの高可用性バッファリング出力アダプタを含むように構成します。

例21-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>

詳細は、次を参照してください:

- 21.2.2.2項「バッファリング出力アダプタ・コンポーネント構成ファイルの構成」

8. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。
詳細は、24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

Oracle CEPは、Oracle CEPサーバーのいずれかをプライマリとして自動的に選択します。

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

スライディング・ウィンドウのサイズをゼロ(0)より大きく設定して、Oracle CEPバッファリング出力アダプタを使用してシンプル・フェイルオーバーを構成します。

この手順は、図21-2で示すEPNの例から始まり、バッファリングを使用するシンプル・フェイルオーバー用に構成するために必要なコンポーネントを加えていきます。例21-7は対応するEPNアセンブリ・ファイルを示し、例21-8は対応するコンポーネント構成ファイルを示します。

このOracle CEPの高可用性のサービス品質に関する詳細は、20.2.2項「バッファリングによるシンプル・フェイルオーバー」を参照してください。

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

「図21-2 バッファリングEPNを使用するシンプル・フェイルオーバー」の説明

例21-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>

例21-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 Complex Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

2. Oracle CEPアプリケーションを作成します。
詳細は、4.2項「Oracle CEPプロジェクトの作成」を参照してください。

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

詳細は、4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」を参照してください。

4. Oracle CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-3に示すように、Oracle CEPの高可用性バッファリング出力アダプタを追加します。

- チャネルhelloworldOutputChannelの後に、providerをha-bufferingに設定したwlevs:adapter要素を追加します。

- idごとにha-bufferingアダプタを参照するように、チャネルhelloworldOutputChannelでwlevs:listener要素を更新します。

- wlevs:listener要素を、HelloWorldBeanクラスを参照するha-bufferingアダプタに追加します。

例21-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)からのチャネル・ダウンストリームを構成し、例21-10で示されるように適切なイベント・プロパティに基づいてアプリケーションのタイムスタンプを構成します。
バッファリングを使用するシンプル・フェイルオーバーの場合、イベントはサーバー間で相関関係を持たないため、システムのタイムスタンプを使用できます。ただし、アプリケーションのタイムスタンプが使用されない場合、若干異なる結果がバッファから出力される可能性があります。

この例では、イベント・プロパティarrivalTimeが使用されます。

wlevs:expressionをこのイベント・プロパティに設定する必要があります。

例21-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 CEPの高可用性ブロードキャスト・バッファリング・アダプタを構成します。
インスタンス・プロパティwindowLengthを、例21-11で示すようにゼロ(0)より大きい値に設定します。

例21-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>
...

詳細は、21.2.2.1項「バッファリング出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

7. オプションで、コンポーネント構成ファイルを例21-12で示すように、Oracle CEPの高可用性バッファリング出力アダプタを含むように構成します。

例21-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>

詳細は、次を参照してください:

- 21.2.2.2項「バッファリング出力アダプタ・コンポーネント構成ファイルの構成」

8. アプリケーションが、Oracle CEPの高可用性タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)である場合、バッファリング出力アダプタのwarm-up-window-lengthを構成します。
詳細は、次を参照してください:

- 20.3.2.5項「適切なwarm-up-window時間の選択」

- 21.2.2.2項「バッファリング出力アダプタ・コンポーネント構成ファイルの構成」

9. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。
詳細は、24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

Oracle CEPは、Oracle CEPサーバーのいずれかをプライマリとして自動的に選択します。

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

Oracle CEPの高可用性入力アダプタおよびブロードキャスト出力アダプタを使用して、軽量キュー・トリミングを構成します。

この手順は、図21-3で示すEPNの例から始まり、軽量キュー・トリミング用に構成するために必要なコンポーネントを加えていきます。例21-13は対応するEPNアセンブリ・ファイルを示し、例21-14は対応するコンポーネント構成ファイルを示します。

このOracle CEPの高可用性のサービス品質に関する詳細は、20.2.3項「軽量キュー・トリミング」を参照してください。

図21-3 軽量キュー・トリミングのEPN

「図21-3 軽量キュー・トリミングのEPN」の説明

例21-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>

例21-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 Complex Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

2. Oracle CEPアプリケーションを作成します。
詳細は、4.2項「Oracle CEPプロジェクトの作成」を参照してください。

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

詳細は、4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」を参照してください。

4. Oracle CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-15に示すように、Oracle CEPの高可用性入力アダプタを追加します。

- 通常の入力アダプタhelloworldAdapterの後に、providerをha-inboundに設定したwlevs:adapter要素を追加します。

- wlevs:listener要素を、idごとにha-inboundアダプタを参照する通常の入力アダプタhelloworldAdapterに追加します。

- wlevs:source要素を、idごとにha-inboundアダプタを参照するhelloworldInputChannelに追加します。

例21-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 CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-16に示すように、Oracle CEPの高可用性ブロードキャスト出力アダプタを追加します。

- チャネルhelloworldOutputChannelの後に、providerをha-broadcastに設定したwlevs:adapter要素を追加します。

- idごとにha-broadcastアダプタを参照するように、チャネルhelloworldOutputChannelでwlevs:listener要素を更新します。

- wlevs:listener要素を、HelloWorldBeanクラスを参照するha-broadcastアダプタに追加します。

例21-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 CEPの高可用性入力アダプタを構成します。
次の例の構成を検討します。

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

- 例21-18「高可用性入力アダプタ: タプル・イベント」

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

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

詳細は、21.2.1.1項「高可用性入力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

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

この例は、すべてのデフォルトを使用した高可用性入力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
</wlevs:adapter>
...

例21-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>
...

例21-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>
...

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

この例は、高可用性入力アダプタの構成を示します。ここでは、必須キーは1つ以上のイベント・プロパティ(orderIDおよびaccountIDプロパティ)に基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。複合キーのJavaクラス(com.acme.MyCompoundKeyClass)は必須で、その実装は例21-21で示されます。hashCodeおよびequalsメソッドが必要になります。keyClassを指定するとき、keyPropertiesインスタンス・プロパティは無視されます。Oracle CEPは、複合キーが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>
...

例21-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)からのチャネル・ダウンストリームを構成し、例21-22で示される高可用性入力アダプタのtimeProperty設定に基づいて、アプリケーションのタイムスタンプを構成します。
wlevs:expressionをtimePropertyの値に設定する必要があります。

例21-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 CEPの高可用性ブロードキャスト出力アダプタを構成します。
次の例の構成を検討します。

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

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

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

詳細は、21.2.3.1項「ブロードキャスト出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

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

この例は、すべてのデフォルトを使用したブロードキャスト出力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、キーの値は非モノトニック(継続的に増加しません)かつ全体順序(一意)です。

...
<wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
<wlevs:listener>
<bean class="com.bea.wlevs.example.helloworld.HelloWorldBean"/>
</wlevs:listener>
</wlevs:adapter>
...

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

この例は、ブロードキャスト出力アダプタの構成を示します。ここでは、必須キーはイベント・プロパティ(timePropertyという名前)に基づいており、キーの値はモノトニック(継続的に増加します)かつ全体順序ではありません(一意ではありません)。

...
<wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
<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="total-order" value="false"/>
</wlevs:adapter>
...

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

この例は、ブロードキャスト出力アダプタの構成を示します。ここでは、必須キーは1つ以上のイベント・プロパティ(timePropertyおよびaccountIDプロパティ)に基づいており、キーの値はモノトニック(継続的に増加します)かつ全体順序(一意)です。複合キーのJavaクラス(com.acme.MyCompoundKeyClass)は必須で、その実装は例21-26で示されます。hashCodeおよびequalsメソッドが必要になります。keyClassを指定するとき、keyPropertiesインスタンス・プロパティは無視されます。Oracle CEPは、複合キーがkeyClass内のすべてのゲッター・メソッドに基づくと仮定します。

...
<wlevs:adapter id="myHaSlidingWindowAdapter" provider="ha-buffering" >
<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="total-order" value="true"/>
</wlevs:adapter>
...

例21-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. オプションで、コンポーネント構成ファイルを例21-27で示すように、Oracle CEPの高可用性入力アダプタおよびバッファリング出力アダプタを含むように構成します。

例21-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>

詳細は、次を参照してください:

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

- 21.2.3.2項「ブロードキャスト出力アダプタ・コンポーネント構成ファイルの構成」

10. アプリケーションが、Oracle CEPの高可用性タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)である場合、ブロードキャスト出力アダプタのwarm-up-window-lengthを構成します。
詳細は、次を参照してください:

- 20.3.2.5項「適切なwarm-up-window時間の選択」

- 21.2.3.2項「ブロードキャスト出力アダプタ・コンポーネント構成ファイルの構成」

11. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。
詳細は、24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

Oracle CEPは、Oracle CEPサーバーのいずれかをプライマリとして自動的に選択します。

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

Oracle CEPの高可用性入力アダプタおよび相関出力アダプタを使用して、JMSによる正確なリカバリを構成します。

この手順では、図21-4が示すEPNの例を作成する方法を説明します。例21-28は対応するEPNアセンブリ・ファイルを示し、例21-29は対応するコンポーネント構成ファイルを示します。

このOracle CEPの高可用性のサービス品質に関する詳細は、20.2.4項「JMSによる正確なリカバリ」を参照してください。

注意:

正確なリカバリのためにJMSアダプタによって使用されるJMS宛先は、キューではなくトピックである必要があります。

図21-4 JMSのEPNによる正確なリカバリ

「図21-4 JMSのEPNによる正確なリカバリ」の説明

例21-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>

例21-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 Complex Event Processing管理者ガイド』Oracle Coherenceを使用してデフォルト・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』Oracle Coherenceを使用してカスタム・グループを持つOracle CEPマルチサーバー・ドメインを作成する方法に関する項

2. Oracle CEPアプリケーションを作成します。
詳細は、4.2項「Oracle CEPプロジェクトの作成」を参照してください。

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

詳細は、4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」を参照してください。

4. Oracle CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-30に示すように、Oracle CEPの高可用性入力アダプタを追加します。

- 通常の入力アダプタJMSInboundAdapterの後に、providerをha-inboundに設定したwlevs:adapter要素を追加します。

- wlevs:listener要素を、idごとにha-inboundアダプタを参照する通常の入力アダプタJMSInboundAdapterに追加します。

- wlevs:source要素を、idごとにha-inboundアダプタを参照するチャネルchannel1に追加します。

例21-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 CEPアプリケーションのEPNアセンブリ・ファイルを構成し、例21-31に示すように、Oracle CEPの高可用性相関出力アダプタを追加します。

- チャネルchannel2の後に、providerをha-correlatingに設定したwlevs:adapter要素を追加します。

- idごとにha-correlatingアダプタを参照するように、チャネルchannel2でwlevs:listener要素を更新します。

- wlevs:listener要素を、JMSOutboundAdapterクラスを参照するha-correlatingアダプタに追加します。

例21-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 CEPの高可用性入力アダプタを構成します。
次の例の構成を検討します。

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

- 例21-33「高可用性入力アダプタ: タプル・イベント」

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

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

詳細は、21.2.1.1項「高可用性入力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

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

この例は、すべてのデフォルトを使用した高可用性入力アダプタの構成を示します。必須キーはすべてのイベント・プロパティに基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。

...
<wlevs:adapter id="myHaInputAdapter" provider="ha-inbound" >
<wlevs:instance-property name="timeProperty" value="arrivalTime"/>
</wlevs:adapter>
...

例21-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>
...

例21-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>
...

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

この例は、高可用性入力アダプタの構成を示します。ここでは、必須キーは1つ以上のイベント・プロパティ(orderIDおよびaccountIDプロパティ)に基づいており、高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティは、arrivalTimeという名前のイベント・プロパティです。複合キーのJavaクラス(com.acme.MyCompoundKeyClass)は必須で、その実装は例21-36で示されます。hashCodeおよびequalsメソッドが必要になります。keyClassを指定するとき、keyPropertiesインスタンス・プロパティは無視されます。Oracle CEPは、複合キーが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>
...

例21-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)からのチャネル・ダウンストリームを構成し、例21-37で示される高可用性入力アダプタのtimeProperty設定に基づいて、アプリケーションのタイムスタンプを構成します。
wlevs:expressionをtimePropertyの値に設定する必要があります。

例21-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 CEPの高可用性相関出力アダプタfailOverDelayを構成します。
例21-38は、相関出力アダプタの構成を示し、ここではfailOverDelayが2000ミリ秒になっています。

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

...
<wlevs:adapter id="myHaCorrelatingAdapter" provider="ha-correlating" >
<wlevs:listener ref="JMSOutboundAdapter"/>
<wlevs:instance-property name="failOverDelay" value="2000"/>
</wlevs:adapter>
...

詳細は、21.2.4.1項「相関出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

9. 2番目の通常JMS入力アダプタを作成します。
例21-39は、JMSInboundAdapter2という名前のJMSアダプタを示します。

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

...
<wlevs:adapter id="JMSInboundAdapter2" provider="jms-inbound">
</wlevs:adapter>
...

このJMS入力アダプタは、1番目のJMS入力アダプタ(JMSInboundAdapterなど)と同一となるように構成する必要があります。例21-40は、両方のJMS入力アダプタのコンポーネント構成ファイルを示します。両アダプタは、同一のプロバイダを含む完全に同一の構成になる必要があります。

例21-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入力アダプタを持つこのチャネルを構成する必要があります。

例21-41は、ソースがJMSInboundAdapter2のclusterCorrelatingOutstreamという名前の相関ソースを示します。

例21-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 CEPの高可用性相関出力アダプタを構成します。
例21-38は、相関出力アダプタの構成を示し、ここではcorrelatedSourceがclusterCorrelatingOutstreamになっています。

例21-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>
...

詳細は、21.2.4.1項「相関出力アダプタのEPNアセンブリ・ファイルの構成」を参照してください。

12. アプリケーションが、Oracle CEPの高可用性タイプ1アプリケーション(アプリケーションは既存のセカンダリと完全に同一の出力イベントのシーケンスを生成する必要があります)である場合、相関出力アダプタのwarm-up-window-lengthを構成します。
詳細は、次を参照してください:

- 20.3.2.5項「適切なwarm-up-window時間の選択」

- 21.2.4.2項「相関出力アダプタのコンポーネント構成ファイルの構成」

13. コンポーネント構成ファイルを構成し、例21-43で示すように、インバウンドJMSアダプタおよびアウトバウンドJMSアダプタのsession-transactedを有効にします。

例21-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. オプションで、コンポーネント構成ファイルを例21-27で示すように、Oracle CEPの高可用性入力アダプタおよび相関出力アダプタを含むように構成します。

例21-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>

詳細は、次を参照してください:

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

- 21.2.4.2項「相関出力アダプタのコンポーネント構成ファイルの構成」

15. オプションで、ActiveActiveGroupBeanをEPNに追加し、スケーラビリティを向上します。
詳細は、23.2項「ActiveActiveGroupBeanによるスケーラビリティの構成」を参照してください。

16. ステップ1で作成したデプロイメント・グループにアプリケーションをデプロイします。
詳細は、24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

Oracle CEPは、Oracle CEPサーバーのいずれかをプライマリとして自動的に選択します。

21.2 高可用性アダプタの構成

チャネルやプロセッサなどのEPN内の他のコンポーネントを構成する方法と同様に、EPNアセンブリ・ファイルおよびコンポーネント構成ファイルでOracle CEPの高可用性アダプタを構成します。このような構成ファイルに関する一般情報は、次を参照してください。

- 1.1.4項「EPNアセンブリ・ファイル」

- 1.1.5項「コンポーネント構成ファイル」

注意:

Oracle CEPの高可用性の構成に変更を加えた後、Oracle CEPアプリケーションを再デプロイする必要があります。24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

この項では、Oracle CEPの高可用性アダプタのそれぞれに関する構成可能なオプションを次のような内容で説明します。

- 21.2.1項「高可用性入力アダプタの構成方法」

- 21.2.4項「バッファリング出力アダプタの構成方法」

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

- 21.2.4項「相関出力アダプタの構成方法」

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

Oracle CEPの高可用性ブロードキャスト出力アダプタは、BroadcastInputAdapterによって実装されます。

この項では、Oracle CEPの高可用性入力アダプタの構成方法を次のような内容で説明します。

- 21.2.1.1項「高可用性入力アダプタのEPNアセンブリ・ファイルの構成」

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

詳細は、20.1.3.1項「高可用性入力アダプタ」を参照してください。

21.2.1.1 高可用性入力アダプタのEPNアセンブリ・ファイルの構成

Oracle CEPの高可用性入力アダプタを宣言するためのルート要素は、例21-45で示されるように、provider要素をha-inboundに設定したwlevs:adapterです。例21-45で示されるように、実際の入力アダプタでOracle CEPの高可用性入力アダプタのwlevs:listener要素を指定します。

例21-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>

表21-1は、Oracle CEPの高可用性入力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表21-1 高可用性入力アダプタ用wlevs:adapterの子要素

子要素

説明

wlevs:instance-property

表21-2で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。

表21-2は、Oracle CEPの高可用性入力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表21-2 高可用性入力アダプタのインスタンス・プロパティ

名前

値

timeProperty

高可用性入力アダプタが時間値を割り当てる対象のイベント・プロパティ名を指定します。

これは、例21-45で示すように高可用性入力アダプタの接続対象となる、ダウンストリームEPNコンポーネントのwlevs:application-timestamped要素で使用するプロパティと同一です。

keyProperties

Oracle CEPの高可用性入力アダプタがイベント・インスタンスを識別するために使用する、1つ以上のイベント・プロパティのスペースで区切られたリストを指定します。

1つ以上のプロパティを指定する場合は、keyClassを指定する必要があります。

デフォルト: すべてのイベント・プロパティ。

keyClass

複合キーとして使用されるJavaクラスの完全修飾なクラス名を指定します。

デフォルトでは、keyProperties設定が使用されない場合、keyClass内のすべてのJavaBeanプロパティがkeyPropertiesとなるように仮定されます。

eventType

Oracle CEPの高可用性入力アダプタが実際の入力アダプタから受信するイベントの種類名を指定します。これは、例21-45で示すように高可用性入力アダプタの接続対象となる、ダウンストリームEPNコンポーネントで使用するイベント型と同一です。

タプル・イベントの場合、このプロパティは必須です。

すべての他のJavaクラス・ベースのイベント型の場合、このプロパティはオプションです。

詳細は、1.1.2項「Oracle CEPイベント・タイプ」を参照してください。

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

Oracle CEPの高可用性入力アダプタの構成用ルート要素は、ha-inbound-adapterです。特定のアダプタのnameの子要素は、このアダプタを例21-50で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

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

<ha:ha-inbound-adapter>
<name>myHaInputAdapter</name>
<heartbeat units="millis">1000</heartbeat>
<batch-size>10</batch-size>
</ha:ha-inbound-adapter>

表21-3は、Oracle CEPの高可用性入力アダプタに構成できるha-inbound-adapterの追加子要素を説明します。

表21-3 高可用性入力アダプタ用ha-inbound-adapterの子要素

子要素

説明

heartbeat

unitsの整数の数として時間を進めるためのハートビート・イベントを生成する前に、Oracle CEPの高可用性入力アダプタが待機できる時間の長さを指定します。

units属性の有効な値:

- nanos: 指定されたナノ秒数を待機します。

- millis: 指定されたミリ秒数を待機します。

- secs: 指定された秒数を待機します。

デフォルト: ハートビートが送信されません。

batch-size

プライマリがセカンダリにブロードキャストする各タイミング・メッセージにおいてイベント数を指定します。nの値は、nと{key, time}のペアが各メッセージに送信されるという意味になります。このプロパティをパフォーマンスの調整に使用できます(27.2.3項「高可用性入力アダプタの構成」を参照)。

デフォルト: 1 (バッチを無効化)。

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

Oracle CEPの高可用性バッファリング出力アダプタは、SlidingWindowQueueTrimmingAdapterによって実装されます。

この項では、Oracle CEPの高可用性バッファリング出力アダプタの構成方法を次のような内容で説明します。

- 21.2.2.1項「バッファリング出力アダプタのEPNアセンブリ・ファイルの構成」

- 21.2.2.2項「バッファリング出力アダプタ・コンポーネント構成ファイルの構成」

詳細は、20.1.3.2項「バッファリング出力アダプタ」を参照してください。

21.2.2.1 バッファリング出力アダプタのEPNアセンブリ・ファイルの構成

Oracle CEPの高可用性バッファリング出力アダプタを宣言するためのルート要素は、例21-47で示されるように、provider要素をha-bufferingに設定したwlevs:adapterです。

例21-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>

表21-4は、Oracle CEPの高可用性バッファリング出力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表21-4 バッファリング出力アダプタ用wlevs:adapterの子要素

子要素

説明

wlevs:listener

Oracle CEPの高可用性バッファリング出力アダプタから、通常の出力アダプタのダウンストリームを指定します。

wlevs:instance-property

表21-5で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。

表21-5は、Oracle CEPの高可用性ブロードキャスト出力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表21-5 バッファリング出力アダプタのインスタンス・プロパティ

名前

値

windowLength

スライディング・ウィンドウのサイズを整数のミリ秒で指定します。

デフォルト: 15000。

21.2.2.2 バッファリング出力アダプタ・コンポーネント構成ファイルの構成

Oracle CEPの高可用性バッファリング出力アダプタの構成用ルート要素は、ha-buffering-adapterです。特定のアダプタのnameの子要素は、このアダプタを例21-48で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例21-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 >

表21-6は、Oracle CEPの高可用性バッファリング出力アダプタに構成できるha-buffering-adapterの追加子要素を説明します。

表21-6 バッファリング出力アダプタ用ha-buffering-adapterの子要素

子要素

説明

window-length

スライディング・ウィンドウのサイズを整数のミリ秒で指定します。

デフォルト: 15000。

warm-up-window

以前に失敗したセカンダリの再起動後または新しいセカンダリがunitsの整数の数として追加された後、アプリケーションが状態を再構築するのにかかる時間の長さを指定します。

units属性の有効な値:

- seconds: 指定された秒数を待機します。

- minutes: 指定された分数を待機します。

デフォルト: unitsはeventsです。

詳細は、20.3.2.5項「適切なwarm-up-window時間の選択」を参照してください。

21.2.3 ブロードキャスト出力アダプタの構成方法

Oracle CEPの高可用性ブロードキャスト出力アダプタは、クラスGroupBroadcastQueueTrimmingAdapterによって実装されます。

この項では、Oracle CEPの高可用性ブロードキャスト出力アダプタの構成方法を次のような内容で説明します。

- 21.2.3.1項「ブロードキャスト出力アダプタのEPNアセンブリ・ファイルの構成」

- 21.2.3.2項「ブロードキャスト出力アダプタ・コンポーネント構成ファイルの構成」

詳細は、20.1.3.3項「ブロードキャスト出力アダプタ」を参照してください。

21.2.3.1 ブロードキャスト出力アダプタのEPNアセンブリ・ファイルの構成

Oracle CEPの高可用性ブロードキャスト出力アダプタを宣言するためのルート要素は、例21-49で示されるように、provider要素をha-broadcastに設定したwlevs:adapterです。

例21-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>

表21-7は、Oracle CEPの高可用性ブロードキャスト出力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表21-7 ブロードキャスト出力アダプタ用wlevs:adapterの子要素

子要素

説明

wlevs:listener

Oracle CEPの高可用性ブロードキャスト出力アダプタから、通常の出力アダプタのダウンストリームを指定します。

wlevs:instance-property

表21-8で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。

表21-8は、Oracle CEPの高可用性ブロードキャスト出力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表21-8 ブロードキャスト出力アダプタのインスタンス・プロパティ

名前

値

keyProperties

Oracle CEPの高可用性ブロードキャスト出力アダプタがイベント・インスタンスを識別するために使用する、1つ以上のイベント・プロパティのスペースで区切られたリストを指定します。

1つ以上のプロパティを指定する場合は、keyClassを指定する必要があります。

デフォルト: すべてのイベント・プロパティ。

keyClass

複合キーとして使用されるJavaクラスの完全修飾なクラス名を指定します。

デフォルトでは、keyProperties設定が使用されない場合、keyClass内のすべてのJavaBeanプロパティがkeyPropertiesとなるように仮定されます。

複合キーは、monotonicおよびtotal-orderになることがあります。

monotonic

キーの値が(時間値のように)常に増加するかどうかを指定します。

有効な値:

- true: キーは常に増加します。

- false: キーは常に増加しません。

デフォルト: false。

total-order

イベント・キーが一意であるかどうか指定します。インスタンス・プロパティmonotonicがtrueに設定されている場合のみ適用できます。

有効な値:

- true: イベント・キーは一意です。

- false: イベント・キーは一意ではありません。

デフォルト: true。

21.2.3.2 ブロードキャスト出力アダプタのコンポーネント構成ファイルの構成

Oracle CEPの高可用性ブロードキャスト出力アダプタの構成用ルート要素は、ha-broadcast-adapterです。特定のアダプタのnameの子要素は、このアダプタを例21-50で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例21-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>

表21-9は、Oracle CEPの高可用性ブロードキャスト出力アダプタに構成できるha-broadcast-adapterの追加子要素を説明します。

表21-9 ブロードキャスト出力アダプタ用ha-broadcast-adapterの子要素

子要素

説明

trimming-interval

トリミング・メッセージがunitsの整数の数としてブロードキャストされる間隔を指定します。このプロパティをパフォーマンスの調整に使用できます(27.2.4項「ブロードキャスト出力アダプタの構成」を参照)。

units属性の有効な値:

- events: 指定されたミリ秒数の後に、トリミング・メッセージをブロードキャストします。

- millis: 指定されたイベント数の処理後に、トリミング・メッセージをブロードキャストします。

デフォルト: unitsはeventsです。

warm-up-window

以前に失敗したセカンダリの再起動後または新しいセカンダリがunitsの整数の数として追加された後、アプリケーションが状態を再構築するのにかかる時間の長さを指定します。

units属性の有効な値:

- seconds: 指定された秒数を待機します。

- minutes: 指定された分数を待機します。

デフォルト: unitsはeventsです。

詳細は、20.3.2.5項「適切なwarm-up-window時間の選択」を参照してください。

21.2.4 相関出力アダプタの構成方法

Oracle CEPの高可用性相関出力アダプタは、クラスCorrelatedQueueTrimmingAdapterによって実装されます。

この項では、Oracle CEPの高可用性相関出力アダプタの構成方法を次のような内容で説明します。

- 21.2.4.1項「相関出力アダプタのEPNアセンブリ・ファイルの構成」

- 21.2.4.2項「相関出力アダプタのコンポーネント構成ファイルの構成」

詳細は、20.1.3.4項「相関出力アダプタ」を参照してください。

21.2.4.1 相関出力アダプタのEPNアセンブリ・ファイルの構成

Oracle CEPの高可用性相関出力アダプタを宣言するためのルート要素は、例21-51で示されるように、provider要素をha-correlatingに設定したwlevs:adapterです。

例21-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>

表21-10は、Oracle CEPの高可用性相関出力アダプタに構成できるwlevs:adapterの追加子要素を説明します。

表21-10 相関出力アダプタ用wlevs:adapterの子要素

子要素

説明

wlevs:listener

Oracle CEPの高可用性バッファリング出力アダプタから、通常の出力アダプタのダウンストリームを指定します。

wlevs:instance-property

表21-11で説明するように、instance-property要素のnameおよびvalue属性を1つ以上指定します。

表21-11は、Oracle CEPの高可用性相関出力アダプタがサポートするインスタンス・プロパティを一覧表示しています。

表21-11 相関出力アダプタのインスタンス・プロパティ

名前

値

correlatedSource

相関対象のイベント・ソースを指定します。このソースから参照されるイベントは、トリミング・キューからパージされます。フェイルオーバーときにキュー内に留まるイベントは再生されます。

failOverDelay

フェイルオーバー後に相関関係が再起動される速さを決定するために使用される、遅延タイムアウトをミリ秒単位で指定します。

デフォルト: 0ミリ秒。

21.2.4.2 相関出力アダプタのコンポーネント構成ファイルの構成

Oracle CEPの高可用性相関出力アダプタの構成用ルート要素は、ha-correlating-adapterです。特定のアダプタのnameの子要素は、このアダプタを例21-52で示すように宣言するEPNアセンブリ・ファイルにおいて対応するwlevs:adapter要素のid属性に一致する必要があります。

例21-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>

表21-12は、Oracle CEPの高可用性相関出力アダプタに構成できるha-broadcast-adapterの追加子要素を説明します。

表21-12 相関出力アダプタ用ha-correlating-adapterの子要素

子要素

説明

fail-over-delay

フェイルオーバー後に相関関係が再起動される速さを決定するために使用される、遅延タイムアウトをミリ秒単位で指定します。

デフォルト: 0ミリ秒。

warm-up-window

以前に失敗したセカンダリの再起動後または新しいセカンダリがunitsの整数の数として追加された後、アプリケーションが状態を再構築するのにかかる時間の長さを指定します。

units属性の有効な値:

- seconds: 指定された秒数を待機します。

- minutes: 指定された分数を待機します。

デフォルト: unitsはeventsです。

詳細は、20.3.2.5項「適切なwarm-up-window時間の選択」を参照してください。

第6部

スケーラビリティのためにアプリケーションの開発

第6部の章の内容は次のとおりです。

- 第22章「スケーラビリティについて」

- 第23章「スケーラビリティの構成」

22 スケーラビリティについて

この章では、増加するイベント・ロードに従ってOracle Complex Event Processing (Oracle CEP)アプリケーションをスケールするために使用できるコンポーネントおよび設計パターンについて説明します。

- 22.1項「スケーラビリティ・オプション」

- 22.2項「スケーラビリティ・コンポーネント」

特定のスケーラビリティ・オプションを実行する方法の詳細は、第23章「スケーラビリティの構成」を参照してください。

22.1 スケーラビリティ・オプション

Oracle CEPは、増加するイベント・ロードに従ってアプリケーションをスケールするためのオプションを提供します。

一般的に、イベントの到着時またはイベント処理ネットワーク(EPN)内で、またはその両方で入力イベント・ストリームをパーティション化し、イベントの並列処理ができるようにアプリケーションを設計できます。

イベント処理順序のできるだけ早い段階でスケーラビリティと並列処理を実行する必要があります。たとえば、通常、アプリケーションが依存する低ボリュームイベント、高価値のイベントを抽出するために、高ボリュームと低ボリュームのイベントを並列処理します。

Oracle CEPは、22.2項「スケーラビリティ・コンポーネント」の説明に従って使用できる、様々なスケーラビリティ・コンポーネントを提供します。

22.1.1 スケーラビリティと高可用性

スケーラビリティは多くの場合、複数のサーバーへアプリケーションのデプロイが含まれているため、スケーラビリティのためにOracle CEPアプリケーションを設計するときに、高可用性のオプションも検討すると有利です。

入力ストリームのパーティション化と並列処理は、イベント順序の保存とマルチスレッドの使用の管理などで、アプリケーションの設計を制限します。

高可用性オプションの詳細は、次の項を参照してください。

- 20.1項「高可用性アーキテクチャ」

- 20.3項「高可用性用Oracle CEPアプリケーションの設計」

22.2 スケーラビリティ・コンポーネント

Oracle CEPでは、Oracle CEPアプリケーションのスケーラビリティを向上させるために使用する次のコンポーネントを提供します。

- 22.2.1項「EventPartitioner」

- 22.2.2項「ActiveActiveGroupBean」

22.2.1 EventPartitioner

A com.bea.wlevs.channel.EventPartitionerは、図22-1に示すように、出力イベント・シンク間でチャネルのイベントパーティション化するメカニズムを提供します。

図22-1 イベント・パーティショナEPN

「図22-1 イベント・パーティショナEPN」の説明

この項では次について説明します:

- 22.2.1.1項「EventPartitionerの実装」

- 22.2.1.2項「EventPartitioner初期化」

- 22.2.1.3項「EventPartitionerスレッド」

- 22.2.1.4項「EventPartitioner制限事項」

詳細は、23.1項「チャネルEventPartitionerでのスケーラビリティの構成」を参照してください。

22.2.1.1 EventPartitionerの実装

Oracle CEPでは、チャネルで使用するよう構成可能な、デフォルトのイベント・プロパティ・ベースのEventPartitionerを提供しています。

デフォルトのEventPartitionerを使用するようチャネルを構成する場合、チャネルがイベントをパーティション化するイベント・プロパティ名を指定します。デフォルトのEventPartitionerでは、イベント・プロパティ値のObject.hashCode()を内部ハッシュ関数への入力として使用し、ハッシュ・キーを計算します。hashkey % number-of-listenersはイベントを受信するリスナーの計算に使用されます。このアルゴリズムは、新規アイテムを配置するバケットを計算する、HashMapで使用するものと同じアルゴリズムに基づいています。実際には、同じイベント・プロパティ値のイベントは、同じリスナーに送信されます。

注意:

デフォルトのイベント・プロパティ・ベースのEventPartitionerでは、ラウンド・ロビン方式でディスパッチされません。

オプションで、チャネルのリスナーへのイベントのディスパッチ方法をカスタマイズするのではなく、独自のイベント・パーティショナ・インスタンスを作成し、チャネルで使用するよう構成することができます。

詳細は、次を参照してください:

- 23.1.1項「デフォルト・チャネルEventPartitionerでのスケーラビリティの構成方法」

- 23.1.2項「カスタム・チャネルEventPartitionerでのスケーラビリティの構成方法」

22.2.1.2 EventPartitioner初期化

デフォルトでは、Oracle CEPサーバーは、デプロイメントの際に各イベント・パーティショナを初期化し、EventPartitionerメソッドactivateConfigurationが ActivatableBean.afterConfigurationActiveの前、およびEventPartitionerクラスのpartitionメソッドの起動前に起動することによる再デプロイメントの際にはイベント・パーティショナを再初期化します。

22.2.1.3 EventPartitionerスレッド

表22-1では、イベント・パーティショナ・チャネルで使用可能なスレッド・オプションが一覧表示されています。

表22-1 イベント・パーティショナ・チャネルのスレッド・オプション

スレッド割当先

説明

使用するタイミング

チャネル

- チャネルmax-threadsはリスナー数に設定されます。

外部メッセージ形式の内部イベント形式への変換が容易である場合、通常は適用されます。

マルチスレッドをチャネル粒度で制御します。ボリュームが異なるため、一部のチャネルでは他のチャネルより必要なスレッド数が多くなる場合があります。

アダプタ

- チャネルmax-threadsは0に設定されます。

- パーティション・リスナーごとに1スレッド以上のマルチスレッド・アダプタを導入します。

外部メッセージ形式の内部イベント形式への変換が難しい場合、通常は推奨されます。

この手法は、アダプタがマルチスレッドであり、インバウンド・イベント・レートが高く、複数スレッドをインバウンド処理のスケールに使用できない場合にアダプタがボトルネックになる場合に最適です。

注意:

どちらの手法でも、イベント順序は保証されません。複数スレッドは随時使用されます。

22.2.1.4 EventPartitioner制限事項

イベント・パーティショナを使用するようにチャネルを構成する場合、次の制限事項を考慮します。

- イベント・パーティショナでチャネルを構成した場合、バッチ処理はサポートされていません。
詳細は、9.1.6項「バッチ処理チャネル」を参照してください。

22.2.2 ActiveActiveGroupBean

com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanを使用して、ActiveActiveGroupBeanで作成された通知グループによって、Oracle CEPアプリケーションの受信JMSストリームをパーティション化できます。

例22-1で示すように、ActiveActiveGroupBeanをEPNアセンブリ・ファイルに追加します。

例22-1 ActiveActiveGroupBeanのbean要素

<bean id="clusterAdapter" class="com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean">
</bean>

デフォルトでは、ActiveActiveGroupBeanは次の名前の通知グループを作成します。

ActiveActiveGroupBean_X

Xは文字列です。

実行時に、ActiveActiveGroupBeanは、Oracle CEPサーバーに定義された既存のグループをスキャンし、次のデフォルトのパターン一致を適用します。

ActiveActiveGroupBean_\\w+

一致が見つかったら、その名前の通知グループを作成します。

オプションで、23.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」の説明に従って、独自のクラスタ・グループ・パターン一致を定義できます。

この項では次について説明します:

- 22.2.2.1項「高可用性なしのActiveActiveGroupBeanを使用したOracle CEPアプリケーションのスケーラビリティ」

- 22.2.2.2項「高可用性のあるActiveActiveGroupBeanを使用したOracle CEPアプリケーションのスケーラビリティ」

詳細は、次を参照してください:

- 20.1.2項「デプロイメント・グループおよび通知グループ」

- 23.2項「ActiveActiveGroupBeanによるスケーラビリティの構成」

22.2.2.1 高可用性なしのActiveActiveGroupBeanを使用したOracle CEPアプリケーションのスケーラビリティ

ActiveActiveGroupBeanを使用して、高可用性に対して構成されていないOracle CEPアプリケーション内のセレクタによって、受信JMSイベント・ストリームをパーティション化できます。

図22-2で示すように、マルチサーバー・ドメインを考慮してください。

図22-2 高可用性なしのOracle CEP ActiveActiveGroupBean

「図22-2 高可用性なしのOracle CEP ActiveActiveGroupBean」の説明

このスケーラビリティ・シナリオでは、各サーバー(ホスト1のActiveActiveGroupBean_group1、ホスト2のActiveActiveGroupBean_group2など)のOracle CEPサーバーconfig.xmlでクラスタ・グループを定義し、Oracle CEPアプリケーションにActiveActiveGroupBeanのインスタンスを追加して、これらのクラスタ・グループに基づく通知グループを定義します。

各通知グループは、異なるJMSセレクタにバインドされています。Oracle CEPアプリケーションにあるコンポーネント構成ファイルの構成は、例22-2で示すように、jms-adapterの構成と同じです。

例22-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 CEPサーバーにある各Oracle CEPアプリケーション・インスタンスのActiveActiveGroupBeanインスタンスは、ActiveActiveGroupBean_クラスタ・グループを検索し、それに基づいて通信グループを作成します。その後、Oracle CEPアプリケーション自体は、その通知グループと一致するgroup-idに対応するmessage-selectorに構成します。これにより、App1の各インスタンスが同時にメッセージの合計数のサブセットを処理するようにJMSトピックはパーティション化されます。

注意:

App1の各インスタンスでは、22.2.1項「EventPartitioner」の説明のとおり、イベント・パーティショナ・チャネルを構成して、並列処理をさらに増加することができます。

詳細は、23.2.1項「Oracle CEP高可用性なしのJMSアプリケーションでスケーラビリティを構成する方法」を参照してください。

22.2.2.2 高可用性のあるActiveActiveGroupBeanを使用したOracle CEPアプリケーションのスケーラビリティ

セレクタによる受信JMSイベント・ストリームのパーティション化に加えて、ActiveActiveGroupBeanを使用して、単一の高可用性のある単位として2つ以上のOracle CEPサーバーを構成できます。

図22-3で示すように、Oracle CEP高可用性アプリケーションがデプロイされたマルチサーバー・ドメインを考慮してください。

図22-3 高可用性のあるOracle CEP ActiveActiveGroupBean

「図22-3 高可用性のあるOracle CEP ActiveActiveGroupBean」の説明

このシナリオでは、ホスト1およびホスト2に同じActiveActiveGroupBean_クラスタ・グループ(ActiveActiveGroupBean_group1)を作成し、ホスト3およびホスト4に同じActiveActiveGroupBean_クラスタ・グループ(ActiveActiveGroupBean_group2)を作成します。

実行時に、各Oracle CEPサーバーにある各Oracle CEPアプリケーション・インスタンスのActiveActiveGroupBeanインスタンスは、ActiveActiveGroupBean_クラスタ・グループを検索し、それに基づいて通信グループを作成します。ホスト1およびホスト2両方が1つの通知グループ(ActiveActiveGroupBean_group1)に属し、ホスト3およびホスト4両方が別の通信グループ(ActiveActiveGroupBean_group2)に属します。

各Oracle CEPアプリケーション自体は、通知グループと一致するgroup-idに対応するmessage-selectorに構成します。これにより、App1の各インスタンスが同時にメッセージの合計数のサブセットを処理するようにJMSトピックはパーティション化されます。

2つ以上のOracle CEPサーバーが同じ通知グループに属する場合、ActiveActiveGroupBeanによって、各通信グループのプライマリ・サーバー-のみがイベントを出力するようにします。特定の通知グループ内でプライマリ・サーバーが停止した場合、Oracle CEP高可用性フェイルオーバーが発生し、その通知グループのいずれかのセカンダリ・サーバーが新しいプライマリ・サーバーとして宣言され、構成したOracle CEP高可用性のサービス品質に応じてイベントの出力を再開します。

注意:

App1の各インスタンスでは、22.2.1項「EventPartitioner」の説明のとおり、イベント・パーティショナ・チャネルを構成して、並列処理をさらに増加することができます。

詳細は、23.2.2項「Oracle CEP高可用性のあるJMSアプリケーションでスケーラビリティを構成する方法」を参照してください。

23 スケーラビリティの構成

この章では、イベントのパーティション化の設定に関する情報など、Oracle Complex Event Processing (Oracle CEP)アプリケーションのスケーラビリティの構成方法について説明します。

- 23.1項「チャネルEventPartitionerでのスケーラビリティの構成」

- 23.2項「ActiveActiveGroupBeanによるスケーラビリティの構成」

スケーラビリティ・オプションの詳細は、第22章「スケーラビリティについて」を参照してください。

23.1 チャネルEventPartitionerでのスケーラビリティの構成

この項では、図23-1に示すように、Oracle CEPイベント・パーティショナでチャネルを構成する次の方法について説明します。

- 23.1.1項「デフォルト・チャネルEventPartitionerでのスケーラビリティの構成方法」

- 23.1.2項「カスタム・チャネルEventPartitionerでのスケーラビリティの構成方法」

図23-1 EventPartitioner EPN

「図23-1 EventPartitioner EPN」の説明

この例では、inboundアダプタから、例23-1で定義されているタイプPriceEventのイベントが送信されると想定します。

例23-1 イベント・タイプ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>

詳細は、22.2.1項「EventPartitioner」を参照してください。

23.1.1 デフォルト・チャネルEventPartitionerでのスケーラビリティの構成方法

デフォルト・イベントのプロパティ・ベースのイベント・パーティショナを使用するようチャネルを構成できます。着信イベントが到着するたびに、チャネルはリスナーを選択し、各リスナーに各イベントをブロードキャストするかわりに、そのリスナーにイベントをディスパッチします。

オプションで、独自のEventPartitionerクラスを実装し、23.1.2項「カスタム・チャネルEventPartitionerでのスケーラビリティの構成方法」に示すとおり、チャネルのリスナーへのイベントのディスパッチ方法をカスタマイズできます。

デフォルト・チャネルEventPartitionerでスケーラビリティを構成する手順:

1. EPNにチャネルを追加します。
図23-1では、チャネルはEventPartitionerChannelです。

詳細は、第9章「チャネルの構成」を参照してください。

2. チャネルをアップストリーム・アダプタに接続します。
図23-1では、アップストリーム・アダプタはinboundです。

詳細は、6.4.2項「ノードの接続」を参照してください。

3. チャネルを複数のリスナーに接続します。
図23-1では、チャネルはOracle CQLプロセッサprocessor1、processor2およびprocessor3に接続されます。

詳細は、6.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>
...

詳細は、22.2.1.1項「EventPartitionerの実装」を参照してください。

5. 22.2.1.3項「EventPartitionerスレッド」の説明のとおり、Oracle CEPによるスレッドの割当方法を決定します。

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 CEPサーバー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. アプリケーションをアセンブルし、デプロイします。
詳細は、第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」を参照してください。

実行時は、チャネルではデフォルト・イベント・プロパティ・ベースのEventPartitionerが使用され、それぞれの着信イベントのリスナーへのディスパッチ方法が決定されます。

23.1.2 カスタム・チャネルEventPartitionerでのスケーラビリティの構成方法

独自のEventPartitionerクラスを実装すると、チャネルによるリスナーへのイベントのディスパッチ方法をカスタマイズできます。

23.1.1項「デフォルト・チャネルEventPartitionerでのスケーラビリティの構成方法」の説明のとおり、オプションで、デフォルトのイベント・プロパティ・ベースのEventPartitionerを使用できます。

カスタム・チャネルEventPartitionerでスケーラビリティを構成する手順:

1. Oracle CEP IDE for Eclipseを使用して、Oracle CEPプロジェクトを開きます。
詳細は、4.2項「Oracle CEPプロジェクトの作成」を参照してください。

2. MANIFEST.MFを編集し、パッケージcom.bea.wlevs.channelをインポートします。
詳細は、4.7.5項「パッケージのインポート方法」を参照してください。

3. プロジェクトのsrcフォルダを右クリックし、「新規」>「クラス」を選択します。
図23-2に示すように、「新規Javaクラス」ダイアログが表示されます。

図23-2 「新規Javaクラス」ダイアログ

「図23-2 「新規Javaクラス」ダイアログ」の説明

4. 表23-1に示すように、「新規Javaクラス」ダイアログを構成します。

表23-1 EventPartitionerの「新規Javaクラス」オプション

オプション

説明

Package

クラスのパッケージ名を入力します。

Name

クラス名を入力します。

Interfaces

「追加」をクリックして実装されているインタフェースの選択ダイアログでcom.bea.wlevs.channel.EventPartitionerインタフェースを特定し、これを「一致するアイテム」リストで選択して「OK」をクリックします。

5. 「終了」をクリックします。
例23-2に示すように、新規EventPartitionerクラスが作成されます。

例23-2 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. 例23-3に示すように、EventPartitionerの実装を完了します。

例23-3 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 CEPサーバーが起動するコールバックです。

このEventPartitionerをチャネルと関連付ける場合、チャネルがイベントを受信するたびに、EventPartitionerクラスのpartitionメソッドが起動されます。

partitionメソッドは、チャネルによるイベントのディスパッチ先であるリスナーの索引を返す必要があります。索引は0からnumberOfPartitions - 1の間のintである必要があります。

7. EPNにチャネルを追加します。
図23-1では、チャネルはEventPartitionerChannelです。

詳細は、第9章「チャネルの構成」を参照してください。

8. チャネルをアップストリーム・アダプタに接続します。
図23-1では、アップストリーム・アダプタはinboundです。

詳細は、6.4.2項「ノードの接続」を参照してください。

9. チャネルを複数のリスナーに接続します。
図23-1では、チャネルはOracle CQLプロセッサprocessor1、processor2およびprocessor3に接続されます。

チャネルでロード・バランシングを実行する場合、各リスナーは同じである必要があります。

詳細は、次を参照してください:

- 6.4.2項「ノードの接続」

10. eventPartitionerのインスタンス・プロパティをチャネル要素に追加するようにEPNアセンブリ・ファイルを編集します。
このinstance-propertyのvalueはチャネルがイベントをパーティション化するためのEventPartitionerインスタンスの完全修飾クラス名です。

このクラスはOracle CEPアプリケーション・クラス・パスにある必要があります。

この例では、チャネルは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. 22.2.1.3項「EventPartitionerスレッド」の説明のとおり、Oracle CEPによるスレッドの割当方法を決定します。

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 CEPサーバー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. アプリケーションをアセンブルし、デプロイします。
詳細は、第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」を参照してください。

実行時は、チャネルではEventPartitionerが使用され、それぞれの着信イベントのリスナーへのディスパッチ方法が決定されます。

23.2 ActiveActiveGroupBeanでのスケーラビリティの構成

この項では、セレクタで受信JMSイベント・ストリームをパーティションするためにActiveActiveGroupBeanを使用するようにOracle CEPアプリケーションを構成する方法について説明します。次の項が含まれます。

- 23.2.1項「Oracle CEP高可用性なしのJMSアプリケーションでスケーラビリティを構成する方法」

- 23.2.2項「Oracle CEP高可用性のあるJMSアプリケーションでスケーラビリティを構成する方法」

- 23.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」

詳細は、22.2.2項「ActiveActiveGroupBean」を参照してください。

23.2.1 Oracle CEP高可用性なしのJMSアプリケーションでスケーラビリティを構成する方法

Oracle CEP高可用性を使用しないアプリケーションの場合、マルチサーバー・ドメインでセレクタを使用して、着信JMSイベント・ストリームをパーティション化するためにActiveActiveGroupBeanを使用できます。

Oracle CEP高可用性アプリケーションでActiveActiveGroupBeanを使用する方法は、23.2.2項「Oracle CEP高可用性を使用してJMSアプリケーションでスケーラビリティを構成する方法」を参照してください。

詳細は、22.2.2.1項「高可用性なしのActiveActiveGroupBeanを使用したOracle CEPアプリケーションのスケーラビリティ」を参照してください。

Oracle CEP高可用性なしのJMSアプリケーションのスケーラビリティを構成するために次の手順を実行します。

1. マルチサーバー・ドメインを作成します。
詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のマルチサーバー・ドメインの概要に関する項を参照してください。

この例では、デプロイメント・グループの名前は、MyDeploymentGroupです。

2. 適切なActiveActiveGroupBean通知グループをcluster要素のgroups子要素に追加するように各Oracle CEPサーバーのOracle CEPサーバー構成ファイルを構成します。
Oracle CEPサーバー構成ファイルのconfig.xmlは、DOMAIN_DIR/servername/configディレクトリにあります。DOMAIN_DIRは、メイン・ドメイン・ディレクトリを示し、servernameは、特定のサーバー・インスタンスを示します。

たとえば、表23-3では、ocep-server-1、ocep-server-2、ocep-server-3およびocep-server-4のOracle CEPサーバーのcluster要素を示します。デプロイメント・グループはMyDeploymentGroupであり、通知グループはデフォルトのActiveActiveGroupBean通知グループ・ネーミングを使用して定義します。

オプションで、23.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」"に示すグループのネーミング・ルールを指定することができます。

表23-2 Oracle CEPサーバー構成ファイル・グループ要素構成

パーティション

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 CEPアプリケーションを作成します。

4. EPNアセンブリ・ファイルを構成し、例23-8に示すようにActiveActiveGroupBean要素を追加します。

例23-4 ActiveActiveGroupBeanのbean要素

<bean id="clusterAdapter" class="com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean">
</bean>

5. JMSインバウンド・アダプタのjms-adapter要素にパラメータ化されたmessage-selectorを定義します。
JMSインバウンド・アダプタのjms-adapter要素にgroup-binding子要素を追加するために、コンポーネント構成ファイルを編集します。

例23-10示すように、各可能JMSメッセージ・セレクタ値に対して1つのgroup-binding要素を追加します。

例23-5 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 CEPサーバーにデプロイすると、CONDITIONパラメータがacctid > 400と定義され、acctidプロパティが400以上であるイベントがアプリケーションにより処理されます。

注意:

各インバウンドJMSアダプタは異なるトピックをリスニングする必要があります。

詳細は、第7章「JMSアダプタの構成」を参照してください。

6. マルチサーバー・ドメインのデプロイメント・グループにアプリケーションをデプロイします。
詳細は、第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」を参照してください。

実行時に、各Oracle CEPサーバーがActiveActiveGroupBean通知グループに対するmessage-selectorにアプリケーションのインスタンスを構成します。これにより、アプリケーションの各インスタンスがメッセージ総数のサブセットを並行して処理するようにJMSトピックがパーティションされます。

23.2.2 Oracle CEP高可用性のあるJMSアプリケーションでスケーラビリティを構成する方法

ActiveActiveGroupBeanを使用して、Oracle CEP高可用性のマルチサーバー・ドメインで着信JMSイベント・ストリームをパーティション化することができます。

この手順では、図23-3に示すサンプルEPN、例23-6に示す対応するEPNアセンブリ・ファイルおよび例23-7に示す対応するコンポーネント構成ファイルを含む21.1.4項「JMSによる正確なリカバリの構成方法」のサンプル・アプリケーションを使用します。

図23-3 JMSのEPNによる正確なリカバリ

「図23-3 JMSによる正確なリカバリ」の説明

例23-6 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>

例23-7 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>

図23-4に示すように、この手順実行の結果、Oracle CEP高可用性構成が作成されます。

図23-4 高可用性のあるOracle CEP ActiveActiveGroupBean

「図23-4 高可用性のあるOracle CEP ActiveActiveGroupBean」の説明

詳細は、22.2.2.2項「高可用性のあるActiveActiveGroupBeanを使用したOracle CEPアプリケーションのスケーラビリティ」を参照してください。

Oracle CEP高可用性のあるJMSアプリケーションのスケーラビリティを構成するために次の手順を実行します。

1. マルチサーバー・ドメインを作成します。
詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のマルチサーバー・ドメインの概要に関する項を参照してください。

この例では、デプロイメント・グループの名前は、MyDeploymentGroupです。

2. 適切なActiveActiveGroupBean通知グループをcluster要素のgroups子要素に追加するように各Oracle CEPサーバーのOracle CEPサーバー構成ファイルを構成します。
Oracle CEPサーバー構成ファイルのconfig.xmlは、DOMAIN_DIR/servername/configディレクトリにあります。DOMAIN_DIRは、メイン・ドメイン・ディレクトリを示し、servernameは、特定のサーバー・インスタンスを示します。

たとえば、表23-3では、ocep-server-1、ocep-server-2、ocep-server-3およびocep-server-4のOracle CEPサーバーのcluster要素を示します。デプロイメント・グループはMyDeploymentGroupであり、通知グループはデフォルトのActiveActiveGroupBean通知グループ・ネーミングを使用して定義します。

ocep-server-1とocep-server-2は同一の通知グループ名前(ActiveActiveGroupBean_group1)を使用し、ocep-server-3とocep-server-4は同一の通知グループ名前(ActiveActiveGroupBean_group2)を使用します。

オプションで、23.2.3項「ActiveActiveGroupBeanグループ・パターン一致の構成方法」"に示すグループのネーミング・ルールを指定することができます。

表23-3 Oracle CEPサーバー構成ファイル・グループ要素構成

パーティション

クラスタ要素

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 CEP高可用性アプリケーションを作成します。
詳細は、第21章「高可用性の構成」を参照してください。

4. EPNアセンブリ・ファイルを構成し、例23-8に示すようにActiveActiveGroupBean要素を追加します。

例23-8 ActiveActiveGroupBeanのbean要素

<bean id="clusterAdapter" class="com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean">
</bean>

5. コンポーネント構成ファイルを編集し、例23-9に示すように、インバウンドJMSアダプタ用のjms-adapter要素を構成します。

- 各インバウンドJMSアダプタは異なるトピックをリスニングする必要があります。

- session-transactedをtrueに設定します。

例23-9 インバウンド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>

詳細は、第7章「JMSアダプタの構成」を参照してください。

6. 各JMSインバウンド・アダプタのjms-adapter要素にパラメータ化されたmessage-selectorを定義します。
JMSインバウンド・アダプタのjms-adapter要素にgroup-binding子要素を追加するために、コンポーネント構成ファイルを編集します。

例23-10示すように、各可能JMS message-selector値に対して1つのgroup-binding要素を追加します。

例23-10 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 CEPサーバーにデプロイすると、CONDITIONパラメータがacctid <= 1000と定義され、acctidプロパティが1000以下であるイベントがアプリケーションにより処理されます。同様に、ActiveActiveGroupBean_group2を含むcluster要素、groups子要素を持つアプリケーションをOracle CEPサーバーにデプロイすると、CONDITIONパラメータがacctid > 1000と定義され、acctidプロパティが1000以上であるイベントがアプリケーションにより処理されます。

7. コンポーネント構成ファイルを編集し、例23-11に示すように、アウトバウンドJMSアダプタ用のjms-adapter要素を構成します。

- 対応するインバウンド・アダプタ(この例では、JMSInboundAdapter2: ./Topic2)と同一トピックでアウトバウンドJMSアダプタを構成します。

- session-transactedをtrueに設定します。

例23-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>
<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>

詳細は、第7章「JMSアダプタの構成」を参照してください。

8. マルチサーバー・ドメインのデプロイメント・グループにアプリケーションをデプロイします。
詳細は、第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」を参照してください。

実行時に、各Oracle CEPサーバーがActiveActiveGroupBean通知グループに対するmessage-selectorにアプリケーションのインスタンスを構成します。これにより、アプリケーションの各インスタンスがメッセージ総数のサブセットを並行して処理するようにJMSトピックがパーティションされます。

ActiveActiveGroupBeanグループの有効のOracle CEPサーバーが停止すると、ActiveActiveGroupBeanグループでのスタンバイOracle CEPサーバーに対しOracle CEPサーバーがOracle CEP高可用性フェイルオーバーを実行します。

23.2.3 ActiveActiveGroupBeanグループ・パターン一致の構成方法

デフォルトでは、ActiveActiveGroupBeanは次の名前の通知グループを作成します。

ActiveActiveGroupBean_X

Xは文字列です。

実行時に、ActiveActiveGroupBeanは、Oracle CEPサーバーに定義された既存のグループをスキャンし、次のデフォルトのパターン一致を適用します。

ActiveActiveGroupBean_\\w+

一致が見つかったら、その名前の通知グループを作成します。

オプションで、別の通知グループ・ネーミング・パターンを指定するために独自のグループ・パターンを定義できます。

ActiveActiveGroupBeanグループ・パターン一致の構成方法

1. EPNアセンブリ・ファイルを構成し、例23-12に示すように、ActiveActiveGroupBean要素にgroupPattern属性を追加します。

例23-12 groupPattern属性を持つActiveActiveGroupBeanのbean要素

<bean id="clusterAdapter" class="com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean">
<property name="groupPattern" value="MyNotificationGroupPattern*"/>
</bean>

2. 通知グループに対し使用するクラスタ・グループ・ネーミング・ルールに一致するgroupPattern属性の値を指定します。

第7部

アセンブリ、デプロイメントおよびテスト

第7部の章の内容は次のとおりです。

- 第24章「Oracle CEPアプリケーションのアセンブルとデプロイ」

- 第25章「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト」

- 第26章「イベント・インスペクタでのアプリケーションのテスト」

- 第27章「パフォーマンスのチューニング」

24 Oracle CEPアプリケーションのアセンブルとデプロイ

この章では、Oracle CEP IDE for EclipseおよびOracle CEP Visualizerを使用して、Oracle Complex Event Processing (Oracle CEP)アプリケーションを手動でアセンブルおよびデプロイする方法について説明します。

- 24.1項「アプリケーションのアセンブリおよびデプロイメントの概要」

- 24.2項「Oracle CEPアプリケーションのアセンブル」

- 24.3項「アプリケーション・ライブラリの管理」

- 24.4項「ログ・メッセージ・カタログの管理」

- 24.5項「Oracle CEPアプリケーションのデプロイ」

24.1 アプリケーションのアセンブリおよびデプロイメントの概要

アプリケーション・アセンブリという用語は、JavaファイルやXML構成ファイルなどのアプリケーションのコンポーネントをOracle CEPにデプロイ可能なOSGIバンドルにパッケージ化するプロセスを表します。アプリケーションのデプロイメントという用語は、Oracle CEPドメインでクライアント・リクエストを処理するためにアプリケーションを利用できるようにする処理を表します。

この項では次について説明します:

- 24.1.1項「アプリケーション」

- 24.1.3項「アプリケーション・ライブラリ」

- 24.1.2項「アプリケーションの依存関係」

- 24.1.4項「デプロイメントおよびデプロイメント順序」

- 24.1.5項「構成履歴の管理」

注意:

Oracle CEPアプリケーションはSpring FrameworkおよびOSGi Service Platformの上に構築され、それらの技術およびサービスを広範囲にわたり使用します。SpringおよびOSGiに関するリファレンスおよび概念情報へのリンクは、付録A「SpringおよびOSGiに関する追加情報」を参照してください。

24.1.1 アプリケーション

Oracle CEPアセンブリおよびデプロイメントのコンテキスト内で、アプリケーションは次のアーティファクトを含むOSGiバンドル(http://www2.osgi.org/javadoc/r4/org/osgi/framework/Bundle.htmlを参照)JARファイルとして定義されます。

- アダプタ、アダプタ・ファクトリ、ビジネス・ロジックを格納したPOJOなど、アプリケーションのいくつかのコンポーネントを実装するコンパイル済Javaクラス・ファイル。

- アプリケーションのコンポーネントを構成する1つまたは複数のOracle CEP構成XMLファイル。複合イベント・プロセッサは構成ファイルを必要とする唯一のタイプのコンポーネントです。他のすべてのコンポーネント(アダプタおよびストリーム)では、コンポーネントのデフォルトの構成が十分に機能的である場合、構成ファイルは必要ありません。すべての構成ファイルを1つのファイルにまとめたり、または個々のコンポーネントの構成を固有のファイルに分割したりできます。
バンドルを動的にデプロイする場合は、構成ファイルはOSGiバンドルJARファイルの{META-INF/wlevsディレクトリに格納されている必要があります。アプリケーションがすでにドメイン・ディレクトリ内に存在する場合、構成ファイルは同じディレクトリに抽出する必要があります。

- アプリケーションのすべてのコンポーネントと、各コンポーネントが相互にどのように接続されているかを記述したEPNアセンブリ・ファイル。
EPNアセンブリ・ファイルは、OSGiバンドルJARファイルのMETA-INF/springディレクトリにある必要があります。

- JARファイルのコンテンツを記述するMANIFEST.MFファイル。

24.1.2 アプリケーションの依存関係

OSGIバンドルは、インポートされたパッケージまたは必須のパッケージを指定することで依存関係を宣言します。また、パッケージをエクスポートすることで他のバンドルに機能を提供します。バンドルが他のバンドルに機能を提供する必要がある場合は、Export-Packageを使用して、指定されたパッケージを他のバンドルで参照できるようにする必要があります。エクスポートされないすべてのバンドルはバンドルの外部で使用できません。

設計時に依存関係を定義します。

この項では次について説明します:

- 24.1.2.1項「プライベート・アプリケーションの依存関係」

- 24.1.2.2項「共有アプリケーションの依存関係」

- 24.1.2.3項「ネイティブ・コードの依存関係」

詳細は、次を参照してください:

- 24.1.4項「デプロイメントおよびデプロイメント順序」

- 24.2項「Oracle CEPアプリケーションのアセンブル」

24.1.2.1 プライベート・アプリケーションの依存関係

一部の依存関係は、アプリケーションにバンドルされ、アプリケーションとデプロイされるコンポーネントで満たされます。たとえば、標準JARファイルまたはプロパティ・ファイルなどです。

詳細は、次を参照してください:

- 4.7.1項「Oracle CEPプロジェクトへの標準JARファイルの追加方法」

- 4.7.2項「Oracle CEPプロジェクトへのOSGiバンドルの追加方法」

- 4.7.3項「Oracle CEPプロジェクトへのプロパティ・ファイルの追加方法」

24.1.2.2 共有アプリケーションの依存関係

一部の依存関係は、Oracle CEPサーバー・アプリケーション・ライブラリのディレクトリにデプロイされたコンポーネントで満たされます。これらのコンポーネントは、特定のアプリケーションにバンドルされたり、特定のアプリケーションとデプロイされることはありません。かわりに、アプリケーション・ライブラリからエクスポートされる1つ以上のパッケージをインポートするすべてのアプリケーションにアクセスできます。

詳細は、次を参照してください:

- 24.1.2.3項「ネイティブ・コードの依存関係」

- 24.1.3項「アプリケーション・ライブラリ」

- 4.7.4項「パッケージのエクスポート方法」

- 4.7.5項「パッケージのインポート方法」

24.1.2.3 ネイティブ・コードの依存関係

場合によっては、パッケージをアプリケーション・ライブラリとして選択できないネイティブ・コード・ライブラリに依存するアプリケーション・ライブラリを作成する必要があります。

その場合、Oracle CEPサーバーの起動時にネイティブ・コード・ライブラリをオペレーティング・システム・パス(bootclasspath)に置き、ネイティブ・コード・ライブラリが、このネイティブ・コードを呼び出す必要のあるライブラリ・バンドルによってロードされるようにします。

詳細は、次を参照してください:

- 24.1.2.2項「共有アプリケーションの依存関係」

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPサーバー・ブート・クラスパスの構成に関する項

24.1.3 アプリケーション・ライブラリ

Oracle CEPアプリケーション・ライブラリを使用して、共有ライブラリを便利な場所にデプロイし、Oracle CEPサーバーの起動時にデプロイされる共有ライブラリの順序を完全に制御することができます。

アプリケーション・ライブラリは、コンパイル済のJavaクラスおよびその他の必須アーティファクトのJavaアーカイブを含むOSGiバンドルです。

アプリケーション・ライブラリは、ドライバまたは外部ステージ(他のダウンストリーム・アプリケーションで役に立つ一部または完全なOracle CEPアプリケーション)などの様々な目的で使用することができます。

プロジェクトに簡単な組込みJARファイルとしてライブラリを追加することができますが、アプリケーション・ライブラリを使用するには、次のいくつかの利点があります。

- ライブラリの更新バージョンをデプロイするなど、アプリケーション・アセンブリとメンテナンス活動を簡単化します。

- 再利用を促進します。

- サーバー・ディスク領域使用量を削減します。

次のOracle CEPサーバー・ディレクトリのいずれかにアプリケーション・ライブラリをデプロイします。

- 24.1.3.1項「ライブラリ・ディレクトリ」

- 24.1.3.2項「ライブラリ拡張ディレクトリ」

- 24.1.3.3項「アプリケーション・ライブラリの作成」

詳細は、次を参照してください:

- 24.3項「アプリケーション・ライブラリの管理」

- 24.1.2項「アプリケーションの依存関係」

- 24.1.4項「デプロイメントおよびデプロイメント順序」

- 1.1.1.9項「外部ステージ」

- 付録A「SpringおよびOSGiに関する追加情報」

24.1.3.1 ライブラリ・ディレクトリ

デフォルトでは、Oracle CEPサーバー・ライブラリ・ディレクトリは次のとおりです。

DOMAIN_DIR/servername/modules

説明:

- DOMAIN_DIR: /oracle_cep/user_projects/domains/mydomainなどのドメイン・ディレクトリ

- servername: myserverなどのサーバー・インスタンス

例:

/oracle_cep/user_projects/domains/mydomain/myserver/modules

このディレクトリ内のライブラリは、ライブラリ拡張ディレクトリの後、Oracle CEPアプリケーションの前にデプロイされます。

ライブラリがドライバ(JDBCドライバなど)である場合、24.1.3.2項「ライブラリ拡張ディレクトリ」に従って、ライブラリ拡張ディレクトリに格納する必要があります。

アプリケーション・ライブラリ・ディレクトリ・パスのルートを構成するには、24.3.1項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの定義方法」を参照してください。

24.1.3.2 ライブラリ拡張ディレクトリ

デフォルトでは、Oracle CEPサーバー・ライブラリ拡張ディレクトリは次のとおりです。

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 CEPサーバー・モジュールとともにデプロイされます。

ライブラリがドライバ(JDBCドライバなど)である場合、正しい順序でアクティブ化されるようにライブラリ拡張ディレクトリに格納する必要があります。たとえば、以前のバージョンを新しいバージョンでオーバーライドしたり、または代替ドライバへのアクセスを提供するために必要です。詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』の別のデータベース・ドライバまたはドライバのバージョンへのアクセスの構成に関する項を参照してください。

ライブラリがドライバではない場合、24.1.3.1項「ライブラリ・ディレクトリ」に従って、ライブラリ・ディレクトリに格納することができます。

アプリケーション・ライブラリ拡張ディレクトリ・パスのルートを構成するには、24.3.1項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの定義方法」を参照してください。

24.1.3.3 アプリケーション・ライブラリの作成

Oracle CEPでは、OSGiバンドル・ラッパーを任意のJavaアーカイブについて作成する場合に使用するbundler.shユーティリティを提供しています。作成されたバンドルJARは、OSGiコンテナにデプロイされる場合があります。ここでは、バンドル内にあるJavaパッケージ/クラスが他のデプロイ済バンドルにインポートされ、利用されます。使用例としては、サードパーティのJDBCドライバのパッケージなどがあります。

ユーティリティでは、指定のソースJARファイルが読み取られ、ソースJARの内容と、適切なバンドル関連エントリが指定されているマニフェストを含むターゲットJARファイルが作成されます。ソース・アーカイブで検出されたすべてのJavaパッケージは、ターゲット・バンドルによりエクスポートされます。

オプションで、JAR内の1つ以上のクラスをインスタンス化し、各オブジェクトをOSGiサービスとして登録するバンドル・ アクティベータを生成することができます。この機能では、コンポーネント・バンドルで実行時に特定のファクトリ・クラスの複数バージョンにアクセスし、これを操作することができます。

手動でアクティベータ実装を構成する場合は、Oracle CEP IDE for Eclipseを使用することができます。

詳細は、次を参照してください:

- 24.3.2項「bundler.shを使用したアプリケーション・ライブラリの作成方法」

- 24.3.3項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリの作成方法」

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のbundler.shで構築されるアプリケーション・ライブラリを使用したデータベース・ドライバへのアクセス方法に関する項

24.1.4 デプロイメントおよびデプロイメント順序

アプリケーションをアセンブルした後、適切なデプロイメント・ツールを使用してOracle CEP domainに認識されるようにしてアプリケーションをデプロイします。手順の詳細は、24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

Oracle CEPサーバーは、Oracle CEPサーバー起動時に次の順序でコンポーネントをデプロイします。

1. ライブラリをライブラリ拡張ディレクトリにデプロイします(DOMAIN_DIR/servername/modules/extディレクトリ)。

2. ライブラリをライブラリ・ディレクトリにデプロイします(DOMAIN_DIR/servername/modulesディレクトリ)。

3. Oracle CEPアプリケーションをデプロイします。

Oracle CEPサーバーは、ライブラリ名の字句順序に基づいて、ライブラリ拡張ディレクトリとライブラリ・ディレクトリの両方からライブラリをデプロイします。字句順序には、相対ディレクトリ名に加えてJARファイル名も含まれます。

例:

- modules/a.jarがmodules/b.jarの前に開始されます。

- 字句順序で0/my.jarはmy.jarの前になるため、modules/0/my.jarはmodule/my.jarの前に開始されます。

このルールに従って、単にライブラリ拡張ディレクトリまたはライブラリ・ディレクトリのいずれかの適切に名付けられたサブディレクトリにJARファイルを整理することで、Oracle CEPサーバーがJARファイルをデプロイする順序を制御することができます。

アプリケーションがOracle CEPにデプロイされると、構成されたアダプタでは金融データ・フィードなどの構成されたイベントに対するリスニングがただちに開始されます。

詳細は、24.1.3項「アプリケーション・ライブラリ」を参照してください。

24.1.5 構成履歴の管理

アプリケーションをOracle CEPサーバーにデプロイする場合、CEPサーバーはアプリケーションの構成履歴を作成します。ルールまたはOracle CEP高可用性アダプタの構成を変更すると、この履歴に記録されます。Oracle CEP Visualizerまたはwlevs.Adminツールを使用して、これらの変更を表示し、ロールバックする(変更を元に戻す)ことができます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』の構成履歴の管理に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』の構成履歴の管理コマンドに関する項

24.2 Oracle CEPアプリケーションのアセンブル

Oracle CEPアプリケーションのアセンブルとは、http://www2.osgi.org/javadoc/r4/org/osgi/framework/Bundle.htmlで説明されているように、アプリケーションを構成するアーティファクトをOSGiバンドルJARファイルにバンドリングすることを意味します。アーティファクトには、次のものが含まれます。

- コンパイル済のJavaクラス

- アプリケーション・コンポーネント(プロセッサやアダプタなど)を構成するOracle CEPコンポーネント構成ファイル。

- EPNアセンブリ・ファイル

- MANIFEST.MFファイル

SpringおよびOSGiに関するリファレンスおよび概念情報へのリンクは、付録A「SpringおよびOSGiに関する追加情報」を参照してください。

この項では次について説明します:

- 24.2.1項「Oracle CEP IDE for Eclipseを使用したOracle CEPアプリケーションのアセンブル」

- 24.2.2項「Oracle CEPアプリケーションの手動アセンブル」

- 24.2.3項「外部ステージによるアプリケーションのアセンブル」

- 24.2.4項「カスタム・アダプタまたはイベントBeanの固有ハンドルでのアセンブル」

24.2.1 Oracle CEP IDE for Eclipseを使用したOracle CEPアプリケーションのアセンブル

Oracle CEP IDE for Eclipseを使用して、Oracle CEPアプリケーションを簡単にアセンブリできます。

詳細は、次を参照してください:

- 4.5項「Oracle CEPプロジェクトのエクスポート」

- 4.6項「プロジェクトのアップグレード」

- 4.7項「Oracle CEPプロジェクトのライブラリおよび他の非クラス・ファイルの管理」

アプリケーションが外部ステージに依存している場合は、24.2.3項「外部ステージによるアプリケーションのアセンブル」を参照してください。

24.2.2 Oracle CEPアプリケーションの手動アセンブル

オプションで、Oracle CEPアプリケーションを手動でアセンブルできます。

簡略化のために、次の手順では必要なアーティファクトを含む一時ディレクトリを作成し、その後でこの一時ディレクトリのコンテンツをjarファイルに構築します。これは単に推奨される方法であり、この方法でアプリケーションをアセンブルすることは必須ではありません。

注意:

次に記述したステップの多くを実行できるbuild.xml Antファイルについては、HelloWorldサンプル・ソース・ディレクトリを参照してください。build.xmlファイルは、ORACLE_CEP_HOME\ocep_11.1\samples\source\applications\helloworldにあり、ORACLE_CEP_HOMEはd:\oracle_cepなど、主なOracle CEPインストール・ディレクトリを示します。

Oracle CEPアプリケーションを手動でアセンブルするには:

1. 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項の説明に従って、コマンド・ウィンドウを開き、環境を設定します。

2. outputなどの空のディレクトリを作成します。

prompt> mkdir output

3. すべてのアプリケーションJavaファイルをoutputディレクトリにコンパイルします。

4. output/META-INF/springディレクトリを作成します。

5. アプリケーションのコンポーネントと各コンポーネントの接続が記述されたEPNアセンブリ・ファイルをoutput/META-INF/springディレクトリにコピーします。
このファイルの詳細は、4.3項「EPNアセンブリ・ファイルの作成」を参照してください。

6. output/META-INF/wlevsディレクトリを作成します。

7. アプリケーションのコンポーネント(プロセッサやアダプタなど)を構成するXMLファイルをoutput/META-INF/wlevsディレクトリにコピーします。
1.1項「Oracle CEPプログラミング・モデルの概要」の説明に従って、アプリケーションの作成中にこれらのXMLファイルを作成します。

8. バンドルに関する説明情報を含むMANIFEST.MFファイルを作成します。
24.2.2.1項「MANIFEST.MFファイルの作成」を参照してください。

9. Oracle CEPアプリケーションからサードパーティJARファイルにアクセスする必要がある場合は、24.2.2.2項「サードパーティJARファイルへのアクセス」を参照してください。

10. outputディレクトリのコンテンツを含むJARファイルを作成します。
デフォルト・マニフェスト・ファイルではなく、必ず前のステップで作成したMANIFEST.MFファイルを指定します。

JARファイルには任意の名前を付けることができます。Oracle CEPのサンプルでは、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. アプリケーションが外部ステージに依存している場合は、24.2.3項「外部ステージによるアプリケーションのアセンブル」を参照してください。

24.2.2.1 MANIFEST.MFファイルの作成

MANIFEST.MFファイルの構造およびコンテンツはOSGi Frameworkによって指定されます。ファイル内の多くのヘッダーの値はアプリケーションまたはビジネスに固有ですが、多くのヘッダーはOracle CEPで必須です。

特に、MANIFEST.MFファイルでは次のものが定義されます。

- アプリケーション名: Bundle-Nameヘッダーで指定されます。

- シンボリック・アプリケーション名: Bundle-SymbolicNameヘッダーで指定されます。
wlevs.AdminユーティリティやJMXサブシステムなど、多くのOracle CEPツールは、アプリケーションを参照する場合にバンドルのシンボリック名を使用します。

- アプリケーションのバージョン: Bundle-Versionヘッダーで指定されます。

- インポートされたパッケージ: Import-Packageヘッダーで指定されます。
Oracle CEPでは、少なくとも次のパッケージをインポートする必要があります。

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

24.2.2.2 サードパーティJARファイルへのアクセス

Oracle CEPアプリケーションの作成時には、既存のサードパーティJARファイル内のレガシー・ライブラリにアクセスする必要がある場合があります。このレガシー・コードへのアクセスを保証する2つの方法があります。

- 24.1.3項「アプリケーション・ライブラリ」

- 24.2.2.2.1項「Bundle-Classpathを使用したサードパーティJARファイルへのアクセス」

- 24.2.2.2.2項「-Xbootclasspathを使用したサードパーティJARファイルへのアクセス」

24.2.2.2.1 Bundle-Classpathを使用したサードパーティJARファイルへのアクセス

Oracle CEPアプリケーションJARファイルにサードパーティJARファイルをパッケージ化することをお薦めします。JARファイルは、任意の場所に保存できます。

注意:

このアプローチでは、JARファイルのロード順序をほとんど制御できず、依存関係の競合が発生する可能性があります。このため、Oracle CEPサーバー・アプリケーション・ライブラリの使用をお薦めします。詳細は、24.1.3項「アプリケーション・ライブラリ」を参照してください。

ただし、MANIFEST.MFファイルにBundle-Classpathヘッダーを追加し、アプリケーション・クラス・パスを更新することにより、Oracle CEPアプリケーションによるサードパーティJARファイルでのクラスの検出を保証する必要があります。Bundle-Classpathをクラスおよびリソースの検索先となるJARファイル・パス名のカンマ区切りのリストに設定します。バンドル自身を指定するには、ピリオド(.)を使用します。例:

Bundle-Classpath: ., commons-logging.jar, myExcitingJar.jar, myOtherExcitingJar.jar

ネイティブ・ライブラリにアクセスする必要がある場合は、ネイティブ・ライブラリもJARファイルにパッケージ化し、MANIFEST.MFファイルのBundle-NativeCodeヘッダーを使用してJARでのその場所を指定する必要があります。

詳細は、4.7.1項「Oracle CEPプロジェクトへの標準JARファイルの追加方法」を参照してください。

24.2.2.2.2 -Xbootclasspathを使用したサードパーティJARファイルへのアクセス

JDBCドライバなどのOracle CEPにデプロイされているすべてのアプリケーションで使用されるライブラリがJARファイルに含まれている場合は、サーバー・インスタンスの起動に使用するスクリプト内のjavaコマンドに-Xbootclasspath/aオプションを指定することで、JARファイルをサーバーのブート・クラスパスに追加できます。

注意:

このアプローチでは、JARファイルのロード順序をほとんど制御できず、依存関係の競合が発生する可能性があります。このため、Oracle CEPサーバー・アプリケーション・ライブラリの使用をお薦めします。詳細は、24.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 CEPの主なインストール・ディレクトリです。

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

24.2.3 外部ステージによるアプリケーションのアセンブル

外部ステージに依存しているアプリケーションをアセンブルするとき、クラスパス依存関係に注意してください。図24-1に示したアプリケーションの依存関係グラフを考慮してください。

図24-1 外部ステージ依存関係グラフ

「図24-1 外部ステージ依存関係グラフ」の説明

この例では、アプリケーションAはアプリケーションBに、アプリケーションBはアプリケーションCに、アプリケーションCはアプリケーションAに依存します。アプリケーションCは、Java Beanイベント・タイプMarketEvent用のイベント・タイプ・クラスを宣言し、エクスポートします。アプリケーションAとBは、アプリケーションCによって提供されたMarketEventクラスをインポートします。

次の点に注意してください。

- 外部ステージを再デプロイする場合、そのアプリケーションまたは外部ステージに依存するすべての外部ステージを再デプロイする必要があります。
たとえば、アプリケーションBを再デプロイする場合、アプリケーションAも再デプロイする必要があります。

- 1つの外部ステージと他のステージの間にクラスパスの依存関係がある場合、共有クラスを宣言し、エクスポートする外部ステージをデプロイするときは、共有クラスをインポートするすべての外部ステージを再デプロイする必要があります。
たとえば、アプリケーションCを再デプロイする場合、アプリケーションC(MarketEvent)とクラスパスの依存関係がアプリケーションAとBも再デプロイする必要があります。

詳細は、次を参照してください:

- 1.1.1.9項「外部ステージ」

- 24.5項「Oracle CEPアプリケーションのデプロイ」

24.2.4 カスタム・アダプタまたはイベントBeanの固有ハンドルでのアセンブル

通常、カスタム・アダプタおよびイベントBeanは、プロセッサ、ストリームおよびビジネス・ロジックPOJOなど、他のコンポーネントを含む1つのアプリケーションJARファイルにバンドルされます。

ただし、アダプタを固有のJARファイルにバンドルし、他のアプリケーション・バンドルでアダプタを参照する必要がある場合もあります。これは、たとえば、2つの異なるアプリケーションが同じデータ・フィード・プロバイダからのデータを読み込み、両方のアプリケーションが同じイベント・タイプを使用する場合に役立ちます。この場合、2つの異なるアプリケーションで実装が重複するよりも、同一のアダプタおよびイベント・タイプの実装を共有するほうが有意義です。

異なるバンドルでアダプタおよびアダプタを使用するアプリケーションを構成する方法には、実際の違いはなく、構成を配置する場所が異なります。

この項では次について説明します:

- 24.2.4.1項「固有のバンドルでのカスタム・アダプタのアセンブル方法」

- 24.2.4.2項「固有のバンドルでのカスタム・イベントBeanのアセンブル方法」

24.2.4.1 固有のバンドルでのカスタム・アダプタのアセンブル方法

カスタム・アダプタとその依存クラスは固有のバンドルにアセンブルできます。

カスタム・アダプタを固有のバンドルにアセンブルする手順:

1. カスタム・アダプタのJavaクラス、カスタム・アダプタ・ファクトリのJavaクラス、およびオプションで、アダプタが着信データを変換するイベント・タイプのJavaクラスのみが含まれているOSGIバンドルを作成します。
この手順では、バンドルはGlobalAdapterと呼ばれます。

2. GlobalAdapterバンドルのEPNアセンブリ・ファイルで:

- 14.4.1項「カスタム・アダプタ・ファクトリの登録」の説明に従って、アダプタ・ファクトリをOSGIサービスとして登録します。

- イベント・タイプもバンドルに組み込む場合は、2.8項「アプリケーション・バンドル間でのイベント・タイプの共有」の説明に従って登録します。

- wlevs:adapter要素を使用してカスタム・アダプタ・コンポーネントを宣言しないでください。
この要素は、アダプタを実際に使用するアプリケーション・バンドルのEPNアセンブリ・ファイルで使用します。

- カスタム・アダプタを更に構成する場合は、14.5項「カスタム・アダプタ・コンポーネント構成ファイルの構成」の説明に従って、通常の手順を実行します。

- イベント・タイプをGlobalAdapterバンドルに含める場合は、4.7.4項「パッケージのエクスポート方法」の説明に従って、Export-Packageヘッダーを使用し、GlobalAdapterバンドルのMANIFEST.MFファイルでJavaBeanクラスをエクスポートします。

3. 24.5項「Oracle CEPアプリケーションのデプロイ」」の説明に従って、GlobalAdapterバンドルをアセンブルおよびデプロイします。

4. カスタム・アダプタに使用するプリケーションのEPNアセンブリ・ファイルで、14.4.2項「アプリケーションのカスタム・アダプタ・コンポーネントの宣言」の説明に従って、カスタム・アダプタ・コンポーネントを宣言します。
引き続き、provider属性を使用してOSGI登録済アダプタ・ファクトリを指定しますが、この場合、OSGIはアダプタを実際に使用するEPNアセンブリ・ファイルとは別の(GlobalAdapterバンドルの)EPNアセンブリ・ファイルで登録されます。

5. GlobalAdapterバンドルのイベント・タイプをエクスポートした場合は、それを使用するアプリケーションに明示的にインポートする必要があります。
これは、24.2.2.1項「MANIFEST.MFファイルの作成」の説明に従って、アプリケーション・バンドルのMANIFEST.MFファイルでImport-Packageヘッダーにパッケージを追加して実行します。

24.2.4.2 固有のバンドルでのカスタム・イベントBeanのアセンブル方法

カスタム・イベントBeanとその依存クラスは固有のバンドルにアセンブルできます。

カスタム・イベントBeanを固有のバンドルにアセンブルする手順:

1. カスタム・イベントBean Javaクラスおよびカスタム・イベントBeanファクトリJavaクラスのみを含むOSGIバンドルを作成します。
この手順では、バンドルはGlobalEventBeanと呼ばれます。

2. GlobalEventBeanバンドルのEPNアセンブリ・ファイルで:

- 15.3.1項「カスタム・イベントBeanファクトリの登録」の説明に従って、カスタム・イベントBeanファクトリをOSGIサービスとして登録します。

- wlevs:adapter要素を使用してカスタム・イベントBeanコンポーネントを宣言しないでください。
この要素は、アダプタを実際に使用するアプリケーション・バンドルのEPNアセンブリ・ファイルで使用します。

- カスタム・イベントBeanを更に構成する場合は、15.4項「カスタム・イベントBeanコンポーネント構成ファイルの構成」の説明に従って、通常の手順を実行します。

3. 24.5項「Oracle CEPアプリケーションのデプロイ」」の説明に従って、GlobalEventBeanバンドルをアセンブルおよびデプロイします。

4. カスタム・イベントBeanに使用するプリケーションのEPNアセンブリ・ファイルで、15.3.2項「アプリケーションのカスタム・イベントBeanコンポーネントの宣言」の説明に従って、カスタム・イベントBeanコンポーネントを宣言します。
引き続き、provider属性を使用してOSGI登録済カスタム・イベントBeanファクトリを指定しますが、この場合、OSGIはアダプタを実際に使用するEPNアセンブリ・ファイルとは別の(GlobalEventBeanバンドルの)EPNアセンブリ・ファイルで登録されます。

5. GlobalEventBeanバンドルのイベント・タイプをエクスポートした場合は、それを使用するアプリケーションに明示的にインポートする必要があります。
これは、24.2.2.1項「MANIFEST.MFファイルの作成」の説明に従って、アプリケーション・バンドルのMANIFEST.MFファイルでImport-Packageヘッダーにパッケージを追加して実行します。

24.3 アプリケーション・ライブラリの管理

Oracle CEPアプリケーション・ライブラリを使用して、共有ライブラリを便利な場所にデプロイし、Oracle CEPサーバーの起動時にデプロイする共有ライブラリの順序を完全に制御できます。

この項では、次の項を含めて、Oracle CEPサーバー・アプリケーション・ライブラリを管理する方法について説明します。

- 24.3.1項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの定義方法」

- 24.3.2項「bundler.shを使用したアプリケーション・ライブラリの作成方法」

- 24.3.3項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリの作成方法」

- 24.3.4項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの更新方法」

- 24.3.5項「Oracle CEP Visualizerを使用したアプリケーション・ライブラリの表示方法」

詳細は、24.1.3項「アプリケーション・ライブラリ」を参照してください。

24.3.1 Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリのディレクトリの定義方法

Oracle CEPサーバー・アプリケーション・ライブラリを使用する前に、Oracle CEP IDE for Eclipseデザイン・タイム構成をアプリケーション・ライブラリのディレクトリの場所で更新する必要があります。

デフォルトのアプリケーション・ライブラリ構成の詳細は、次を参照してください。

- 24.1.3.1項「ライブラリ・ディレクトリ」

- 24.1.3.2項「ライブラリ拡張ディレクトリ」

詳細は、24.3項「アプリケーション・ライブラリの管理」を参照してください。

Oracle CEP IDE for Eclipseを使用してアプリケーション・ライブラリのディレクトリを定義するには、

1. Oracle CEP IDE for Eclipseを起動します。

2. プロジェクトを右クリックし、「プロパティ」を選択します。
図24-2に示すような「プリファレンス」ダイアログが表示されます。

図24-2 「プリファレンス」ダイアログ: アプリケーション・ライブラリのパス

「図24-2 「プリファレンス」ダイアログ: アプリケーション・ライブラリのパス」の説明

3. 「Oracle CEPアプリケーション・ライブラリのパス」を選択します。

4. 表24-1の説明に従って、アプリケーション・ライブラリのパスを指定します。

表24-1 Oracle CEPアプリケーション・ライブラリのパス

オプション

説明

「絶対パスを使用」

アプリケーション・ライブラリのディレクトリに絶対パスを指定するにはこのオプションを選択します。

24.3.1.1項「絶対パスの構成方法」を参照してください。

「パス変数の拡張」

パス変数に基づいてアプリケーション・ライブラリを指定するにはこのオプションを選択します。

24.3.1.2項「パス変数を拡張する方法」を参照してください。

24.3.1.1 絶対パスの構成方法

アプリケーション・ライブラリ・パスを絶対パスとして指定できます。チーム環境では、24.3.1.2項「パス変数を拡張する方法」の説明に従って、パス変数に基づくアプリケーション・ライブラリ・パスを指定する方がより便利です。

絶対パスを構成するには:

1. 「参照」ボタンをクリックして、ファイル・システム・ブラウザを開きます。

2. ファイル・システム・ブラウザを使用して、ディレクトリを選択します。

注意:

ディレクトリはOracle CEPサーバー・ドメインに存在する必要があります。詳細は、5.2項「Oracle CEPサーバーの作成」を参照してください。

3. 「OK」をクリックします。

4. 「適用」をクリックします。

5. 「OK」をクリックします。

24.3.1.2 パス変数を拡張する方法

パス変数を拡張することで、アプリケーション・ライブラリ・パスを指定できます。これは、最もフレキシブルなアプローチであり、チーム環境に適切です。あるいは、24.3.1.1項「絶対パスの構成方法」に従って、絶対パスでアプリケーション・ライブラリを指定できます。

パス変数を拡張するには:

1. 「変数」ボタンをクリックします。
図24-3に示すようにパス変数の選択ダイアログが表示されます。

図24-3 パス変数の選択ダイアログ

「図24-3 パス変数の選択ダイアログ」の説明

2. 「新規」をクリックします。
図24-4に示すような「新規変数」ダイアログが表示されます。

図24-4 新しい変数ダイアログ

「図24-4 「新規変数」ダイアログ」の説明

3. 表24-2で説明されているように、「新規変数」ダイアログを構成します。

表24-2 Oracle CEPアプリケーション・ライブラリ・パス変数

オプション

説明

名前

変数の名前を入力します。

ロケーション

「フォルダ」ボタンをクリックして、ファイル・システム・ブラウザを開きます。アプリケーション・ライブラリのディレクトリを使用するには、ルートディレクトリを選択します。

注意: ディレクトリをOracle CEPサーバー・ドメインに配置する必要があります。詳細は、5.2項「Oracle CEPサーバーの作成」を参照してください。

4. 「OK」をクリックします。
図24-5で示したとおり、パス変数の選択ダイアログに新しいパス変数が表示されます。

図24-5 パス変数の選択(当該変数名が表示)

「図24-5 パス変数の選択(当該変数名が表示)」の説明

5. オプションで、変数を選択し、「拡張」をクリックします。
図24-6に示すように、変数の拡張ダイアログが表示されます。このダイアログには、この変数のために指定したルートディレクトリの下にあるすべてのディレクトリが表示されます。

図24-6 変数の拡張ダイアログ

「図24-6 変数の拡張ダイアログ」の説明

6. サブディレクトリを選択して、「OK」をクリックします。
アプリケーション・ライブラリ・パスは、図24-7で示すように定義した変数パスに対して相対的に指定します。

図24-7 「プリファレンス」ダイアログ(アプリケーション・ライブラリ・パスとパス変数)

「図24-7 「プリファレンス」ダイアログ(アプリケーション・ライブラリ・パスとパス変数)」の説明

7. 「適用」をクリックします。

8. 「OK」をクリックします。

24.3.2 bundler.shを使用したアプリケーション・ライブラリの作成方法

このプロシージャでは、バンドル・ユーティリティを使用したOSGiバンドルの作成方法について説明します。

この方法をお薦めします。手動でアクティベータ実装を構成する場合は、24.3.3項「Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリの作成方法」を参照してください。

新規JDBCドライバのアプリケーション・ライブラリを作成する場合は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のbundler.shで構築されるアプリケーション・ライブラリを使用したデータベース・ドライバへのアクセス方法に関する項を参照してください。

詳細は、24.1.3.3項「アプリケーション・ライブラリの作成」を参照してください。

bundler.shを使用してアプリケーション・ライブラリを作成する手順:

1. 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項の説明に従って、環境を設定します。

2. bundler.shスクリプトを実行して、ドライバを含むOSGiバンドルを作成します。
bundler.shスクリプトは、ORACLE_CEP_HOME/ocep_11.1/binディレクトリにあります。ORACLE_CEP_HOMEは、Oracle CEPサーバーのインストール先のディレクトリです。

例24-1は、bundler.shコマンド・ライン・オプションを示し、表24-3は、これらのオプションを説明します。

例24-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]

表24-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

詳細出力を有効にするオプション・フラグ。

例24-2は、bundler.shを使用してOracle JDBCドライバ用のOSGiバンドルを作成する方法を示します。

例24-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には、例24-3に示すファイルがあります。

例24-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つのファクトリ・クラスがあることを指定します。表24-4に示すように、各ファクトリ・クラスは別々のオブジェクト・クラスにあります。

表24-4 ファクトリ・クラスおよびサービス・インタフェース

ファクトリ・クラス

サービス・インタフェース

oracle.jdbc.xa.client.OracleXADataSource

javax.sql.XADataSource

oracle.jdbc.OracleDriver

java.sql.Driver

各サービスは、nameプロパティをoracle11gに設定し、versionプロパティを11.2.0の値で登録します。例24-4は、サービスの登録を示すOracle CEPサーバー・ログ・メッセージです。

例24-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 CEPサーバー・アプリケーション・ディレクトリにコピーします。

1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置く必要があります。
24.1.3.2項「ライブラリ拡張ディレクトリ」を参照してください。

2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。
24.1.3.1「ライブラリ・ディレクトリ」を参照してください。

詳細は、24.1.3項「アプリケーション・ライブラリ」を参照してください。

4. Oracle CEPサーバーを停止および開始します。
『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPサーバーの起動および停止に関する項を参照してください。

24.3.3 Oracle CEP IDE for Eclipseを使用したアプリケーション・ライブラリの作成方法

この手順は、Oracle CEP IDE for Eclipseを使用してドライバに対するOSGiバンドルを作成してOracle CEPサーバー上にデプロイする方法です。

この方法をお薦めします。手動でアクティベータ実装を構成しない場合は、24.3.2項「bundler.shを使用したアプリケーション・ライブラリの作成方法」を参照してください。

新規JDBCドライバのアプリケーション・ライブラリを作成する場合は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEP IDE for Eclipseで構築されるアプリケーション・ライブラリを使用したデータベース・ドライバへのアクセス方法に関する項を参照してください。

Oracle CEP IDE for Eclipseを使用してアプリケーション・ライブラリを作成する手順:

1. Oracle CEP IDE for Eclipseを使用して、新しいOracle CEPプロジェクトを作成します。
詳細は、4.2項「Oracle CEPプロジェクトの作成」を参照してください。

2. プロジェクト・フォルダを右クリックして、「新規」>「フォルダ」を選択します。

3. 「フォルダ名」フィールドにlibと入力し、「終了」をクリックします。

4. Oracle CEP IDE for Eclipseの外で、JDBC JARファイルをlibフォルダにコピーします。

5. Oracle CEP IDE for Eclipse内で、libフォルダを右クリックして、「リフレッシュ」を選択します。
図24-8に示すように、JARファイルがlibフォルダに表示されます。

図24-8 Oracle CEP IDE for Eclipse libディレクトリ

「図24-8 Oracle CEP IDE for Eclipse libディレクトリ」の説明

6. srcディレクトリを右クリックして、「新規」>「クラス」を選択します。
図24-9に示すように、「Javaクラス」ダイアログが表示されます。

図24-9 「新規Javaクラス」ダイアログ

「図24-9 「新規Javaクラス」ダイアログ」の説明

7. 表24-5に示すように、「新規Javaクラス」ダイアログを構成します。

表24-5 新規Javaクラス・パラメータ

パラメータ

説明

パッケージ名

パッケージの名前。たとえば、com.fooを指定します。

名前

クラスの名前。たとえば、MyActivatorを指定します。

その他のパラメータはデフォルト値のままにします。

8. 「終了」をクリックします。
新規のJavaクラスがプロジェクトに追加されます。

9. 例24-5に示すように、実装するためにJavaクラスを編集します。
JDBCドライバの既存のバージョンを差し代えるように、NAMEおよびVERSIONを設定します。この例では既存のバージョンは、次のとおりです。

- oracle10g

- 10.0.0

既存のバージョンを差し代えるために、MyActivatorクラスではこれらの値を次の値に設定します。

- oracle11g

- 11.2.0

例24-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ファイルを右クリックし、次で開く>プラグイン・マニフェストエディタを選択します。
図24-10に示すように、マニフェスト・エディタが表示されます。

図24-10 マニフェスト・エディタ:「概要」タブ

「図24-10 マニフェスト・エディタ:「概要」タブ」の説明

11. 「ランタイム」タブをクリックします。
図24-11に示すように、「ランタイム」タブが表示されます。

図24-11 マニフェスト・エディタ:「ランタイム」タブ

「図24-11 マニフェスト・エディタ:「ランタイム」タブ」の説明

12. 「クラスパス」ペインで、「追加」をクリックします。
図24-12に示すように、JAR選択ダイアログが表示されます。

図24-12 JARの選択ダイアログ

「図24-12 JAR選択ダイアログ」の説明

13. libディレクトリを展開して、使用するデータベース・ドライバJARファイルを選択します。

14. 「OK」をクリックします。

15. 「依存関係」タブをクリックします。
図24-13に示すように、「依存関係」タブが表示されます。

図24-13 マニフェスト・エディタの「依存関係」タブ

「図24-13 マニフェスト・エディタの「依存関係」タブの説明

16. インポートされたパッケージペインで、「追加」をクリックします。
図24-14に示すように、パッケージの選択ダイアログが表示されます。

図24-14 パッケージの選択ダイアログ

「図24-14 パッケージの選択ダイアログ」の説明

17. エクスポートされたパッケージフィールドで、org.osgi.frameworkを入力します。
図24-14に示すように、リスト・ボックスには、その接頭辞の付いているすべてのパッケージが表示されます。

18. リスト・ボックスでorg.osgi.frameworkを選択して、「OK」をクリックします。

19. MANIFEST.MFタブをクリックします。
図24-15に示すように、MANIFEST.MFタブが表示されます。

図24-15 マニフェスト・エディタ

「図24-15 マニフェスト・エディタ」の説明

20. 例24-6に示すように、使用するJARを一時ディレクトリに解凍します。

例24-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. 例24-7に示すように、使用するJAR MANIFEST.MFファイルを開いて、Export-Packageエントリをコピーし、マニフェスト・エディタに貼り付けます。

例24-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. 例24-8に示すように、マニフェスト・エディタにBundle-Activator要素を追加します。
Bundle-Activatorの値は、Activatorクラスの完全修飾クラス名です。

例24-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. 例24-9に示すように、マニフェスト・エディタにDynamicImport-Package要素を追加します。

例24-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 CEPアプリケーションをJARファイルにエクスポートします。
詳細は、4.5.1項「Oracle CEPプロジェクトのエクスポート方法」を参照してください。

25. バンドルJARを適切なOracle CEPサーバー・アプリケーション・ライブラリ・ディレクトリにコピーします。

1. バンドルがドライバの場合は、ライブラリ拡張ディレクトリに置く必要があります。
24.1.3.2項「ライブラリ拡張ディレクトリ」を参照してください。

2. バンドルがドライバでない場合は、ライブラリ・ディレクトリに置くことができます。
24.1.3.1「ライブラリ・ディレクトリ」を参照してください。

詳細は、24.1.3項「アプリケーション・ライブラリ」を参照してください。

26. Oracle CEPサーバーを停止および開始します。
『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPサーバーの起動および停止に関する項を参照してください。

24.3.4 Oracle CEP IDE for Eclipseを使用してアプリケーション・ライブラリを更新する方法

アプリケーション・ライブラリ拡張、アプリケーション・ライブラリ・ディレクトリまたはそれらのユーザー定義のサブディレクトリでJARファイルの追加、置き換えまたは解除を行う場合、次の2つの場所で変更を加える必要があります。

- Oracle CEP IDE for Eclipseでサーバーのランタイムを作成するために使用したローカルOracle CEPサーバー。

- 依存アプリケーションをデプロイされた本番Oracle CEPサーバー。

これらの変更は、同時に実行する必要がありません。アプリケーション・ライブラリの変更に依存するプロジェクトのコードを変更する前に、ローカルOracle CEPサーバーに変更を加える必要があります。アプリケーション・ライブラリの変更に依存するアプリケーションをデプロイする前に、本番Oracle CEPサーバーに変更を加える必要があります。

詳細は、24.3項「アプリケーション・ライブラリの管理」を参照してください。

Oracle CEP IDE for Eclipseを使用してアプリケーション・ライブラリを更新するには:

1. 本番Oracle CEPサーバー上のアプリケーション・ライブラリ拡張またはアプリケーション・ライブラリ・ディレクトリに新しいまたは改訂されたバンドルを追加します。
これは、このアプリケーション・ライブラリに依存するアプリケーションをデプロイするサーバーです。

ライブラリのデプロイメント順序を制御するには、ライブラリを適切な名前のサブディレクトリに整理します。

詳細は、次を参照してください:

- 24.1.3.2項「ライブラリ拡張ディレクトリ」

- 24.1.3.1項「ライブラリ・ディレクトリ」

- 24.1.4項「デプロイメントおよびデプロイメント順序」

2. 本番Oracle CEPサーバーを停止および起動します。
Oracle CEPサーバーは、更新されたアプリケーション・ライブラリ拡張またはアプリケーション・ライブラリ・ディレクトリからリフレッシュします。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のスタンドアロン・サーバー・ドメインでのOracle CEPサーバーの起動および停止に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のマルチサーバー・ドメインでのOracle CEPサーバーの起動および停止に関する項

3. Oracle CEP IDE for EclipseターゲットのランタイムOracle CEPサーバー上のアプリケーション・ライブラリ拡張またはアプリケーション・ライブラリ・ディレクトリに同じ新規または改訂されたバンドルを追加します。

4. Oracle CEP IDE for Eclipseを起動します。

5. プロジェクトを右クリックし、「ターゲットのランタイムをリフレッシュ」を選択します。
Oracle CEP IDE for Eclipseは、Oracle CEP IDE for EclipseターゲットのランタイムOracle CEPサーバー上の更新されたアプリケーション・ライブラリ拡張またはアプリケーション・ライブラリ・ディレクトリからこのプロジェクトをリフレッシュします。

6. 必要に応じて、アプリケーション依存性を更新します。
たとえば、新規バンドルを追加するか、または既存のバンドルのバージョンを変更します。

詳細は、24.1.2項「アプリケーションの依存関係」を参照してください。

7. 本番Oracle CEPサーバーにアプリケーションをアセンブルし、デプロイします。
詳細は、24.5項「Oracle CEPアプリケーションのデプロイ」を参照してください。

開発時に、このアプリケーション向けにOracle CEP IDE for Eclipseに定義した依存関係は、実行時に本番Oracle CEPサーバーのアプリケーション・ライブラリでインストールされたコンポーネントによって満たされます。

24.3.5 Oracle CEP Visualizerを使用したアプリケーション・ライブラリの表示方法

Oracle CEP Visualizerを使用して、Oracle CEPサーバーにデプロイされたアプリケーション・ライブラリを表示できます。

ライブラリ拡張ディレクトリとライブラリ・ディレクトリ、そのいずれからもライブラリを表示できます。

注意:

Oracle CEP Visualizerでは、アプリケーション・ライブラリをOracle CEPサーバーにはデプロイできません。Oracle CEP Visualizerでは、Oracle CEPアプリケーションのOracle CEPサーバーへのデプロイのみ可能です。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のOracle CEPサーバーにデプロイされたアプリケーション・ライブラリの表示方法に関する項

- 24.1.3.2項「ライブラリ拡張ディレクトリ」

- 24.1.3.1項「ライブラリ・ディレクトリ」

- 24.3項「アプリケーション・ライブラリの管理」

24.4 ログ・メッセージ・カタログの管理

この項では、Oracle CEPアプリケーションのローカライズに使用する、次のようなログ・メッセージ・カタログの管理方法について説明します。

- 24.4.1項「Oracle CEPサーバーでのメッセージ・カタログの使用」

- 24.4.2項「ローカライズ用LoggerおよびTextFormatterクラスを生成するためのメッセージ・カタログの解析方法」

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPのロギングおよびデバッグの構成に関する項

- 付録G「スキーマ参照: メッセージ・カタログmsgcat.dtd」

- 付録H「スキーマ参照: ロケール・メッセージ・カタログl10n_msgcat.dtd」

24.4.1 Oracle CEPサーバーでのメッセージ・カタログの使用

メッセージ・カタログは、テキスト・メッセージのコレクションが格納される単一の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パッケージごとに細かく分けてカタログを作成することもできます。表示するときにそのログの特定の部分に焦点を当てることができるよう、複数のサブシステム・カタログの使用をお薦めします。

シンプル・テキスト・カタログについては、国際化される各ユーティリティにシングル・カタログを作成することをお薦めします。

この項では次について説明します:

- 24.4.1.1項「メッセージ・カタログの階層」

- 24.4.1.2項「メッセージ・カタログの命名のガイドライン」

- 24.4.1.3項「メッセージ引数の使い方」

- 24.4.1.4項「メッセージ・カタログのフォーマット」

- 24.4.1.5項「メッセージ・カタログのローカライゼーション」

詳細は、次を参照してください:

- 付録G「スキーマ参照: メッセージ・カタログmsgcat.dtd」

- 付録H「スキーマ参照: ロケール・メッセージ・カタログl10n_msgcat.dtd」

24.4.1.1 メッセージ・カタログの階層

すべてのメッセージは、デフォルトで最上位カタログに定義する必要があります。

基本カタログのさまざまなローカライゼーションを提供するカタログは、ロケールに基づいた名前がついたmsgcatのサブディレクトリ(ドイツ語の場合はmsgcat/deなど)に定義されています。たとえば、mycat.xmlという最上位カタログと..de/mycat.xmlというそのドイツ語版のカタログがあります。通常、最上位カタログは英語です。ただし、どのカタログでも英語は必須ではありません。

java.util.Localeのドキュメントで定義されているように、ロケールの指定(deなど)にも階層があります。ロケールでは言語、国、およびバリアントを指定できます。言語は、ロケール指定でもっとも一般的なものです。言語は国コードによって拡張できます。たとえば、en\USはアメリカ英語を示します。これに関連付けられたカタログの名前は、..en\US\mycat.xmlとなります。バリアントはベンダーまたはブラウザに固有であり、言語または国で定義された複数のロケールの間で細かな違い(照合順序など)を持たせるために使用します。

24.4.1.2 メッセージ・カタログの命名のガイドライン

メッセージ・カタログ・ファイルの名前(.xml拡張子を除く)は、実行時クラスおよびプロパティ名の生成に使用されるため、命名は慎重に行ってください。

メッセージ・カタログに名前を付ける場合、以下のガイドラインに従ってください。

- メッセージ・カタログを作成しているターゲット・パッケージ内の既存クラスの名前と競合するようなメッセージ・カタログ名は避けます。

- メッセージ・カタログ名に含まれる文字は、クラス名に使用できる文字のみを使用します。

- クラス名の命名規約に従います。

たとえば、カタログの名前がXyz.xmlの場合、生成されるクラス名はXyzLogLocalizerおよびXyzLoggerになります。

以下の考慮事項も、メッセージ・カタログ・ファイルに適用されます。

- メッセージIDは、通常は先頭に0が付く6文字の文字列。一部のインタフェースでは、整数表現もサポートされています。

注意:

これは、ログ・メッセージ・カタログにのみ適用されます。シンプル・テキスト・カタログは任意の文字列をとることができます。

- Javaでは、パッケージと呼ばれるコレクションにクラスをまとめることができます。パッケージ名は、特定のカタログが存在するサブシステムの名前と一致させることをお薦めします。命名が一環していると、OSGiインポートの定義が容易になります。

- ログのLocalizer「クラス」は、実際にはResourceBundleプロパティ・ファイルです。

24.4.1.3 メッセージ引数の使い方

ログ・メッセージのメッセージ本文、メッセージ詳細、原因、およびアクションなどのセクションには、java.text.MessageFormatに記載されているようなメッセージ引数を組み込むことができます。メッセージの内容が、java.text.MessageFormatで指定されたパターンに準拠していることを確認してください。シンプル・テキスト・メッセージでは、引数を入れられるのは、メッセージ本文のセクションに限られます。引数は、実行時に動的に設定される値を表します。これらの値は、メッセージを出力するなどのルーチンに渡されます。1つのメッセージには0から9で番号付けされた10個までの引数をサポートできます。メッセージ本文にはすべての引数を入れる必要がありますが、メッセージ定義(メッセージ本文、メッセージ詳細、妥当な原因)の任意のテキスト・セクションにもこれらの引数の任意のサブセットを入れることができます。メッセージ引数は開発時にメッセージ定義に挿入され、実行時においてメッセージがログに記録されるときに適切なメッセージ・コンテンツに置き換えられます。

以下は、XMLログ・メッセージ定義の抜粋で、メッセージ引数の使い方を示しています。引数の番号は、method属性で指定された引数の1つと対応している必要があります。具体的には、{0}は最初の引数と、{1}は2番目の引数と対応している必要があります。例24-10では、{0}は開けないファイルを表し、{1}は適切に開かれるファイルを表します。

例24-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)"

例24-10のメッセージの例では、2つの引数{0}および{1}が使用されています。

- 両方とも<messagebody>で使用されています。

- 両方とも<messagedetail>で使用されています。

- どちらも<cause>または<action>では使用されていません。

注意:

1つのメッセージには0から9で番号付けされた10個までの引数をサポートできます。メッセージ本文にはすべての引数を入れる必要がありますが、メッセージ定義(メッセージ詳細、原因、処置)の任意のテキスト・セクションにもこれらの引数の任意のサブセットを入れることができます。

また、引数はString型と想定されるか、String型で表現可能です。数値データは{n,number}と表現されます。日付は{n,date}の形式でサポートされます。ログ・メッセージには重大度レベルを割り当てる必要があります。ログ・メッセージはmethod属性で定義されているとおり、生成済のLoggerメソッドによって生成されます。

24.4.1.4 メッセージ・カタログのフォーマット

最上位のカタログ・ファイルとロケール固有のカタログ・ファイルでは、カタログのフォーマットが若干異なります。最上位カタログでは、基本ロケール(デフォルトでは、英語)のテキスト・メッセージが定義されます。ロケール固有のカタログ(スペイン語に翻訳されたカタログなど)は、最上位バージョンで定義されているテキストの翻訳だけを備えています。さらに、ログ・メッセージ・カタログではシンプル・テキスト・カタログと定義の方法が異なります。

24.4.1.4.1 ログ・メッセージ・カタログ

例24-11はログ・メッセージを1つ持つメッセージ・カタログMyUtilLog.xmlを示しています。このログ・メッセージは、messagebody、messagedetail、causeおよびactionの各要素の使用方法を示しています。

例24-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」を参照してください。

24.4.1.4.2 シンプル・テキスト・カタログ

例24-12では、1つのシンプル・テキストが定義されているシンプル・テキスト・カタログMyUtilLabels.xmlを示しています。

例24-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」を参照してください。

24.4.1.4.3 ロケール固有のカタログ

例24-13は、..\msgcat\fr\MyUtilLabels.xmlにあるメッセージのフランス語版です。

例24-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」を参照してください。

24.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コード・セットに対する繁体字中国語ローカライゼーション

特定のローカライゼーションは、親ローカライゼーションで定義されたすべてのメッセージに対応する必要はありません。

24.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 CEPサーバー・クラス・パスで識別されたディレクトリに置く必要があります。

i18n_user.propertiesファイルは、Oracle CEPサーバー・クラス・パスに置くことをお薦めします。i18n_user.propertiesファイルがtargetdirectoryにある場合は、targetdirectoryがOracle CEPサーバー・クラス・パスにある必要があります。

LoggerおよびTextFormatterクラスを生成するためのメッセージ・カタログを解析する手順:

1. メッセージ・カタログXMLファイルを作成します。
24.4.1項「Oracle CEPサーバーでのメッセージ・カタログの使用」を参照してください。

2. 開発環境を設定します。
『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項を参照してください。

3. 次の構文を使用して、weblogic.i18ngenユーティリティを実行します。

java weblogic.i18ngen [options] [filelist]

説明:

- options: 表24-6を参照してください。

- filelist: このファイル・リストのファイルとディレクトリを処理します。ディレクトリが指定されている場合は、そのディレクトリのすべてのXMLファイルが処理されます。すべてのファイルの名前には、XMLの接尾辞が付いている必要があります。すべてのファイルはmsgcat.dtd構文に準拠している必要があります。weblogic.i18ngenは、実際に生成されたファイルに対して、完全修飾名リスト(Javaソース)をstdoutに出力します。

表24-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 CEPサーバー・クラス・パスにあることを確認します。

6. 次のパッケージをOracle CEPアプリケーションにインポートします。

- weblogic.i18n.logging

- weblogic.logging

7. ログ・メッセージ・リソース・バンドルを含むアプリケーションをアセンブルおよびデプロイします。

24.5 Oracle CEPアプリケーションのデプロイ

Oracle CEPアプリケーションをアセンブルし、それをOracle CEPサーバー・ドメインにデプロイします。

この項では次について説明します:

- 24.5.1項「Oracle CEP IDE for Eclipseを使用してOracle CEPアプリケーションをデプロイする方法」

- 24.5.2項「Oracle CEP Visualizerを使用してOracle CEPアプリケーションをデプロイする方法」

- 24.5.3項「デプロイヤ・ユーティリティを使用してOracle CEPアプリケーションをデプロイする方法」

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPスタンドアロン・サーバー・ドメインへのアプリケーションのデプロイに関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のマルチサーバー・ドメインへのOracle CEPアプリケーションのデプロイに関する項

24.5.1 Oracle CEP IDE for Eclipseを使用してOracle CEPアプリケーションをデプロイする方法

Oracle CEP IDE for Eclipseを使用して、Oracle CEPアプリケーションをデプロイします。

Oracle CEP IDE for Eclipseを使用して、スタンドアロンまたはマルチサーバー・ドメインのいずれかにアプリケーションをデプロイします。

注意:

外部ステージを使用する場合、24.2.3項「外部ステージによるアプリケーションのアセンブル」に示しているように、依存関係ステージのデプロイメントと再デプロイメントを管理するルールに注意してください。

Oracle CEP IDE for Eclipseを使用してOracle CEPアプリケーションをデプロイするには:

1. Oracle CEPアプリケーションのアセンブル
24.2項「Oracle CEPアプリケーションのアセンブル」を参照してください。

2. アプリケーションをデプロイするには、Oracle CEP IDE for Eclipseを使用します。
5.3.6項「Oracle CEPサーバーにアプリケーションをデプロイする方法」を参照してください。

24.5.2 Oracle CEP Visualizerを使用してOracle CEPアプリケーションをデプロイする方法

Oracle CEPアプリケーションをOracle CEPサーバー・ドメインにデプロイする最も簡単な方法は、Oracle CEP Visualizerを使用することです。

Oracle CEP Visualizerを使用して、スタンドアロンまたはマルチサーバー・ドメインのいずれかにアプリケーションをデプロイできます。

注意:

外部ステージを使用する場合、24.2.3項「外部ステージによるアプリケーションのアセンブル」に示しているように、依存関係ステージのデプロイメントと再デプロイメントを管理するルールに注意してください。

Oracle CEP Visualizerを使用してOracle CEPアプリケーションをデプロイするには:

1. Oracle CEPアプリケーションのアセンブル
24.2項「Oracle CEPアプリケーションのアセンブル」を参照してください。

2. Oracle CEP Visualizerを起動します。
5.3.9項「Oracle CEP IDE for EclipseからOracle CEP Visualizerを起動する方法」を参照してください。

3. Oracle CEP Visualizerを使用してアプリケーションをデプロイします。
『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のアプリケーションのデプロイに関する項を参照してください。

24.5.3 デプロイヤ・ユーティリティを使用してOracle CEPアプリケーションをデプロイする方法

次の手順では、デプロイヤ・コマンド・ライン・ユーティリティを使用してOracle CEPにアプリケーションをデプロイする方法について説明します。

デプロイヤを使用して、スタンドアロンまたはマルチサーバー・ドメインのいずれかにアプリケーションをデプロイできます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のデプロイヤ・コマンドライン・リファレンスに関する項を参照してください。

注意:

外部ステージを使用する場合、24.2.3項「外部ステージによるアプリケーションのアセンブル」に示しているように、依存関係ステージのデプロイメントと再デプロイメントを管理するルールに注意してください。

デプロイヤ・ユーティリティを使用してOracle CEPアプリケーションをデプロイするには:

1. Oracle CEPアプリケーションのアセンブル
24.2項「Oracle CEPアプリケーションのアセンブル」を参照してください。

2. 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項の説明に従って、コマンド・ウィンドウを開き、環境を設定します。

3. CLASSPATH変数を更新して、ORACLE_CEP_HOME/ocep_11.1/binディレクトリにあるwlevsdeploy.jar JARファイルを指定します。ORACLE_CEP_HOMEは、/oracle_cepなどの主なOracle CEPインストール・ディレクトリを示します。

注意:

リモート・コンピュータ上でデプロイヤを実行する場合、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のリモートでのデプロイヤ・ユーティリティの実行に関する項を参照してください。

4. アプリケーションをデプロイするOracle CEPインスタンスでJettyが構成されていることを確認してください。
詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPのJettyの構成に関する項を参照してください。

5. コマンド・ウィンドウで、次の構文を使用して、アプリケーションをインストールするデプロイヤ・ユーティリティを実行します(実際には、コマンドは1行に1つです)。

prompt> java -jar wlevsdeploy.jar -url http://host:port/wlevsdeployer
-user user -password password -install application_jar_file

説明

- hostは、Oracle CEPが実行しているコンピュータのホスト名です。

- portは、Oracle CEPがリスニングしているポート番号であり、デフォルト値は9002です。
このポートは、Oracle CEPドメインを記述するDOMAIN_DIR/config/config.xmlファイルに指定されています。DOMAIN_DIRは、ドメイン・ディレクトリです。

ポート番号は、<Netio>要素の<Port>子要素の値です。

<Netio>
<Name>NetIO</Name>
<Port>9002</Port>
</Netio>

- userは、Oracle CEP管理者のユーザー名です。

- passwordは、Oracle CEP管理者のパスワードです。

- application_jar_fileは、24.2項「Oracle CEPアプリケーションのアセンブル」の説明に従ってOSGiバンドルにアセンブルされたアプリケーションJARファイルです。このファイルは、デプロイヤ・ユーティリティを実行する同じコンピュータに置かれている必要があります。
たとえば、Oracle CEPはホスト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 CEPではアプリケーションが自動的に起動され、アダプタ・コンポーネントでは着信イベントのリスニングがただちに開始されます。

デプロイヤ・ユーティリティでは、アプリケーションJARファイルの再開、一時停止、更新、およびアンインストールや、マルチサーバー・ドメインの指定されたグループへのアプリケーションのデプロイなどの追加オプションが提供されます。詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のデプロイヤ・コマンドライン・リファレンスに関する項を参照してください。

注意:

サーバーがマルチサーバー・ドメインの一部の場合(クラスタリングが有効の場合)は、グループへのデプロイのみが可能です。サーバーがスタンドアロン・サーバー・ドメインの一部の場合(つまり、クラスタリングが無効の場合)は、グループにはデプロイできません。詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPマルチサーバー・ドメイン管理の概要に関する項を参照してください。

Oracle CEPは、deployments.xmlファイルを使用して、デプロイ済アプリケーションのOSGiバンドルのリストを内部的に維持します。このファイルは、DOMAIN_DIR/servernameディレクトリにあります。DOMAIN_DIRは、メイン・ドメイン・ディレクトリであり、アプリケーションのデプロイ先となるサーバー・インスタンスに対応します。servernameは、実際のサーバーです。このファイルの詳細は、付録B「デプロイメント・スキーマdeployment.xsd」を参照してください。この情報はあくまでも参考として示しています。deployments.xmlファイルを手動で更新することはお薦めしません。

25 ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテスト

この章では、Oracle Complex Event Processing (Oracle CEP)アプリケーションをテストするために、付属のロード・ジェネレータおよびcsvgenアダプタを使用する方法について説明します。

- 25.1項「ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテストの概要」

- 25.2項「ロード・ジェネレータ・ユーティリティの構成と実行」

- 25.3項「ロード・ジェネレータ・プロパティ・ファイルの作成」

- 25.4項「データ・フィード・ファイルの作成」

- 25.5項「アプリケーションのcsvgenアダプタの構成」

25.1 ロード・ジェネレータおよびcsvgenアダプタを使用したアプリケーションのテストの概要

ロード・ジェネレータは、データ・フィードをシミュレートするためにOracle CEPで提供される単純なユーティリティです。このユーティリティは、実世界のデータ・フィードに接続する必要がないため、アプリケーションのOracle CQLまたはEPLルールをテストする際に役立ちます。

ロード・ジェネレータは、サンプルのデータ・フィード情報が含まれたASCIIファイルを読込み、構成されたポートに各データ項目を送信します。ロード・ジェネレータではサンプル・データ・ファイルの項目が順番に読み込まれ、チャネルに挿入されます。末尾まで達したらデータ・ファイルの先頭に戻ることを繰り返し、これによってファイル内のデータ項目数に関係なく、連続するデータ・ストリームを使用できることが保証されます。送信データの速度、開始時点の速度、最終的な速度、最終的な速度に達するまでの時間を構成できます。

アプリケーションでは、着信データを読み込む際に、独自のアダプタの代わりにOracle CEPで提供されるcsvgenアダプタを使用する必要があります。これは、csvgenアダプタがload generatorで生成されたデータ・パケットを復号化するよう特別にコーディングされているためです。

アプリケーションを再デプロイした場合は、ロード・ジェネレータも再起動する必要があります。

テストおよびデバッグの詳細は、5.4項「Oracle CEPサーバー上で実行されているOracle CEPアプリケーションのデバッグ」を参照してください。

25.2 ロード・ジェネレータ・ユーティリティの構成と実行

このプロシージャでは、ロード・ジェネレータ・ユーティリティの構成方法と実行方法について説明します。

ロード・ジェネレータ・ユーティリティを構成および実行するには:

1. 必要に応じて、load generatorの特定の実行用の構成プロパティが含まれたプロパティ・ファイルを作成します。これらのプロパティでは、シミュレート・データが含まれたファイルの場所、ジェネレータがデータを供給するポートなどが指定されます。
Oracle CEPにはデフォルトのプロパティ値が適切である場合に使用できる、デフォルトのプロパティ・ファイルが用意されています。

25.3項「ロード・ジェネレータ・プロパティ・ファイルの作成」を参照してください。

2. 実際のデータ・フィード値が含まれたファイルを作成します。
25.4項「データ・フィード・ファイルの作成」を参照してください。

3. ロード・ジェネレータで生成されたデータ・フィードが正常に読み込まれるようにcsvgenアダプタを構成します。Oracle CEPアプリケーションを記述するEPNアセンブリ・ファイルでアダプタを構成します。
25.5項「アプリケーションのcsvgenアダプタの構成」を参照してください。

4. イベント・タイプを作成するためのビルダー・ファクトリを必ず構成します。イベント・タイプのビルダー・ファクトリを指定するタスクは通常はオプションですが、load generatorを使用する場合には必須です。
詳細は、第2章「イベント・タイプ・ビルダー・ファクトリの使用」を参照してください。

5. 『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』の開発環境の設定に関する項の説明に従って、コマンド・ウィンドウを開き、環境を設定します。

6. ORACLE_CEP_HOME\ocep_11.1\utils\load-generatorディレクトリに移動します。ORACLE_CEP_HOMEは、d:\oracle_cep.などのOracle CEPのメイン・インストール・ディレクトリです。

7. ステップ1で作成したプロパティ・ファイルを指定してロード・ジェネレータを実行し、シミュレートされたデータ・フィードを開始します。たとえば、プロパティ・ファイル名がc:\loadgen\myDataFeed.propの場合は、次のコマンドを実行します。

prompt> runloadgen.cmd c:\loadgen\myDataFeed.prop

25.3 ロード・ジェネレータのプロパティ・ファイルの作成

load generatorでは構成にASCIIプロパティ・ファイルが使用されます。プロパティには、サンプルのデータ・フィード値が含まれたファイルの場所、ユーティリティがデータ・フィードを送信するポートなどがあります。

Oracle CEPで提供されるデフォルトのプロパティ・ファイルcsvgen.propは、ORACLE_CEP_HOME\ocep_11.1\utils\load-generatorディレクトリにあります。ORACLE_CEP_HOMEは、d:\oracle_cepなどのOracle CEPメイン・インストール・ディレクトリです。

ファイルの形式は単純で、プロパティと値の各ペアが各行に置かれます。次の例は、デフォルトの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にデータ・フィードが送信されます。

次の表に、プロパティ・ファイルで設定できる追加のプロパティを示します。

表25-1 ロード・ジェネレータのプロパティ

プロパティ

説明

データ型

必須?

test.csvDataFile

データ・フィード値が含まれたファイルを指定します。

String

はい

test.port

load generatorがデータ・フィードを送信するポート番号。

それぞれの入力アダプタは、25.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

いいえ

25.4 データ・フィード・ファイルの作成

ロード・ジェネレータ・データ・フィード・ファイルは、Oracle CEPアプリケーションに登録されたイベント・タイプに対応するサンプルのデータ・フィード値を含みます。

例25-1はEmployeeEventを示し、例25-2はこのイベント・タイプに対応するロード・ジェネレータのデータ・フィード・ファイルを示します。

例25-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>

例25-2 EmployeeEventイベント・タイプのデータ・フィード・ファイル

Lucy,23,Madagascar
Nick,44,Canada
Amanda,12,Malaysia
Juliet,43,Spain
Horatio,80,Argentina

ロード・ジェネレータのデータ・フィード・ファイルの形式は簡単です。

- 特定のデータ・フィードの各項目を各行に配置します。

- データ・フィード項目の各フィールドをカンマで区切ります。

- コンマは文字列フィールドの一部として含みません。

- フィールド値の一部としてスペースが含まれているのでない限り、カンマの前後に余分なスペースを含めないでください。

- 整数、long、doubleおよびfloatなどの、データ・フィード・ファイルの文字列データおよび数値データのみを含みます。

- デフォルトでは、文字列フィールドの最大長は256文字です。
長い文字列を指定するには、例25-1で示すbirthplaceプロパティのように、event-typeにcharプロパティのlength属性を設定します。

注意:

ロード・ジェネレータはCSV仕様に完全には準拠していません(http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm)。

詳細は、「csvgenアダプタと使用するイベント・タイプ」を参照してください。

25.5 アプリケーションのcsvgenアダプタの構成

ロード・ジェネレータ・ユーティリティを使用する場合、Oracle CEPで提供されるcsvgenアダプタは、ロード・ジェネレータで生成されたデータ・パケットを読み込むように特別にコーディングされているため、アプリケーションではこのアダプタを使用する必要があります。

すべてのアダプタと同じように、アプリケーションのEPNアセンブリ・ファイルのwlevs:adapter要素を使用して、csvgenアダプタを登録します。独自のアダプタのかわりにcsvgenアダプタをプロバイダとして指定するために、provide属性をcsvgenに設定します。また、次の子タグを指定する必要があります。

- name属性portとvalue属性のconfigured_portがあるwlevs:instance-property要素。configured_portはロード・ジェネレータ・プロパティ・ファイルのtest.portプロパティに対応します。25.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>

このイベント・タイプは25.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になります。

イベント・タイプの詳細は、第2章「Oracle CEPイベント・タイプの作成」を参照してください。

26 イベント・インスペクタでのアプリケーションのテスト

この章では、イベント・インスペクタのサービスを使用して、Oracle Complex Event Processing (Oracle CEP)イベント処理ネットワーク(EPN)の任意のステージでイベントをトレースおよびインジェクトする方法について説明します。

- 26.1項「イベント・インスペクタでのアプリケーションのテストの概要」

- 26.2項「イベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成」

- 26.3項「イベントのインジェクト」

- 26.4項「イベントのトレース」

注意:

イベント・インスペクタのサービスは、Oracle CEP本番サーバーでは使用しません。開発するときにのみ使用します。

26.1 イベント・インスペクタでのアプリケーションのテストの概要

イベント・インスペクタのサービスを使用して次のことを実行できます:

- EPNのいずれかのステージからのイベントの表示

- EPNのいずれかのステージへのイベントのインジェクト

開発中にOracle CQL問合せのテストやデバッグを行うためにイベント・インスペクタのサービスを使用できます。

この項では次について説明します:

- 26.1.1項「イベントのトレース」

- 26.1.2項「イベントのインジェクト」

- 26.1.3項「イベント・インスペクタのイベント・タイプ」

- 26.1.4項「イベント・インスペクタHTTPパブリッシュ・サブスクライブ・チャネルおよびサーバー」

- 26.1.5項「イベント・インスペクタのクライアント」

テストおよびデバッグの詳細は、5.4項「Oracle CEPサーバー上で実行されているOracle CEPアプリケーションのデバッグ」を参照してください。

26.1.1 イベントのトレース

イベント・インスペクタのサービスを使用して、EPNのいずれかのステージから退出するイベントを表示します。

イベント・インスペクタのサービスは共通HTTPパブリッシュ・サブスクライブ・チャネルとサーバーを使用してイベントをトレースします。

トレース・イベントのbinding属性にはoutboundを設定する必要があります。

詳細は、次を参照してください:

- 26.1.3項「イベント・インスペクタのイベント・タイプ」

- 26.1.4項「イベント・インスペクタHTTPパブリッシュ・サブスクライブ・チャネルおよびサーバー」

- 26.4項「イベントのトレース」

26.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

- 26.1.3項「イベント・インスペクタのイベント・タイプ」

- 26.1.4項「イベント・インスペクタHTTPパブリッシュ・サブスクライブ・チャネルおよびサーバー」

- 26.3項「イベントのインジェクト」

26.1.3 イベント・インスペクタのイベント・タイプ

JavaBean、Java Class、MapEventおよびタプルのすべてのOracle CEPイベント・タイプがサポートされています。

イベント・インスペクタのサービスは、トレース・チャネルに公開する前にイベントをJavaScript Object Notation (JSON)形式に変換します。イベントはJSON形式でインジェクトする必要があります。

JSON形式のイベントは、例26-1に示す構造に準拠する必要があります。表26-1は必要な属性を示します。

例26-1 イベント・インスペクタJSONイベント

{
"event-type": "myEventType",
"operation": "insert",
"binding": "outbound",
"value":{
"firstname": "Jane",
"lastname": "Doe",
"phone": {
"code": 12345,
"number": "office"
},
}
}

表26-1 イベント・インスペクタJSONイベントの必要な属性

属性

説明

event-type

アプリケーション・アセンブリ・ファイルのevent-type-repositoryで定義されたOracle CEPイベントの名前。

operation

イベントのタイプを指定します。

- insert: 挿入イベント。

- delete: 削除イベント

- update: 更新イベント

- heartbeat: ハートビート・イベント

binding

次のうちの1つ:

- inbound: インジェクト・イベント。

- outbound: トレース・イベント。

value

event-typeで定義された1つ以上のJSON形式のイベント・プロパティ。

詳細は、次を参照してください:

- http://www.json.org/

- 1.1.2項「Oracle CEPイベント・タイプ」

- 26.1.1項「イベントのトレース」

- 26.1.2項「イベントのインジェクト」

26.1.4 イベント・インスペクタHTTPパブリッシュ・サブスクライブ・チャネルおよびサーバー

イベント・インスペクタのサービスは動的HTTPパブリッシュ・サブスクライブ(HTTP pub-sub)チャネル(config.xmlで構成なし)を使用します。次の名前がつけられています。

/SERVERNAME/APPLICATIONNAME/STAGENAME/DIRECTION

説明:

- SERVERNAME: Oracle CEP EPNステージが実行されているOracle CEPサーバーの名前です。

- APPLICATIONNAME: Oracle CEPアプリケーションの名前。

- STAGENAME: EPNステージの名前。

- DIRECTION: 次のいずれか:

- input: イベントをインジェクトする場合。

- output: イベントをトレースする場合。

例:

/server-1/myapp/MyInputAdapter/input

イベント・インスペクタのサービスは、HTTPパブリッシュ・サブスクライブ・サーバーを使用します。次のいずれかになります。

- ローカル: event-inspector-service要素でconfig.xmlファイルを構成し、このマシンで実行中のローカル・パブリッシュ・サブスクライブ・サーバーの名前でpubsub-server-name子要素を構成します。詳細は、26.2.1項「ローカル・イベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」を参照してください。

- リモート: event-inspector-service要素でconfig.xmlファイルを構成し、リモート・マシンで実行中のHTTPパブリッシュ・サブスクライブ・サーバーへのURLでpubsub-server-url子要素を構成します。詳細は、26.2.2項「リモート・イベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」を参照してください。

- デフォルト: config.xmlファイルで1つのみのHTTPパブリッシュ・サブスクライブ・サーバーが定義されていてローカルまたはリモートのHTTPパブリッシュ・サブスクライブ・サーバーが指定されていない場合、イベント・インスペクタ・サービスはデフォルトでローカルのHTTPパブリッシュ・サブスクライブ・サーバーを使用します。

イベント・インスペクタのサービスは同じHTTPパブリッシュ・サブスクライブ・チャネルとサーバーを使用してイベントをトレースしインジェクトします。

詳細は、次を参照してください:

- 26.1.1項「イベントのトレース」

- 26.1.2項「イベントのインジェクト」

26.1.5 イベント・インスペクタのクライアント

イベント・インスペクタ・サービスは次のクライアントをサポートします。

- 26.1.5.1項「Oracle CEP Visualizer」

26.1.5.1 Oracle CEP Visualizer

Oracle CEP Visualizerを使用してイベント・インスペクタ・サービスがアクセスできます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のイベント・インスペクタでのアプリケーションのテストに関する項を参照してください。

26.2 イベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成

ローカルまたはリモートのHTTPパブリッシュ・サブスクライブ・サーバーでイベント・インスペクタのサービスを構成できます。

- 26.2.1項「ローカルのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」

- 26.2.2項「リモートのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」

コンポーネント構成ファイルでイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーを構成します。これらの構成ファイルの一般情報は、1.1.5項「コンポーネント構成ファイル」を参照してください。

config.xmlにHTTPパブリッシュ・サブスクライブ・サーバーが1つのみ定義されていて、ローカルまたはリモートのHTTPパブリッシュ・サブスクライブ・サーバーが指定されていない場合、イベント・インスペクタ・サービスはデフォルトでローカルのHTTPパブリッシュ・サブスクライブ・サーバーを使用します。詳細は、第8章「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタの構成」を参照してください。

26.2.1 ローカルのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法

コンポーネント構成ファイルに、ローカルのHTTPパブリッシュ・サブスクライブ・サーバーでイベント・インスペクタのサービスを構成します。26.2.2項「リモートのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」の説明に従って、リモートのHTTPパブリッシュ・サブスクライブ・サーバーを構成できます。

ローカルのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーを構成するには:

1. Oracle CEP IDE for EclipseのEPNエディタを開きます。
6.1項「EPNエディタを開く」を参照してください。

2. 構成ファイルと関連付けたいずれかのコンポーネントを右クリックし、「構成のソースに移動」を選択します。

3. 例26-2に示すように、event-inspector-service要素を追加します。

例26-2 イベント・インスペクタ・サービス・ローカルのHTTPパブリッシュ・サブスクライブ・サーバー

<event-inspector-service>
<name>myEventInspectorConfig</name>
<pubsub-server-name>myPubSub</pubsub-server-name>
</event-inspector-service>

例26-3に示すように、myPubSubのpubsub-server-name値は、ローカルのOracle CEPサーバーconfig.xmlファイルで定義されたhttp-pubsub要素のname子要素の値です。

例26-3 Oracle CEP組込みの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ファイルを保存して閉じます。

26.2.2リモートのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法

コンポーネント構成ファイルに、リモートのHTTPパブリッシュ・サブスクライブ・サーバーでイベント・インスペクタのサービスを構成します。26.2.1項「ローカルのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成方法」の説明に従って、ローカルのHTTPパブリッシュ・サブスクライブ・サーバーを構成できます。

リモートのイベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーを構成するには:

1. Oracle CEP IDE for EclipseのEPNエディタを開きます。
6.1項「EPNエディタを開く」を参照してください。

2. 構成ファイルと関連付けたいずれかのコンポーネントを右クリックし、「構成のソースに移動」を選択します。

3. 例26-4に示すように、event-inspector-service要素を追加します。

例26-4 イベント・インスペクタ・サービス・リモートのHTTPパブリッシュ・サブスクライブ・サーバー

<event-inspector-service>
<name>myEventInspectorConfig</name>
<pubsub-server-url>http://HOST:PORT/PATH</pubsub-server-url>
</event-inspector-service>

説明:

- HOST: リモートのOracle CEPサーバーのホスト名またはIPアドレスです。

- PORT: リモートのOracle CEPサーバーconfig.xmlファイルで定義されたリモートのOracle CEPサーバーnetioポートです。デフォルトは9002です。

- PATH: リモートのOracle CEPサーバーconfig.xmlファイルで定義されたhttp-pubsub要素pathの子要素の値です。

例26-3に示すhttp-pubsub構成の場合、有効なpubsub-server-urlは、次を参照してください。

http://remotehost:9002/pubsub

例26-5 Oracle CEP組込みの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ファイルを保存して閉じます。

26.3 イベントのインジェクト

イベント・インスペクタ・サービスHTTPパブリッシュ・サブスクライブ・サーバーを構成した後、イベントをインジェクトするためにイベント・インスペクタ・クライアントを使用できます。

この項では、イベントをインジェクトするためにイベント・インスペクタのサービスを使用する方法について説明します。次の項を参照してください。

- 26.3.1項「Oracle CEP Visualizerを使用してイベントをインジェクトする方法」

詳細は、次を参照してください:

- 26.3項「イベントのインジェクト」

- 26.2項「イベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成」

26.3.1 Oracle CEP Visualizerを使用してイベントをインジェクトする方法

EPNのいずれかのステージでイベントをインジェクトするためにOracle CEP Visualizerが使用できます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』の単一イベントをイベント・インスペクタ・サービス動的チャネルにインジェクトする方法に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のJSON文字列としてイベントをイベント・インスペクタ・サービス動的チャネルにインジェクトする方法に関する項

26.4 イベントのトレース

イベント・インスペクタ・サービスHTTPパブリッシュ・サブスクライブ・サーバーが構成した後、イベントをトレースするためにイベント・インスペクタ・クライアントを使用できます。

この項では、イベントをトレースするためにイベント・インスペクタのサービスを使用する方法について説明します。次の項を参照してください。

- 26.4.1項「Oracle CEP Visualizerを使用してイベントをトレースする方法」

詳細は、次を参照してください:

- 26.4項「イベントのトレース」

- 26.2項「イベント・インスペクタHTTPパブリッシュ・サブスクライブ・サーバーの構成」

26.4.1 Oracle CEP Visualizerを使用してイベントをトレースする方法

Oracle CEP Visualizerを使用して、EPNのいずれかのステージから退出するイベントをトレースできます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』の動的チャネルでイベントをトレースする方法に関する項

27 パフォーマンス・チューニング

この章では、パーティション化およびバッチ処理を使用してOracle Complex Event Processing (Oracle CEP)アプリケーションのパフォーマンスを向上するための技術について、および高可用性パフォーマンスのチューニングに固有の情報について説明します。

- 27.1項「EPNパフォーマンスのチューニング」

- 27.2項「高可用性パフォーマンスのチューニング」

27.1 EPNパフォーマンスのチューニング

EPNを作成する場合は、次のパフォーマンス・チューニング・オプションを検討します。

- 27.1.1項「イベント・パーティショナ・チャネル」

- 27.1.2項「チャネルのバッチ処理」

- 27.1.3項「ActiveActiveGroupBeanを使用したスケーラビリティ」

詳細は、第22章「スケーラビリティについて」を参照してください。

27.1.1 イベント・パーティショナ・チャネル

イベント・パーティショナ・チャネルを構成すると、スケーラビリティを向上させることができます。イベント・パーティショナを使用するようにチャネルを構成した場合、受信イベントが到着するたびにチャネルはリスナーを選択し、各リスナーに各イベントをブロードキャストするのではなく、そのリスナーにイベントをディスパッチし、チャネルのイベントをその出力イベント・シンク全体でパーティション化します。

詳細は、22.2.1項「EventPartitioner」を参照してください。

27.1.2 チャネルのバッチ処理

デフォルトでは、チャネルはイベントが到達した時点でイベントを処理します。このかわりに、wlevs:channel属性batchingをtrueに設定すると、タイムスタンプが同じイベントをまとめてバッチ処理するようチャネルを構成することができます。

詳細は、9.1.6項「バッチ処理チャネル」を参照してください。

27.1.3 ActiveActiveGroupBeanを使用したスケーラビリティ

com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanを使用して、ActiveActiveGroupBeanで作成された通知グループによって、Oracle CEPアプリケーションの受信JMSストリームをパーティション化できます。

詳細は、22.2.2項「ActiveActiveGroupBean」を参照してください。

27.2高可用性パフォーマンスのチューニング

マルチサーバー・ドメインにデプロイするために高可用性アプリケーションを作成するときは、次のパフォーマンス・チューニング・オプションを考慮します。

- 27.2.1項「ホスト構成」

- 27.2.2項「高可用性入力アダプタおよびサービス品質」

- 27.2.3項「高可用性入力アダプタの構成」

- 27.2.4項「ブロードキャスト出力アダプタの構成」

- 27.2.5項「Oracle Coherenceパフォーマンス・チューニング・オプション」

詳細は、20.3項「高可用性用Oracle CEPアプリケーションの設計」を参照してください。

27.2.1 ホスト構成

リカバリ時間に関係なく、高可用性のみを必要としている場合、小規模であまり装備されていないホストをセカンダリとして使用できます。ただし、高可用性パフォーマンスを最大限にするために、マルチサーバー・ドメイン内のすべてのホストは同じ、つまり、番号とプロセッサ・タイプが同じ、メモリー・サイズ、番号とディスク領域が同じであることを確認します。

27.2.2 高可用性入力アダプタおよびサービス品質

Oracle CEP高可用性入力アダプタはすべての高可用性サービス品質オプションに適用できます。ただし、高可用性入力アダプタはパフォーマンスのオーバーヘッドを増加するため、一部の高可用性サービス品質オプション(20.2.1項「シンプル・フェイルオーバー」および20.2.2項「バッファリングを使用するシンプル・フェイルオーバー」など)には適しません。

イベントからアプリケーション時間を使用している場合、入力アダプタを使用する必要はありません。パフォーマンスの観点からみた場合、通常はイベントからのアプリケーション時間を使用することをお薦めします。

27.2.3 高可用性入力アダプタの構成

プライマリ・サーバーがイベント・メッセージをブロードキャストするために要する時間とセカンダリ・サーバーがこれらのメッセージを処理するために要する時間を短縮するには、batch-sizeを増加することを考慮します。

プライマリ・サーバーが多数のイベントがあるイベント・メッセージをブロードキャストする前に失敗した場合、batch-sizeを増加すると、重複イベントとイベントのミスの可能性が増加します。

詳細は、表21-3「高可用性入力アダプタ用ha-inbound-adapterの子要素」を参照してください。

27.2.4 ブロードキャスト出力アダプタの構成

プライマリ・サーバーがトリミング・メッセージをブロードキャストするために要する時間とセカンダリ・サーバーがこれらのメッセージを処理するために要する時間を短縮するには、trimming-intervalを削減することを考慮します。

trimming-intervalが減少すると、新しいプライマリ・サーバーのメモリー内キューが古いプライマリ・サーバーに対して期限切れのためにリカバリ時間が増加する場合があります。

詳細は、表21-9「ブロードキャスト出力アダプタ用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を参照してください。

第8部

Oracle CEPリファレンス

第8部の章の内容は次のとおりです。

- 付録A「SpringおよびOSGiに関する追加情報」

- 付録B「Oracle CEPスキーマ」

- 付録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 CEPメタデータ注釈リファレンス」

- 付録J「Oracle CEP IDE for Eclipseのチュートリアル」

A SpringおよびOSGiに関する追加情報

この付録では、Oracle Complex Event Processing (Oracle CEP)アプリケーションを構築する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 CEPスキーマ

この付録では、Oracle Complex Event Processing (Oracle CEP)の構成およびデプロイメントのXMLファイルの背後にあるスキーマを、それぞれの簡単な例とともに示します。

- 付録B「EPNアセンブリ・スキーマspring-wlevs-v11_1_1_6.xsd」

- 付録B「コンポーネント構成スキーマwlevs_application_config.xsd」

- 付録B「デプロイメント・スキーマdeployment.xsd」

- 付録B「サーバー構成スキーマwlevs_server_config.xsd」

B.1 EPNアセンブリ・スキーマspring-wlevs-v11_1_1_6.xsd

EPNアセンブリ・ファイルを使用して、Oracle CEPアプリケーションを構成するコンポーネントおよび各コンポーネントが互いに接続する方法、つまりイベント処理ネットワークを宣言します。EPNアセンブリ・ファイルは、標準のSpringコンテキスト・ファイルの拡張です。また、このファイルを使用して、アプリケーションのアダプタ・コンポーネントおよびPOJOコンポーネントを実装するJavaクラスを登録し、アプリケーションおよびEPLルール全体で使用するイベント・タイプを登録して、環境内でOracle CEP固有サービスを参照します。

spring-wlevs-v11_1_1_6.xsdファイルはEPNアセンブリ・ファイルの構造を説明します。

このスキーマ・ファイルはORACLE_CEP_HOME\ocep_11.1\xsdディレクトリにあります。ORACLE_CEP_HOMEはd:\oracle_cepなどのOracle CEPメイン・インストール・ディレクトリです。

詳細は、付録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 CEP 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 CEPアプリケーションには、1つ以上のコンポーネント構成ファイルがMETA-INF/wlevsディレクトリが含まれています。コンポーネント構成ファイルを使用して、アダプタ、チャネル、プロセッサなどのOracle CEPコンポーネントのデフォルト構成をオーバーライドします。

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 CEPメイン・インストール・ディレクトリです。

詳細は、付録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 CEPインスタンスのデプロイメント・ファイルは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 CEPメイン・インストール・ディレクトリです。

詳細は、付録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 CEPサーバー構成ファイルであるconfig.xmlは、DOMAIN_DIR/servername/configディレクトリにあります。 DOMAIN_DIRはメイン・ドメイン・ディレクトリを指し、servernameは特定のサーバー・インスタンスを指します。Oracle CEPインスタンスの構成を変更する場合は、このファイルを手動で更新し、サーバー構成要素を追加または削除することができます。

welvs_server_config.xsdスキーマ・ファイルはサーバー構成ファイルの構造を説明します。

このスキーマ・ファイルはORACLE_CEP_HOME\ocep_11.1\xsdディレクトリにあります。ORACLE_CEP_HOMEはd:\oracle_cepなどのOracle CEPメイン・インストール・ディレクトリです。

詳細は、付録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 Complex Event Processing (Oracle CEP)イベント処理ネットワーク(EPN)を作成するコンポーネントを宣言するのに使用するアセンブリXMLファイルの背後にあるスキーマである、spring-wlevs-v11_1_1_6.xsdスキーマの要素へのリファレンスを示します。

- C.1項「Oracle CEPアプリケーション・アセンブリ要素の概要」

- B.1項「EPNアセンブリ・スキーマspring-wlevs-v11_1_1_6.xsd」

C.1 Oracle CEPアプリケーション・アセンブリ要素の概要

Oracle CEPには多数のアプリケーション・アセンブリ要素が用意されており、それらの要素をアプリケーションのEPNアセンブリ・ファイル内で使用して、イベント・タイプを登録し、イベント処理ネットワークのコンポーネントを宣言し、各コンポーネントがどのように相互にリンクしているかを指定します。EPNアセンブリ・ファイルは、標準のSpringコンテキスト・ファイルの拡張です。

C.1.1要素の階層

Oracle CEPアプリケーション・アセンブリ要素は、次の階層で構成されます。

beans
Standard Spring and OSGi elements such as bean, osgi-service, and so on.
wlevs:event-type-repository
wlevs:event-type
wlevs:metadata
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 CEP要素を使用したEPNアセンブリ・ファイルの例

次に示すサンプルのEPNアセンブリ・ファイルは、HelloWorldアプリケーションのものであり、様々なOracle CEP要素の使用方法を示しています。

<?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 CEPは、アダプタがイベントを受け取ったときにこのメソッドを呼び出します。

String

いいえ

init-method

ライフサイクルのinitメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle CEPは、指定されたすべてのインスタンス・プロパティを設定した後、このメソッドを呼び出します。このメソッドを使用すると、アダプタ・インスタンスは、すべてのBeanプロパティが設定済であるときに限って可能な初期化を実行し、構成が正しくない場合は例外をスローできます。

String

いいえ

activate-method

ライフサイクルのactivateメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle CEPは、アダプタの動的構成が完了した後で、このメソッドを呼び出します。このメソッドを使用すると、アダプタ・インスタンスは、すべての動的Beanプロパティが設定済であり、かつEPNが接続済であるときに限って可能な初期化を実行できます。

String

いいえ

suspend-method

ライフサイクルのsuspendメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle CEPは、アプリケーションが一時停止されたときに、このメソッドを呼び出します。

String

いいえ

destroy-method

ライフサイクルのdestroyメソッドに対応したアダプタ実装のメソッドを指定します。

Oracle CEPは、アプリケーションが停止したときに、このメソッドを呼び出します。

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 CEPサーバーは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 Complex 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 CEPは、一意キー値をキーとして使用してキャッシュに到達するイベントを挿入します。

key-class属性を使用してキー・クラスを指定した場合、この属性はオプションです。key-propertiesとkey-classのどちらも指定しない場合、Oracle CEPは、イベント・オブジェクトをキャッシュに挿入するときにキーと値の両方としてイベント・オブジェクトそのものを使用します。

String

いいえ。

key-class

キーが複合キーである場合に、キャッシュのキーに使用するJavaクラスの名前を指定します。

key-properties属性を指定しない場合、key-classのすべてのプロパティはキー・プロパティであると想定されます。key-propertiesとkey-classのどちらも指定しない場合、Oracle CEPは、イベント・オブジェクトをキャッシュに挿入するときにキーと値の両方としてイベント・オブジェクトそのものを使用します。

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 CEPネイティブ・キャッシングの実装であり、この実装ではインメモリー・ストアを使用します。

String

いいえ。

class

このキャッシング・システムを実装するJavaクラスを指定します。この属性を使用して、Oracle CEPのネイティブの実装ではないサード・パーティの実装を指定します。

この属性を指定した場合、サード・パーティの実装コードがOracle CEPアプリケーション・バンドル自体の内部に存在すると想定されます。この属性が参照するクラス・ファイルは、com.bea.wlevs.cache.api.CachingSystemインタフェースを実装する必要があります。

providerとclassのどちらの属性も指定しない場合、デフォルト値はローカルな単一JVMキャッシュ用Oracle CEPネイティブ・キャッシングの実装であり、この実装ではインメモリー・ストアを使用します。

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です。

詳細は、9.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

リレーションの主キーを「,」または空白で区切ったイベント・プロパティ名のリストとして指定します。

詳細は、9.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:event-bean

この要素を使用して、イベントBeanがイベント処理ネットワーク(EPN)の一部であることをSpringアプリケーション・コンテキストに対して宣言します。イベントBeanはOracle CEPコンテナによって管理されます。これは、Spring BeanがSpringフレームワークによって管理されるのと似ています。多くの点で、イベントBeanとSpring Beanは類似しており、EPNでどちらを使用するかは開発者の判断に任されています。Springへのレガシー統合にはSpring Beanを使用します。Oracle CEPの追加機能を最大限活用するには、イベントBeanを使用します。

たとえば、Oracle CEPモニタリング・フレームワークを使用してイベントBeanをモニターできます。また、構成フレームワーク・メタデータ注釈を利用したり、イベントBeanで渡されるイベントを記録および再生することもできます。イベントBeanは、Oracle CEP APIインタフェースを実装するのではなく、EPNアセンブリ・ファイル宣言にメソッドを指定することによって、Oracle CEP Beanライフサイクルに参加することもできます。

C.11.1子要素

wlevs:event-beanアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:listener

- wlevs:instance-property

- wlevs:property

C.11.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 CEPインタフェースの実装は必要ありません。

providerまたはclass属性のどちらかを指定する必要がありますが、両方は指定できません。両方を指定すると例外が発生します。

provider

サービス・プロバイダを指定します。

この場合、この特定のプロバイダ名で登録されたEDEファクトリがアプリケーション内に存在する必要があります。

providerまたはclass属性のどちらかを指定する必要がありますが、両方は指定できません。両方を指定すると例外が発生します。

String

いいえ。

onevent-method

ライフサイクルのonEventメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle CEPは、イベントBeanがイベントを受け取ったときにこのメソッドを呼び出します。

このライフサイクル属性を使用すると、イベントBean実装によるOracle CEPインタフェースの明示的な実装は必要ありません。

String

いいえ

init-method

ライフサイクルのinitメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle CEPは、指定されたすべてのインスタンス・プロパティを設定した後、このメソッドを呼び出します。このメソッドを使用すると、Beanインスタンスは、すべてのBeanプロパティが設定済であるときに限って可能な初期化を実行し、構成が正しくない場合は例外をスローできます。

このライフサイクル属性を使用すると、イベントBean実装によるOracle CEPインタフェースの明示的な実装は必要ありません。

String

いいえ

activate-method

ライフサイクルのactivateメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle CEPは、Beanの動的構成が完了した後で、このメソッドを呼び出します。このメソッドを使用すると、Beanインスタンスは、すべての動的Beanプロパティが設定済であり、かつEPNが接続済であるときに限って可能な初期化を実行できます。

このライフサイクル属性を使用すると、イベントBean実装によるOracle CEPインタフェースの明示的な実装は必要ありません。

String

いいえ

suspend-method

ライフサイクルのsuspendメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle CEPは、アプリケーションが一時停止されたときに、このメソッドを呼び出します。

このライフサイクル属性を使用すると、イベントBean実装によるOracle CEPインタフェースの明示的な実装は必要ありません。

String

いいえ

destroy-method

ライフサイクルのdestroyメソッドに対応したイベントBean実装のメソッドを指定します。

Oracle CEPは、アプリケーションが停止したときに、このメソッドを呼び出します。

このライフサイクル属性を使用すると、イベントBean実装によるOracle CEPインタフェースの明示的な実装は必要ありません。

String

いいえ

C.11.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.12 wlevs:event-type-repository

この要素を使用して、複数のwlevs:event-type要素をまとめてグループ化します。各要素は、アプリケーション全体で使用するイベント・タイプを登録するために使用されます。

この要素には、属性はありません。

C.12.1子要素

wlevs:event-type-repositoryアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:event-type

C.12.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.13 wlevs:event-type

Oracle CEPアプリケーションで使用するイベント・タイプの定義を指定します。一度アプリケーションのイベント・タイプを定義すると、定義したイベント・タイプをアダプタ・クラスおよびビジネス・クラスのPOJO内で、またOracle CQLおよびEPLルールで参照します。

次の方法でイベント・タイプを定義できます。

- イベント・タイプを表現するJavaBeanクラスを作成し、その完全修飾したクラス名を、wlevs:class子要素を使用して指定します。

- wlevs:metadata子要素を使用してデータ型のプロパティを指定し、Oracle CEPで実行時にJavaクラスを自動的に作成できるようにします。

wlevs:classまたはwlevs:metadataのどちらかをwlevs:event-typeの子として指定できますが、両方を同時に指定できません。

wlevs:property子要素を使用して、イベント・タイプに適用するカスタム・プロパティを指定できます。

wlevs:class子タグを使用してイベント・タイプを定義することをお薦めします。そうすることで、指定したJavaBeanクラスを再利用でき、イベント・タイプの形を正確に制御できます。

C.13.1子要素

wlevs:event-typeアプリケーション・アセンブリ要素は、次の子要素をサポートします。

- wlevs:metadata

- wlevs:property

C.13.2属性

表C-11は、wlevs:event-typeアプリケーション・アセンブリ要素の属性を示しています。

表C-11 wlevs:event-typeアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

id

このイベント・タイプの一意の識別子を指定します。

この属性を指定しない場合は、Oracle CEPによって識別子が自動的に生成されます。

String

いいえ。

type-name

このイベント・タイプの名前を指定します。

これは、アダプタ、ビジネスPOJO、またはOracle CQLやEPLルール内でイベント・タイプを参照するときに使用する名前です。

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クラスに適合する必要があります。

詳細は、2.1.3項「イベント・タイプ・データ型」を参照してください。

C.14 wlevs:expression

イベント処理のアプリケーション・タイムスタンプとして使用するwlevs:application-timestampedに算術式を指定するためにこの要素を使用します。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のarith_exprに関する項を参照してください。

C.14.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.15 wlevs:factory

この要素を使用して、ファクトリ・クラスをサービスとして登録します。この要素を使用することによりアプリケーションのSpring-OSGiインタフェースへの依存を軽減します。

このファクトリのJavaソースでcom.bea.wlevs.ede.api.Factoryインタフェースを実装する必要があります。

ファクトリ要素ではサービスのプロパティを指定できません。サービスのプロパティを指定する必要がある場合は、かわりにSpring- OSGi osgi:service要素を使用する必要があります。

この要素には、子要素はありません。

C.15.1属性

表C-12は、wlevs:factoryアプリケーション・アセンブリ要素の属性を示しています。

表C-12 wlevs:factoryアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

class

ファクトリを実装するJavaクラスを指定します。このクラスは、com.bea.wlevs.ede.api.Factoryインタフェースを実装する必要があります。

String

はい。

provider-name

このプロバイダの名前を指定します。後で、このファクトリを使用するコンポーネント内でこの名前を参照します。

String

はい。

C.15.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:factory要素の使用方法を示しています。

<wlevs:factory provider-name="myEventSourceFactory"
class="com.customer.MyEventSourceFactory" />

この例では、com.customer.MyEventSourceFactoryによって実装されたファクトリは、myEventSourceFactoryというプロバイダ名になっています。

C.16 wlevs:function

この要素を使用して、プロセッサ用のユーザー定義の関数を含むBeanを指定します。Oracle CEPは「単一行」および「集計」関数の両方をサポートします。

この要素は常に、ユーザー定義の関数を実装する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 Complex Event Processing CQL言語リファレンス』のユーザー定義関数に関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing EPL言語リファレンス』のEPL参照: 関数に関する項

C.16.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.16.2 例

次の例は、Oracle CQLおよびEPLプロセッサでのwlevs:function要素およびその属性の使用方法を示しています。

- C.16.2.1項「Oracle CQLプロセッサ上の単一行のユーザー定義関数」

- C.16.2.2項「EPLプロセッサ上の単一行のユーザー定義関数」

- C.16.2.3項「Oracle CQLプロセッサ上の集計のユーザー定義関数」

- C.16.2.4項「EPLプロセッサ上の集計のユーザー定義関数」

- C.16.2.5項「実装クラスの指定: ネストしたBeanまたはリファレンス」

C.16.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.16.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.16.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.16.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.16.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.17 wlevs:instance-property

この要素は子要素であるコンポーネントのcreateステージ・インスタンスに適用するプロパティを指定します。これにより、ユーザー定義のステージ・プロパティの宣言的な構成が可能になります。

たとえば、wlevs:instance-propertyをwlevs:event-beanに指定する場合、Oracle CEPでは該当する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.17.1子要素

次のいずれかのSpring標準要素をwlevs:instance-property要素の子要素として指定できます。

- meta

- bean

- ref

- idref

- value

- null

- list

- set

- map

- props

C.17.2属性

表C-14は、wlevs:instance-propertyアプリケーション・アセンブリ要素の属性を示しています。

表C-14 wlevs:instance-propertyアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

name

JavaBeanのネーミング・ルールに従ってプロパティの名前を指定します。

String

はい。

ref

ネストされた<ref bean='...'/>要素へのショートカットです。

String

いいえ。

value

ネストされた<value>...</value>要素へのショートカットです。

String

いいえ。

C.17.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 CEPから「無効なプロパティ」例外がスローされます。その場合、setter名はsetObjになります。

C.18 wlevs:listener

この要素を子とするコンポーネントにリスニングするコンポーネントを指定します。他の任意のコンポーネントのインスタンスをリスナーにできます。また、特定のwlevs:listenerコンポーネント内にコンポーネントの定義をネストして、親にリスニングするコンポーネントを指定できます。

注意:

ネストされた定義は、動的構成または動的モニターには使用できません。

この要素は、常にwlevs:adapter、wlevs:processor、wlevs:channelまたはwlevs:caching-systemの子です。

C.18.1属性

表C-15は、wlevs:listenerアプリケーション・アセンブリ要素の属性を示しています。

表C-15 wlevs:listenerアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

ref

親コンポーネントをリスニングするコンポーネントを指定します。

この属性は、リスナー・コンポーネントのid属性の値に設定します。

リスナーをネストする場合は、この属性を指定しないでください。

String

いいえ。

C.18.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.19 wlevs:metadata

フィールドをSpring entry要素のグループとしてリストし、イベント・タイプの定義を指定します。イベント・タイプをこの方法で定義すると、Oracle CEPにより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.19.1子要素

wlevs:metadata要素は、1つ以上の標準Spring entry子要素を含むことができます。詳細は、http://www.springframework.org/schema/beans/spring-beans-2.0.xsdを参照してください。

C.19.2属性

表C-16は、wlevs:metadataアプリケーション・アセンブリ要素の属性を示しています。

表C-16 wlevs:metadataアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

key-type

ネストされたentry要素のJavaデータ型を表現するデフォルトの完全修飾したクラス名です。

この属性は、entry要素をネストした場合にのみ使用できます。

String

いいえ。

C.19.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.20 wlevs:processor

この要素を使用して、Springアプリケーション・コンテキストに対してプロセッサを宣言します。

C.20.1子要素

wlevs:processor Spring要素は、次の子要素をサポートします。

- wlevs:instance-property

- wlevs:listener

- wlevs:property

- wlevs:cache-source

- wlevs:table-source

- wlevs:function

C.20.2属性

表C-17は、wlevs:processorアプリケーション・アセンブリ要素の属性を示しています。

表C-17 wlevs:processorアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

id

このコンポーネントの一意の識別子。

この識別子は、このプロセッサのXML構成ファイルでの<name>要素に対応している必要があります。そうすることで、ネットワークのどのプロセッサ・コンポーネントに対してどのOracle CQLまたはEPLルールを実行するかをOracle CEPに指定します。

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.20.3 例

次の例は、EPNアセンブリ・ファイルでのwlevs:processor要素の使用方法を示しています。

<wlevs:processor id="spreader" />

この例は、spreaderというIDを持つプロセッサを宣言する方法を示しています。つまり、このプロセッサのOracle CQLルールを含むプロセッサ構成ファイル内で、name要素に値spreaderが含まれている必要があります。そうすることで、この特定のプロセッサに対してどのOracle CQLまたはEPLルールを登録する必要があるかをOracle CEPに指定します。

C.21 wlevs:property

イベント・タイプに適用するカスタム・プロパティを指定します。

たとえば、wlevs:propertyをwlevs:event-beanに指定する場合、Oracle CEPでは該当する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.21.1子要素

次のいずれかのSpring標準要素をwlevs:property要素の子要素として指定できます。

- meta

- bean

- ref

- idref

- value

- null

- list

- set

- map

- props

C.21.2属性

表C-18は、wlevs:propertyアプリケーション・アセンブリ要素の属性を示しています。

表C-18 wlevs:propertyアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

name

JavaBeanのネーミング・ルールに従ってプロパティの名前を指定します。

String

はい。

ref

ネストされた<ref bean='...'/>要素へのショートカットです。

String

いいえ。

value

ネストされた<value>...</value>要素へのショートカットです。

String

いいえ。

C.21.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.22 wlevs:source

このコンポーネントのイベント・ソース、つまりイベントの発生元であるコンポーネントを指定します。イベント・ソースを指定することは、このコンポーネントを別のコンポーネントのイベント・リスナーとして指定するのと同等です。

また、特定のwlevs:sourceコンポーネント内にコンポーネントの定義をネストして、コンポーネント・ソースを指定できます。

注意:

ネストされた定義は、動的構成または動的モニターには使用できません。

この要素は、wlevs:channelまたはwlevs:processorの子です。

C.22.1属性

表C-19は、wlevs:sourceアプリケーション・アセンブリ要素の属性を示しています。

表C-19 wlevs:sourceアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

ref

この要素が子であるチャネルのソースを指定します。

この属性は、ソース・コンポーネントのid属性の値に設定します。

この属性は、ソースをネストする場合には指定しません。

String

いいえ。

C.22.2 例

次の例は、EPNアセンブリ・ファイルでのwlevs:source要素の使用方法を示しています。

<wlevs:channel id="helloworldInstream">
<wlevs:listener ref="helloworldProcessor"/>
<wlevs:source ref="helloworldAdapter"/>
</wlevs:channel>

この例では、idがhelloworldAdapterであるコンポーネントが、helloworldInstreamというチャネル・コンポーネントのソースです。

C.23 wlevs:table

1つ以上のプロセッサ・コンポーネントにデータを提供するリレーショナル・データベース表を指定します。プロセッサ・コンポーネントは、表を直接参照するOracle CQL問合せに関連付けられます。

C.23.1属性

表C-20は、wlevs:tableアプリケーション・アセンブリ要素の属性を示しています。

表C-20 wlevs:tableアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

id

このコンポーネントの一意の識別子。

この識別子は、この表のXML構成ファイル内の<name>要素に対応している必要があります。

String

はい。

event-type

イベント・タイプ・リポジトリで定義されているようにこの表に関連付けられているイベント・タイプです。

String

はい。

data-source

このデータベース表へのアクセスに使用されるOracle CEPサーバーの構成ファイルで定義されるリレーショナル・データ・ソース名です。

String

はい。

C.23.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.24 wlevs:table-source

このプロセッサ・コンポーネントにデータを提供するリレーショナル・データベース表を指定します。プロセッサ・コンポーネントは、表を直接参照するOracle CQL問合せに関連付けられます。

この要素は、wlevs:processor要素のみの子です。

C.24.1属性

表C-21は、wlevs:table-sourceアプリケーション・アセンブリ要素の属性を示しています。

表C-21 wlevs:table-sourceアプリケーション・アセンブリ要素の属性

属性

説明

データ型

必須?

ref

プロセッサ・コンポーネントのデータのソースであるリレーショナル・データベース表を指定します。

この属性は、wlevs:table要素のid属性の値に設定します。

String

はい。

C.24.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 Complex Event Processing (Oracle CEP)のアプリケーション・コンポーネントを構成するのに使用するXMLファイルの背後にあるスキーマである、wlevs_application_config.xsdスキーマの要素へのリファレンスを示します。

- D.1項「Oracle CEPコンポーネント構成要素の概要」

- B.2項「コンポーネント構成スキーマ wlevs_application_config.xsd」。

D.1 Oracle CEPコンポーネント構成要素の概要

Oracle CEPはEPNアセンブリ・ファイルで宣言するコンポーネントの特性を定義するために使用する多数のコンポーネント構成要素を提供します。

D.1.1 要素の階層

最上位レベルのOracle CEPコンポーネント構成要素は次の階層に構成されます。

- 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
max-size
max-threads
selector
heartbeat
partition-order-capacity

例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 CEPコンポーネント構成ファイルの例

HelloWorldアプリケーションからの次のサンプル・コンポーネント構成ファイルは、多くのOracle CEP要素の使用方法を示します。

<?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 アダプタ

この要素を使用すると、カスタム・アダプタ・コンポーネントを定義できます。HTTPパブリッシュ・サブスクライバまたはJMSアダプタでは、特定のhttp-pub-sub-adapterおよびjms-adapter要素を使用します。

詳細は、第14章「カスタム・アダプタの構成」を参照してください。

D.3.1 子要素

adapterコンポーネント構成要素は、次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- symbols

- work-manager-name

- netio

D.3.2 属性

adapterコンポーネント構成要素には属性はありません。

D.3.3 例

次の例は、コンポーネント構成ファイル内のadapter要素の使用方法を示します。

<adapter>
<name>trackdata</name>
<symbols>
<symbol>BEAS</symbol>
<symbol>IBM</symbol>
</symbols>
</adapter>

この例では、adapterの一意の識別子はtrackdataです。

D.4 量

この要素を使用すると、診断プロファイルの期間を定義できます。この要素は、次の要素のいずれかに適用できます。

- average-interval

- collect-interval

- throughput-interval

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.4.1 子要素

amountコンポーネント構成には子要素はありません。

D.4.2 属性

amountコンポーネントには属性はありません。

D.4.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.5 アプリケーション

Oracle CEPサーバーが外部ステージに適用するアプリケーションのタイプを定義するためにこの要素を使用します。診断プロファイルでは、この要素は常にdiagnosticの値を持ちます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.5.1 子要素

applicationコンポーネント構成には子要素はありません。

D.5.2 属性

applicationコンポーネントには属性はありません。

D.5.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.6 average-interval

メトリックを収集対象の時間間隔を定義するためにこの要素を使用します。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.6.1 子要素

average-intervalコンポーネント構成要素は次の子要素をサポートします。

- amount

- unit

D.6.2 属性

average-intervalコンポーネントには属性はありません。

D.6.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.7 average-latency

診断プロファイルにおける平均待機時間の計算を定義するためにこの要素を使用します。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.7.1 子要素

average-latencyコンポーネント構成要素は、次の子要素をサポートします。

- name

- collect-interval

- start-location

- end-location

- threshold

D.7.2 属性

average-latencyコンポーネントには属性はありません。

D.7.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.8 batch-size

この要素を使用すると、バッキング・ストアにライト・バックするためのストア・バッファから選択される更新数を定義できます。この要素は動的に変更されます。

D.8.1 子要素

batch-sizeコンポーネント構成要素には子要素はありません。

D.8.2 属性

batch-sizeコンポーネントには属性はありません。

D.8.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.9 batch-time-out

この要素を使用すると、イベント・ストアに書きこむ前にbatch-size回のイベントを累積するために、イベント・バッファが待機する秒数を定義できます。

D.9.1 子要素

batch-time-outコンポーネント構成要素には子要素はありません。

D.9.2 属性

batch-time-outコンポーネントには属性はありません。

D.9.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.10 バインド

この要素を使用すると、EPLプロセッサ・コンポーネントにおいてパラメータ化されたOracle CQLまたはEPLルールの値を定義できます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のパラメータ化された問合せに関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing EPL言語リファレンス』のパラメータ化された問合せに関する項

D.10.1 子要素

bindingコンポーネント構成要素は、次の子要素をサポートしています。

- params

D.10.2 属性

表D-1ではbindingコンポーネント構成要素の属性が一覧表示されています。

表D-1 bindingコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

このbindingを適用する対象のEPLルールの識別子です。

String

はい。

D.10.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.11 bindings (jms-adapter)

com.oracle.cep.cluster.hagroups.ActiveActiveGroupBeanを使用して、ActiveActiveGroupBeanで作成された通知グループによって、Oracle CEPアプリケーションの受信JMSストリームをパーティション化できます。

この要素を使用して、通知グループを特定のmessage-selector値と関連付けます。

詳細は、22.2.2項「ActiveActiveGroupBean」を参照してください。

D.11.1 子要素

bindingsコンポーネント構成要素は、次の子要素をサポートしています。

- group-binding

D.11.2 属性

bindingsコンポーネントには属性はありません。

D.11.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 CEPサーバーにデプロイすると、CONDITIONパラメータがacctid > 400と定義され、acctidプロパティが400以上であるイベントがアプリケーションにより処理されます。

D.12 bindings (processor)

この要素を使用すると、プロセッサ・コンポーネントにおいて1つ以上のパラメータ化されたOracle CQLまたはEPLルールのバインドを定義できます。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のパラメータ化された問合せに関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing EPL言語リファレンス』のパラメータ化された問合せに関する項

D.12.1 子要素

bindingsコンポーネント構成要素は、次の子要素をサポートしています。

- binding

D.12.2 属性

bindingsコンポーネントには属性はありません。

D.12.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.13 buffer-size

この要素を使用すると、内部ストア・バッファのサイズを定義できます。このバッファは、ストアに書き込む必要がある非同期更新を一時的に保存するために使用されます。動的更新はサポートしていません。

D.13.1 子要素

buffer-sizeコンポーネント構成要素には子要素はありません。

D.13.2 属性

buffer-sizeコンポーネントには属性はありません。

D.13.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.14 buffer-write-attempts

この要素を使用すると、ユーザー・スレッドがストア・バッファに書き込むために行う試行回数を定義できます。ユーザー・スレッドとは、キャッシュ・エントリの作成または更新を行うスレッドです。ユーザー・スレッドがストア・バッファに書き込むことができない場合(すべての書き込み試行が失敗した場合)、同期的にストアを起動します。この要素は動的に変更されます。

D.14.1 子要素

buffer-write-attemptsコンポーネント構成要素には子要素はありません。

D.14.2 属性

buffer-write-attemptsコンポーネントには属性はありません。

D.14.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.15 buffer-write-timeout

この要素を使用するとユーザー・スレッドがストア・バッファへの書き込み試行を中断する前の待機時間をミリ秒単位で定義できます。ストア・バッファへの書き込み試行が失敗するのは、バッファがいっぱいの場合のみです。タイムアウト後は以降のバッファへの書き込み試行はbuffer-write-attemptsの値に基づいて行われます。この要素は動的に変更されます。

D.15.1 子要素

buffer-write-timeoutコンポーネント構成要素には子要素はありません。

D.15.2 属性

buffer-write-timeoutコンポーネントには属性はありません。

D.15.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.16 cache

この要素を使用するとコンポーネントのキャッシュを定義できます。キャッシュとはイベントの一時保存領域で、Oracle CEPアプリケーションの全体のパフォーマンスを向上するために排他的に作成されます。アプリケーションが正常に機能するためには必要ありません。Oracle CEPアプリケーションはオプションでイベントをキャッシュにパブリッシュしたりキャッシュから消費したりして、イベントの可用性およびアプリケーションのパフォーマンスを向上させることができます。

詳細は、12.2項「Oracle CEPローカル・キャッシュ・システムおよびキャッシュの構成」を参照してください。

D.16.1 子要素

cacheコンポーネント構成要素は次の子要素をサポートしています。

- name

- max-size

- eviction-policy

- 存続時間

- idle-time

- 次のうちの1つ:

- write-none

- write-through

- write-behind

- work-manager-name

- listeners

D.16.2 属性

cacheコンポーネントには属性はありません。

D.16.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.17 caching-system

この要素を使用するとOracle CEPローカル・キャッシュ・システム・コンポーネントを定義できます。キャッシュ・システムとはキャッシュ実装の構成されたインスタンスです。キャッシュ・システムは、構成されたキャッシュの名前付きセットを定義すると共に、任意のキャッシュが複数のマシンに渡って配信される場合、リモート通信用の構成を定義します。

詳細は、12.2.1項「イベント・リスナーとしてのOracle CEPローカル・キャッシュの構成」を参照してください。

D.17.1 子要素

caching-systemコンポーネント構成要素は次の子要素をサポートしています。

- name

- cache

D.17.2 属性

caching-systemコンポーネントには属性はありません。

D.17.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.18 channel

この要素を使用するとチャネル・コンポーネントを定義できます。Oracle CEPアプリケーションには1つ以上のチャネル・コンポーネントが含まれます。このコンポーネントはアダプタとプロセッサ間やプロセッサとイベントBean(ビジネス・ロジックPOJO)間のような他のコンポーネント同士をイベントが往来する物理的なパイプを表します。

D.18.1 子要素

channelコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- max-size

- max-threads

- selector

- heartbeat

- partition-order-capacity

D.18.2 属性

channelコンポーネントには属性はありません。

D.18.3 例

次の例は、コンポーネント構成ファイル内のchannel要素の使用方法を示します。

<channel>
<name>MatchOutputChannel</name>
<max-size>0</max-size>
<max-threads>0</max-threads>
<selector>match</selector>
</channel>

この例ではchannelの一意の識別子はMatchOutputChannelです。

D.19 channel (http-pub-sub-adapterの子要素)

channel要素を使用するとhttp-pub-sub-adapterがパブリッシュまたはサブスクライブする対象のチャネルを指定できます。いずれのチャネルもローカル/リモートであろうとパブリッシュ用/サブスクライブ用であろうとすべてのhttp-pub-sub-adapterに割り当てられます。

D.19.1 子要素

channelコンポーネント構成要素には子要素はありません。

D.19.2 属性

channelコンポーネントには属性はありません。

D.19.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.20 coherence-cache-config

この要素を使用するとcoherence-caching-system用のOracle Coherenceキャッシュ構成を定義できます。

詳細は、12.2項「Oracle CEPローカル・キャッシュ・システムおよびキャッシュの構成」を参照してください。

D.20.1 子要素

coherence-cache-configコンポーネント構成要素には子要素はありません。

D.20.2 属性

coherence-cache-configコンポーネントには属性はありません。

D.20.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.21 coherence-caching-system

この要素を使用すると、Oracle Coherenceキャッシュ・システム・コンポーネントを定義できます。キャッシュ・システムとはキャッシュ実装の構成されたインスタンスです。キャッシュ・システムは、構成されたキャッシュの名前付きセットを定義すると共に、任意のキャッシュが複数のマシンに渡って配信される場合、リモート通信用の構成を定義します。

詳細は、12.3項「Oracle Coherenceキャッシュ・システムおよびキャッシュの構成」を参照してください。

D.21.1 子要素

coherence-caching-systemコンポーネント構成要素は次の子要素をサポートしています。

- name

- coherence-cache-config

- coherence-cluster-config

D.21.2 属性

coherence-caching-systemコンポーネントには属性はありません。

D.21.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.22 coherence-cluster-config

この要素を使用するとcoherence-caching-system用のOracle Coherenceクラスタ構成を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPマルチサーバー・ドメイン管理の概要に関する項を参照してください。

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-cluster-config>
applications/cluster_cql/coherence/coherence-cluster-config.xml
</coherence-cluster-config></coherence-caching-system>

D.23 collect-interval

この要素を使用すると診断プロファイルにおいてaverage-latencyまたはmax-latency要素の収集間隔を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.23.1 子要素

collect-intervalコンポーネント構成要素は次の子要素をサポートしています。

- amount

- unit

D.23.2 属性

collect-intervalコンポーネントには属性はありません。

D.23.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.24 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と同じ設定にします。

詳細は、次を参照してください:

- 7.3項「JMSメッセージとイベント・タイプ間のカスタム・コンバータの作成」

- D.105項「work-manager」

D.24.1 子要素

concurrent-consumersコンポーネント構成要素には子要素はありません。

D.24.2 属性

concurrent-consumersコンポーネントには属性はありません。

D.24.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.25 connection-jndi-name

この要素を使用するとJMS接続ファクトリのJNDI名を定義できます。Oracle CEPサーバーJMSのデフォルト値はweblogic.jms.ConnectionFactoryです。

D.25.1 子要素

connection-jndi-nameコンポーネント構成要素には子要素はありません。

D.25.2 属性

connection-jndi-nameコンポーネントには属性はありません。

D.25.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.26 connection-encrypted-password

connection-encrypted-password要素を使用するとOracle CEPがJMSサービス・プロバイダへの接続取得時に使用する暗号化されたjms-adapterパスワードを定義できます。

Oracle CEPがJMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合はconnection-encrypted-password要素を使用します。それ以外の場合は、Oracle CEPはuserおよびpassword(またはencrypted-password)要素を使用します。

connection-encrypted-passwordまたはconnection-passwordのいずれかを使用します。ただし、両方を使用することはできません。

詳細は、7.4項「JMSアダプタ構成ファイルでのパスワードの暗号化」を参照してください。

D.26.1 子要素

connection-encrypted-passwordコンポーネント構成要素には子要素はありません。

D.26.2 属性

connection-encrypted-passwordコンポーネントには属性はありません。

D.26.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.27 connection-password

connection-password要素を使用するとOracle CEPがJMSサービス・プロバイダへの接続取得時に使用するjms-adapterパスワードを定義できます。

Oracle CEPがJMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするとき、connection-userおよびconnection-passwordを使用し、また構成済の場合はconnection-encrypted-password要素を使用します。それ以外の場合は、Oracle CEPはuserおよびpassword(またはencrypted-password)要素を使用します。

connection-passwordまたはconnection-encrypted-passwordのいずれかを使用します。ただし、両方を使用することはできません。

D.27.1 子要素

connection-passwordコンポーネント構成要素には子要素はありません。

D.27.2 属性

connection-passwordコンポーネントには属性はありません。

D.27.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.28 connection-user

connection-user要素を使用するとOracle CEPがJMSサービス・プロバイダへの接続取得時に使用するjms-adapterのユーザー名を定義できます。

Oracle CEPがJMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合はconnection-encrypted-password要素を使用します。それ以外の場合は、Oracle CEPはuserおよびpassword(またはencrypted-password)要素を使用します。

アプリケーションでconnection-userおよびconnection-password(またはconnection-encrypted-password)の設定を使用できます。その場合、一方のセキュリティ・プロバイダはJNDIアクセスに使用され、JMSアクセスには別のセキュリティ・プロバイダが使用されます。

D.28.1 子要素

connection-userコンポーネント構成要素には子要素はありません。

D.28.2 属性

connection-userコンポーネントには属性はありません。

D.28.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.29 database

この要素を使用するとEPLプロセッサ・コンポーネントのデータベース参照を定義できます。

詳細は、第11章「EPLプロセッサの構成」を参照してください。

D.29.1 子要素

databaseコンポーネント構成要素には子要素はありません。

D.29.2 属性

表D-2ではdatabaseコンポーネント構成要素の属性が一覧表示されています。

表D-2 databaseコンポーネント構成要素の属性

属性

説明

データ型

必須?

name

この問合せの一意の識別子です。

String

はい。

data-source-name

Oracle CEPサーバーのconfig.xmlファイルで定義されるデータ・ソース名です。

String

はい。

D.29.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.30 dataset-name

この要素を使用すると、ユーザーがグループ化する対象のデータのグループを定義できます。Oracle RDBMSベースのプロバイダの場合は、記録されたイベントを格納する表が作成されるデータベース領域またはスキーマを指定します。Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。

D.30.1 子要素

dataset-nameコンポーネント構成要素には子要素はありません。

D.30.2 属性

dataset-nameコンポーネントには属性はありません。

D.30.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.31 delivery-mode

この要素を使用すると、jms-adapter用の配信モードを定義できます。

有効な値:

- persistent (デフォルト)

- nonpersistent

D.31.1 子要素

delivery-modeコンポーネント構成要素には子要素はありません。

D.31.2 属性

delivery-modeコンポーネントには属性はありません。

D.31.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.32 destination-jndi-name

この必須要素を使用すると、jms-adapter用のJMS宛先名を定義できます。

JNDI名または実際のdestination-nameのいずれかを指定します。ただし、両方は指定できません。

D.32.1 子要素

destination-jndi-nameコンポーネント構成要素には子要素はありません。

D.32.2 属性

destination-jndi-nameコンポーネントには属性はありません。

D.32.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.33 destination-name

この必須要素を使用すると、jms-adapter用のJMS宛先名を定義できます。

実際の宛先名またはdestination-jndi-nameのいずれかを指定します。ただし、両方は指定できません。

D.33.1 子要素

destination-nameコンポーネント構成要素には子要素はありません。

D.33.2 属性

destination-nameコンポーネントには属性はありません。

D.33.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.34 destination-type

この要素を使用すると、jms-adapter用のJMS宛先タイプを定義できます。有効な値はTOPICまたはQUEUEです。durable-subscriptionプロパティがtrueに設定されている場合は常に、このプロパティをTOPICに設定する必要があります。

D.34.1 子要素

destination-typeコンポーネント構成要素には子要素はありません。

D.34.2 属性

destination-typeコンポーネントには属性はありません。

D.34.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.35 diagnostic-profiles

この要素を使用すると、1つ以上のOracle CEP診断プロファイルを定義できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.35.1 子要素

diagnostics-profilesコンポーネント構成要素は、次の子要素をサポートしています。

- name

- profile

D.35.2 属性

diagnostics-profilesコンポーネントには属性はありません。

D.35.3 例

次の例は、コンポーネント構成ファイル内のdiagnostics-profiles要素の使用方法を示します。

<diagnostics-profiles>
<name>myDiagnosticProfiles</name>
<profile>
...
</profile>
</diagnostics-profiles>

この例ではchannelの一意の識別子はmyDiagnosticProfilesです。

D.36 direction

この要素を使用すると、診断プロファイルのend-location またはstart-locationに関する方向を定義できます。

有効な値:

- INBOUND

- OUTBOUND

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.36.1 子要素

directionコンポーネント構成には子要素はありません。

D.36.2 属性

directionコンポーネントには属性はありません。

D.36.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.37 durable-subscription

この要素を使用すると、jms-adapterのJMSトピック・サブスクリプションが恒久的であるかどうか、つまりサブスクライバが非アクティブになった場合も永続化できるかどうかを指定できます。有効な値は、trueまたはfalseです。このプロパティは、destination-typeがTOPICに設定されている場合にのみ有効です。

D.37.1 子要素

durable-subscriptionコンポーネント構成要素には子要素はありません。

D.37.2 属性

durable-subscriptionコンポーネントには属性はありません。

D.37.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.38 durable-subscription-name

この要素を使用すると、jms-adapterの恒久サブスクリプションを一意に識別するための名前を指定できます。恒久サブスクリプションは、サブスクライバが非アクティブになった場合も永続化できます。

D.38.1 子要素

durable-subscription-nameコンポーネント構成要素には子要素はありません。

D.38.2 属性

durable-subscription-nameコンポーネントには属性はありません。

D.38.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.39 duration

この要素を使用すると、schedule-time-range-offsetまたはtime-range-offset要素の期間を次の形式で定義できます。

HH:MM:SS

ここで、HHは時間数、MMは分数、SSは秒数です。

D.39.1 子要素

durationコンポーネント構成要素には子要素はありません。

D.39.2 属性

durationコンポーネントには属性はありません。

D.39.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.40 enabled

この要素を使用すると、診断プロファイルを有効化するかどうかを定義できます。

有効な値:

- true

- false

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.40.1 子要素

enabledコンポーネント構成要素には子要素はありません。

D.40.2 属性

enabledコンポーネントには属性はありません。

D.40.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.41 encrypted-password

encrypted-password要素は次の親要素で使用します。

- http-pub-sub-adapter:encrypted-password要素を使用するとOracle CEPアプリケーションがパブリッシュする対象となるHTTPパブリッシュ/サブスクライブ・サーバーがユーザー認証を要求する場合に暗号化されたパスワードを定義できます。

- jms-adapter:Oracle CEPがJNDI InitialContextを取得するときuserおよびpassword(またはencrypted-password)要素を使用します。Oracle CEPが、JMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合は(connection-encrypted-password要素)を使用します。それ以外の場合はOracle CEPはuserおよびpassword(またはencrypted-password)要素を使用します。

encrypted-passwordまたはpasswordのいずれかを使用します。ただし、両方を使用することはできません。

詳細は、7.4項「JMSアダプタ構成ファイルでのパスワードの暗号化」を参照してください。

D.41.1 子要素

encrypted-passwordコンポーネント構成要素には子要素はありません。

D.41.2 属性

encrypted-passwordコンポーネントには属性はありません。

D.41.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.42 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.42.1 子要素

endコンポーネント構成要素には子要素はありません。

D.42.2 属性

endコンポーネントには属性はありません。

D.42.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.43 end-location

この要素を使用すると診断プロファイルにおいてaverage-latencyまたはmax-latency要素の終了位置を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.43.1 子要素

end-locationコンポーネント構成要素は、次の子要素をサポートしています。

- application

- stage

- direction

D.43.2 属性

end-locationコンポーネントには属性はありません。

D.43.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.44 event-bean

この要素を使用するとイベントBeanコンポーネントを定義できます。

詳細は、第15章「カスタム・イベントBeanの構成」を参照してください。

D.44.1 子要素

event-beanコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

D.44.2 属性

event-beanコンポーネントには属性はありません。

D.44.3 例

次の例はコンポーネント構成ファイル内のevent-bean要素の使用方法を示します。

<event-bean>
<name>myEventBean</name>
</event-bean>

この例ではchannelの一意の識別子はmyEventBeanです。

D.45 event-type

event-type要素は次の親要素で使用します。

- http-pub-sub-adapter:

- パブリッシュ: オプション。パブリッシュ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、パブリッシュされるイベントのタイプを制限するために、JavaBeanイベントの完全修飾クラス名を指定します。指定しない場合、HTTP pub-subアダプタに送信されたすべてのイベントがパブリッシュされます。

- サブスクライブ: オプション。サブスクライブ用のローカルおよびリモートの両方のHTTP Pub-Subアダプタについて、着信メッセージがマップされるJavaBeanの完全修飾クラス名を指定します。実行時、Oracle CEPでは受信メッセージのキーと値のペアを使用して、メッセージ・データが指定のイベント・タイプにマップされます。

このクラスをEPNアセンブリ・ファイルにwlevs:event-type-repository要素、wlevs:class子要素として登録する必要があります。詳細は、2.2項「JavaBeanとしてOracle CEPイベント・タイプの作成」を参照してください。

- jms-adapter: event-type要素を使用すると、プロパティがJMSメッセージのプロパティに一致するイベント型を指定できます。Oracle CEPにJMSメッセージとイベント間の変換を自動的に行わせる場合のみ、この子要素を指定します。独自のカスタム・コンバータBeanを作成済の場合はこの要素を指定しません。

- record-parameters: event-type要素を使用すると、記録するイベントを指定できます。

event-type要素の値はイベント型のリポジトリで定義したいずれかのイベント型にします。詳細は、1.1.2項「Oracle CEPイベント・タイプ」を参照してください。

D.45.1 子要素

event-typeコンポーネント構成要素には子要素はありません。

D.45.2 属性

event-typeコンポーネントには属性はありません。

D.45.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.46 event-type-list

この要素を使用すると、1つ以上の記録用イベントまたはコンポーネントの再生用イベントを定義できます。

D.46.1 子要素

event-type-listコンポーネント構成要素は次の子要素をサポートしています。

- event-type

D.46.2 属性

event-type-listコンポーネントには属性はありません。

D.46.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.47 eviction-policy

この要素を使用すると、max-sizeの到着時にキャッシュが使用する削除ポリシーを定義できます。

有効な値:

- FIFO: 先入れ先出し。

- LRU: 最も長い期間使用されていない

- LFU: 最も使用頻度が低い(デフォルト)

- NRU: 最近使用されていない

D.47.1 子要素

eviction-policyコンポーネント構成要素には子要素はありません。

D.47.2 属性

eviction-policyコンポーネントには属性はありません。

D.47.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.48 group-binding

JMSインバウンド・アダプタのjms-adapter要素にgroup-binding子要素を追加するために、コンポーネント構成ファイルを編集します。

各可能JMSメッセージ・セレクタ値に対して1つのgroup-binding要素を追加します。

詳細は、D.11項「bindings (jms-adapter)」を参照してください。

D.48.1 子要素

group-bindingコンポーネント構成要素は次の子要素をサポートしています。

- param

D.48.2 属性

表D-3ではgroup-bindingコンポーネント構成要素の属性が一覧表示されています。

表D-3 group-bindingコンポーネント構成要素の属性

属性

説明

データ型

必須?

group-id

cluster要素、groups子要素の名前。

String

はい。

D.48.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 CEPサーバーにデプロイすると、CONDITIONパラメータがacctid > 400と定義され、acctidプロパティが400以上であるイベントがアプリケーションにより処理されます。

D.49 heartbeat

この要素を使用すると、システムがタイムスタンプを付けたchannelコンポーネントのハートビート・タイムアウトを定義できます。

システムがタイムスタンプを付けた関係またはストリームでは、時間は、関係またはストリームのソース上のデータの到着に依存します。Oracle CEPは、このナノ秒を超えてアクションがない場合(ストリームまたは関係のソースにデータが到着しない場合)、システムがタイムスタンプを付けた関係またはストリーム上でハートビートを生成します。関係またはストリームのいずれかがその指定されたソースから移入されるか、またはOracle CEPがheartbeatのナノ秒数ごとにハートビートを生成します。

heartbeatの子要素は、プロセッサに送信を行うイベント・チャネルにイベントが到着しない場合のみ、システムがタイムスタンプを付けた関係またはストリームに適用されます。プロセッサは、時間ベースのウィンドウや期間のパターン照合などの、一時的な演算子をいくつか含む文を用いて構成されています。

D.49.1 子要素

heartbeatコンポーネント構成要素には子要素はありません。

D.49.2 属性

heartbeatコンポーネント構成要素には属性はありません。

D.49.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.50 http-pub-sub-adapter

この要素を使用すると、HTTPパブリッシュ/サブスクライブ・サーバー・アダプタを定義できます。

詳細は、第8章「HTTPパブリッシュ/サブスクライブ・サーバー・アダプタの構成」を参照してください。

D.50.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.50.2 属性

http-pub-sub-adapterコンポーネント構成要素には属性はありません。

D.50.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.51 idle-time

この要素を使用するとキャッシュ・エントリが能動的にキャッシュから削除される前にキャッシュ・エントリがアクセスされない時間をミリ秒数で定義できます。デフォルトではidle-timeは設定されていません。この要素は動的に変更されます。

D.51.1 子要素

idle-timeコンポーネント構成要素には子要素はありません。

D.51.2 属性

idle-timeコンポーネントには属性はありません。

D.51.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.52 jms-adapter

この要素を使用するとJMSアダプタ・コンポーネントを定義できます。

詳細は、第7章「JMSアダプタの構成」を参照してください。

D.52.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.52.2 属性

jms-adapterコンポーネント構成要素には属性はありません。

D.52.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.53 jndi-factory

このオプション要素を使用するとjms-adapterのJNDIファクトリを定義できます。JNDIファクトリ名。Oracle CEPサーバーJMSのデフォルト値はweblogic.jndi.WLInitialContextFactoryです。

D.53.1 子要素

jndi-factoryコンポーネント構成要素には子要素はありません。

D.53.2 属性

jndi-factoryコンポーネントには属性はありません。

D.53.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.54 jndi-provider-url

この必須要素を使用するとjms-adapterのJNDIプロバイダURLを定義できます。

D.54.1 子要素

jndi-provider-urlコンポーネント構成要素には子要素はありません。

D.54.2 属性

jndi-provider-urlコンポーネントには属性はありません。

D.54.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.55 listeners

この要素を使用するとキャッシュ・リスナーの動作を定義できます。

listeners要素にはwork-manager-nameという単一の子要素があり、これが非同期的なリスナーの起動に使用されるワーク・マネージャを指定します。この値は、同期的起動が有効化されている場合は無視されます。ワーク・マネージャがキャッシュそのものに指定されている場合、この値はリスナーのみを起動するためにオーバーライドします。

D.55.1 子要素

listenersコンポーネント構成要素は次の子要素をサポートしています。

- work-manager-name

D.55.2 属性

表D-4ではlistenersコンポーネント構成要素の属性が一覧表示されています。

表D-4 listenersコンポーネント構成要素の属性

属性

説明

データ型

必須?

asynchronous

リスナーを非同期的に実行します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

D.55.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.56 location

この要素を使用すると診断プロファイルにおいてthroughput要素の位置を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.56.1 子要素

locationコンポーネント構成要素は次の子要素をサポートしています。

- application

- stage

- direction

D.56.2 属性

locationコンポーネントには属性はありません。

D.56.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.57 max-latency

この要素を使用すると診断プロファイルの最大待機時間計算を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.57.1 子要素

max-latencyコンポーネント構成要素は次の子要素をサポートしています。

- name

- collect-interval

- start-location

- end-location

D.57.2 属性

max-latencyコンポーネントには属性はありません。

D.57.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.58 max-size

max-size要素は次の親要素で使用します。

- channelまたはstream:max-sizeの子要素を使用するとチャネルの最大サイズを指定できます。サイズがゼロのチャネルは、同期的にイベントを受け渡します。サイズがゼロでないチャネルはイベントを非同期的に処理し、リクエストされたサイズに従ってイベントをバッファリングします。max-threadsがゼロの場合、max-sizeはゼロになります。デフォルト値は0です。

- cache:max-size要素を使用すると削除またはページングが発生した後のメモリー内のキャッシュ要素数を定義できます。現状では最大キャッシュサイズは2^31-1エントリです。この要素は動的に変更されます。

D.58.1 子要素

max-sizeコンポーネント構成要素には子要素はありません。

D.58.2 属性

max-sizeコンポーネントには属性はありません。

D.58.3 例

次の例はコンポーネント構成ファイル内のmax-size要素の使用方法を示します。

<stream>
<name>monitoring-control-stream</name>
<max-size>10000</max-size>
<max-threads>1</max-threads>
</stream>

D.59 max-threads

この要素を使用するとOracle CEPサーバーが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.59.1 子要素

max-threadsコンポーネント構成要素には子要素はありません。

D.59.2 属性

max-threadsコンポーネントには属性はありません。

D.59.3 例

次の例は、ンポーネント構成ファイル内のmax-threads要素の使用方法を示します。

<channel>
<name>monitoring-control-stream</name>
<max-size>10000</max-size>
<max-threads>1</max-threads>
</channel>

D.60 message-selector

この必須要素を使用するとjms-adapterでメッセージをフィルタするのに使用するJMSメッセージ・セレクタを定義できます。

メッセージ・セレクタ式の構文はSQL92の条件式構文、メッセージ・ヘッダー、およびプロパティのサブセットに基づきます。たとえば、EventTypeプロパティに基づいたメッセージを選択するには次を使用します。

EventType = 'News' OR 'Commentary'

D.60.1 子要素

message-selectorコンポーネント構成要素には子要素はありません。

D.60.2 属性

message-selectorコンポーネントには属性はありません。

D.60.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.61 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.61.1 子要素

nameコンポーネント構成要素には子要素はありません。

D.61.2 属性

nameコンポーネントには属性はありません。

D.61.3 例

次の例はコンポーネント構成ファイル内のname要素の使用方法を示します。

<diagnostics-profiles>
<name>myDiagnosticProfiles</name>
<profile>
...
</profile>
</diagnostics-profiles>

この例ではchannelの一意の識別子はmyDiagnosticProfilesです。

D.62 netio

この要素を使用するとコンポーネントのネットワーク入力/出力ポートを定義できます。

D.62.1 子要素

netioコンポーネント構成要素は次の子要素をサポートしています。

- provider-name

- num-threads

- accept-backlog

D.62.2 属性

netioコンポーネントには属性はありません。

D.62.3 例

次の例はコンポーネント構成ファイル内のnetio要素の使用方法を示します。

<netio>
<provider-name>providerCache</provider-name>
<num-threads>1000</num-threads>
</netio>

D.63 num-threads

この要素を使用するとコンポーネントのネットワーク入力/出力ポートにおけるスレッド数を定義できます。

D.63.1 子要素

num-threadsコンポーネント構成要素には子要素はありません。

D.63.2 属性

num-threadsコンポーネントには属性はありません。

D.63.3 例

次の例はコンポーネント構成ファイル内のnum-threads要素の使用方法を示します。

<netio>
<provider-name>providerCache</provider-name>
<num-threads>1000</num-threads>
</netio>

D.64 param

このparam要素を使用して、メッセージ・セレクタ値をmessage-selector要素で指定されたパラメータ名と関連付けます。

詳細は、D.11項「bindings (jms-adapter)」を参照してください。

D.64.1 子要素

paramコンポーネント構成要素には子要素はありません。

D.64.2 属性

表D-5ではparamコンポーネント構成要素の属性が一覧表示されています。

表D-5 paramコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

message-selectorで指定されたパラメータ名。

String

はい。

D.64.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 CEPサーバーにデプロイすると、CONDITIONパラメータがacctid > 400と定義され、acctidプロパティが400以上であるイベントがアプリケーションにより処理されます。

D.65 parameter

この要素を使用するとコンポーネントのname/valueパラメータを定義できます。

D.65.1 子要素

parameterコンポーネント構成要素は次の子要素をサポートしています。

- name

- value

D.65.2 属性

parameterコンポーネントには属性はありません。

D.65.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.66 params

この要素を使用するとbinding要素のパラメータを定義できます。

この要素の値は単純型の値のカンマ区切りリストです。値の順序はこのbindingに関連するEPLルールにおけるパラメータの順序に対応している必要があります。

詳細は、次を参照してください:

- 『Oracle Fusion Middleware Oracle Complex Event Processing CQL言語リファレンス』のパラメータ化された問合せに関する項

- 『Oracle Fusion Middleware Oracle Complex Event Processing EPL言語リファレンス』のパラメータ化された問合せに関する項

D.66.1 子要素

paramsコンポーネント構成要素には子要素はありません。

D.66.2 属性

表D-6ではparamsコンポーネント構成要素の属性が一覧表示されています。

表D-6 paramsコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

このparams要素の一意の識別子です。

String

いいえ。

D.66.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.67 partition-order-capacity

この要素を使用すると、ordering-constraint属性がPARTITION_ORDEREDに設定されている場合に問合せパーティションの最大容量を定義できます。これはchannelコンポーネントに設定します。パラレル実行用の問合せプロセッサが構成されていて、問合せのordering-constraint属性がPARTITION_ORDEREDに設定されている場合に、この要素の値を設定することを検討してください。

この値を設定できる場所(優先順位など)に関するベスト・プラクティスおよび情報などの詳細は、第10章「Oracle CQLプロセッサの構成」の「問合せのパーティション化でのpartition-order-capacityの使用」を参照してください。

容量の値をより広い範囲に適用するために、サーバー構成ファイル内にこれを設定できます。詳細は、付録F「スキーマ参照: サーバー構成wlevs_server_config.xsd」の「partition-order-capacity」を参照してください。

D.67.1 子要素

partition-order-capacityコンポーネント構成要素には子要素はありません。

D.67.2 属性

The partition-order-capacityコンポーネント構成要素には属性はありません。

D.67.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.68 password

password要素は次の親要素で使用します。

- http-pub-sub-adapter:password要素を使用するとOracle CEPアプリケーションがパブリッシュする対象となるHTTPパブリッシュ/サブスクライブ・サーバーがユーザー認証を要求する場合にユーザー・パスワードを定義できます。

- jms-adapter:Oracle CEPがJNDI InitialContextを取得するときuserおよびpassword(またはencrypted-password)要素を使用します。Oracle CEPが、JMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合は(connection-encrypted-password要素)を使用します。それ以外の場合はOracle CEPはuserおよびpassword(またはencrypted-password )要素を使用します。

encrypted-passwordまたはpasswordのいずれかを使用します。ただし、両方を使用することはできません。

D.68.1 子要素

passwordコンポーネント構成要素には子要素はありません。

D.68.2 属性

passwordコンポーネントには属性はありません。

D.68.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.69 playback-parameters

この要素を使用するとコンポーネントのイベント再生パラメータを定義できます。

詳細は、第13章「イベント・レコードと再生の構成」を参照してください。

D.69.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.69.2 属性

playback-parametersコンポーネントには属性はありません。

D.69.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.70 playback-speed

この要素を使用すると正の浮動小数点として再生速度を定義できます。デフォルト値は1で、これは通常速度に相当します。2の値は、イベントが元の記録速度の倍の速度で再生されることを意味します。同様に、0.5の値は、イベントが半分の速度で再生されることを意味します。

D.70.1 子要素

playback-speedコンポーネント構成要素には子要素はありません。

D.70.2 属性

playback-speedコンポーネントには属性はありません。

D.70.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.71 processor (EPL)

この要素を使用するとOracle CQLまたはEPLプロセッサ・コンポーネントを定義できます。

詳細は、第11章「EPLプロセッサの構成」を参照してください。

Oracle CQLプロセッサのプロセッサ要素に関する詳細は、processor (Oracle CQL)を参照してください。

D.71.1 子要素

processorコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- rules

- database

- bindings (processor)

D.71.2 属性

processorコンポーネントには属性はありません。

D.71.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.72 processor (Oracle CQL)

この要素を使用するとOracle CQLプロセッサ・コンポーネントを定義できます。

詳細は、第10章「Oracle CQLプロセッサの構成」を参照してください。

EPLプロセッサのprocessor要素に関する詳細は、processor (EPL)を参照してください。

D.72.1 子要素

processorコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- rules

- bindings (processor)

D.72.2 属性

processorコンポーネントには属性はありません。

D.72.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.73 profile

この要素を使用すると診断プロファイルを定義できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.73.1 子要素

profileコンポーネント構成要素は次の子要素をサポートしています。

- name

- enabled

- start-stage

- max-latency

- average-latency

- throughput

D.73.2 属性

profileコンポーネントには属性はありません。

D.73.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.74 provider-name

provider-name要素は次の親要素で使用します。

- netio:provider-name要素を使用すると基礎となるソケット実装にどのプロバイダを使用するか定義できます。有効な値はOracle CEPサーバーのconfig.xmlファイルのnetio子要素のprovider-typeです。

- record-parameters:provider-name要素を使用するとイベント・ストア・プロバイダの名前を定義できます。この要素の値は、Oracle CEPサーバー・インスタンスのconfig.xmlファイル内のrdbms-event-store-provider要素のname子要素に対応している必要があります。
Oracle RDBMSベースのプロバイダを構成する場合は、この要素を指定する必要があります。

これはデフォルトのBerkeleyデータベース・プロバイダを使用するように構成するために空白のままにします。

D.74.1 子要素

provider-nameコンポーネント構成要素には子要素はありません。

D.74.2 属性

provider-nameコンポーネントには属性はありません。

D.74.3 例

次の例はコンポーネント構成ファイル内のprovider-name要素の使用方法を示します。

<netio>
<provider-name>providerCache</provider-name>
<num-threads>1000</num-threads>
</netio>

D.75 query

この要素を使用するとコンポーネントのOracle CQL問合せを定義できます。

詳細は、第10章「Oracle CQLプロセッサの構成」を参照してください。

D.75.1 子要素

queryコンポーネント構成要素には子要素はありません。

D.75.2 属性

表D-7ではqueryコンポーネント構成要素の属性が一覧表示されています。

表D-7 queryコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

この問合せの一意の識別子です。

String

はい。

active

アプリケーションのデプロイ時および実行時にこの問合せを実行します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

ordering-constraint

イベントをシリアルではなくパラレルに処理できるパラレル問合せ実行を有効または無効にします。

この属性は、次の3つの値をサポートします。

- ORDEREDは、問合せはイベントをシリアルに処理する必要があることを意味します。これはデフォルトの動作です。

- UNORDEREDは、可能であれば常に、CQLプロセッサは複数のスレッドでパラレルに実行して、イベントを処理することを意味します。

- PARTITION_ORDEREDは、問合せがイベントをパーティション化している場合にパーティション内の全体順序を確保し、可能な場合、パーティション間の順序を無視することを意味します。

詳細は、第10章「Oracle CQLプロセッサの構成」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

partition-expression

パーティション間の順序付けの制約を緩和するための基準となるパーティション式(CQLコードで使用)。

詳細は、第10章「Oracle CQLプロセッサの構成」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

D.75.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.76 record-parameters

この要素を使用するとコンポーネントのイベント・レコード・パラメータを定義できます。

詳細は、第13章「イベント・レコードと再生の構成」を参照してください。

D.76.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.76.2 属性

record-parametersコンポーネントには属性はありません。

D.76.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.77 repeat

この要素を使用するとplayback-parametersを繰り返すかどうかを定義できます。

有効な値:

- true

- false

D.77.1 子要素

repeatコンポーネント構成要素には子要素はありません。

D.77.2 属性

repeatコンポーネントには属性はありません。

D.77.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.78 rule

この要素を使用するとコンポーネントのEPLルールを定義できます。

この要素はrules要素内でのみ適用できます。

D.78.1 子要素

ruleコンポーネント構成要素には子要素はありません。

D.78.2 属性

表D-8ではruleコンポーネント構成要素の属性が一覧表示されています。

表D-8 ruleコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

このルールの一意の識別子です。

String

はい。

active

アプリケーションのデプロイときおよび実行時にこのルールを実行します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

ordering-constraint

イベントをシリアルではなくパラレルに処理できるパラレル問合せ実行を有効または無効にします。

この属性は、次の3つの値をサポートします。

- ORDEREDは、問合せはイベントをシリアルに処理する必要があることを意味します。これはデフォルトの動作です。

- UNORDEREDは、可能であれば常に、CQLプロセッサは複数のスレッドでパラレルに実行して、イベントを処理することを意味します。

- PARTITION_ORDEREDは、問合せがイベントをパーティション化している場合にパーティション内の全体順序を確保し、可能な場合、パーティション間の順序を無視することを意味します。

詳細は、第10章「Oracle CQLプロセッサの構成」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

partition-expression

パーティション間の順序付けの制約を緩和するための基準となるパーティション式(CQLコードで使用)。

詳細は、第10章「Oracle CQLプロセッサの構成」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

D.78.3 例

次の例はコンポーネント構成ファイル内のrule要素の使用方法を示します。

<processor>
<name>rvSampleProcessor</name>
<rules>
<rule id="rvSampleRule1"><![CDATA[
select * from RVSampleEvent retain 1 event
]]></rule>
</rules>
</processor>

D.79 rules

この要素を使用すると1つ以上のOracle CQL問合せ、processor (Oracle CQL)のビュー、またはprocessor (EPL)のEPLルールを定義できます。

D.79.1 子要素

rulesコンポーネント構成要素は次の子要素をサポートしています。

- rule

- query

- view

D.79.2 属性

rulesコンポーネントには属性はありません。

D.79.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.80 schedule-time-range

この要素を使用するとイベントがステージに再生される期間を指定できます。再生は指定した開始時間に始まり、すべてのイベントが再生されるか、または指定した終了時間まで継続されます。repeatがtrueに設定されている場合、再生は指定した終了時間またはユーザーが明らかに再生を中断するまで継続します。

この要素はplayback-parameters要素内でのみ適用できます。

D.80.1 子要素

schedule-time-rangeコンポーネント構成要素は次の子要素をサポートしています。

- start

- end

D.80.2 属性

schedule-time-rangeコンポーネントには属性はありません。

D.80.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.81 schedule-time-range-offset

この要素を使用するとイベントがステージに再生される期間を指定できます。再生は指定した開始時間に始まり、すべてのイベントが再生されるか、または指定した終了時間まで継続されます。repeatがtrueに設定されている場合、再生は指定した終了時間またはユーザーが明らかに再生を中断するまで継続します。

この要素はplayback-parameters要素内でのみ適用できます。

D.81.1 子要素

schedule-time-range-offsetコンポーネント構成要素は次の子要素をサポートしています。

- start

- duration

D.81.2 属性

schedule-time-range-offsetコンポーネントには属性はありません。

D.81.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.82 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プロセッサの場合のみ該当します。詳細は、第10章「Oracle CQLプロセッサの構成」を参照してください。

D.82.1 子要素

selectorコンポーネント構成要素には子要素はありません。

D.82.2 属性

selectorコンポーネントには属性はありません。

D.82.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.83 server-context-path

必須。パブリッシュする各ローカルhttp-pub-sub-adapterに対して、現在Oracle CEPアプリケーションをホストしているOracle CEPインスタンスに関連付けられているローカルHTTPパブリッシュ・サブスクライブ・サーバーの、Oracle CEPサーバーconfig.xmlファイル要素http-pubsub、子要素pathを指定します。

デフォルト: /pubsub

新たにローカルHTTPパブリッシュ・サブスクライブ・サーバーを作成、またはデフォルトの構成を変更した場合は、該当するpath子要素の値を指定します。

注意:

このオプションはリモートHTTPパブリッシュ・サブスクライブ・アダプタには指定しないでください。

D.83.1 子要素

server-context-pathコンポーネント構成要素には子要素はありません。

D.83.2 属性

server-context-pathコンポーネントには属性はありません。

D.83.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.84 server-url

必須。パブリッシュまたはサブスクライブする各リモートhttp-pub-sub-adapterに対して、Oracle CEPアプリケーションからのパブリッシュ先であるリモートHTTPパブリッシュ・サブスクライブ・サーバーのURLを指定します。リモートHTTP Pub-Subサーバーには、Oracle CEPの別のインスタンス、WebLogic Serverインスタンス、または任意のサード・パーティHTTP Pub-Subサーバーを指定できます。例:

http://myhost.com:9102/pubsub

注意:

このオプションはローカルHTTPパブリッシュ・サブスクライブ・アダプタには指定しないでください。

D.84.1 子要素

server-urlコンポーネント構成要素には子要素はありません。

D.84.2 属性

server-urlコンポーネントには属性はありません。

D.84.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.85 session-ack-mode-name

この要素を使用するとjms-adapterのセッション確認モードを定義できます。

javax.jms.Sessionからの有効な値。

- AUTO_ACKNOWLEDGE: この確認モードを使用するとセッションが受信コールから正常に戻された場合か、またはセッションがメッセージ処理のためにコールしたメッセージ・リスナーが正常に戻る場合のいずれでもセッションは自動的にクライアントがメッセージを受信したことを確認します。

- CLIENT_ACKNOWLEDG: この確認モードを使用するとメッセージの確認メソッドをコールすることによって、クライアントは消費されたメッセージを確認します。

- DUPS_OK_ACKNOWLEDGE: この確認モードはセッションにメッセージ送信の確認を遅延するように命令します。

デフォルト: AUTO_ACKNOWLEDGE

D.85.1 子要素

session-ack-mode-nameコンポーネント構成要素には子要素はありません。

D.85.2 属性

session-ack-mode-nameコンポーネントには属性はありません。

D.85.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.86 session-transacted

この要素を使用するとセッションをインバウンドまたはアウトバウンドのjms-adapter用に処理するかどうかを定義できます。

有効な値:

- true

- false

D.86.1 子要素

session-transactedコンポーネント構成要素には子要素はありません。

D.86.2 属性

session-transactedコンポーネントには属性はありません。

D.86.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.87 stage

この要素を使用すると診断プロファイルのstart-locationまたはend-locationのステージを定義できます。

有効な値はイベント処理ネットワーク( EPN )における既存ステージ名です。詳細は、1.1.1項「Oracle CEPイベント処理ネットワークの構成」を参照してください。

D.87.1 子要素

stageコンポーネント構成には子要素はありません。

D.87.2 属性

stageコンポーネントには属性はありません。

D.87.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.88 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.88.1 子要素

startコンポーネント構成要素には子要素はありません。

D.88.2 属性

startコンポーネントには属性はありません。

D.88.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.89 start-location

この要素を使用すると診断プロファイルの開始位置を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.89.1 子要素

start-locationコンポーネント構成要素は次の子要素をサポートしています。

- application

- stage

- direction

D.89.2 属性

start-locationコンポーネントには属性はありません。

D.89.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.90 start-stage

この要素を使用すると診断プロファイルの開始ステージを定義できます。

有効な値はイベント処理ネットワーク( EPN )における既存ステージ名です。詳細は、1.1.1項「Oracle CEPイベント処理ネットワークの構成」を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.90.1 子要素

start-stageコンポーネント構成要素には子要素はありません。

D.90.2 属性

start-stageコンポーネントには属性はありません。

D.90.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.91 store-policy-parameters

この要素を使用するとイベント・ストア・プロバイダ専用の1つ以上のストア・ポリシー・パラメータを定義できます。

D.91.1 子要素

store-policy-parameterコンポーネント構成要素は次の子要素をサポートしています。

- [parameter]

D.91.2 属性

store-policy-parameterコンポーネントには属性はありません。

D.91.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.92 stream

この要素を使用するとストリーム・コンポーネントを定義できます。

注意:

streamコンポーネントは11g リリース1 (11.1.1)では非推奨です。channel要素をかわりに使用します。

D.92.1 子要素

streamコンポーネント構成要素は次の子要素をサポートしています。

- name

- record-parameters

- playback-parameters

- max-size

- max-threads

D.92.2 属性

streamコンポーネントには属性はありません。

D.92.3 例

次の例はコンポーネント構成ファイル内のstream要素の使用方法を示します。

<stream>
<name>fxMarketEuroOut</name>
<max-size>0</max-size>
<max-threads>0</max-threads>
</stream>

この例ではstreamの一意の識別子はfxMarketEuroOutです。

D.93 symbol

この要素を使用するとadapter、http-pub-sub-adapter、またはjms-adapter要素のシンボルを定義できます。

注意:

symbolコンポーネントは11g リリース1 (11.1.1)では非推奨です。

D.93.1 子要素

symbolコンポーネント構成には子要素はありません。

D.93.2 属性

symbolコンポーネントには属性はありません。

D.93.3 例

次の例はコンポーネント構成ファイル内のsymbol要素の使用方法を示します。

<adapter>
<name>trackdata</name>
<symbols>
<symbol>BEAS</symbol>
<symbol>IBM</symbol>
</symbols>
</adapter>

D.94 symbols

この要素を使用すると1つ以上のコンポーネントのsymbol要素を定義できます。

注意:

symbolコンポーネントは11g リリース1 (11.1.1)では非推奨です。

D.94.1 子要素

symbolsコンポーネント構成要素は次の子要素をサポートしています。

- symbol

D.94.2 属性

symbolsコンポーネントには属性はありません。

D.94.3 例

次の例はコンポーネント構成ファイル内のsymbols要素の使用方法を示します。

<adapter>
<name>trackdata</name>
<symbols>
<symbol>BEAS</symbol>
<symbol>IBM</symbol>
</symbols>
</adapter>

D.95 threshold

この要素を使用するとOracle CEPサーバーがログを記録する監視イベントのしきい値を定義できます。

この要素は診断プロファイルのaverage-latency内でのみ適用できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.95.1 子要素

thresholdコンポーネント構成要素は次の子要素をサポートしています。

- amount

- unit

D.95.2 属性

threshholdコンポーネントには属性はありません。

D.95.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.96 throughput

この要素を使用すると診断プロファイルのスループットを定義できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.96.1 子要素

throughputコンポーネント構成要素は次の子要素をサポートしています。

- name

- throughput-interval

- average-interval

- [location]

D.96.2 属性

throughputコンポーネントには属性はありません。

D.96.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.97 throughput-interval

この要素を使用すると診断プロファイルのスループット間隔を定義できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing Visualizerユーザーズ・ガイド』のEPNにおけるステージまたはパスのスループットおよび待機時間の監視に関する項を参照してください。

D.97.1 子要素

throughput-intervalコンポーネント構成要素は次の子要素をサポートしています。

- amount

- unit

D.97.2 属性

throughput-intervalコンポーネントには属性はありません。

D.97.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.98 time-range

この要素を使用するとOracle CEPサーバーがイベント・ストアでイベントに適用するフィルタを定義できます。この時間範囲内のrecord-timeを持つイベントのみステージに再生されます。

time-range-offsetまたはtime-rangeのいずれかを使用します。ただし、両方を使用することはできません。

詳細は、第13章「イベント・レコードと再生の構成」を参照してください。

D.98.1 子要素

time-rangeコンポーネント構成要素は次の子要素をサポートしています。

- start

- end

D.98.2 属性

time-rangeコンポーネントには属性はありません。

D.98.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.99 time-range-offset

この要素を使用するとOracle CEPサーバーがイベント・ストアでイベントに適用するフィルタを定義できます。この時間範囲内のrecord-timeを持つイベントのみステージに再生されます。

time-rangeまたはtime-range-offsetのいずれかを使用します。ただし、両方を使用することはできません。

詳細は、第13章「イベント・レコードと再生の構成」を参照してください。

D.99.1 子要素

time-range-offsetコンポーネント構成要素は次の子要素をサポートしています。

- start

- duration

D.99.2 属性

time-range-offsetコンポーネントには属性はありません。

D.99.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.100 time-to-live

この要素を使用するとエントリがキャッシュされる時間の最大数をミリ秒で定義できます。デフォルト値は無限大です。

詳細は、12.2項「Oracle CEPローカル・キャッシュ・システムおよびキャッシュの構成」を参照してください。

D.100.1 子要素

存続時間コンポーネント構成要素には子要素はありません。

D.100.2 属性

存続時間コンポーネントには属性はありません。

D.100.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.101 unit

この要素を使用するとamount要素の期間の単位を定義できます。

有効な値:

- NANOSECONDS

- MICROSECONDS

- MILLISECONDS

- SECONDS

- MINUTES

- HOURS

- DAYS

D.101.1 子要素

unitコンポーネント構成には子要素はありません。

D.101.2 属性

unitコンポーネントには属性はありません。

D.101.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.102 user

user要素は次の親要素で使用します。

- http-pub-sub-adapter:user要素を使用するとOracle CEPアプリケーションがパブリッシュする対象となるHTTPパブリッシュ/サブスクライブ・サーバーがユーザー認証を要求する場合に、ユーザー名を定義できます。

- jms-adapter:Oracle CEPがJNDI InitialContextを取得するとき、userおよびpassword(またはencrypted-password )要素を使用します。Oracle CEPが、JMS宛先(JMSキューまたはトピック)への接続を作成するためにjavax.jms.ConnectionFactory上でcreateConnectionメソッドをコールするときconnection-userおよびconnection-passwordを使用し、また構成済の場合は(connection-encrypted-password要素)を使用します。それ以外の場合は、Oracle CEPはuserおよびpassword(またはencrypted-password)要素を使用します。

D.102.1 子要素

userコンポーネント構成要素には子要素はありません。

D.102.2 属性

userコンポーネントには属性はありません。

D.102.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.103 value

この要素を使用するとparameter要素の値を定義できます。

D.103.1 子要素

valueコンポーネント構成要素には子要素はありません。

D.103.2 属性

valueコンポーネントには属性はありません。

D.103.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.104 view

この要素を使用するとコンポーネントのOracle CQLビューを定義できます。

詳細は、第10章「Oracle CQLプロセッサの構成」を参照してください。

D.104.1 子要素

viewコンポーネント構成要素には子要素はありません。

D.104.2 属性

表D-9ではviewコンポーネント構成要素の属性が一覧表示されています。

表D-9 viewコンポーネント構成要素の属性

属性

説明

データ型

必須?

id

この問合せの一意の識別子です。

String

はい。

active

アプリケーションのデプロイ時および実行時にこの問合せを実行します。

有効な値は、trueおよびfalseです。デフォルト値はfalseです。

Boolean

いいえ。

ordering-constraint

イベントをシリアルではなくパラレルに処理できるパラレル問合せ実行を有効または無効にします。

この属性は、次の3つのうち1つの値をサポートします。

- ORDEREDは、問合せはイベントをシリアルに処理する必要があることを意味します。これはデフォルトの動作です。

- UNORDEREDは、可能であれば常に、CQLプロセッサは複数のスレッドでパラレルに実行して、イベントを処理することを意味します。

- PARTITION_ORDEREDは、問合せがイベントをパーティション化している場合にパーティション内の全体順序を確保し、可能な場合、パーティション間の順序を無視することを意味します。

詳細は、第10章「Oracle CQLプロセッサの構成」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

partition-expression

パーティション間の順序付けの制約を緩和するための基準となるパーティション式(CQLコードで使用)。

詳細は、第10章「Oracle CQLプロセッサの構成」の「ordering-constraint属性の使用」を参照してください。

String

いいえ。

schema

ビューで使用されるstream要素のスペース区切りのリストです。

スペース区切りのトークンのStringです。

いいえ。

D.104.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.105 work-manager

この要素を使用するとjms-adapterのワーク・マネージャ名を定義できます。

有効な値はOracle CEPサーバーのconfig.xmlファイルのwork-manager要素のname子要素で指定される名前です。デフォルト値はアプリケーション自体に構成されたワーク・マネージャです。

詳細は、 F.45項「work-manager」を参照してください。

D.105.1 子要素

work-managerコンポーネント構成要素には子要素はありません。

D.105.2 属性

work-managerコンポーネントには属性はありません。

D.105.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.106 work-manager-name

この要素を使用するとcacheのワーク・マネージャを定義できます。

listeners要素にはwork-manager-nameという単一の子要素があり、これが非同期的なリスナーの起動に使用されるワーク・マネージャを指定します。この値は、同期的起動が有効化されている場合は無視されます。ワーク・マネージャがキャッシュそのものに指定されている場合、この値はリスナーのみを起動するためにオーバーライドします。

有効な値はOracle CEPサーバーのconfig.xmlファイルのwork-manager要素のname子要素で指定される名前です。デフォルト値はアプリケーション自体に構成されたワーク・マネージャです。

D.106.1 子要素

work-manager-nameコンポーネント構成要素には子要素はありません。

D.106.2 属性

work-manager-nameコンポーネントには属性はありません。

D.106.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.107 write-behind

この要素を使用するとキャッシュ・ストアへの非同期的な書込みを指定できます。キャッシュ・ストアはキャッシュ・エントリの作成または更新の後で各スレッドから起動されます。この要素は動的に変更されます。

D.107.1 子要素

write-behindコンポーネント構成要素は次の子要素をサポートしています。

- work-manager-name

- batch-size

- buffer-size

- buffer-write-attempts

- buffer-write-timeout

D.107.2 属性

write-behindコンポーネントには属性はありません。

D.107.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.108 write-none

この要素を使用するとキャッシュ・ストアへ書込みを行わないように指定できます。これはデフォルトの書込みポリシーです。この要素は動的に変更されます。

D.108.1 子要素

write-noneコンポーネント構成には子要素はありません。

D.108.2 属性

write-noneコンポーネントには属性はありません。

D.108.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.109 write-through

この要素を使用するとキャッシュ・ストアへの同期的な書込みを指定できます。エントリが作成または更新されると書込みが発生します。この要素は動的に変更されます。

D.109.1 子要素

write-throughコンポーネント構成には子要素はありません。

D.109.2 属性

write-throughコンポーネントには属性はありません。

D.109.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 CEPのアプリケーション・デプロイメントを構成するのに使用するXMLの背後にあるスキーマである、deployment.xsdスキーマの要素へのリファレンスを示します。

- E.1項「Oracle CEPデプロイメント要素の概要」

- B.3項「deployment.xsdのデプロイメント・スキーマ」

E.1 Oracle CEPデプロイメント要素の概要

Oracle CEPには多数のアプリケーション・アセンブリ要素が用意されており、それらの要素をアプリケーションのEPNアセンブリ・ファイル内で使用して、イベント・タイプを登録し、イベント処理ネットワークのコンポーネントを宣言し、各コンポーネントがどのように相互にリンクしているかを指定します。EPNアセンブリ・ファイルは、標準のSpringコンテキスト・ファイルの拡張です。

E.1.1 要素の階層

Oracle CEPコンポーネント構成要素は、次の階層に整理されます。

beans
Standard Spring and OSGi elements such as bean, osgi-service, and so on.

E.1.2 Oracle CEPデプロイメント構成ファイルの例

次のfxアプリケーションのサンプル・デプロイメント構成ファイルは、様々なOracle CEP要素の使用方法を示しています。

<?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 CEPサーバーにデプロイすることを指定します。

String

いいえ。

state

Oracle CEPサーバーにデプロイした後、バンドルのあるべき状態を指定します。この属性の値は次のいずれかである必要があります。

- 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 CEPサーバーの属性およびサービスを構成するのに使用するXMLの背後にあるスキーマである、welvs_server_config.xsdスキーマの要素へのリファレンスを示します。

- F.1項「Oracle CEPサーバー構成要素の概要」

- B.4項「サーバー構成スキーマwlevs_server_config.xsd」

F.1 Oracle CEPサーバー構成要素の概要

Oracle CEPは、Oracle CEPサーバー専用の属性およびサービスを構成するために使用するサーバー構成要素の数を提供します。

F.1.1 要素の階層

最上位レベルのOracle CEPサーバー構成要素は、次の階層に構成されます。

- 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 CEPサーバー構成ファイルの例

HelloWorldアプリケーションからの次のサンプルOracle CEPサーバー構成ファイルは、多くのOracle CEP要素の使用方法を示します。

<?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 Complex Event Processing管理者ガイド』のユーザー、グループおよびロールに関する項

F.2.2 属性

auth-constraintサーバー構成要素には属性がありません。

F.2.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバーを構成できます。

F.3.1 子要素

bdb-configサーバー構成要素は、表F-2で一覧表示される子要素をサポートします。

表F-2 bdb-configの子要素

XMLタグ

タイプ

説明

db-env-path

string

Oracle CEPサーバーは、サブディレクトリ内でサーバーの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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバーでクラスタ・コンポーネントを構成できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEPネイティブ・クラスタリングによるマルチサーバー・ドメインの管理に関する項を参照してください。

F.7.1 子要素

clusterサーバー構成要素は、表F-4で一覧表示される子要素をサポートします。

表F-4 クラスタの子要素

XMLタグ

タイプ

説明

name

string

このクラスタの名前。詳細は、「name」を参照してください。

server-name

string

一意のサーバー名を指定します。Oracle CEP Visualizerは、サーバーをコンソールで表示するときにこの要素の値を使用します。

デフォルト値:

- Oracle CEPネイティブ・クラスタリング: 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 CEPはコンピュータのIPアドレスに基づいて自動的にマルチキャスト・アドレスをマルチサーバー・ドメインに割り当てます。

ただし、サーバーが異なるコンピュータ上でホストされる場合、適切なドメイン・ローカル・アドレスを提供する必要があります。Oracleは、239.255.X.X形式のアドレスを使用することをお薦めします。自動で割り当てられたマルチキャスト・アドレスは、このアドレスに基づきます。

このmulticast-addressを使用するすべてのOracle CEPサーバーは、同じサブセット上で稼働する必要があります。

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 CEPネイティブ・クラスタリングにのみ適用可能: サーバーのアイデンティティを指定し、1からINT_MAXまでの整数にする必要があります。Oracle CEPは、マルチサーバー操作中にサーバー・アイデンティティを数値的に比較し、最小のアイデンティティを持つサーバーがドメイン・コーディネータになります。マルチサーバー・ドメイン内の各サーバーは、必ず異なるアイデンティティを持つようにしてください。サーバーが同一のアイデンティティを持つ場合、マルチサーバー操作の結果は予測できなくなります。

Oracle Coherenceには適用できません。

enabled

説明を参照

クラスタが有効かどうかを指定します。有効な値:

- coherence

- evs4j

- true: クラスタは有効(Oracle Coherenceモード)

- false: クラスタは無効(デフォルト)

security

説明を参照

このクラスタのセキュリティ・タイプを指定します。有効な値:

- none: デフォルト値。マルチサーバー・ドメインにセキュリティを構成しないことを指定します。

- encrypt: マルチサーバー・メッセージが暗号化されるように指定します。

groups

string

このクラスタが属するグループ名のカンマ区切りのリストを指定します。詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のグループに関する項を参照してください。

operation-timeout

int

ポイント・ツー・ポイントHTTPマルチサーバー・リクエストのタイムアウトをミリ秒単位で指定します。デフォルト値は30000です。

F.7.2 属性

clusterサーバー構成要素には属性がありません。

F.7.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバーでOracle CQL専用オプションを構成できます。

F.9.1 子要素

cqlサーバー構成要素は、次の子要素をサポートしています。

- name

- scheduler

- partition-order-capacity

F.9.2 属性

cqlサーバー構成要素には属性がありません。

F.9.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバーでドメイン名を構成できます。

F.13.1 子要素

domainサーバー構成要素は、次の子要素をサポートしています。

- name

F.13.2 属性

domainサーバー構成要素には属性がありません。

F.13.3 例

次の例は、Oracle CEPサーバー構成ファイル内のdomain要素の使用方法を示します。

<domain>
<name>WLEventServerDomain</name>
</domain>

この例では、domainの一意の識別子はWLEventServerDomainです。

F.14 debug

この要素を使用すると、Oracle CEPサーバーの1つ以上のデバッグ・プロパティを構成できます。

F.14.1 子要素

debugサーバー構成要素は、表F-8で一覧表示される子要素をサポートします。

表F-8 debugの子要素

XMLタグ

タイプ

説明

name

string

このdebug構成の名前。詳細は、「name」を参照してください。

debug-properties

string

デバッグ・フラグ名(そのパッケージ名は使用せずに)を使用し、値をtrueに指定することによって、1つ以上の子要素が形成されます。

すべてのデバッグ・フラグの完全リストに関する詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』の構成ファイルを使用したOracle CEPデバッグ・オプションの構成方法に関する項を参照してください。

F.14.2 属性

debugサーバー構成要素には属性がありません。

F.14.3 例

次の例では、Oracle CEPサーバー構成ファイル内でデバッグ・フラグ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 CEPサーバーのイベント・ストアを構成できます。

F.15.1 子要素

event-storeサーバー構成要素は、表F-9で一覧表示される子要素をサポートします。

表F-9 event-storeの子要素

XMLタグ

タイプ

説明

name

string

このdebug構成の名前。詳細は、「name」を参照してください。

provider-order

string

Oracle CEPサーバーがアクセスする順序で1つ以上のprovider子要素の名前を指定します。

詳細は、次を参照してください:

- rdbms-event-store-provider

F.15.2 属性

event-storeサーバー構成要素には属性がありません。

F.15.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバーで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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内のjndi-context要素の使用方法を示します。

<jndi-context>
<name>myJNDI</name>
<default-provider>true</default-provider>
</jndi-context>

この例では、adapterの一意の識別子はmyJNDIです。

F.22 log-file

この要素を使用すると、Oracle CEPサーバーでファイルへのロギングを構成できます。

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 CEPサーバー構成ファイル内の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 CEPサーバーで標準出力(コンソール)へのロギングを構成できます。

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 CEPサーバー構成ファイル内のlog-stdout要素の使用方法を示します。

<log-stdout>
<name>logStdout</name>
<stdout-severity>Debug</stdout-severity>
</log-stdout>

この例では、log-stdout要素の一意の識別子はlogStdoutです。

F.24 logging-service

この要素を使用すると、Oracle CEPサーバーでロギング・サービスを構成できます。

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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバー構成要素の一意の識別子を宣言できます。

F.26.1 子要素

nameサーバー構成要素には、子要素がありません。

F.26.2 属性

nameサーバー構成要素には属性がありません。

F.26.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 Complex 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 CEPサーバー構成ファイル内の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 Complex Event Processing管理者ガイド』のネットワークI/Oプロバイダに関する項を参照してください。

F.28.2 属性

netio-clientサーバー構成要素には属性がありません。

F.28.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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です。

この値を設定できる場所(優先順位など)に関するベスト・プラクティスおよび情報などの詳細は、第10章「Oracle CQLプロセッサの構成」の「問合せのパーティション化でのpartition-order-capacityの使用」を参照してください。

F.29.1 子要素

partition-order-capacity要素には子要素はありません。

F.29.2 属性

partition-order-capacity要素には属性はありません。

F.29.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバーでリレーショナル・データベース管理システムを使用するイベント・ストア・プロバイダを構成できます。

デフォルトでは、Oracle CEPサーバーは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 CEPサーバーが待機する最大時間(ミリ秒)。

デフォルト: 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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内のrmi要素の使用方法を示します。

<rmi>
<name>myRMI</name>
<http-service-name>TestJetty</http-service-name>
</rmi>

この例では、rmi要素の一意の識別子はmyRMIです。

F.34 scheduler

この要素を使用すると、Oracle CEPサーバーでcqlスケジューラ・オプションを構成できます。

F.34.1 子要素

schedulerサーバー構成要素は、表F-22で一覧表示される子要素をサポートします。

表F-22 schedulerの子要素

XMLタグ

タイプ

説明

class-name

string

sched_nameスケジュール・オプションの1つの値を、Oracle CEPサービス・エンジンのスケジュール・アルゴリズムを実装するJavaクラスの完全修飾パッケージ名として指定します。このクラスによって、Oracle CEPサービス・エンジンのスケジューラが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 CEPサービス・エンジンのスケジューラが実行される秒数の合計。

デフォルト: 1000000ミリ秒。

time-slice

int

Oracle CEPサービス・エンジンのスケジューラがOracle CQL問合せを実行する頻度。

デフォルト: 1000ミリ秒

schedule-on-new-thread

boolean

Oracle CEPサービス・エンジンのスケジューラが個別のスレッドを使用するかどうか。オプション:

- true: スケジューラは個別のスレッドで実行されます。

- false: スケジューラは、Oracle CEPサービス・エンジンと同一のスレッドで実行されます(デフォルト)。

F.34.2 属性

schedulerサーバー構成要素には属性がありません。

F.34.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバーから情報をリクエストし、Oracle CEPサーバーが使用可能な情報を持たない場合、情報を持つまで応答しません。Oracle CEPサーバーが応答するとき、クライアントは通常、別のリクエストをただちに送信します。

- callback-polling: このトランスポートは、クロス・ドメイン構成を使用するHTTPパブリッシュ/サブスクライブ・アプリケーションに使用します。この構成では、ブラウザが1つのWebサーバー(JavaScriptコードを含む)からページをダウンロードし、HTTPパブリッシュ/サブスクライブ・クライアントとして別のサーバーに接続します。これは、Bayeuxプロトコルに必要です。Bayeuxプロトコルの詳細は、http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.html を参照してください。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のHTTPパブリッシュ・サブスクライブ・サーバーの稼働方法に関する項を参照してください。

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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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 CEPサーバーがセキュア接続を使用するかどうかを構成できます。

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 CEPサーバーが詳細エラー・メッセージを表示します。

- false: Oracle CEPサーバーが省略エラー・メッセージを表示します(デフォルト)。

F.37.2 属性

show-detail-error-messageサーバー構成要素には属性がありません。

F.37.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバーで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 CEPサーバーがFederal Information Processing Standards (FIPS)認証済の擬似乱数ジェネレータを使用するかどうかを指定します。

詳細は、『Oracle Fusion Middleware Oracle Complex 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 CEPサーバー構成ファイル内の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 CEPサーバーでweblogic-jta-gatewayのデフォルト・トランザクション・タイムアウトを秒単位で構成できます。

デフォルト: 60

F.39.1 子要素

timeout-secondsサーバー構成要素には属性がありません。

F.39.2 属性

timeout-secondsサーバー構成要素には属性がありません。

F.39.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバーでトランザクション・マネージャ・プロパティを構成できます。

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 CEPサーバー構成ファイル内の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 CEPサーバーがセキュア接続を使用するかどうかを構成できます。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processing管理者ガイド』のOracle CEP 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 CEPサーバーがセキュア接続のみを使用します。

- false: Oracle CEPサーバーがセキュアでない接続を承諾します。

F.41.2 属性

use-secure-connectionsサーバー構成要素には属性がありません。

F.41.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバー・インスタンスを構成できます。

F.42.1 子要素

weblogic-instancesサーバー構成要素は、表F-29で一覧表示されている子要素をそれぞれ持つゼロ以上のweblogic-instance子要素をサポートしています。

表F-29 weblogic-instancesの子要素

XMLタグ

タイプ

説明

domain-name

string

Oracle CEPサーバーのドメイン名を指定します。

server-name

string

Oracle CEPサーバー名を指定します。

protocol

string

JTAプロトコルを指定します。

デフォルト: t3

host-address

string

Oracle CEPサーバーのホスト名またはIPアドレス。

port

int

Oracle CEPサーバーのnetioポート。

F.42.2 属性

weblogic-instancesサーバー構成要素には属性がありません。

F.42.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバー・クライアントのJTAゲートウェイ・サービスの属性を構成できます。

F.43.1 子要素

weblogic-jta-gatewayサーバー構成要素は、次の子要素をサポートしています。

- name

- timeout-seconds

- weblogic-instances

F.43.2 属性

weblogic-jta-gatewayサーバー構成要素には属性がありません。

F.43.3 例

次の例は、Oracle CEPサーバー構成ファイル内の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 CEPサーバーの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 CEPサーバー構成ファイル内の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 CEPサーバーでワーク・マネージャを構成できます。

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 CEPサーバー構成ファイル内の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 CEPサーバー構成ファイル内の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スキーマの要素へのリファレンスを示します。

- 付録H「スキーマ参照: ロケール・メッセージ・カタログl10n_msgcat.dtd」

- 24.4項「ログ・メッセージ・カタログの管理」

G.1 メッセージ・カタログ要素の概要

Oracle CEPでは、ローカライズ可能なログ・メッセージの定義に使用する、多数のメッセージ・カタログ要素が提供されます。

G.1.1 要素の階層

最上位Oracle CEPメッセージ・カタログ要素は、メッセージのカタログ・タイプに応じて次の階層に構成されます。

- 例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 CEPサーバー・カタログ

- 500000 :ユーザー定義のカタログ

String

いいえ。

endid

このカタログで使用される最高のメッセージIDを指定します。

構文: 1桁から6桁の数値。

例: endid="600100"

有効な値:

- 499999はOracle CEPサーバー・カタログ

- 999999 :ユーザー定義のカタログ

String

いいえ。

loggables

Loggableオブジェクトを返す追加メソッドを生成するかどうかを示します。

例: loggable="true"

有効な値:

- true

- false

デフォルト: false

String

prefix

ログに記録されるときにメッセージIDの先頭に追加するStringを指定します。Oracle CEPサーバー・メッセージは、接頭辞のデフォルトは「CEP」で、別の接頭辞を指定することはできません。ユーザー・メッセージは、任意の接頭辞を指定することが可能です。接頭辞が付いたメッセージIDは、ログ・エントリで次のように表示されます。

<[prefix-]id>

ここで、prefixはこの属性であり、idは特定のメッセージに関連付けられた6桁のメッセージIDです。

たとえば、接頭辞が"XYZ"の場合、メッセージ987654はログ・エントリでは <XYZ-987654>として表示されます。prefixが定義されていない場合、ログ・エントリは<987654>となります。

構文: 任意のString (5文字まで)

例: prefix="CEP"

有効な値:

- "CEP"はOracle CEPサーバー・カタログ

- 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スキーマの要素へのリファレンスを示します。

- 付録G「スキーマ参照: メッセージ・カタログmsgcat.dtd」

- 24.4項「ログ・メッセージ・カタログの管理」

H.1 ロケール・メッセージ・カタログ要素の概要

Oracle CEPでは、特定Javaロケールに対してローカライズされたログ・メッセージの定義に使用できる、多数のロケール・メッセージ・カタログ要素が提供されます。

H.1.1 要素の階層

最上位Oracle CEPロケール・メッセージ・カタログ要素は、メッセージのカタログ・タイプに応じて次の階層に構成されます。

- 例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 CEPメタデータ注釈リファレンス

この付録では、アダプタ・ライフサイクルの段階を処理するメソッド、OSGiサービス参照が挿入されたメソッドを指定し、設計時にリソース・アクセスを構成するのに使用できるOracle Complex Event Processing (Oracle CEP)のJava注釈へのリファレンスを示します。

- I.1項「Oracle CEPメタデータ注釈の概要」

- 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 CEPメタデータ注釈の概要

Oracle CEPメタデータ注釈は、Oracle CEPコンポーネントの構成にアクセスするために使用されます。Oracle CEPでは、次の注釈が用意されています。

- I.1.1項「アダプタ・ライフサイクル注釈」

- I.1.2項「OSGiサービス参照注釈」

- I.1.3項「リソース・アクセス注釈」

詳細は、次を参照してください:

- 1.1.9項「Oracle CEPアプリケーション・ライフサイクル」

- 1.4項「Oracle CEPリソース・アクセスの構成」

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項「Oracle CEPリソース・アクセスの構成」を参照してください。

I.2 com.bea.wlevs.configuration.Activate

ターゲット: メソッド

@Activate注釈は、Javaファイル内で使用するアダプタ・ライフサイクル注釈の1つであり、Oracle CEPでアダプタへの構成情報の送信に使用されるメソッドを明示的に指定するカスタム・アダプタを実装します。

Oracle CEPで@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 CEPはこのクラスのインスタンスを自動的に作成し、作成したインスタンスに実際の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 CEPはアプリケーションがデプロイされるときにこのクラスのインスタンスを自動的に作成します。たとえば、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 CEPでアダプタへの構成情報の送信に使用されるメソッドを明示的に指定するカスタム・アダプタを実装します。

コンポーネントの状態が特定の構成変さらによって更新された場合、Oracle CEPは@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 CEPはこのクラスのインスタンスを自動的に作成し、作成したインスタンスに実際の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 CEPはアプリケーションがデプロイされるときにこのクラスのインスタンスを自動的に作成します。HelloWorldのサンプルでは、アダプタ構成が拡張されています。詳細は、付録I 「com.bea.wlevs.configuration.Activate」の例を参照してください。

上記のアダプタのJavaコードでは、checkConfigurationメソッドに@Prepare注釈が付いています。つまり、アダプタの構成になんらかの変更が行われた場合は、このメソッドが呼び出されます。さらに、上記の例は、アダプタの構成のmessageプロパティ(拡張されたアダプタ構成ファイルで設定)がnullまたは空のいずれでもないことを確認するチェックが、このメソッドによって実行されることを示しています。このプロパティがnullまたは空である場合、メソッドは例外をスローします。

I.4 com.bea.wlevs.configuration.Rollback

ターゲット: メソッド

@Rollback注釈は、Javaファイル内で使用するアダプタ・ライフサイクル注釈の1つであり、Oracle CEPでアダプタへの構成情報の送信に使用されるメソッドを明示的に指定するカスタム・アダプタを実装します。

コンポーネントの@Prepareメソッドが呼び出されて例外が送出された場合、Oracle CEPは@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 CEPはこのクラスのインスタンスを自動的に作成し、作成したインスタンスに実際の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 CEPはアプリケーションがデプロイされるときにこのクラスのインスタンスを自動的に作成します。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());
}

その他の例は、2.7項「イベント型リポジトリにアクセス」を参照してください。

J Oracle CEP IDE for Eclipseチュートリアル

この付録では、Oracle CEP IDE for Eclipseを使用した簡単なOracle Complex Event Processing (Oracle CEP)アプリケーションの作成、デプロイおよびデバッグの基本を示す簡単なチュートリアルを提供します。

- 付録J「はじめに」

- 付録J「ステップ1: Oracle CEP定義の作成」

- 付録J「ステップ2: Oracle CEPアプリケーションの作成」

- 付録J「ステップ3: Oracle CEPサーバーの開始とプロジェクトのデプロイ」

- 付録J「ステップ4: コードの変更および再デプロイ」

- 付録J「ステップ5: デプロイ済アプリケーションのデバッグ」

- 付録J「次のステップ」

J.1 はじめに

このチュートリアルは、ローカル・コンピュータにOracle CEPサーバーおよびOracle CEP IDE for Eclipseがインストールされていることを前提とします。詳細は、http://www.oracle.com/technologies/soa/complex-event-processing.htmlを参照してください。

このチュートリアルを開始する前に、JavaまたはJava EEパースペクティブに切り替えるとよいでしょう。CEPアプリケーションの開発にOracle CEP IDE for Eclipseを使用する場合、それらは両方とも役立ちます。Oracle CEPアプリケーションはJava EEのアプリケーションではありませんが、両方に共通するビューがあり、便利です。

パースペクティブを変更するには、「ウィンドウ」>パースペクティブを開くメニューを選択するか、パースペクティブのショートカット・メニューを利用します。図J-1を参照してください。

図J-1 パースペクティブのショートカット・メニュー

「図J-1 パースペクティブのショートカット・メニュー」の説明

Java Perspectiveを使用している場合、「ウィンドウ」>「ビューの表示」>「サーバー」を選択して、「サーバー」ビューを開きます。

Oracle CEP IDE for Eclipseが図J-2のようになっていることを確認します。

図J-2 Oracle CEP IDE for Eclipse

「図J-2 Oracle CEP IDE for Eclipse」の説明

J.2 ステップ1: Oracle CEP定義の作成

最初に、ローカル・マシンにOracle CEPサーバーをインストールしている場所をOracle CEP IDE for Eclipseに示します。5.2.1項「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」の次のステップに従います。

このチュートリアルについては、ウィザードの2番目の画面で「ワークスペースのデフォルトを使用」の「自動パブリッシュ」オプションを選択し、サーバーへの自動パブリッシュを有効にします。図J-3を参照してください。

図J-3 自動パブリッシュ用にOracle CEPサーバーを構成

「図J-3 自動パブリッシュ用にOracle CEPサーバーを構成」の説明

構成完了後に、サーバーのビューが図J-4のようになっていることを確認します。

図J-4 Oracle CEP IDE for Eclipseのサーバー・ビュー

「図J-4 Oracle CEP IDE for Eclipseのサーバー・ビュー」の説明

J.3 ステップ2: Oracle CEPアプリケーションの作成

次に、Oracle CEPアプリケーションを作成します。ステップの説明は、5.2.1項「ローカルOracle CEPサーバーおよびサーバー・ランタイムの作成方法」を参照してください。

このチュートリアルでは、「ファイル」>「新規」>「その他」と選択し、「Oracle CEP」オプションを展開して、「Oracle CEPアプリケーション・プロジェクト」を選択します。

「新規Oracle CEPアプリケーション・プロジェクト」ダイアログで、「プロジェクト名」にHelloを入力し、「ターゲット・ランタイム」でOracle CEP v10.3.0(付録J「ステップ1: Oracle CEP定義の作成」で作成済)を選択します。図J-9を参照してください。

図J-5 「新規Oracle CEPアプリケーション・プロジェクト」ダイアログ

「図J-5 「新規Oracle CEPアプリケーション・プロジェクト」ダイアログ」の説明

「次へ」をクリックします。「バンドル・プロパティ」はデフォルトのままにし、「次へ」をクリックします。図J-6のような「テンプレート」のダイアログが表示されます。

図J-6 「テンプレート」ダイアログ

「図J-6 「テンプレート」ダイアログ」の説明

このページでは、プロジェクトに配置するアプリケーションの初期ファイルを選択することができます。次のテンプレートの中の1つを使用してOracle CEPアプリケーションを作成を選択し、「Hello World」テンプレートを選択します。

「終了」をクリックします。

「プロジェクト・エクスプローラ」に図J-7に示すファイルが表示されていることを確認します。

図J-7 「プロジェクト・エクスプローラ」

「図J-7 「プロジェクト・エクスプローラ」」の説明

J.4 ステップ3: Oracle CEPサーバーの起動およびプロジェクトのデプロイ

プロジェクトが作成され、サンプル・コンテンツもあり、サーバーを起動し、プロジェクトをデプロイします。

図J-8に示すように、サーバー・ビューの「デバッグ」ボタンをクリックしてサーバーを起動します。デバッグのアイコンは「ビュー」上にバグのような表示になっています。

図J-8 Oracle CEPサーバーの起動

「図J-8 Oracle CEPサーバーの起動」の説明

コンソール・ビューで、Oracle CEPサーバーのログ・メッセージがスクロール表示され、最後に、次に示すように、サーバーが起動されたことを示すメッセージが表示されます。

<Jan 22, 2009 4:59:41 PM EST> <Notice> <Server> <BEA-2046000> <Server STARTED>

次に、プロジェクトをサーバーにデプロイします。「サーバー」ビューで、該当するサーバーを右クリックし、プロジェクトの追加/削除を選択します。図J-9に示すようなプロジェクトの追加と削除ダイアログが表示されます。

図J-9 プロジェクトの追加と削除ダイアログ

「図J-9 プロジェクトの追加と削除ダイアログ」の説明

右ペインに表示される「使用可能なプロジェクト」のリストからHelloプロジェクトを選択し、「追加」をクリックして右側の構成済プロジェクトのリストにプロジェクトを追加します。

「終了」をクリックします。Oracle CEP IDE for Eclipseはプロジェクトをサーバーにデプロイします。

次のように、コンソール・ビューで、Oracle CEPサーバーはアプリケーションがデプロイされていることを示します(読みやすくするため改行しています)。

<Jan 23, 2009 9:24:13 AM EST> <Notice> <Spring> <BEA-2047000>
<The application context for "com.bea.wlevs.monitor" was deployed successfully>
<Jan 23, 2009 9:24:17 AM EST> <Notice> <Spring> <BEA-2047000>
<The application context for "com.bea.wlevs.dataservices" was deployed successfully>
<Jan 23, 2009 9:26:06 AM EST> <Notice> <Server> <BEA-2045000>
<The application bundle "Hello" was deployed successfully to
file:/C:/OracleCEP/user_projects/domains/ocep_domain/defaultserver/applications/Hello/Hello.jar
with version 1232720766696>
<Jan 23, 2009 9:26:06 AM EST> <Notice> <Server> <BEA-2045000>
<The application bundle "Hello" was deployed successfully to
file [C:\OracleCEP\user_projects\domains\ocep_domain\defaultserver\applications\Hello\Hello.jar]
with version 1232720766696>
<Jan 23, 2009 9:26:22 AM EST> <Notice> <Spring> <BEA-2047000>
<The application context for "Hello" was deployed successfully>

これでアプリケーションがデプロイされ、起動しました。コンソール・ビューにアプリケーションからのメッセージが表示されていることを確認します。

Message: HelloWorld - the current time is:9:26:22 AM
Message: HelloWorld - the current time is:9:26:23 AM
Message: HelloWorld - the current time is:9:26:23 AM
...

J.5ステップ4: コードの変更および再デプロイ

次に、コードの一部を変更し、反復開発サイクルを実演するためにプロジェクトを再デプロイします。

EPN を開きます(6.1項「EPNエディタを開く」を参照)。

EPNエディタで、helloworldAdapterを右クリックし、「Javaのソースに移動」を選択します。図J-10を参照してください。

図J-10 Javaソースをアダプタ用に編集

「図J-10 Javaソースをアダプタ用に編集」の説明

図J-11に示すようなJavaエディタが開きます。

図J-11 helloworldAdapter用Javaエディタ

「図J-11 helloworldAdapter用Javaエディタ」の説明

Javaエディタを使用して、イベントが3秒ごとに起動するようにSLEEP_MILLISフィールドの値を3000に変更します。「ファイル」>「保存」を選択します。

デフォルトでは、プロジェクトは自動的に再デプロイされるようになっているため、これ以上の処理は必要ありません。次に示すように、数秒後にOracle CEP IDE for Eclipseはプロジェクトを再デプロイし、コンソールでのHelloWorldメッセージの表示率が3秒ごとにまで下がります(読みやすくするため改行しています)。

Message: HelloWorld - the current time is:9:37:41 AM
Message: HelloWorld - the current time is:9:37:41 AM
Message: HelloWorld - the current time is:9:37:41 AM
<Jan 23, 2009 9:37:42 AM EST> <Notice> <Spring> <BEA-2047001>
<The application context "Hello" was undeployed successfully>
<Jan 23, 2009 9:37:42 AM EST> <Notice> <Server> <BEA-2045000>
<The application bundle "Hello" was deployed successfully to
file:/C:/OracleCEP/user_projects/domains/ocep_domain/defaultserver/applications/Hello/Hello.jar
with version 1232721461898>
<Jan 23, 2009 9:37:43 AM EST> <Notice> <Spring> <BEA-2047000>
<The application context for "Hello" was deployed successfully>
Message: HelloWorld - the current time is:9:37:43 AM
Message: HelloWorld - the current time is:9:37:46 AM

「自動パブリッシュ」が無効になっている場合、プロジェクトを再パブリッシュするには、「サーバー」ビューで「サーバー」を右クリックし、「パブリッシュ」を選択します。図J-12を参照してください。

図J-12 プロジェクトの手動パブリッシュ

「図J-12 プロジェクトの手動パブリッシュ」の説明

J.6 ステップ5: デプロイ済アプリケーションのデバッグ

次に、アプリケーションは稼働しているため、コードの一部をデバッグします。

EPN を開きます(6.1項「EPNエディタを開く」を参照)。

EPNエディタで、HelloWorldBeanを右クリックし、「Javaのソースに移動」を選択します。図J-13を参照してください。

図J-13 HelloWorldBean用Javaエディタ

「図J-13 HelloWorldBean用Javaエディタ」の説明

行10の左余白(行番号の左)を右クリックし、ブレークポイントの切替えを選択します。

StreamSinkが次回メッセージを受信すると、ブレークポイントを設定した行10で止まり、デバッグ・ビューが表示されます。図J-14を参照してください。

図J-14 HelloWorldBeanのデバッガ表示

「図J-14 HelloWorldBeanのデバッガ表示」の説明

「変数」ビューで、event変数を展開し、その属性の値を確認できます。

J.7項 次のステップ

Oracle CEPサーバーのインストーラにあるOracle CEPのサンプルを確認します。

詳細は、『Oracle Fusion Middleware Oracle Complex Event Processingスタート・ガイド』のOracle CEPサンプルに関する項を参照してください。

索引

A  B  C  D  E  F  G  H  I  J  L  M  N  O  P  Q  R  S  T  U  V  W  X  Z

記号

@Activate, I.2

@Prepare, I.3

@Resource, 1.4.1.1

@Rollback, I.4

@Service, I.5

A

accept-backlog, D.2

アクション, G.8, H.8

ActiveActiveGroupBean

情報, 20.1.3.5, 22.2.2

構成

情報, 23.2

高可用性あり, 23.2.2

高可用性なし, 23.2.1

groupPattern

デフォルト, 22.2.2, 23.2.3

定義, 23.2.3

通知グループ名のデフォルト, 22.2.2, 23.2.3 スケーラビリティ, 22.2.2.1, 22.2.2.2 アダプタ

キャッシュ・アクセス, 12.7

config.xml, D.3

csvgen, 25.5

カスタム

情報, 14.1

構成へのアクセス, 19.3

イベント・シンクとしてのアダプタ・クラス, 14.2.1.2, 15.2.2

イベント・ソースとしてのアダプタ・クラス, 14.2.1.1

アダプタ・ファクトリ, 14.1.2, 14.2.2, 15.2.3

バンドル, 24.2.4

構成, 14.5.1, 15.4.1

作成, 14.2.1

EPNアセンブリ・ファイル, 14.4, 14.4.1, 14.4.2, 15.3, 15.3.1, 15.3.2

イベント・シンク, 14.1.1.2

イベント・ソース, 14.1.1, 16.1.1

拡張, 19.1, 19.1.1, 19.1.2, 19.2.1, 19.2.2

ログイン資格証明の受渡し, 14.3

Spring Beanイベント・シンク, 16.1.1.2

Spring Beanイベント・ソース, 16.1.1.1

XSD作成, 19.2.2.1

EPN, 1.1.1.1 高可用性

ブロードキャスト出力アダプタ, 20.1.3.3

バッファリング出力アダプタ, 20.1.3.2

相関出力アダプタ, 20.1.3.4

入力アダプタ, 20.1.3.1

HTTP pub-subサーバー

情報, 8.1

組込みのアダプタ, 8.1

クライアント, 8.1

構成, 8.2.2

イベント・タイプの間の変換, 8.3

JSONメッセージの間の変換, 8.1.3

カスタム・アダプタ, 8.1

カスタム・コンバータ, 8.3

EPNアセンブリ・ファイル, 8.4

ローカル・パブリッシュ, 8.1.1.1

リモート・パブリッシュ, 8.1.1.2

セキュリティ, 8.1

サブスクライブ, 8.1.2

使用, 8.2

アイコン, 6.4.1 JMS

情報, 7.1

クライアント, 7.2.3

イベント・タイプの間の変換, 7.1.2

IIOPクライアント, 7.2.3

インバウンド, 7.1.2

Oracle WebLogic JMSプロバイダ, 7.2.3

Oracle WebLogic Server JMSプロバイダ, 7.2.3

アウトバウンド, 7.1.3

パーティション化, 22.2.2.1, 22.2.2.2

プロバイダ, 7.1.1

スケーラビリティ, 22.2.2.1, 22.2.2.2

T3クライアント, 7.2.3

Tibco EMS JMSプロバイダ, 7.2.4, 7.2.4

amount, D.4 注釈

@Activate, I.2

@Prepare, I.3

@Resource, 1.4.1.1

@Rollback, I.4

@Service, I.5

情報, I.1

ライフサイクル, I.1.1

OSGiサービス参照, I.1.2

リソース・アクセス, I.1.3

anyinteract-tolerance, 18.2 API, 1.1.10 application, D.5 アプリケーション・コンテキスト, 18.1

Oracle JDBCデータ・カートリッジ, 18.3

Oracle Spatial, 18.2

アプリケーション・ライブラリ

情報, 24.1.3

バンドル, 4.7

作成, 24.1.3.3

定義, 24.3.1

デプロイメント順序, 24.1.4

開発時の依存性定義, 4.7

ディレクトリ, 24.1.3.1, 24.1.3.2

ライブラリ・ディレクトリ, 24.1.3.1

ライブラリ拡張ディレクトリ, 24.1.3.2

管理, 24.3

デプロイメント順序, 24.1.4

OSGiバンドル, 4.7

更新, 24.3.4

アプリケーション

アセンブリ

情報, 1.1.6, 24.1, 24.2

外部ステージ, 24.2.3

手動, 24.2.2

Oracle CEP IDE for Eclipse, 24.2.1

構成履歴の管理, 24.1.5 コンテンツ, 24.1.1 作成, 1.3 データ・カートリッジ, 1.1.7 デバッグ, 5.4 依存関係

情報, 24.1.2

bootclasspath, 24.1.2.3

ネイティブ・コード, 24.1.2.3

プライベート, 24.1.2.1

共有, 24.1.2.2

デプロイ, 5.3.6 デプロイメント順序, 24.1.4 EPNの拡張, 1.1.7 高可用性, 1.1.8 ライブラリ

情報, 24.1.3

作成, 24.1.3.3

ライフサイクル

情報, 1.1.9

イベント・シンク, 1.1.9.6

イベント・ソース, 1.1.9.6

インストール, 1.1.9.1

再開, 1.1.9.3

サーバーの起動, 1.1.9.1

StreamSender, 1.1.9.6

一時停止, 1.1.9.2

アンインストール, 1.1.9.4

更新, 1.1.9.5

スケーラビリティ, 1.1.8 Webサービス, 1.1.7 アプリケーション・タイムスタンプ・チャネル, 9.1.4, C.3 アセンブル

情報, 1.1.6, 24.1, 24.2

外部ステージ, 24.2.3

手動, 24.2.2

Oracle CEP IDE for Eclipse, 24.2.1

アセンブリ・ファイル, 1.1.4 auth-constraint, F.2 average-interval, D.6 average-latency, D.7

B

EPNのバッジ, 6.2.7

BatchRelationSender

sendEvents, 1.1.3.2

BatchRelationSink

情報, 1.1.3.3

onEvents, 1.1.3.3

batch-size, D.8 BatchStreamSender

sendInsertEvents, 1.1.3.2

BatchStreamSink

情報, 1.1.3.3

onInsertEvents, 1.1.3.3

batch-timeout, D.9 bdb-config, F.3 Berkeley DB永続イベント・ストア, 13.1.1.1 binding, D.10 bindings (jms-adapter), D.11 bindings (processor), D.12 キュー・チャネルのブロック, 9.2.1, 9.2.2, 9.2.3, C.10.2, D.59 bootclasspath, 24.1.2.3 ブロードキャスト出力アダプタ, 20.1.3.3 バッファリング出力アダプタ, 20.1.3.2 buffer-size, D.13 buffer-write-attempts, D.14 buffer-write-timeout, D.15 bundler.sh, 24.3.2 バンドル, 4.7

C

キャッシュ

config.xml, D.16

アイコン, 6.4.1

キャッシュ・システム

情報, 12.1, D.17, D.21

Oracle CEPローカル・キャッシュ, 12.1

Oracle Coherence, 12.1

サードパーティ, 12.1

キャッシュ

情報, 12.1, D.16

アクセス

アダプタ, 12.7

EPL文, 12.6

EPLユーザー定義関数, 12.10

エラー, 12.5

JMX, 12.11

Oracle CQL文, 12.5, 12.5

Oracle CQLユーザー定義の関数, 12.9

POJO, 12.8

API, 12.1.3 キャッシュ・ローダー

Oracle CEPローカル・キャッシュ, 12.2.3

Oracle Coherence, 12.3.4

キャッシュ・ストア

Oracle CEPローカル・キャッシュ, 12.2.4

Oracle Coherence, 12.3.4

キャッシュ・システム

情報, 12.1, D.17, D.21

Oracle CEPローカル・キャッシュ, 12.1

Oracle Coherence, 12.1

サードパーティ, 12.1

構成

Oracle CEPローカル・キャッシュ, 12.2

Oracle Coherence, 12.3

サードパーティ, 12.4

EPLプロセッサ・キャッシュ・ソース, 11.3, 12.6 EPN, 1.1.1.6, 1.1.1.7 マルチ・サーバー・ドメイン, 12.1.1.4 Oracle CQLプロセッサ・キャッシュ・ソース, 10.4, 12.5 caching-system, D.17 キャンバス

移動, 6.3.1

原因, G.7, H.7 チャネル

http-pub-sub要素, D.19

アイコン, 6.4.1

トップレベル要素, D.18

channel-constraints, F.5 channel-resource-collection, F.6 チャネル, F.4

情報, 9.1, D.18

アプリケーション・タイムスタンプ, 9.1.4

バッチ処理, 9.1.6

キューのブロック, 9.2.1, 9.2.2, 9.2.3, C.10.2, D.59

コンポーネント構成ファイル, 9.3.1

構成, 9.2

EPN, 1.1.1.2

EPNアセンブリ・ファイル, 9.3.2

イベント・アイデンティティ, 1.1.3.2, 9.1.2.2, C.10.2

EventPartitioner, 9.1.7

パーティション化, 9.1.7

パススルー, 9.2.1, 9.2.2, 9.2.3, C.10.2, D.59

primary-key, 1.1.3.2, 9.1.2.2, C.10.2

問合せセレクタ, 9.1.5, 9.1.5, 9.2.1, 9.2.2, 9.2.3, 10.1.1, D.82

関係, 1.1.3.1, 9.1.2

ストリーム, 1.1.3.1, 9.1.2

システム・タイムスタンプ, 9.1.3

使用するタイミング, 9.1.1

クラスタ, F.7 coherence-cache-config, D.20 coherence-caching-system, D.21 coherence-cluster-config, D.22 collect-interval, D.23 コンポーネント構成ファイル

情報, 1.1.5

アクセス, 1.1.5.1

作成, 4.4

プロパティ・プレースホルダー, 1.1.5.1

concurrent-consumers, D.24 EPN上で構成バッジ, 6.2.7 構成ファイル

アクセス, 1.1.5.1

アセンブリ, 1.1.4

コンポーネント, 1.1.5

EPNアセンブリ, 1.1.4

プロパティ・プレースホルダー, 1.1.5.1

構成履歴の管理

情報, 24.1.5

ConfigurationPropertyPlaceholderConfigurer, 1.1.5.1 connection-jndi-name, D.25 connection-password, D.26, D.27 connection-pool-params, F.8 connection-user, D.28 コンテキスト・メニュー, 6.3.4 相関出力アダプタ, 20.1.3.4 cql, F.9, F.29 csvgenアダプタ

情報, 25.1

構成, 25.5

データ・タイプ, 2.1.3.5

カスタム・アダプタ

情報, 14.1

構成へのアクセス, 19.3

イベント・シンクとしてのアダプタ・クラス, 14.2.1.2, 15.2.2

イベント・ソースとしてのアダプタ・クラス, 14.2.1.1

アダプタ・ファクトリ

情報, 14.1.2

プログラミング, 14.2.2, 15.2.3

バンドル, 24.2.4 構成

手動, 14.5.1, 15.4.1

作成

手動で, 14.2.1

EPNアセンブリ・ファイル

情報, 14.4, 15.3

アダプタの宣言, 14.4.2, 15.3.2

アダプタの登録, 14.4.1, 15.3.1

イベント・シンク, 14.1.1.2 イベント・ソース, 14.1.1, 16.1.1 拡張, 19.2.1, 19.2.2

情報, 19.1

注釈, 19.1.1

XSD, 19.1.2

ログイン資格証明の受渡し, 14.3 Spring Beanイベント・シンク, 16.1.1.2 Spring Beanイベント・ソース, 16.1.1.1 XSD作成, 19.2.2.1 カスタム永続イベント・ストア, 13.1.1.2

D

データ・カートリッジ

アプリケーション・コンテキスト, 18.1

Oracle JDBCデータ・カートリッジ

アプリケーション・コンテキスト, 18.3

Oracle Spatial

アプリケーション・コンテキスト, 18.2

データ型

csvgenアダプタ・イベント・タイプ, 2.1.3.5

イベント・タイプ, 2.1.3

Javaクラス・イベント・タイプ, 2.1.3.1

JavaBeanイベント・タイプ, 2.1.3.1

java.util.Mapイベント・タイプ, 2.1.3.2

JDBC, 2.1.3.4

表ソース・イベント・タイプ, 2.1.3.4

タプル・イベント・タイプ, 2.1.3.3

database, D.29 dataset-name, D.30 データ・ソース, F.10 data-source-params, F.11 デバッグ, F.14 デバッギング

アプリケーション, 5.4

サーバー, 5.4

デフォルト・イベント・ストア, 13.1.1.1 delivery-mode, D.31 デプロイ

情報, 24.1

デプロイ・アプリケーション, 24.5

順序, 24.1.4

deployment.xsd, B.3, E.1 destination-jndi-name, D.32 destination-name, D.33 diagnostic-profiles, D.35 direction, D.36 ドメイン, F.13 driver-params, F.12 duration, D.39

E

enabled, D.40

encrypted-password, D.41

end, D.42

end-location, D.43

EPLプロセッサ

情報, 11.1

キャッシュ・ソース, 11.3, 12.6

コンポーネント構成ファイル, 11.4.1

構成, 11.2

EPNアセンブリ・ファイル, 11.4.2

EPN

情報, 1.1.1

アダプタ, 1.1.1.1

アセンブリ・ファイル

情報, 1.1.4

作成, 4.3

キャッシュ, 1.1.1.6, 1.1.1.7 チャネル, 1.1.1.2 コンポーネント構成ファイル

情報, 1.1.5

作成, 4.4

コンポーネント, 1.1.1 イベントBean, 1.1.1.4 拡張, 1.1.7 ノード, 1.1.1 POJO, 1.1.1.5 プロセッサ, 1.1.1.3 Spring Bean, 1.1.1.5 ステージ, 1.1.1 EPNエディタ

タイプの参照, 6.3.5

構成バッジ化, 6.2.7

ノードの接続, 6.4.2

コンテキスト・メニュー, 6.3.4

アダプタ・ノードの作成, 6.4.1.2

基本ノードの作成, 6.4.1.1

ノードの作成, 6.4.1

プロセッサ・ノードの作成, 6.4.1.3

ノードの削除, 6.4.5

イベント・タイプ・リポジトリ・エディタ, 6.2.10

フィルタ処理, 6.2.2

ハイパーリンク、構成ファイル, 6.3.3.1

ハイパーリンク、Oracle CQL文, 6.3.3.2

ノードのレイアウト, 6.4.3

レイアウト, 6.2.2

リンク仕様, 6.2.8

キャンバスの移動, 6.3.1

ナビゲート, 6.3

ネストされた要素, 6.2.9

開く, 6.1

印刷, 6.2.6, 6.2.6

ノード名の変更, 6.4.4

構成ファイルへのショートカット, 6.3.2, 6.3.3.1, 6.3.3.2, 6.3.4

タイプ・ブラウザ, 6.3.5

使用, 6.4

ズーム, 6.2.2

イベントBean

情報, 15.1

構成へのアクセス, 19.3

バンドル, 24.2.4

構成, 15.4

作成, 15.2, 16.2

EPN, 1.1.1.4

EPNアセンブリ・ファイル

情報, 14.4, 15.3

イベントBeanの宣言, 14.4.2, 15.3.2

イベントBeanファクトリの登録, 14.4.1, 15.3.1

イベント・シンクとしてのイベントBeanクラス, 14.2.1.2, 15.2.2 イベント・ソースとしてのイベントBeanクラス, 15.2.1 イベント・シンク, 15.1.1, 15.1.1.2, 16.1.1 イベント・ソース, 14.1.1.1, 15.1.1, 15.1.1.1, 16.1.1 拡張, 19.2.1, 19.2.2

情報, 19.1

注釈, 19.1.1

XSD, 19.1.2

ファクトリ

情報, 15.1.2

プログラミング, 14.2.2, 15.2.3

アイコン, 6.4.1 ログイン資格証明の受渡し, 14.3 XSD作成, 19.2.2.1 イベント・アイデンティティ, 1.1.3.2, C.10.2 イベント・インスペクタ・サービス

情報, 26.1

クライアント, 26.1.5

イベント・タイプ, 26.1.3

HTTP pub-sub

チャネル, 26.1.4

構成, 26.2

ローカル・サーバー構成, 26.2.1

リモート・サーバー構成, 26.2.2

サーバー, 26.1.4

イベントのインジェクト, 26.1.2 JSON形式

情報, 26.1.3

バインド, 26.1.3

イベント・タイプ, 26.1.3

操作, 26.1.3

値, 26.1.3

イベントのトレース, 26.1.1 イベント・パーティショナ・チャネル

情報, 22.2.1

構成

情報, 23.1

カスタム, 23.1.2

デフォルト, 23.1.1

カスタム実装, 22.2.1.1 デフォルトスタム実装, 22.2.1.1 初期化, 22.2.1.2 制限事項, 22.2.1.4 スレッド, 22.2.1.3 イベント処理ネットワーク。EPNを参照 イベントの記録と再生

情報, 13.1

構成

アプリケーション, 13.2

カスタム・イベント・ストア・プロバイダ, 13.3

イベント再生, 13.2.3

イベントの記録, 13.2.2

イベント・ストア, 13.2.1

データベース・スキーマ, 13.2.5 イベント・ストア

情報, 13.1.1

Berkeley DB, 13.1.1.1

カスタム, 13.1.1.2

デフォルト, 13.1.1.1

再生イベント, 13.1.3 格納されたイベントの問合せ, 13.1.4 イベントの記録, 13.1.2 開始と停止, 13.2.4 イベント・ソース

プル, 1.1.1.7, 12.5, 12.5.1

プッシュ, 6.4.1.3, 9.1.1, 12.5.1

イベント・ストア

情報, 13.1.1

Berkeley DB, 13.1.1.1

構成, 13.2.1

カスタム, 13.1.1.2

カスタム・プロバイダ, 13.3

デフォルト, 13.1.1.1

イベント・タイプ・リポジトリ・エディタ

情報, 6.2.10

JavaBeanイベント・タイプ, 2.2.2

タプル・イベント・タイプ, 2.3.1

イベント・タイプ

情報, 1.1.2, 2.1

EventTypeRepositoryへのアクセス, 2.7

HTTP Pub-Subサーバー・メッセージ間の変換, 8.3

JMSメッセージ間の変換, 7.1.2

JSONメッセージの間の変換, 8.1.3

作成, 2.1.4

データ型, 2.1.3

イベント・インスペクタ・サービス・イベント, 26.1.3

イベント・タイプ・ビルダー・ファクトリ, 2.6

イベント・タイプ・リポジトリ・エディタ, 6.2.10

EventRepository, 2.1

不変, 2.1.1

インスタンス化, 2.1.1

Javaクラス, 2.1

JavaBean, 2.1

java.util.Map, 2.1

シリアライズ, 2.1.2

バンドル間の共有, 2.8

タプル, 2.1

event-bean, D.44 EventPartitioner。「イベント・パーティショナ・チャネル」を参照 EventRepository, 2.1 event-store, F.15 event-type, D.45 event-type-list, D.46 eviction-policy, D.47 exported-jndi-context, F.16 EPNイメージのエクスポート, 6.2.6 イメージのエクスポート, 6.2.6 外部関係

s[now]で結合が必要, 12.5

問合せ, 12.5

F

フェイルオーバー, 20.1.1.2

EPNのフィルタ処理, 6.2.2

外部ステージ

情報, 1.1.1.9

アプリケーション・アセンブリ, 24.2.3

クラスパス, 24.2.3

依存関係, 24.2.3

EPN上, 1.1.1.9

制限, 1.1.1.9

G

group-binding, D.48

groupPattern, 23.2.3

H

ハートビート, 9.2.1, 9.2.3, 21.2.1.2, D.49, D.49, D.67

アプリケーション・タイムスタンプ・チャネル, 9.1.4, 9.1.4

高可用性入力アダプタの構成, 21.2.1.2

システム・タイムスタンプ・チャネルの構成, 9.2.1, 9.2.3

StreamSender API, 1.1.3.2

システムのタイムスタンプ付き関係, D.49

システムのタイムスタンプ付きストリーム, D.49

システム・タイムスタンプ・チャネル, 9.1.3

高可用性

アプリケーション設計パターン, 20.3.2

アプリケーション・タイプ

タイプ1, 20.3.2.5.1

タイプ2, 20.3.2.5.2

コンポーネント

ActiveActiveGroupBean, 20.1.3.5

ブロードキャスト出力アダプタ, 20.1.3.3

バッファリング出力アダプタ, 20.1.3.2

相関出力アダプタ, 20.1.3.4

入力アダプタ, 20.1.3.1

通知グループBean, 20.1.3.5

ライフサイクル, 20.1.1

フェイルオーバー, 20.1.1.2

プライマリの障害, 20.1.1.2

マルチサーバー・ドメインへの再結合, 20.1.1.3, 20.3.2.5

セカンダリの障害, 20.1.1.1

サーバーの再起動, 20.1.1.3, 20.3.2.5

Oracle CQLの問合せの制約, 20.3.3 パフォーマンス・チューニング

ブロードキャスト・アダプタ, 27.2.4

ホスト構成, 27.2.1

入力アダプタ, 27.2.2, 27.2.3

Oracle Coherence, 27.2.5

サービス品質, 27.2.2

サービス品質, 20.2

軽量キュー・トリミング, 20.2.3

JMSによる正確なリカバリ, 20.2.4

シンプル・フェイルオーバー, 20.2.1

バッファリングを使用するシンプル・フェイルオーバー, 20.2.2

スケーラビリティ, 20.1.5 ユースケース, 20.3.1 warm-up-windowタイム, 20.3.2.5.1 HTTP pub-subサーバー・アダプタ

情報, 8.1

組込みのアダプタ, 8.1

クライアント, 8.1

構成, 8.2.2

イベント・タイプの間の変換, 8.3

JSONメッセージの間の変換, 8.1.3

カスタム・アダプタ, 8.1

カスタム・コンバータ, 8.3

EPNアセンブリ・ファイル, 8.4

ローカル・パブリッシュ, 8.1.1.1

リモート・パブリッシュ, 8.1.1.2

セキュリティ, 8.1

サブスクライブ, 8.1.2

使用, 8.2

http-pubsub, F.17 http-pub-sub-adapter, D.50 ハイパーリンク

構成ファイル, 6.3.3.1

Oracle CQL文, 6.3.3.2

I

I10n_msgcat.dtd, G.1, H.1

アイコン

アダプタ, 6.4.1

キャッシュ, 6.4.1

チャネル, 6.4.1

イベントBean, 6.4.1

プロセッサ, 6.4.1

Spring Bean, 6.4.1

表, 6.4.1

idle-time, D.51 インジェクション

動的, 1.4.2

静的な方法

情報, 1.4.1

動的リソース名, 1.4.1.2

静的リソース名, 1.4.1.1

入力アダプタ, 20.1.3.1 is-relation, C.10.2 is-total-order, 9.2.2, C.3.2

J

JARファイル, 4.7

Javaデータベース接続。JDBCを参照

Java Message Service。JMSを参照

Java Naming and Directory Interface。JNDIを参照

jc:jdbc-ctx, 18.3

JDBC

構成

アプリケーション・ライブラリ, 24.3.2, 24.3.3

OSGiバンドル, 24.3.2, 24.3.3

データ・カートリッジ, 18.3 イベント・タイプ, 2.1.3.4 jdbc:jdbc-context, 18.3 jetty, F.18 jetty-web-app, F.19 JMS

パーティション化, 22.2.2.1, 22.2.2.2

JMSアダプタ

情報, 7.1

クライアント, 7.2.3

イベント・タイプの間の変換, 7.1.2

IIOPクライアント, 7.2.3

インバウンド, 7.1.2

Oracle WebLogic JMSプロバイダ, 7.2.3

アウトバウンド, 7.1.3

プロバイダ

情報, 7.1.1

Oracle WebLogic Server, 7.2.3

Tibco EMS, 7.2.4

スケーラビリティ, 22.2.2.1, 22.2.2.2 T3クライアント, 7.2.3 Tibco EMS JMSプロバイダ, 7.2.4 jms-adapter, D.52, D.53 jmx, F.20 JMXキャッシュ・アクセス, 12.11 JNDIリソース・アクセス, 1.4.3 jndi-context, F.21 jndi-provider-url, D.54 JSONメッセージ, 8.1.3

L

EPNのレイアウト, 6.2.2

ライブラリの管理, 4.7

EPNでのリンク仕様, 6.2.8

listeners, D.55

ロード・ジェネレータ

情報, 25.1

構成と実行, 25.2

csvgenアダプタ, 25.5

データ・フィード・ファイル, 25.4

プロパティ・ファイル, 25.3

ローカル・サーバー, 5.2.1 locale_message_catalog, H.2 location, D.56 log-file, F.22 logmessage, G.3, H.3 log-stdout, F.23

M

max-latency, D.57

max-size, D.58

max-threads, D.59

message, G.4, H.4

message_catalog, G.2

messagebody, G.5, H.5

messagedetail, G.6, H.6

message-filter-class, F.25.1

message-filter-name, F.25.1

message-filters, F.25

message-selector, D.60

msgcat.dtd, G.1

N

name, D.61, F.26

ネイティブ・コード・アプリケーションの依存関係, 24.1.2.3

EPNでのネストされた要素, 1.1.1.8, 6.2.9

ネストされたステージ, 1.1.1.8

netio, D.62, F.27

netio-client, F.28

ノード

アダプタ, 6.4.1

キャッシュ, 6.4.1

チャネル, 6.4.1

イベントBean, 6.4.1

プロセッサ, 6.4.1

Spring Bean, 6.4.1

表, 6.4.1

非クラス・ファイルの管理, 4.7 通知グループBean, 20.1.3.5, 20.1.3.5 num-threads, D.63

O

ocep-jdbc.xsd, 18.3

ocep-spatial.xsd, 18.2

onDeleteEvent, 1.1.3.3

onEvents, 1.1.3.3

onInsertEvent, 1.1.3.3

onInsertEvents, 1.1.3.3

onUpdateEvent, 1.1.3.3

Oracle CEP IDE for Eclipse, 1.2

情報, 3.1

構成

メモリー要件, 3.4

プリファレンス, 4.8

EPNエディタ

タイプの参照, 6.3.5

構成バッジ化, 6.2.7

ノードの接続, 6.4.2

コンテキスト・メニュー, 6.3.4

基本ノードの作成, 6.4.1.1

ノードの作成, 6.4.1

プロセッサ・ノードの作成, 6.4.1.3

ノードの削除, 6.4.5

イベント・タイプ・リポジトリ・エディタ, 6.2.10

イメージのエクスポート, 6.2.6

フィルタ処理, 6.2.2

ハイパーリンク、構成ファイル, 6.3.3.1

ハイパーリンク、Oracle CQL文, 6.3.3.2

ノードのレイアウト, 6.4.3

レイアウト, 6.2.2

リンク仕様, 6.2.8

キャンバスの移動, 6.3.1

ナビゲート, 6.3

ネストされた要素, 6.2.9

開く, 6.1

印刷, 6.2.6

ノード名の変更, 6.4.4

構成ファイルへのショートカット, 6.3.2, 6.3.3.1, 6.3.3.2, 6.3.4

使用, 6.4

ズーム, 6.2.2

インストール

Oracle CEPから, 3.3

最新, 3.2

メモリー要件, 3.4 プリファレンス, 4.8 プロジェクト

コンポーネント構成ファイル, 4.4

作成, 4.2

EPNアセンブリ・ファイル, 4.3

エクスポート, 4.5

ライブラリの管理, 4.7

非クラス・ファイルの管理, 4.7

アップグレード, 4.6

サーバー

情報, 5.1

アタッチされた, 5.1

アタッチ, 5.3.5

アタッチ、ローカルへ, 5.3.3

アタッチ、リモートへ, 5.3.4

構成, 5.3.7, 5.3.8

接続および制御設定, 5.3.7

作成, 5.2

デバッグ, 5.4

デプロイ, 5.3.6

ドメイン設定, 5.3.8

ローカル, 5.2.1

管理された, 5.1

管理する, 5.3

Oracle CEP Visualizer, 5.3.9

リモート, 5.2.2

ランタイム, 5.2.3

開始, 5.3.1

停止, 5.3.2

Oracle CEPローカル・キャッシュ

構成, 12.2

キャッシュ・ローダー, 12.2.3

キャッシュ・ストア, 12.2.4

イベント・リスナー, 12.2.1

イベント・ソース, 12.2.2

Oracle CEP Visualizer

情報, 1.2

開始, 5.3.9

Oracle Coherence

キャッシュ, 12.1

構成, 12.3

キャッシュ・ローダー, 12.3.4

キャッシュ・ストア, 12.3.4

キャッシュ, 12.3.1

キャッシュ・システム, 12.3.1

イベント・リスナー, 12.3.2

イベント・ソース, 12.3.3

Oracle CQLプロセッサ

情報, 10.1

キャッシュ・ソース, 10.4, 12.5

コンポーネント構成ファイル, 10.6.1

構成, 10.2

EPNアセンブリ・ファイル, 10.6.2

問合せセレクタ, 10.1.1

表ソース, 10.3

Oracle Fusion Middlewareホーム, 5.2.1, 5.2.2, 5.2.3 Oracle JDBCデータ・カートリッジ

アプリケーション・コンテキスト

情報, 18.3

Oracle Middlewareホーム, 5.2.1, 5.2.2, 5.2.3 Oracle Spatial

アプリケーション・コンテキスト

情報, 18.2

anyinteract-tolerance, 18.2

フラット化の相互, 18.2

rof, 18.2

semi-major axis, 18.2

sma, 18.2

srid, 18.2

tolerance, 18.2

Oracle WebLogic JMSプロバイダ, 7.2.3 OSGi, 1.1

アプリケーション・ライブラリ, 4.7

バンドル, 4.7

P

param, D.64

parameter, D.65

params, D.66

パーティション化

チャネル, 22.2.1

JMSトピック, 22.2.2.1, 22.2.2.2

パススルー・チャネル, 9.2.1, 9.2.2, 9.2.3, C.10.2, D.59 password, D.68 path, F.30 パフォーマンス・チューニング

EPN

ActiveActiveGroupBean, 27.1.3

バッチ処理パネル, 27.1.2

イベント・パーティショナ・チャネル, 27.1.1

高可用性

ブロードキャスト・アダプタ, 27.2.4

ホスト構成, 27.2.1

入力アダプタ, 27.2.2, 27.2.3

Oracle Coherence, 27.2.5

サービス品質, 27.2.2

playback-parameters, D.69 playback-speed, D.70 POJO

イベントBean, 1.1.1.4

Spring Bean, 1.1.1.5

primary-key, 1.1.3.2, 9.1.2.2, C.10.2 印刷, 6.2.6 プライベート・アプリケーションの依存関係, 24.1.2.1 processor (EPL), D.71 processor (Oracle CQL), D.72 プロセッサ

情報, 1.1.1.3

EPNでの作成, 6.4.1.3

EPL

情報, 11.1

キャッシュ・ソース, 11.3, 12.6

コンポーネント構成ファイル, 11.4.1

構成, 11.2

EPNアセンブリ・ファイル, 11.4.2

アイコン, 6.4.1 Oracle CQL

情報, 10.1

キャッシュ・ソース, 10.4, 12.5

コンポーネント構成ファイル, 10.6.1

構成, 10.2

EPNアセンブリ・ファイル, 10.6.2

問合せセレクタ, 10.1.1

表ソース, 10.3

profile, D.73 プログラミング・モデル

情報, 1.1

コンポーネント構成ファイルにアクセス, 1.1.5.1

API, 1.1.10

アプリケーション・アセンブリ, 1.1.6

アプリケーション・ライフサイクル

情報, 1.1.9

イベント・シンク, 1.1.9.6

イベント・ソース, 1.1.9.6

インストール, 1.1.9.1

再開, 1.1.9.3

サーバーの起動, 1.1.9.1

StreamSender, 1.1.9.6

一時停止, 1.1.9.2

アンインストール, 1.1.9.4

更新, 1.1.9.5

アセンブリ・ファイル, 1.1.4 コンポーネント構成ファイル, 1.1.5 コンポーネント構成プロパティ・プレースホルダー, 1.1.5.1 アプリケーションの作成, 1.3 コンポーネント構成ファイルの作成, 4.4 EPNアセンブリ・ファイルの作成, 4.3 データ・カートリッジ, 1.1.7 EPN, 1.1.1 EPNアセンブリ・ファイル, 1.1.4 イベントの使用者, 1.1.3 イベント・エミッタ, 1.1.3 イベント・タイプ

情報, 1.1.2, 2.1

EventTypeRepositoryへのアクセス, 2.7

HTTP Pub-Subサーバー・メッセージ間の変換, 8.3

JMSメッセージ間の変換, 7.1.2

JSONメッセージの間の変換, 8.1.3

作成, 2.1.4

データ型, 2.1.3

イベント・タイプ・ビルダー・ファクトリ, 2.6

イベント・タイプ・リポジトリ・エディタ, 6.2.10

EventRepository, 2.1

不変, 2.1.1

インスタンス化, 2.1.1

Javaクラス, 2.1

JavaBean, 2.1

java.util.Map, 2.1

シリアライズ, 2.1.2

バンドル間の共有, 2.8

タプル, 2.1

EPNの拡張, 1.1.7 高可用性, 1.1.8 高可用性ライフサイクル, 20.1.1

フェイルオーバー, 20.1.1.2

プライマリの障害, 20.1.1.2

マルチサーバー・ドメインへの再結合, 20.1.1.3, 20.3.2.5

セカンダリの障害, 20.1.1.1

サーバーの再起動, 20.1.1.3, 20.3.2.5

warm-up-windowタイム, 20.1.1.3

IDE, 1.2 Oracle CEP Visualizer, 1.2 OSGi, 1.1 関係シンク

情報, 1.1.3.3

関係ソース

情報, 1.1.3.2

BatchRelationSender, 1.1.3.2

RelationSender, 1.1.3.2, 1.1.3.2, 1.1.3.2, 1.1.3.2

リソース・アクセス

情報, 1.4

動的リソース・インジェクション, 1.4.2

JNDI, 1.4.3

リソース名解決, 1.4.4

静的リソース・インジェクション, 1.4.1

スケーラビリティ, 1.1.8 ストリーム・シンク

情報, 1.1.3.3

BatchRelationSink, 1.1.3.3

BatchStreamSink, 1.1.3.3

RelationSink, 1.1.3.3

StreamSink, 1.1.3.3

ストリーム・ソース

情報, 1.1.3.2

BatchStreamSender, 1.1.3.2

StreamSender, 1.1.3.2, 1.1.3.2, 1.1.3.2

Webサービス, 1.1.7 プロジェクト

コンポーネント構成ファイル, 4.4

作成, 4.2

EPNアセンブリ・ファイル, 4.3

エクスポート, 4.5

ライブラリの管理, 4.7

非クラス・ファイルの管理, 4.7

アップグレード, 4.6

プロパティ・ファイル, 4.7 プロパティ・プレースホルダー, 1.1.5.1 provider-name, D.74 pubsub-bean, F.31 プル・イベント・ソース, 1.1.1.7, 1.1.1.7, 12.5, 12.5.1 プッシュ・イベント・ソース, 6.4.1.3, 9.1.1, 12.5.1

Q

query, D.75

R

rdbms-event-store-provider, F.32

record-parameters, D.76

関係, 1.1.3.1

チャネル, 9.1.2

heartbeat, D.49

RelationSender

情報, 1.1.3.2

イベント・アイデンティティ, 1.1.3.2

sendDeleteEvent, 1.1.3.2

sendUpdateEvent, 1.1.3.2

RelationSink

情報, 1.1.3.3

onDeleteEvent, 1.1.3.3

onUpdateEvent, 1.1.3.3

リモート・サーバー, 5.2.2 repeat, D.77 リソース・アクセス

動的リソース・インジェクション, 1.4.2

JNDI, 1.4.3

リソース名解決, 1.4.4

静的リソース・インジェクション, 1.4.1

動的リソース名, 1.4.1.2

静的リソース名, 1.4.1.1

リソース名解決, 1.4.4 rmi, F.33 rof, 18.2 rule, D.78 rules, D.79

S

スケーラビリティ

コンポーネント

情報, 22.2

ActiveActiveGroupBean, 22.2.2.1, 22.2.2.2, 23.2, 23.2.1, 23.2.2

イベント・パーティショナ・チャネル, 22.2.1, 23.1, 23.1.1, 23.1.2

高可用性, 22.1.1 JMS, 22.2.2.1, 22.2.2.2 scheduler, F.34 schedule-time-range, D.80 schedule-time-range-offset, D.81 selector, D.82 sendDeleteEvent, 1.1.3.2 sendEvents, 1.1.3.2 sendHeartbeat, 1.1.3.2 sendInsertEvent, 1.1.3.2 sendInsertEvents, 1.1.3.2 sendUpdateEvent, 1.1.3.2 server-config, F.35 server-context-path, D.83 サーバー

情報, 5.1

アタッチされた, 5.1

アタッチ, 5.3.5

アタッチ、ローカルへ, 5.3.3

アタッチ、リモートへ, 5.3.4

構成, 5.3.7, 5.3.8

接続および制御設定, 5.3.7

作成, 5.2

デバッグ, 5.4

デプロイ, 5.3.6

ドメイン設定, 5.3.8

ローカル, 5.2.1

管理された, 5.1

管理する, 5.3

Oracle CEP Visualizer, 5.3.9

リモート, 5.2.2

ランタイム, 5.2.3

開始, 5.3.1

停止, 5.3.2

server-url, D.84 services, F.36 session-ack-mode-name, D.85 session-transacted, D.86 共有アプリケーションの依存関係, 24.1.2.2 show-detail-error-message, F.37 スライディング・ウィンドウ出力アダプタ。「バッファリング出力アダプタ」を参照 sma, 18.2 spatial:context, 18.2 Spring Beanアイコン, 6.4.1 Spring Bean

情報, 16.1

EPN, 1.1.1.5

EPNアセンブリ・ファイル

情報, 16.3

Spring Beanの宣言, 16.3.1

イベント・シンクとしてのSpring Beanクラス, 16.2.2 イベント・ソースとしてのSpring Beanクラス, 16.2.1 spring-wlevs-v11_1_1_6.xsd, B.1, C.1 srid, 18.2 ssl, F.38 stage, D.87 start, D.88 start-location, D.89 start-stage, D.90 store-policy-parameters, D.91 stream, D.92 ストリーム, 1.1.3.1

チャネル, 9.1.2

heartbeat, D.49

問合せセレクタ, 9.1.5, 9.1.5, 9.2.1, 9.2.2, 9.2.3, 10.1.1, D.82

StreamSender

情報, 1.1.3.2

sendHeartbeat, 1.1.3.2

sendInsertEvent, 1.1.3.2

StreamSink

情報, 1.1.3.3

onInsertEvent, 1.1.3.3

symbol, D.93 symbols, D.94 システム・タイムスタンプ・チャネル, 9.1.3, C.3

T

表

アイコン, 6.4.1

ソース, 10.3

テスト

イベント・インスペクタ・サービス

情報, 26.1

クライアント, 26.1.5

イベント・タイプ, 26.1.3

HTTP Pub-Subチャネル, 26.1.4

イベントのインジェクト, 26.1.2

イベントのトレース, 26.1.1

ロード・ジェネレータ

情報, 25.1

構成と実行, 25.2

csvgenアダプタ, 25.5

データ・フィード・ファイル, 25.4

プロパティ・ファイル, 25.3

サードパーティのキャッシュ構成, 12.4 threshhold, D.95 throughput, D.96 throughput-interval, D.97 Tibco EMS JMSプロバイダ, 7.2.4 timeout-seconds, F.39 time-range, D.98 time-range-offset, D.99 タイムスタンプ

アプリケーション, C.3

システム, C.3

time-to-live, D.100 tolerance, 18.2 ツール

Oracle CEP IDE for Eclipse, 1.2, 3.1

Oracle CEP Visualizer, 1.2

transaction-manager, F.40 タプル

データ・タイプ, 2.1.3.3

タイプ1の高可用性アプリケーション, 20.3.2.5.1 タイプ2の高可用性アプリケーション, 20.3.2.5.2 タイプ・ブラウザ, 6.3.5

U

unit, D.101

user, D.102

use-secure-connections, F.41

V

value, D.103

view, D.104

W

warm-up-windowタイム, 20.1.1.3, 20.3.2.5.1

Webサービス

情報, 17.1

Oracle CEPアプリケーションの公表, 17.3

Oracle CEPアプリケーションからの起動, 17.2

weblogic-instances, F.42 weblogic-jta-gateway, F.43 weblogic-rmi-client, F.44 wlevs:adapter, C.2 wlevs:application-timestamped, C.3 wlevs:cache, C.4 wlevs:cache-listener, C.5 wlevs:cache-source, C.7 wlevs:channel, C.10 wlevs:deployment, E.2 wlevs:event-bean, C.11 wlevs:event-type, C.13 wlevs:event-type-repository, C.12 wlevs:expression, C.14 wlevs:factory, C.15 wlevs:function, C.16 wlevs:instance-property, C.17 wlevs:listener, C.18 wlevs:loader, C.6 wlevs:metadata, C.19 wlevs:processor, C.20 wlevs:property, C.21 wlevs:source, C.22 wlevs:table-source, C.23, C.24 wlevs_application_config.xsd, B.2, D.1 wlevs_server_config.xsd, B.4, F.1 work-manager, D.105, F.24, F.45 work-manager-name, D.106 write-behind, D.107 write-none, D.108 write-through, D.109

X

xa-params, F.46

XSD

情報, B

コンポーネント構成ファイル, B.2, D.1

config.xml, B.4

deployment.xsd, B.3, E.1

wlevs:deployment, E.2

EPNアセンブリ・ファイル, B.1, C.1, E.1, F.1 I10n_msgcat.dtd, G.1, H.1

アクション, H.8

原因, H.7

logmessage, H.3

message, H.4

messagebody, H.5

messagedetail, H.6

i10n_msgcat.dtd

locale_message_catalog, H.2

ロケール・メッセージ・カタログ, H.1 メッセージ・カタログ, G.1, G.1 msgcat.dtd, G.1

アクション, G.8

原因, G.7

logmessage, G.3

message, G.4

message_catalog, G.2

messagebody, G.5

messagedetail, G.6

ocep-jdbc.xsd, 18.3 ocep-spatial.xsd, 18.2 サーバー構成ファイル, B.4 spring-wlevs-v11_1_1_6.xsd, B.1, C.1

wlevs:adapter, C.2

wlevs:application-timestamped, C.3

wlevs:cache, C.4

wlevs:cache-listener, C.5

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.13

wlevs:event-type-repository, C.12

wlevs:expression, C.14

wlevs:factory, C.15

wlevs:function, C.16

wlevs:instance-property, C.17

wlevs:listener, C.18

wlevs:metadata, C.19

wlevs:processor, C.20

wlevs:property, C.21

wlevs:source, C.22

wlevs:table-source, C.23, C.24

wlevs_application_config.xsd, B.2, D.1

accept-backlog, D.2

アダプタ, D.3

amount, D.4

application, D.5

average-interval, D.6

average-latency, D.7

batch-size, D.8

batch-timeout, D.9

binding, D.10

bindings (jms-adapter), D.11

bindings (processor), D.12

buffer-size, D.13

buffer-write-attempts, D.14

buffer-write-timeout, D.15

cache, D.16

caching-system, D.17

channel (http-pub-sub要素), D.19

channel (トップレベル要素), D.18

coherence-cache-config, D.20

coherence-caching-system, D.21

coherence-cluster-config, D.22

collect-interval, D.23

concurrent-consumers, D.24

connection-jndi-name, D.25

connection-password, D.26, D.27

connection-user, D.28

database, D.29

dataset-name, D.30

delivery-mode, D.31

destination-jndi-name, D.32

destination-name, D.33

diagnostic-profiles, D.35

direction, D.36

duration, D.39

enabled, D.40

encrypted-password, D.41

end, D.42

end-location, D.43

event-bean, D.44

event-type, D.45

event-type-list, D.46

eviction-policy, D.47

group-binding, D.48

heartbeat, D.49, D.67

http-pub-sub-adapter, D.50

idle-time, D.51

jms-adapter, D.52, D.53

jndi-provider-url, D.54

listeners, D.55

location, D.56

max-latency, D.57

max-size, D.58

max-threads, D.59

message-selector, D.60

name, D.61

netio, D.62

num-threads, D.63

param, D.64

parameter, D.65

params, D.66

password, D.68

playback-parameters, D.69

playback-speed, D.70

processor (EPL), D.71

processor (Oracle CQL), D.72

profile, D.73

provider-name, D.74

query, D.75

record-parameters, D.76

repeat, D.77

rule, D.78

rules, D.79

schedule-time-range, D.80

schedule-time-range-offset, D.81

selector, D.82

server-context-path, D.83

server-url, D.84

session-ack-mode-name, D.85

session-transacted, D.86

stage, D.87

start, D.88

start-location, D.89

start-stage, D.90

store-policy-parameters, D.91

stream, D.92

symbol, D.93

symbols, D.94

threshhold, D.95

throughput, D.96

throughput-interval, D.97

time-range, D.98

time-range-offset, D.99

time-to-live, D.100

unit, D.101

user, D.102

value, D.103

view, D.104

work-manager, D.105

work-manager-name, D.106

write-behind, D.107

write-none, D.108

write-through, D.109

wlevs_server_config.xsd, B.4, F.1

auth-constraint, F.2

bdb-config, F.3

channel-constraints, F.5

channel-resource-collection, F.6

チャネル, F.4

クラスタ, F.7

connection-pool-params, F.8

cql, F.9, F.29

データ・ソース, F.10

data-source-params, F.11

デバッグ, F.14

ドメイン, F.13

driver-params, F.12

event-store, F.15

exported-jndi-context, F.16

http-pubsub, F.17

jetty, F.18

jetty-web-app, F.19

jmx, F.20

jndi-context, F.21

log-file, F.22

log-stdout, F.23

message-filter-class, F.25.1

message-filter-name, F.25.1

message-filters, F.25

名前, F.26

netio, F.27

netio-client, F.28

path, F.30

pubsub-bean, F.31

rdbms-event-store-provider, F.32

rmi, F.33

scheduler, F.34

server-config, F.35

services, F.36

show-detail-error-message, F.37

ssl, F.38

timeout-seconds, F.39

transaction-manager, F.40

use-secure-connections, F.41

weblogic-instances, F.42

weblogic-jta-gateway, F.43

weblogic-rmi-client, F.44

work-manager, F.24, F.45

xa-params, F.46

Z

ズームEPN, 6.2.2

Copyright © 2007, 2012, Oracle and/or its affiliates. All rights reserved.