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

Identity Manager のオブジェクトとアクティビティーのトレース

トレース出力は、問題を見つけて解決する際にも、カスタムのリソースアダプタを開発する際にも非常に有用です。

ここでは、Identity Manager の各種オブジェクトとアクティビティーのトレースを有効に設定する方法について説明します。説明する内容は次のとおりです。


注 –

トレースは、システムパフォーマンスに影響を及ぼします。最適なパフォーマンスが得られるようにするには、システムのデバッグ終了後に最小限のトレースレベルに抑えるか、トレースを無効にします。


トレースの設定方法

Identity Manager の中には、トレースを有効に設定できる場所が複数用意されています。次に、この手順について説明していきます。

Procedure「System Settings」ページからトレースを有効にする

「System Settings」ページが Product_IDMgr; のデバッグページのメイン画面になります。

このページから行える操作は、次のとおりです。

Identity Manager の「System Settings」ページからトレースを有効にする手順は、次のとおりです。

  1. ブラウザを開いて、Identity Manager 管理者インタフェースにログインします。

  2. 次の URL を入力します。

    http://host port/idm/debug

    各表記の意味は次のとおりです。

    • host は、Identity Manager の実行先ローカルサーバーです。

    • port は、このサーバーが監視中の TCP ポート数です。

  3. 「System Settings」ページが表示されたら「Show Trace」をクリックして、単一のトレース設定を操作します。ここから、最大 10 個までのトレース設定を作成、変更、削除できます。


    注 –

    これ以降の説明は、トレース設定が 1 つしかないものとして説明します。

    複数のトレース設定を操作するには、代わりに「Show Trace List」ボタンをクリックしてください。「Trace Configuration」ページが表示されたら、これまでの設定を編集する設定名をクリックします。

    Identity Manager には、デフォルトでグローバル設定が用意されています。しかし、Identity Manager インスタンスに複数のサーバーがある場合は、これ以外の設定を定義した方が便利かもしれません。トレース設定名と現ホスト名が重複する場合は、ホスト設定の方がグローバル設定よりも優先されます。


次の手順

トレースを設定した後は、次のセクションで説明するように、デフォルトのグローバルトレース設定オブジェクトを表示して編集したり、設定オブジェクトを新規作成できます。

Procedureデフォルトの設定オブジェクトを編集する

  1. 「Edit Trace Configuration」ページから、「Trace Enabled」ボックスをクリックしてトレースを有効にします。


    注 –

    このボックスの選択を解除するとトレースは終了しますが、設定はそのまま残ります。トレースしていたクラスを覚えておいて入力し直さなくても、トレースの有効と無効を切り替えられます。


  2. トレースするクラス、パッケージ、またはメソッド名をテーブルに入力して指定します。

    たとえば、次のようにします。

    • waveset.repository パッケージ内にあるすべてのクラスをトレースするには、com.waveset.repository と入力します。

    • waveset.repository パッケージ内にある AbstractDataStore クラスをトレースするには、com.waveset.repository.AbstractDataStore と入力します。

    • waveset パッケージ内にある AbstractDataStore クラスのリストメソッドをトレースするには、 com.waveset.repository.AbstractDataStore#list と入力します。

    com.waveset クラスにはトレースを有効に設定しないでください。com.waveset クラスは冗長で多数のクラスがあるため、このクラスをトレースするとサーバーがハングすることがあります。

  3. このテーブルの「Level」メニューから、「Method」または「Class」のトレースレベルを選択します。

    次の表で説明するように、それぞれのレベルで異なる種類の情報が取り込まれます。

    トレースレベル 

    説明 

    最小デバッグ出力、トレース例外、およびエラー情報のみ 

    トレースレベル 0 イベント + Public メソッドのエントリと終了 

    トレースレベル 1 イベント + Public 以外のメソッドのエントリと終了 

    トレースレベル 2 + 決定点と重要変数 

    最大デバッグ出力 


    注 –

    メソッド/クラスのトレースは予測できますが、場合によってはトレース出力が大量になることがあります。トレースするメソッドとクラスを指定するときは、できる限り明確に指定するようにしてください。


  4. (オプショナル) 下位呼び出しのトレースを有効にするには、「Subcall Tracing」メニューからレベルを選択します。このメニューで使用されるトレース番号のレベルは、先の表で説明したものと同じです。


    注 –
    • デフォルトの下位呼び出しトレースレベルは、なしです。これにより、メソッド単位またはクラス単位での下位呼び出しトレースが無効になります。

    • 下位呼び出しトレースレベルは、先の手順で指定したメソッド/クラスのトレースレベルとは関係ありません。


    下位呼び出しトレースをサポートしている特定のメソッドに「下位呼び出しトレース」を有効にすると、このメソッドから呼び出されるメソッドにはトレースレベルが自動的に設定されるようになります。下位呼び出しトレースを使用すると、指定メソッドへのエントリとメソッドの終了により終了したエントリを契機に、短くても詳細なトレース出力のバーストが生成できます。

    たとえば、com.waveset.adapter.NewRes#init メソッドのトレース設定を作成した場合は、メソッド/クラスのトレースをレベル 1 に設定し、下位呼び出しトレースをレベル 3 に設定します。

    さらに、init メソッドが次のもう 2 つのメソッドを呼び出すとします。

    • NewRes#subcallA

    • NewRes#subcallB

      init メソッドが実行されると、com.waveset.adapter.NewRes#init メソッドは、 subcallA に達するまで、レベル 1 でトレース出力を生成します。subcallA の実行が開始されると、トレースレベルが 3 に変わり、subcallA が終了するまでこのレベルが継続されます。com.waveset.adapter.NewRes#init メソッドが init メソッドに戻り、トレースレベルを 1 に戻します。その後、initsubcallB を呼び出すと、subcallB が存在する限り、別のバーストのトレースレベル 3 の詳細が続きます。最後に、init が存在すれば、トレースレベル 1 が終了します。

  5. トレース結果を指定ファイルの場所に送信するか、stdout に送信します。

    ファイルへの出力を選択すると、「Trace File」フィールドが表示されます。このフィールドから、別の場所を指定したり、トレース出力ファイルのファイル名を指定します。デフォルトの出力場所とファイル名は、次のとおりです。


    path_to_idm_install\export\pipeline\config\WSTrace.log
    
  6. 格納する最大トレースファイル数を指定します (デフォルトは 2)。

  7. 各ファイルの最大サイズを指定します (デフォルトは 512K)。

  8. トレース出力ファイルを生成時に書き込むか (同期的)、そのデータをキューに入れておいてからトレースファイルに書き込むか (非同期的) を指定します。

  9. 変更を保存します。

