イベント・コンテンツの自動終了

プロパティーおよびポリシーを設定して、イベント・コンテンツを自動的に完了することができます。

このタスクを実行する理由と時期

状況に応じて、作成したすべてのイベントのプロパティー・データが自動的に設定されるようにすることができます。これは、変化しない特定の標準値 (アプリケーション名など) を入力する場合や、ランタイム環境から使用可能な情報に基づくプロパティーの一部 (作成時間やスレッド情報など) を設定する場合に役立ちます。ビジネス・ルールに基づいてイベント・コンテンツを管理するポリシーを設定することもできます。例えば、特定の拡張名を持つイベントに、特定の値に設定された重大度を指定する必要がある場合があります。

これは、コンテンツ・ハンドラー を作成して実行できます。コンテンツ・ハンドラーは、使用する任意のポリシーに基づいた各イベントのプロパティー値を 自動的に設定するオブジェクトです。 Common Event Infrastructure では、イベントが Common Base Event 仕様に準拠している限り、 コンテンツ・ハンドラーがイベント・データを変更する方法に対して制限が設定されていません。

すべてのイベント・ソースが同じポリシーに準拠するようにするには 、(EventFactoryFactory を使用して) コンテンツ・ハンドラーに関連付けられている イベント・ファクトリーを作成してから、作成したイベント・ファクトリー を JNDI ネーム・スペースにバインドします。それ自身のイベント・ファクトリーを作成する代わりに、イベント・ソースは JNDI ルックアップを実行して、コンテンツ・ハンドラーを使用せずに既に存在するイベント・ファクトリーにアクセスできます。 ビジネス・ルールが後で変更された場合は、1 箇所でコンテンツ・ハンドラーを変更できます。

イベント・ソースは、コンテンツ完了を使用可能にするために何もする必要はありません。イベント・ファクトリーがコンテンツ・ハンドラーに関連付けられている場合、 イベント・ファクトリーが作成する各イベントは、そのコンテンツ・ハンドラーへの参照を保持します。 イベントをエミッターにサブミットすると、イベントはコンテンツ・ハンドラーの completeEvent() メソッドを呼び出し、自身への参照を渡します。これにより、イベント・ソースがイベント固有のプロパティーを設定した後、 イベントがエミッターによって検証および処理されるより前に、 イベントに正しいポリシーが適用されます。
注: イベントがプロセスからプロセスに伝送される場合、コンテンツ・ハンドラーへの参照 は伝送されません。 これは、コンテンツ完了が、イベントが生成された環境に依存しており、 必要な情報が他の場所では利用できないためです。 この制限は、相互にローカルであるアプリケーション間の呼び出し (例えば、 ローカル・インターフェースを使用した Enterprise Bean への呼び出し) には影響を与えません。

コンテンツ・ハンドラーを作成するには、以下のステップに従います。

このタスクのステップ

  1. org.eclipse.hyades.logging.events.cbe.ContentHandler インターフェースをインプリメントする新規 Java クラスを作成します。 このインターフェースは completeEvent(CommonBaseEvent) と呼ばれる単一メソッドを定義します。パラメーターは、完成する必要のあるコンテンツを持つイベントです。 このメソッドをインプリメントする場合は、CommonBaseEvent の getter メソッドおよび setter メソッドを使用し、適用されるポリシーに従ってイベント・プロパティー・データを処理します。
    注: イベント・ソースが JNDI を使用してイベント・ファクトリーを検索すると、 イベント・ファクトリーと共にコンテンツ・ハンドラーとが戻されます。 このため、コンテンツ・ハンドラーは順次実行される必要があります。

    以下の例は、各イベントの拡張名を自動的に設定する簡単なコンテンツ・ハンドラーです。

    import java.io.Serializable;
    import org.eclipse.hyades.logging.events.cbe.*;
    
    public class BusinessContentHandler
         implements ContentHandler, Serializable {
    
           public void completeEvent(CommonBaseEvent event)
              throws CompletionException {
                  event.setExtensionName("business");
         }
    }
  2. コンテンツ・ハンドラーとイベント・ファクトリーを関連付けます。 関連付けを行うには、イベント・ファクトリーを作成する際にコンテンツ・ハンドラーを指定します。
    EventFactory eventFactory =
         (EventFactory) EventFactoryFactory.createEventFactory(contentHandler);
    戻されるイベント・ファクトリーは、指定したコンテンツ・ハンドラーと永続的に関連付けられます。

ご利用条件 |


(c) Copyright IBM Corporation 2005, 2006.
本製品では Eclipse テクノロジーが採用されています。(http://www.eclipse.org)