ロギングの JRas プログラミング・インターフェース (非推奨)

このタスクおよびそのサブタスクで説明されている JRas フレームワークは、推奨されません。ただし、Java™ ロギングを使用して、同様の結果を得ることができます。

一般的な考慮事項

WebSphere® Application Server は、Java 2 セキュリティーを使用してファイルやソケットなどの保護リソースへのアクセスを制限するように構成できます。 一般に、ユーザー作成拡張機能は、そのような保護リソースにアクセスするため、 ユーザー作成拡張機能には、AccessController doPrivileged 呼び出しを使用する適切なセキュリティー検査呼び出しが含まれていなければなりません。 さらに、ユーザー作成拡張機能には、 適切なポリシー・ファイルが含まれている必要があります。 通常、ユーザー作成拡張機能は別のパッケージに置くことをお勧めします。 ユーザー作成拡張機能へのアクセスを適切に制限するのは、プログラマーの責任です。

ハンドラーの作成

ユーザー作成ハンドラーは、 RASIHandler インターフェースを実装する必要があります。 RASIHandler インターフェースは、RASIMaskChangeGenerator インターフェースを拡張します。 この RASIMaskChangeGenerator インターフェースは RASIObject インターフェースを拡張します。 ここから、これらの各インターフェースによって導入されるメソッドについて簡単に説明し、実装におけるガイドを記載します。 特定のインターフェースまたはメソッドについての詳細な説明は、該当する製品の API 文書を参照してください。

RASIObject インターフェース

RASIObject インターフェースは、 スタンドアロンの JRas ロギング・ツールキット・クラスの基本インターフェースです。 これらのクラスには、ロガー、ハンドラー、フォーマッターなどがあり、ステートフルであるか、構成可能です。
  • スタンドアロンの JRas ロギング・ツールキットは、 プロパティー・ファイルに基づく基本的な構成をサポートします。 この構成サポートを実装するために、 構成状態をキーと値のペアのセットとしてプロパティー・ファイルに保管します。 構成状態を取得および設定するには、public Hashtable getConfig メソッドおよび public void setConfig(Hashtable ht) メソッドを使用します。 JRas 拡張は、プロパティーに基づく構成をサポートしていません。 これらのメソッドは、ノーオペレーションとして実装します。 これらのメソッドを使用して、プロパティーに基づく独自の構成を実装できます。
  • ロガー、ハンドラーおよびフォーマッターは、名前付きオブジェクトにすることができます。 例えば、JRas 拡張では、ユーザーはマネージャーから検索するロガーに名前を指定する必要があります。 自分のハンドラーに名前を付けることもできます。public String getName メソッドおよび public void setName(String name) メソッドは、名前フィールドを取得または設定するためのメソッドです。 現在、JRas 拡張は、ユーザーのハンドラーのメソッドを呼び出しません。 必要に応じて、ノーオペレーションを含め、これらのメソッドを実装することができます。
  • ロガー、ハンドラー、およびフォーマッターには、説明フィールドを含むこともできます。 public String getDescription メソッドおよび public void setDescription(String desc) メソッドを使用すると、説明フィールドを取得または設定できます。 現在、JRas 拡張は、説明フィールドを使用しません。 必要に応じて、ノーオペレーションを含め、これらのメソッドを実装することができます。
  • public String getGroup メソッドは、RASManager インターフェースで使用するために提供されています。 JRas 拡張には、独自の Manager クラスがあるため、このメソッドが呼び出されることはありません。これは、ノーオペレーションとして実装します。

RASIMaskChangeGenerator インターフェース

RASIMaskChangeGenerator インターフェースは、 マスク状態に基づいてイベントをフィルターに掛けるための実装メソッドを定義するインターフェースです。 現時点でこのインターフェースは、ロガーとハンドラーの両方によって実装されます。 定義により、このインターフェースを実装するオブジェクトには、 メッセージ・マスクとトレース・マスクの両方が含まれますが、両方を使用する必要はありません。 例えば、メッセージ・ロガーにはトレース・マスクが含まれますが、 メッセージ・ロガーはトレース・イベントを生成しないため、トレース・マスクは使用されません。 ただし、ハンドラーは、積極的に両方のマスク値を使用します。 例えば、ハンドラーは単体で、メッセージ・イベントとトレース・イベントの両方を処理できます。

  • public long getMessageMask メソッドおよび public void setMessageMask(long mask) メソッドは、メッセージ・マスクの値の取得または設定に使用されます。 public long getTraceMask メソッドおよび public void setTraceMask(long mask) メソッドは、トレース・マスクの値の取得または設定に使用されます。

さらに、このインターフェースでは、マスクの状態が変化したときに、関係者へコールバック するという概念も導入されています。 コールバック・オブジェクトは、RASIMaskChangeListener インターフェースを実装する必要があります。

  • public void addMaskChangeListener(RASIMaskChangeListener listener) メソッドおよび public void removeMaskChangeListener(RASIMaskChangeListener listener) メソッドは、ハンドラーにリスナーを追加したり、ハンドラーからリスナーを除去したりするために使用します。 public Enumeration getMaskChangeListeners メソッドは、現在登録されているリスナーのリストの全項目についてその列挙型を戻します。 public void fireMaskChangedEvent(RASMaskChangeEvent mc) メソッドを使用してすべての登録済みリスナーをコールバックし、それらのリスナーにマスク変更イベントを通知します。