Procedureトレース設定オブジェクトを新規作成する

トレース設定オブジェクトを新規作成するには、次の項目を実行します。

  1. トレース対象とするパッケージまたはメソッドを決定します。

    通常は、リソースアダプタ名を指定するか、エラーメッセージに表示された情報を使用します。

  2. Identity Manager 管理者インタフェースにログインし、「System Settings」ページからトレースを有効にするに説明したとおりに「System Settings」ページを開きます。

  3. 「System Settings」ページで、「Show Trace List」をクリックします。

  4. Identity Manager の「Trace Configuration」ページが表示されたら、「New」をクリックします。

  5. 「Edit Trace Configuration」ページから、トレースを有効にします。

    「Trace Configuration」メニューから、次のオプションのいずれかを選択します。

    • 「Global」。すべてのサーバーのトレースを有効にするように選択します。

    • サーバー名。サーバー名を選択して、特定のサーバーのトレースを有効にします。

  6. 「Trace Enabled」ボックスを選択して、このオブジェクトのトレースを有効にし、デフォルトの設定オブジェクトを編集するに説明したとおりにこのページの残りのパラメータを設定します。

  7. 変更を保存します。

Procedure個々のデバッグページからトレースを設定する

ここでは、Identity Manager のデバッグページからトレースを有効にする方法について説明します。

  1. ブラウザを開いて、Identity Manager 管理者インタフェースにログインします。

  2. 次の URL を入力します。

    http:// host:port /idm/debug/ pageName.jsp

    各表記の意味は次のとおりです。

    • host は、Identity Manager の実行先ローカルサーバーです。

    • port は、このサーバーが監視中の TCP ポート数です。

    • pageName.jsp は、開こうとしている個々のデバッグページです。

      たとえば、カスタムアダプタにアダプタクラスとメソッドをトレースするには、次の URL を入力して「Edit Trace Configuration」ページを開きます。

      http://host : port/idm/debug/Show_Trace.jsp

ProcedureIdentity Manager コンソールからトレースを有効にする

ここでは、Identity Manager コンソールからトレースを有効にする方法について説明します。

  1. $WSHOME を設定します。

    たとえば、この変数をデフォルトのインストールディレクトリに設定するには、次のように指定します。


    set WSHOME=C:\Program Files\tomcat\webapps\idm
  2. Identity Manager コンソールを bin ディレクトリから開くには、lh console と入力します。

  3. コンソールから、trace と入力して、enabledisable など使用可能なトレースオプションの詳細なまとめを表示します。

    このコマンドの構文は次のとおりです。

    trace [ -s server ] $subcommand

トレースファイルの表示方法

デフォルトでは、Identity Manager はトレース情報を WSTrace#.log というファイルに送信します。これは path_to_idm_install\export\pipeline\config\ ディレクトリにあります。必要ならば、オブジェクトのトレースを設定する際に別のファイル名と場所を指定することもできます。

それぞれのログファイルは、「Edit Trace Configuration」ページで指定した最大ファイル数まで連続して番号が付けられます。たとえば、最大ファイル数を 3 に指定した場合は、ファイルには WSTrace1.logWSTrace2.log、および WSTrace3.log が付けられます。

これらのログファイルを表示するには、次のいずれかの方法を使用します。

Identity Manager サーバーのトレース

Identity Manager は、Java ベースの製品です。この実行可能ファイルは、パッケージとしてグループ化されている Java クラスから構成されています。コードを実装すると、多くのクラスでトレースを出力できるようになります。

Identity Manager サーバーをトレースすると、サーバーの障害箇所、問題のある箇所、実行していない箇所などの有用な情報が入手できます。Identity Manager を実行中のサーバーでパッケージレベルとメソッドレベルのトレースを有効にするには、Identity Manager のデバッグページを使用します。


注 –

Sun サポートから指示がない限りは、Identity Manager がこの高度なレベルでトレースするように設定しないでください。


アダプタのトレース

トレース情報を使用すると、リソースアダプタが起動していることを確認し、すべての設定の変更内容が保存されていることを確認し、アダプタの問題を診断することができます。

