Sun Identity Manager 8.1 システム管理者ガイド

トレースポイントがあるコードの計測

Identity Manager は、トレース機能を使用すると、アダプタコンポーネント (リソースアダプタ) でアダプタのトレースポイントがあるコードを計測できるようになります。ここでは、トレースポイントを使用し続けてアダプタ問題を評価し、解決に役立つガイドラインをいくつか説明します。

トレースポイントがあるコードを測定するためのガイドラインの方針は、次のとおりです。

表示する情報量を制御するには、トレースポイントのトレースレベルを指定します。次の表は、com.sun.idm.logging.TraceManager インタフェースで定義される各トレースレベルを説明したものです。

表 5–2 定義されているトレースレベル

トレースレベル 

トレース変数 

使用状況 

Trace.LEVEL1

リソースアダプタインタフェースの Public メソッドのエントリポイントと終了ポイント 

Trace.LEVEL2

Public メソッド以外または Identity Manager コンポーネント外部インタフェースに含まれているメソッドのメソッドのエントリポイントと終了ポイント 

Trace.LEVEL3

決定点または重要変数 

Trace.LEVEL4

ループ内の重要変数など、極めて詳細な情報 

n/a 

Trace.ALWAYS

トレースレベルのチェックを行わない  

注意: このオプションは、すでにトレースレベルを条件に指定している場合に使用してください。


注 –

循環的に依存しないようにするには、com.sun.idm.logging.TraceManager インタフェースを実装する com.sun.idm.logging パッケージに、com.sun.idm.logging.Trace クラスを使用します。


トレースポイントをコードに追加するときは、次の点に注意してください。

次のセクションでは、各トレースレベルをより詳細に説明していき、コードでのトレースポイントの使用例を紹介していきます。

エントリと終了トレースポイントの使用方法

使用するコードにエントリおよび終了トレースポイントを追加する前に、これらのガイドラインをお読みください。

次に、簡易エントリと終了トレース文の例を示します。この例では、次の CLASS 変数が各文に宣言されているものとします。

private static final String CLASS = 
"com.waveset.adapter.MyResourceAdapter"; 
protected static Trace _trace = Trace.getTrace();

例 5–1 エントリトレースポイントの一例

final String METHOD = methodName; 
_trace.entry(_trace.LEVEL1, CLASS, METHOD);
_trace.entry(_trace.LEVEL1, CLASS, METHOD, user);
if (_trace.level1(CLASS, METHOD)) {    
_trace.entry(_trace.ALWAYS, CLASS, METHOD,
user= + user); 
}

// Show the size of an array argument
// ASSUME: password is an argument to the method
// Note the use of the Util.length() method. It is
// a convenience method that guards against null.
if (_trace.level1(CLASS, METHOD)) {
    StringBuffer sb = new StringBuffer(32);
    sb.append(password length=);
    ab.append(Util.length(password));
    _trace.entry(_trace.ALWAYS, CLASS, METHOD, sb.toString());
}


例 5–2 エントリトレースポイントの一例

_trace.exit(_trace.LEVEL1, CLASS, METHOD);

_trace.exit(_trace.LEVEL1, CLASS, METHOD, returnValue);
if (_trace.level1(CLASS, METHOD)) {
    _trace.exit(_trace.ALWAYS, CLASS, METHOD,
      returnValue != null ? returnValue.getName() : returnValue);
}

// Show the size of an array 
String[] accounts = ... 
if (_trace.level1(CLASS, METHOD)) {    
    StringBuffer sb = new StringBuffer(32)
    sb.append(accounts length=);    
    ab.append(accounts.length);    
    _trace.exit(_trace.ALWAYS, CLASS, METHOD, sb.toString()); 
}

情報トレースポイントの使用方法

使用するコードに情報トレースポイントを追加する前に、これらのガイドラインをお読みください。

次に、簡易情報トレース文の例を示します。この例では、次の CLASS 変数が宣言されているものとします。

private static final String CLASS = 
"com.waveset.adapter.MyResourceAdapter"; 
protected static Trace _trace = Trace.getTrace();

例 5–3 情報トレースポイントの一例

_trace.info(_trace.LEVEL3, CLASS, METHOD, Some Message);
WavesetResult result = new WavesetResult(); 
try {   
   someMethod(); 
}  catch(Exception e) {   
   String msg = Some Error Message;   
   WavesetException we = new Waveset(msg, e);   
   _trace.caught(_trace.LEVEL3, CLASS, METHOD, e);   
   result.addException(we); 
}

例外トレースポイントの使用方法

使用するコードに例外トレースポイントを追加する前に、これらのガイドラインをお読みください。

次に、簡易例外トレース文の例を示します。この例では、次の CLASS 変数が宣言されているものとします。

private static final String CLASS = 
"com.waveset.adapter.MyResourceAdapter"; 
protected static Trace _trace = Trace.getTrace();

例 5–4 例外トレースポイントの一例

try {   
   someMethod(); 
}  catch(Exception e) {   
   _trace.throwing(_trace.ALWAYS, CLASS, METHOD, e);   
   throw e; 
}


try {   
   someMethod(); 
}  catch(Exception e) {   
   _trace.throwing(_trace.ALWAYS, CLASS, METHOD, e);   
   WavesetException we = new WavesetException(Some Message, e);   
   throw we; 
}


if (error) {   
  WavesetException e = new WavesetException(Some Error Message.; 
  _trace.throwing(_trace.LEVEL3, CLASS, METHOD, e);   
  throw e;
}

try {
   someMethod();
}  catch(Exception e) {
   _trace.caught(_trace.LEVEL1, CLASS, METHOD, e);
}
// execution continues.
someOtherMethod();

トレースポイントのテンプレートの使用方法

トレースポイントのテンプレートを使用すると、Identity Manager リソースアダプタに一貫した有用なトレースポイントを作成できるようになります。Identity Manager には、次の場所に Eclipse テンプレートが用意されています。

src/wps/doc/eclipse-trace-templates.xml

これらのテンプレートを Eclipse にインポートするには、「ウィンドウ」>「環境設定」>「Java」>「エディタ」>「テンプレート」の順に選択します。


注 –

Emacs または IDEA を使用している場合は、同様のテンプレートが作成できます。