効率を良くするため、JRas 拡張メッセージおよびトレース・ロガーは、RASIMaskChangeListener インターフェースを実装しています。 ロガー実装は、ロガーのマスクのほかに、コンポジット・マスクを保守します。 ロガーのコンポジット・マスクは、そのロガーに登録されるすべてのハンドラーの該当するマスクを論理 OR 演算し、結果をロガーのマスクと AND 演算することによって形成されます。 例えば、メッセージ・ロガーのコンポジット・マスクは、そのロガーに登録されたすべてのハンドラーのメッセージ・マスクを OR 演算し、結果をロガーのメッセージ・マスクと AND 演算することにより形成されます。

これらのメソッドを正しく実装するためには、すべてのハンドラーが必要です。 さらに、ユーザー・ハンドラーのインスタンスが生成されるときに、追加されるロガーを、 addMaskChangeListener メソッドを使用してハンドラーに登録する必要があります。 ハンドラーのメッセージ・マスクまたはトレース・マスクのいずれかが変更されると、 ロガーをコールバックして、そのロガーにマスク変更を通知する必要があります。 このプロセスにより、ロガーはコンポジット・マスクを動的に保守することができます。

RASMaskChangedEvent クラスは、スタンドアロンの JRas ロギング・ツールキットによって定義されます。 このコンテキストでは、ユーザー・コードによりこのクラスを直接使用することがサポートされています。

さらに、RASIMaskChangeGenerator インターフェースでは、実装するオブジェクトによって処理されるすべてのメッセージ・イベント・クラスとトレース・イベント・クラスの名前をキャッシュするという概念が導入されています。 これらのメソッドの目的は、GUI などの管理プログラムが名前のリストを検索し、そのクラスをイントロスペクトして、クラスが処理する可能性のあるイベント・タイプを判別し、結果を表示できるようにするのをサポートすることです。 JRas 拡張はこれらのメソッドを呼び出さないため、これらのメソッドをノーオペレーションとして実装することができます。

  • public void addMessageEventClass(String name) メソッドおよび public void removeMessageEventClass(String name) メソッドを呼び出して、メッセージ・イベント・クラス名をリストに追加したり、リストから除去したりすることができます。 メソッド public Enumeration getMessageEventClasses は、メッセージ・イベント・クラス名のリストの全項目についてその列挙型を戻します。 同様に、public void addTraceEventClass(String name) メソッドおよび public void removeTraceEventClass(String name) メソッドを呼び出して、トレース・イベント・クラス名をリストに追加したり、リストから除去したりすることができます。 public Enumeration getTraceEventClasses メソッドは、トレース・イベント・クラス名のリストの全項目についてその列挙型を戻します。

RASIHandler インターフェース

RASIHandler インターフェースは、 ハンドラーの振る舞いに特有のメソッドを導入しています。

スタンドアロンの JRas ロギング・ツールキットにより提供される RASIHandler インターフェースは、同期モードまたは非同期モードのいずれかで実行されるハンドラーをサポートしています。 一般に、非同期モードでは、イベントは呼び出しスレッドによりキューに入れられ、 ワーカー・スレッドにより書き込まれます。 スレッドの作成は WebSphere Application Server 環境ではサポートされていないため、明示的に禁止されてはいないものの、ハンドラーがイベントをキューに入れたり、バッチで実行したりすることはないと想定されています。

  • public int getMaximumQueueSize() メソッドおよび public void setMaximumQueueSize(int size) メソッドは、IllegalStateException 例外を作成して、最大キュー・サイズを管理します。 実際のキュー・サイズを照会するための public int getQueueSize メソッドが提供されています。
  • public int getRetryInterval メソッドおよび public void setRetryInterval(int interval) メソッドは、エラー再試行という概念をサポートしており、あるタイプのキューイングを意味しています。
  • ハンドラーを構成するときに使用するフォーマッターのリストを管理するために、public void addFormatter(RASIFormatter formatter)、public void removeFormatter(RASIFormatter formatter) および public Enumeration getFormatters の各メソッドが提供されています。 必要に応じて場合、異なるイベント・クラスには、異なるフォーマッターを提供することができます。
  • ハンドラーが抽象化する基盤デバイスを管理するために、public void openDevice、public void closeDevice および public void stop の各メソッドが提供されています。
  • イベントをハンドラーに渡して処理するために、public void logEvent(RASIEvent event) メソッドおよび public void writeEvent(RASIEvent event) メソッドが提供されています。

フォーマッターの作成

ユーザー作成フォーマッターは、 RASIFormatter インターフェースを実装する必要があります。 RASIFormatter インターフェースは、RASIObject インターフェースを拡張しています。 RASIObject インターフェースの実装は、ハンドラーとフォーマッターのどちらの場合でも同じです。 RASIFormatter インターフェースによって導入されるメソッドについて簡単に説明します。 このインターフェースによって導入されるメソッドの詳細な説明については、該当する製品の API 文書を参照してください。

RASIFormatter インターフェース

  • public void setDefault(boolean flag) メソッドおよび public boolean isDefault メソッドは、特定のフォーマッターがデフォルトのフォーマッターであるかどうかを判別するために、 スタンドアロンの JRas ロギング・ツールキットに用意された具象 RASHandler クラスにより使用されます。 これらの RASHandler クラスは WebSphere Application Server 環境で使用できないため、これらのメソッドのセマンティックの重要度はユーザーが決定できます。
  • フォーマッターがフォーマットできるイベント・クラスを判別するために、public void addEventClass(String name)、public void removeEventClass(String name) および public Enumeration getEventClasses の各メソッドが提供されています。 適切な実装を用意することができます。
  • public String format(RASIEvent event) メソッドは、ハンドラー・オブジェクトによって呼び出され、イベントのフォーマット済みの String 表現を戻します。

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_wrtextensions
ファイル名:rtrb_wrtextensions.html