ここでは、アダプタのトレース設定に役立つ内容について説明します。このセクションは、次のトピックから構成されています。

アダプタのトレースに関する一般的な注意点

アダプタのトレースを有効に設定するには、次を入力してトレース対象とするメソッドを特定する必要があります。


com.waveset.adapter.sample.MyResourceAdapter

また、アダプタがリソース設定をログファイルに書き込めるように、使用中のカスタムリソースアダプタに新メソッドがあれば、呼び出しを指定してログエントリを作成する必要があります。

場合によっては、リソースインスタンスにさらに次のようなログパラメータを指定することもできます。


注 –

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

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 を使用している場合は、同様のテンプレートが作成できます。


その他のトレースガイドライン

ここでは、次を含む補足的なトレースガイドラインを説明します。

内部クラスのトレース

重要メソッドは内部クラスでトレースしてください。内部クラスに何かトレースメソッドがある場合は、最終的に静的な CLASS 変数を必ず宣言してください。


例 5–5 内部クラスで CLASS 変数を使用した例

private final static String CLASS = 
com.waveset.adapter.SomeResourceAdapter$AdapterInnerClass;

静的初期化子のトレース

通常は、静的初期化子にトレース機能を使用しないでください。Identity Manager は、リポジトリが初期化されたとき起こるクラスのロード時にこの初期化子を実行します。静的初期化子で重要なものをトレースするには、Debug クラスを使用します。

トレース監査機能

Identity Auditor を使用すると、次のメソッドをトレースして問題をトラブルシューティングできます。

Procedureトレースを有効にする

  1. ブラウザを開き、管理者インタフェースにログインします。

  2. 「設定」>「サーバー」の順に選択します。

  3. 「サーバー設定」ページが表示されたら、「サーバー」列からサーバー名をクリックしてその設定を編集します。

  4. 「サーバー設定の編集」ページで、「スケジューラ」タブをクリックします。

  5. スケジューラのデバッグトレースを起動してその結果を stdout に書き込むには、「トレースの有効化」ボックスを選択します。

  6. 変更を保存します。

カスタムコードのトレース

使用中の配備をトラブルシューティングする際にシームレス統合を実現するには、カスタム記述コードに Identity Manager のトレース機能を使用します。

このトレース機能を使用するには、次のクラスを使用します。

この com.sun.idm.logging.trace 機能は、トレース出力の記録にも使用できます。この機能とクラスの詳細は、JavadocTM を参照してください。


注 –

この com.sun.idm.logging.trace 機能は、Identity Manager Version 6.0 SP1 リリース以前には搭載されておりません。これ以前の Identity Manager には、代わりに com.waveset.util.Trace クラスを使用してください。


トレースの例外

例外ログは、Identity Manager の「デバッグ」ページまたは config/Waveset.properties ファイルから表示できる静的トレースです。トレースデータには、デフォルトですべての例外が含まれていませんが、例外ログは重要で有益なトラブルシューティングツールになります。

例外ログを有効にするには、次のうちいずれかのメソッドを使用します。

Identity Manager は、アプリケーションサーバーのコンソールになることが多い Web アプリケーションインスタンスにある例外ログを stdout に送信します。


注 –

完了したら、アプリケーションサーバーログに不要に出力されないよう、例外ログを無効にします。例外ログを無効にするには、 exception.trace キー値を false に戻します。


フォームのトレース

トレースを有効にすると、フォームフィールド内の編集済みフォームをトラブルシューティングし文エラーをチェックできます。

トレースを有効にするには、次のうちいずれかの方法を使用します。

Identity Manager は、フォームの式構文に問題があれば標準の出力にレポートします。


注 –

form.trace キーはデフォルトで無効になっています。これは、「アカウントリスト」などの各ページの各フィールドにトレース情報を生成するのでシステムパフォーマンスに影響を及ぼすためです。メソッドをトレーシングするフォームとフィールドには、より対象に近いものを使用するようにしてください。

フォームのトラブルシューティングが完了したら、 form.trace キー値を false に変更し直してトレースを無効にしてください。


フォームとフォームのプロセスを開発したり更新している最中には、グローバル XPRESS のトレースも有用です。グローバル XPRESS のトレースは、システムパフォーマンスに影響するほど大量の出力が生成されますが、このトレース方法は XPRESS 出力を表示して、フォームのどこに問題が発生しているかがわかることがあります。

詳細は、次を参照してください。

「グローバル XPRESS のトレース」

通常はお勧めしていませんが、コードがどこにあっても XPRESS コードをトレースするには、グローバル XPRESS トレースが使用できます。たとえば、フォーム、ビュー、およびワークフロー内で XPRESS コードがトレースできます。結果のトレースには、潜在的な問題がわかる XPRESS 出力が表示されます。


注 –

XPRESS のトレースはシステムパフォーマンスに影響するほど大量の出力が生成されるため、デフォルトで無効に設定されています。

XPRESS 関数のトレースの詳細は、『Sun Identity Manager Deployment Reference』「Testing Your Customized Form」を参照してください。


