イベント・ソースは、Java 2 Platform, Standard Edition (J2SE) または
Java 2 Platform, Enterprise Edition (J2EE) のいずれかを使用して Java プログラム言語にインプリメントされます。
イベント・ソースは、Common Base Event モデルに準拠した有効なイベントを
サブミットする必要があります。
各イベントは、Java オブジェクトとして表されます。
エミッターとエミッター・ファクトリー
イベント・ソースは、イベント・サーバーとは直接対話をしません。イベント・ソースは、エミッターと呼ばれるオブジェクトと対話します (com.ibm.events.emitter.Emitter インターフェースのインプリメンテーション)。エミッターとは、イベントを送信するメソッドを提供するローカル・オブジェクトのことです。
通常、エミッターはイベント送信の詳細を処理します。
このため、イベント・ソースの開発者は、イベント・サーバーのロケーション、フィルター設定、および基礎となる送信メカニズムを考慮する必要がありません。
これらの詳細は、
エミッター・ファクトリー で管理されます。
これは、管理者が構成したオブジェクトで、Java Naming and Directory Interface (JNDI)
ネーム・スペース内でバインドされます。
エミッター・ファクトリーは、com.ibm.events.emitter.EmitterFactory のインスタ
ンスで、エミッター・オブジェクトを作成するために使用されます。また、
エミッター・ファクトリーが作成するエミッターの動作も定義します。
以下の設定が含まれています。
- 優先トランザクション・モード。この設定は、エミッターが新規トランザクション内の各イベントを送信するか、または現行トランザクション内の各イベントを送信するかを指定します。
イベント・ソースは特定のエミッターまたはイベントのサブミットに関してこの設定を変更できますが、プロファイルはデフォルト値を指定します。
(この設定は、J2EE コンテナーでのみ有効です。
J2SE プラットフォームには、トランザクション制御がありません)。
- 優先同期モード。この設定は、同期伝送または非同期伝送のいずれかを使用し
てイベントを送信するかどうかを指定します。
同期伝送 では、sendEvent() メソッドは、イベントが処理されるまで呼び出し元に制御を戻しません。
非同期伝送 では、sendEvent() メソッドはイベントがサブミットさ
れた直後に戻り、呼び出し元にはイベント処理に関する詳細情報が送信されません。
イベント・ソースはエミッターまたはイベント・サブミットに関してこの設定を変更できますが、
デフォルト値はプロファイルにより指定されます。
- 使用する伝送プロファイル。伝送プロファイルとは、イベントをイベント・サーバーに送信する特定の伝送メカニズムを定義する構成オブジェクトのことです。エミッター・ファクトリー・プロファイルでは、同期伝送のプロファイルと非同期伝送のプロファイルを指定できます。
イベント・ソースは、エミッターが使用している伝送プロファイルを変更することはできません。
- エミッターに使用するフィルター構成。
このフィルター構成は、エミッターにサブミットされるイベントをフィルター操作するためにどのフィルター・プラグインを使用するかを定義します。
Common Event Infrastructure にはデフォルトのフィルター・プラグインが含まれていますが、
別のフィルタリング・エンジンを使用したい場合は、独自のフィルター・プラグインをインプリメントすることもできます。
管理者は、各プロファイルが異なるエミッター構成を定義する複数のエミッター・ファクトリー・プロファイルを作成できます。イベント・ソースは、既存のエミッター・ファクトリー・プロファイルに関連付けられているエミッター・ファクトリーを使用して、エミッターを取得します。
このため、同じエミッター・ファクトリーで作成されたすべてのエミッターのデフォルトの振る舞いは同じです。詳しくは、『エミッターの取得』を参照してください。
注: イベント・ソースが Java 2
セキュリティーを使用可能にして実行されている状態で、ユーザー独自のグローバル固有 ID (GUIDs)
を生成する必要がある場合は、正しく処理できるようにポリシー・ファイルを変更する必要があります。
以下のエントリーを追加します。
permission java.io.FilePermission "${java.io.tmpdir}${/}guid.lock",
"read,write,delete";
permission java.net.SocketPermission "*", "resolve";