Procedureグローバル XPRESS のトレースを有効にする

  1. コマンドウィンドウを開きます。

  2. Identity Manager のデフォルトのインストール先ディレクトリにある config/Waveset.properties にディレクトリ移動します。

  3. config/Waveset.properties ファイルを開き、xpress.trace 行を次のように編集します。


    xpress.trace=true
    
  4. Waveset.properties ファイルを保存します。

  5. アプリケーションサーバーを再起動するか、Waveset.properties ファイルを Identity Manager のデバッグページから再読み込みします。

  6. 次の行を Waveset.properties ファイルに追加して、XPRESS トレース出力をファイルにコピーします。


    xpress.traceFile=FileName.txt

    xpress.traceFileOnly=true

    Waveset.properties xpress.traceFileOnly=true を設定すると、xpress.traceFile に指定したファイルの中に、すべての XPRESS 文の評価によってトレースメッセージが生成されます。それ以外の場合は、 xpress.traceFile に値があれば、トレースメッセージがコンソールとファイルの両方に出力先が変更されます。

PasswordSync のトレース

ここでは、PasswordSync のトレースを有効にする方法と、Direct アクセスまたは JMS モードでトレースを設定する方法について説明します。

PasswordSync のトレースを有効にする

Identity Manager の PasswordSync 機能のトレースを設定するには、次の方法があります。

PasswordSync 設定ツールの使用方法

ここでは、PasswordSync 設定ツールの「Trace」タブからトレースを設定する方法について説明します。


注 –

PasswordSync のインストール方法と設定方法の詳細は、『Sun Identity Manager 8.1 ビジネス管理者ガイド』の第 11 章「PasswordSync」を参照してください。

この設定ツールを初めて実行したときは、ウィザードでトレースを設定できません。それ以降は、設定ツールを実行するとウィザードに「Trace」タブが設定され、ここからトレースを設定できるようになります。


次の図は、PasswordSync 設定ツールの「Trace」タブを表したものです。

図 5–2 PasswordSync 設定ツールの「Trace」タブ

PasswordSync 設定ツールの「Trace」タブの例

このタブから指定できる操作は、次のとおりです。

レジストリキーの編集方法

別の PasswordSync 設定を有効にするには、PasswordSync 設定ツールを使用して次の PasswordSync レジストリキーを編集します。


注 –

PasswordSync レジストリキーを編集するには、PasswordSync 設定ツールを使用するのが一番安全な方法です。これらのキーを直接 Windows レジストリで編集することはお勧めしません。


表 5–3 レジストリキー

キー名 

種類 

説明 

dumpFilebase

REG_SZ

PasswordSync DLL が例外を表示する場合は、Windows がダンプファイルを生成できるようにこのレジストリキーを設定します。 

メモリーダンプの書き込み先となる、省略されていないディレクトリパスに、このレジストリキーを設定する必要があります。例: c:\temp

パスワード処理中に Identity Manager が例外を取得するたびにメモリーダンプを書き込むには、このレジストリキーを設定します。 

注意: Windows 2000 サーバー (全サービスパック) では、Microsoft から入手できる設定ディレクトリ DbgHelp.dll もインストールする必要があります。DbgHelp.dll ファイルの最低リリースバージョンは、Version 5.1 です。DbgHelp.dll ファイルは次からダウンロードしてください。

http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

DbgHelp.dll がインストールされていなければ、Windows 2000 にはダンプファイルが生成されません。

ダンプファイル名の形式は、次のとおりです。 

lhpwic-YYYYMMDD-HHmm-xxxxx.dmp

この名前の YYYYMMDD はダンプ日、HHmm はダンプ時刻 (24 時間制)、xxxxx は、アプリケーションのスレッド番号になります。

ダンプファイルは手動で削除する必要があります。ダンプファイルのサイズは、Windows の Local Security Authority Subsystem (LSASS) プロセスのサイズに応じて変わりますが、20 M バイトから 100 M バイト以上です。このダンプファイルを削除しないと、時間が経つにつれて、ディスク空き容量の限られたシステムがいっぱいになります。 

installdir

REG_SZ

PasswordSync アプリケーションのインストール先ディレクトリ 

PasswordSync レジストリキーは、次の場所にあります。

HKEY_LOCAL_MACHINE\SOFTWARE\Waveset\Lighthouse\PasswordSync

ほかのキーは、この場所にあります。

各種モードのログを収集する

直接アクセスモードを使用していても JMS モードの設定を使用していても、PasswordSync のトレースログは変わりません。ただし、これらのトレースログには、部分情報しか表示されません。各設定にサーバー側にログを収集するには、次のセクションで説明するとおりにそれぞれのクラスを設定する必要があります。

直接モードのトレース

直接アクセスモードで PasswordSync を使用すると、トレースログにはエラーが表示されますが、ログの中のすべてのエラーが実際のエラーとは限りません。たとえば、場合によってはビューのチェックインに時間が掛かりすぎてログにエラーが表示されることもあります。この情報を表示するには、サーバー側でトレースする必要があります。

直接モードでは、チェック対象のビューをリポジトリに生成するサーブレットと PasswordSync が通信します。パスワードの変更内容の受信から、サーブレットに生成され返されたものの応答まで、すべてのパスワード同期段階を表示するには、com.waveset.rpc.GenericMessageHandler をクラスレベル 4 でトレースします。レベル 4 は、トラブルシューティングに十分な詳細情報を提供できる唯一のレベルです。

JMS モードのトレース

JMS モード設定で PasswordSync を使用すると、ログには送信が成功したか失敗したかの情報しか JMS サーバーに表示されません。この点で、サーバー側のログの方を頼る必要があります。JMS トレースの方が、多少複雑です。

PasswordSync dll を JMS メッセージに生成したメッセージを変換し、そのメッセージを JMS キューに追加するには、com.waveset.rpc.PasswordSyncHandler クラスをレベル 4 でトレースします。このクラスではトレースの制限が可能で、トラブルシューティングに役立つ十分な情報を提供できるのはレベル 4 だけです。

PasswordSync が正常に JMS メッセージを JMS キューに送信した場合は、トレースを見ても問題の原因が見つからないでしょう。次に、最終手段として JMS アダプタをトレースします。この手順については、『Sun Identity Manager 8.1 リソースリファレンス』を参照してください。

ルール駆動型メンバーキャッシュのトレース

ルール駆動型メンバーのキャッシュをトレースしてその結果を基に、Waveset.properties のキャッシュプロパティーをチューニングできます。

com.waveset.server.RuleDrivenMembersCache をレベル 1 でトレースする場合は、結果の情報に追加数、削除数、キャッシュヒット数などが記載されます。この情報を基にキャッシュサイズを評価して、Waveset.properties のキャッシュプロパティーをチューニングする必要があるかどうかを判断します。

ルール駆動型メンバーのキャッシュを制御するには、Waveset.properties の次のプロパティーを使用します。

デフォルトでは Identity Manager が、指定の組織に関連付けられているユーザーメンバールールを評価し、ユーザーの動的リストがあるユーザーメンバーリストのキャッシュを作成します。ただし、所定サブジェクトの指定ユーザー組に動的メンバー組織があるユーザーメンバーリストのキャッシュも作成できます。このキャッシュのキーは、オブジェクト ID で連結されたオブジェクト型です。たとえば、User#ID#Configurator オブジェクト ID と連結された User オブジェクト型です。それぞれキーとなる値は、このオブジェクトが動的メンバーとなるオブジェクトグループのリストです。

評価対象のオブジェクトが動的メンバーかどうかを判定するには、リストキャッシュで使用されるものと同じ組織単位のユーザーメンバールールをキャッシュが評価します。そのオブジェクトが動的メンバーであれば、Identity Manager がそのオブジェクトをリストに追加してからリストをキャッシュします。Identity Manager は、キャッシュのヒット率が最高になるよう、空と非空の両方のリストをキャッシュします。

このキャッシュには、Waveset.properties の次のプロパティーを使用して、パフォーマンスに影響する必要メモリーを制御します。

Identity Manager Service Provider 委任管理のトレース

Identity Manager がメソッド/クラス レベル 2 でトレースできるように有効に設定すると、Identity Manager Service Provider (サービスプロバイダ) ユーザーをリストするかアクセスしたとき、および サービスプロバイダ ユーザーがログインしたときに AdminRoles が動的に割り当てられていると認証フローがトレースできるようになります。


注 –

Identity Manager のデバッグページから サービスプロバイダ がトレースするように設定します。手順については、「Identity Manager サーバーのトレース」を必要に応じて参照してください。


調整のトレース

調整タスクに問題がある場合は、com.waveset.task.Reconciler に標準のトレース機能を使用して、調整サーバーをトレースします。

トレースを有効にするには、次のうちいずれかの方法を使用します。

有用なデバッグ情報を表示するには、記載されているメソッド/クラスのトレースレベルで「System Settings 」ページからトレースして、次の調整メソッドをトレースすることもできます。

表 5–4 トレース対象となる調整メソッド/クラス

トレース対象となる com.waveset.recon.メソッド/クラス

実行すべきトレースレベル 

表示対象 

ReconTask$WorkerThread#reconcileAccount

調整されている個々のアカウント 

ReconTask$WorkerThread#performResponse

応答中の個々のアカウントとユーザー 

ReconUtil#deleteAccountIndex

アカウントインデックスから削除対象となるユーザー情報。 

UserContext#aquireRepoLock

更新にロックされているユーザー。 

UserContext#releaseRepoLock

ユーザー。リポジトリでロック解除されているユーザー。 

ReconUtil#deleteAccountIndex

アカウントインデックスから削除対象となるユーザー情報。 

UserContext#aquireRepoLock

更新にロックされているユーザー。 

ReconTask$WorkerThread#failUserExamination

エラーで失敗した、すべてのユーザー検査要求 

ReconTask$WorkerThread#failUserResponses

エラーで失敗した、すべてのユーザー応答要求 

UserContext#releaseRepoLock

ユーザー。リポジトリでロック解除されているユーザー。 

ReconTask$ResourceThread#examineResource

リソースから読み込まれたアカウント数。 

ReconTask$ResourceThread#queueAccountReconciles

accountId accountGUIDaccountDisabled など、リソースから読み込まれた各アカウントの情報

ReconTask$ResourceThread#examineLighthouse

キューに入れられた調整済みリソースにアカウントを所有するために使用する Identity Manager ユーザークレーム数。 

ReconTask$WorkerThread#findClaimants

リソースのアカウントを要求するすべての Identity Manager ユーザー。 

ReconTask$WorkerThread#confirmPossibleOwners

リソースアカウントのすべての確定済み所有者のリスト。 

ReconTask$WorkerThread#applyResponse

適用されている応答リスト。 

AccountContext#processAttributeWorkflow

属性変更ワークフロー開始中の、属性変更内容と、フォーマット済み変更内容。 

ReconUtil#getRuleState

ルール処理中の、ユーザー属性を示したフルユーザービュー。 

ReconUtil#evaluateCorrelationRule

相互規則の状態の値と、検査の結果。 

ReconUtil#confirmPotentialOwners

確定ルールを使用して確定されたユーザーのリスト。 

ReconUtil#getIfExistsAccountIndexEntry

指定したエントリに対するアカウントインデックスの検査に関する情報の出力。 

ReconUtil#launchWorkflow

開始時のタスクインスタンスとタスク定義情報。 

ReconUtil#indexFoundAccount

存在が判明しているアカウントのインデックスの作成中または更新中に記録されたアカウントと状況。 

ReconUtil#indexMissingAccount

存在が判明していないアカウントのインデックスの作成中または更新中に記録されたアカウントと状況。 

ReconUtil#listAccountsIndexSaysExist

インデックスに存在が表示されているアカウント情報。 

ReconTask$ResourceThreadwaitForLighthouseWorkItems#

Identity Manager ユーザー検査プロセス中に、キューに入れられ処理されたユーザー数。 

ReconTask$ResourceThread#waitForReconcileWorkItems

指定リソースのキューに入れられ処理された調整と応答数。 

ReconTask$WorkerThread#correlateUsers

相互に関係するユーザーまたは確定ユーザーのリスト。 

ReconTask$WorkerThread#respondOrRequeue

アカウントに対し、前の応答メソッドの処理に問題があれば示されるエラーメッセージ。 

Response#perform

修正が行われる前と行われた後のユーザー、応答、およびユーザーのリソース情報 XML。 

Response#perform

ユーザーの応答アクションの概要。 

Response#createNewUserFromAccount

ユーザーの応答アクションの全詳細。 

ReconUtil#evaluateConfirmationRule

確定規則の状態の値と、検査の結果。 

ReconUtil#getCorrelatedUsers

指定ルールの結果に一致する相互関係ユーザーのリスト。 


注 –

トレースレベルが高いほど、トレースファイルが大きくなります。また、これらのすべてのメソッドを同時にトレースすると、非常に大きなトレースファイルが作成されます。

トラブルシューティングが完了したら、exception.trace キー値を false に設定し直してトレースを無効にしてください。


setRepo コマンドのトレース

setRepo コマンドを使用した Identity Manager リポジトリの設定中にエラーが表示されたら、次のフラグを使用して問題を切り離し、デバッグします。


-Dtrace.enabled=true
-Dtrace.level.com.waveset.repository.AbstractDataStore=2
-Dtrace.level.com.waveset.repository.DefaultTypeHandler=4
// Use one of the following based on your repository type
-Dtrace.level.com.waveset.repository.OracleDataStore=4
-Dtrace.level.com.waveset.repository.SqlServerDataStore=4
-Dtrace.level.com.waveset.repository.MysqlDataStore=4
-Dtrace.level.com.waveset.repository.DB2DataStore=4

Identity Manager が setRepo コマンドからデフォルトの $WSHOME/config/WSTrace.log ファイルに出力を送信します。

SPML のトレース

ここでは、SPML Version 1.0 と SPML Version 2.0 のトレースを有効にするためのメソッドについて説明します。

SPML 1.0 のトレースを有効にする

SPML 1.0 には、Identity Manager の SPML トラフィックと診断問題をログできるよう、トレース出力のチューニングに次のオプションが用意されています。

メソッド 1: setTrace メソッドの有効化

SPML 1.0 のトレースを有効に設定するには、SpmlClientLighthouseClient クラスから提供される setTrace メソッドを使用します。

この setTrace メソッドを有効にすると、クライアントから送信された要求の XML と、サーバーから受信した応答の XML が、随時送受信時に クライアント コンソールに印字されます。

setTrace メソッドは、Boolean 引数を使用します。例を示します。


SpmlClient client = new SpmlClient();
 client.setURL("http://localhost:8080/idm/spml");
 client.setTrace(true);

メソッド 2: org.openspml.server.SOAPRouter サーブレットの初期化

サードパーティである OpenSPML 団体のオープンソースクラスである org.openspml.server.SOAPRouter サーブレットの初期化時に、トレースを有効にできます。このサーブレットは、サーブレットが SPML 要求を処理できるよう、RPC トラフィック情報の出力を制御します。

このメソッドを有効にするには、次を WEB-INF/web.xml ファイルに追加します。


<servlet>
    <servlet-name>rpcrouter2</servlet-name>
    <display-name>OpenSPML SOAP Router</display-name>
    <description>no description</description>
    <servlet-class>
        org.openspml.server.SOAPRouter
    </servlet-class>
    <init-param>
        <param-name>trace</param-name>
        <param-value>true</param-value>
    </init-param>
    ...
  </servlet>

次に、SPML 1.0 トレースの出力例を示します。


SpmlClient: sending to http://example.com:8080/idm/servlet/rpcrouter2
<spml:addRequest xmlns:spml='urn:oasis:names:tc:SPML:1:0'
xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core'>
  <spml:operationalAttributes>
    <dsml:attr name='session'>
     

<dsml:value>session token</dsml:value>

    </dsml:attr>
  </spml:operationalAttributes>
  <spml:identifier type='urn:oasis:names:tc:SPML:1:0#GUID'>
    <spml:id>suetonius</spml:id>
  </spml:identifier>
  <spml:attributes>
    <dsml:attr name='objectclass'>
      <dsml:value>person</dsml:value>
    </dsml:attr
    <dsml:attr name='password'
      <dsml:value>password</dsml:value>
    </dsml:attr>
    <dsml:attr name='gn'>
      <dsml:value>Suetonius</dsml:value>
    </dsml:attr>
    <dsml:attr name='sn'>
      <dsml:value>Tranquillus</dsml:value>
    </dsml:attr>
    <dsml:attr name='email'>
      <dsml:value>twelve@example.com</dsml:value>
    </dsml:attr>
  </spml:attributes>
</spml:addRequest>


SpmlClient: received
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope
  xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'>
<SOAP-ENV:Body>
<spml:addResponse xmlns:spml='urn:oasis:names:tc:SPML:1:0'
xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' result='urn:oasis:names:tc:
SPML:1:0#success'>
  <spml:operationalAttributes>
    <dsml:attr name='session'>
     
<dsml:value>session token</dsml:value>
    </dsml:attr>
  </spml:operationalAttributes>
  <spml:identifier type='urn:oasis:names:tc:SPML:1:0#GUID'>
    <spml:id>suetonius</spml:id>
  </spml:identifier>
</spml:addResponse>
/SOAP-ENV:Body>
</SOAP-ENV:Envelope>

注 –

SOAP rpcrouter サーブレットの詳細は、OpenSPML Toolkit マニュアルを参照してください。


メソッド 3: trace オペレーショナル属性の渡し

個々の SPML RPC 要求のトレースを有効に設定するには、trace オペレーショナル属性をサーバー側の RPC 要求に渡します。

サーブレット初期化中にトレースが実行され、サーブレットの RPC トラフィックが SPML Version 1.0 の要求を処理できるように、情報を出力する方法を制御します。たとえばこのトレースは raw XML を出力します。これは System.out が (アプリケーションコンテナの関数である) そのサーブレット用のものかどうかにかかわらず、行ったりきたり送信されます。たとえば、次のようになります。


AddRequest ar = new AddRequest();
 ar.setOperationalAttribute("trace", "true");

trace 属性を使用したとき、属性がサーバー処理に影響を与える度合いはベンダーによって異なります。現在のところ、Identity Manager は raw 要求データと応答データをサーバーコンソールに出力しています。これは、クライアントアプリケーションがコンソールウィンドウに関連付けられていない場合に有用です。

詳細は、OpenSPML Toolkit 製品のマニュアルを参照してください。

SPML 2.0 のトレースを有効にする

SPML 2.0 には、Identity Manager の SPML トラフィックと診断問題をログできるよう、トレース出力のチューニングに次のオプションが用意されています。

メソッド 1: org.openspml.v2.transport.RPCRouterServlet サーブレットの使用

SPML 1.0 と同様、サーブレットが SPML 2.0 要求を処理できるように、RPC トラフィック情報の出力を制御する org.openspml.v2.transport.RPCRouterServlet クラスの初期化時に、SPML 2.0 用のトレースが有効に設定できます。

このメソッドを有効にするには、次を WEB-INF/web.xml ファイルに追加します。


<servlet>
    <servlet-name>openspmlRouter</servlet-name>
    <display-name>OpenSPML SOAP Router</display-name>
    <description>A router of RPC traffic - nominally SPML 2.0 over SOAP</description>
    <servlet-class>
        org.openspml.v2.transport.RPCRouterServlet
    </servlet-class>
    <init-param>
      <param-name>trace</param-name>
      <param-value>true</param-value>
    </init-param>
    ...
  </servlet>

次の例は、rpcrouter サーブレットトレースからの出力を表したものです。

RPCRouterServlet:
<?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/>
<SOAP-ENV:Body><lookupRequest
xmlns='urn:oasis:names:tc:SPML:2:0' requestID='random name' executionMode='synchronous'
returnData='everything'>
<openspml:operationalNameValuePair xmlns:openspml='urn:org:openspml:v2:util:xml' name='
session'value=session token'/>
<psoID ID='random name' targetID='spml2-DSML-Target'/>
</lookupRequest>
</SOAP-ENV:Body></SOAP-ENV:Envelope>

RPCRouterServlet:  response:
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope

  xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'>
<SOAP-ENV:Body>
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='random 
name'error='noSuchIdentifier'>
<openspml:operationalNameValuePair xmlns:openspml='urn:org:openspml:v2:util:xml' 
name='session'

value=session token/>
<errorMessage>Item User:random name was not found in the repository, it may have been 
deleted in another session.</errorMessage>
</lookupResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

注 –

詳細は、「SPML 1.0 のトレースを有効にする」セクションの「メソッド 2: org.openspml.server.SOAPRouter サーブレットの初期化」を参照してください。


メソッド 2: SPML アクセスログの使用

SPML 2.0 は、有用なトラブルシューティングツールとして使用できる、簡易テキストのアクセスログです。このログは常に使用可能で、受信された要求の種類、その要求の処理に掛かった所要時間、要求が完了したかどうかなどの情報を、トレースを有効に設定しなくても表示できます。

この SPML テキストのアクセスログの設定手順は、『Sun Identity Manager 8.1 Web Services』「Configuring SPML Tracing」に記載されています。

タスクスケジューラのトレース

スケジューラタスクに問題がある場合は、com.waveset.task.Scheduler にある標準トレース機能を使用してタスクスケジューラをトレースできます。この出力には、タスクスケジュールについての詳細情報が表示されます。

Procedureトレースを有効にする

  1. ブラウザを開き、管理者インタフェースにログインします。

  2. 「設定」>「サーバー」の順に選択します。

  3. 「サーバー設定」ページが表示されたら、「サーバー」列からサーバー名をクリックしてその設定を編集します。

  4. 「サーバー設定の編集」ページで、「スケジューラ」タブをクリックします。

  5. スケジューラのデバッグトレースを起動してその結果を stdout に書き込むには、「トレースの有効化」ボックスを選択します。

  6. 変更を保存します。


    注 –
    • クラスター化された環境で、各インスタンスでトレースが実行されます。

    • トレース設定オブジェクトの定義と編集方法、およびトレースファイルの表示方法については、「Identity Manager サーバーのトレース」を参照してください。


ワークフローのトレース

ワークフローのトレースを有効にすると、ワークフローアクティビティの問題を解決して、ワークフロープロセスが把握できるようになります。


注 –

ワークフローのトレースを有効にする

ワークフローのトレースを有効にするには、次の項目を実行します。

Procedureワークフロートレースを有効にする

  1. ブラウザを開いて、Identity Manager 管理者インタフェースにログインします。

  2. 「System Settings 」ページの「List Objects Type」メニューから「Configuration」を選択します。

  3. 「List Objects」ボタンをクリックします。

  4. 「List Objects of type: Configuration」ページが表示されたら、オブジェクトリストをスクロールダウンして System Configuration オブジェクトを見つけ、その編集リンクをクリックします。

  5. 「Checkout Object: Configuration, #ID#CONFIGURATION:SYSTEMCONFIGURATION 」ページが表示されたら、SystemConfiguration オブジェクトの次のいずれの workflow オプションでも編集できます。


    注 –

    通常、有効にするオプションは 1 つだけですが、同時に複数のオプションを有効にすることもできます。

    これらの属性は、互いに依存していません。一種類のトレースを有効にしながら、他の種類を無効に設定することが可能です。


    • アプリケーションサーバーのコンソールにワークフローのトレースメッセージをリダイレクトするには、workflow.consoleTrace=true を指定します。この属性の方が workflow.fileTrace よりも多くのトレース出力を出力するため、致命的な例外でワークフローが終了したときに役立ちます。(デフォルト値は false です。)

    • ワークフローのトレースメッセージを読みやすいファイルにリダイレクトするには、workflow.fileTrace=PathtoFile を指定します。この属性には、デフォルトで値がありません。

      <Attribute name=’fileTrace’/>

      workflow.fileTrace 属性に値タグを付け、Unix 式の普通のスラッシでログファイルにパスを入力します。Identity Manager が、アプリケーションサーバーのインストールディレクトリに関する相対パスを格納します。例を示します。

      • Windows の場合。 <Attribute name=’fileTrace’ value=’C:\mydir\workflow.txt’/>

      • Solaris/UNIX の場合。 <Attribute name=’fileTrace’ value=’/mydir/workflow.txt’/>

    • 表示するワークフローのトレースレベルをを指定するには、workflow.traceLevel=tracingLevel を指定します。

      ワークフロープロセスをトレースするには、workflow.Trace=true を指定します。このオプションでトレースを開始するには、アプリケーションサーバーを再起動する必要があります。Identity Manager が、タスクの WavesetResult オブジェクトにトレース結果を格納します。ファイルシステムにアクセスできない場合は、このトレースオプションを使用してください。(デフォルト値は false です。)

    • タスクの WavesetResult にあるメッセージをトレースします。(デフォルト値は 1 です。)

    workflow.Trace=true を指定すると、読みにくくて長い未フォーマットの 1 つの文字列にトレースメッセージが付与されます。このオプションは、ファイルシステムにアクセスできない場合のみ使用してください。


    注 –

    最初の 2 つのオプションを使用すると、致命的な例外が発生した場合に、ワークフローのトレースの一部を紛失してしまうことがあります。


  6. SystemConfiguration オブジェクトを保存します。

  7. アプリケーションサーバーを再起動するか、SystemConfiguration オブジェクトを Identity Manager のデバッグページから再読み込みします。

指定のワークフローのトレースを有効にする

指定のワークフローのトレースを有効にするには、次のいずれかの方法を用います。

次の例は、ワークフロー変数のトレース方法の一例を示したものです。


例 5–6 ワークフロー変数のトレース


<Variable name=’trace’>
   <cond><eq><ref>accountId</ref><s>jfaux</s></eq>
     <s>workflowTrace.txt</s>
   </cond>
 </Variable>

trace 変数は、そのワークフローが jfaux というユーザー名で処理されている場合だけ、トレースを有効にします。さらに、トレースを対話式に制御するには、フォームフィールドの trace を指定します。

たとえば、トレース出力は workflowTrace.txt ファイルに書き込まれます。

バージョン情報の調べ方

現在使用中の Identity Manager バージョンの情報を表示するには、次のいずれかの方法を用います。

現在使用中の JVM バージョン情報とその他システムソフトウェアのバージョン情報を表示するには、「Identity Manager System Properties」ページ (/debug/SysInfo.jsp ) を使用します。