Java try-catch ブロックからの Fault Analyzer の起動

Java プログラムから現在の Java の状態を取り込むために、Fault Analyzer を起動して、関連する MVS SVC ダンプとともにヒストリー・ファイルの障害項目を作成します。

使用される Fault Analyzer ヒストリー・ファイルはデフォルトのヒストリー・ファイルです。別のヒストリー・ファイルを使用するには、オプションで説明されている _IDI_OPTS または _IDI_OPTSFILE 環境変数で指定します。作成される障害項目は、続いて Fault Analyzer ISPF インターフェースを使用して再分析され、Fault Analyzer が呼び出されたときに実行中の Java コードやネイティブ・コードを検討することができます。

Java ダンプ取り込みを容易にするには、以下のことが必要となります。
  • Fault Analyzer IDI_SDUMP_ACCESS XFACILIT プロファイルに対して ALTER アクセス権限を付与する必要があります。
    名前 IDI_SDUMP_ACCESS の XFACILIT クラス・プロファイル (リカバリー障害記録 SDUMP アクセスに使用されるプロファイルと同じもの) をセットアップして、Java ダンプ取り込みが必要となるユーザー ID またはグループに対して ALTER アクセス権限を付与します。以下のように定義すれば、ユーザーの Java アプリケーションで例外が発生した場合に、Fault Analyzer は JDEV グループ内のすべてのユーザーに対して Java 取り込み SDUMP を作成できます。
    RDEF XFACILIT IDI_SDUMP_ACCESS UACC(NONE)
    PERMIT IDI_SDUMP_ACCESS CLASS(XFACILIT) ID(JDEV) ACCESS(ALTER)

    ALTER アクセス権は XFACILIT IDI_SDUMP_ACCESS プロファイルに対するものであり、実際の SDUMP データ・セットに対するものではありません。Fault Analyzer は、許可状態を使用して Java 取り込み SDUMP へのアクセスを許可します。IDI_SDUMP_ACCESS プロファイルはスイッチとして機能し、Fault Analyzer はそのスイッチを検査して、特定のユーザーに対して SDUMP が作成可能かどうかを確認できます。

  • MVS ポスト・ダンプ出口 IDIXTSEL をインストールする必要があります。詳しくは、MVS ポスト・ダンプ出口のインストール IDIXTSELを参照してください。
  • IDIS サブシステムを始動する必要があります。詳しくは、Fault Analyzer IDIS サブシステムの使用を参照してください。

Fault Analyzer の呼び出しは try-catch ブロックの中や、ユーザー・プログラムの任意の場所に置くことができ、com.ibm.faultanalyzer.Snap.dump メソッドを使用して実行されます。

1. Syntax

1  com.ibm.faultanalyzer.Snap.Dump (" comment ");

Fault Analyzer 障害項目のユーザー・タイトル・フィールドを初期化するための、オプションの comment 文字ストリングを指定できます。

次の例は、Fault AnalyzerJava try-catch ブロックの中からどのように呼び出されるかを示します。
public class JavaTest {
  public static void main() {
    ...
    try {
      ...
    }
    catch() {
      ...
      com.ibm.faultanalyzer.Snap.dump("Java error");  // Call Fault Analyzer
    }
  }
}

代替スナップ・ダンプ呼び出しメソッド

Fault Analyzer を起動するために使用できる Java「Snap.dump」メソッドには、多重定義されたバージョンがいくつかあります。

/**
  * Create a Fault Entry
  *
  * @param dumpTitle The user title to use for the Fault Entry. (non-null & non-empty).
  */
public static void dump(String dumpTitle)

/**
  * Create a Fault Entry
  *
  * @param dumpTitle The user title to use for the Fault Entry. (non-null & non-empty).
  *
  * @return The ID of the created Fault Entry, in the form <history file dataset>(<fault id>).
  * E.g. IDI.HIST(F00001)
  *
  */
public static String dump(String dumpTitle, Throwable t)

/**
  * Create a Fault Entry.
  * (This should only be used when gathering diagnostic information requested by IBM Support.)
  *
  * @param dumpTitle The user title to use for the Fault Entry. (non-null & non-empty).
  * @param debug Specifying 'true' will enable verbose debug information.
  * Provide the output to IBM Support.
  *
  * @return The ID of the created Fault Entry, in the form <history file dataset>(<fault id>).
  * E.g. IDI.HIST(F00001)
  */
public static String dump(String dumpTitle, Throwable e, boolean debug)

アプリケーション・クラスパスへのスナップ・クラスの追加

com.ibm.faultanalyzer.Snap.dump メソッドの呼び出しを容易にするには、Fault Analyzer IDIXJAVA Java ライブラリーがアプリケーション・プログラム・ビルド・パスに存在しているか、または現行クラス・パス経由で使用可能になっていなければなりません。

IDIXJAVA Java ライブラリーは以下の手順で取得できます。

  1. 以下のいずれかを実行します。
    • 次のような JCL を使用して、z/OS 上のアプリケーション・ディレクトリーに jar ファイルをコピーします。
      //* --- Copy IDIXJAVA to an HFS directory:
      //CPYXJAVA EXEC PGM=BPXBATCH
      //STDPARM DD *
      SH cp "//'IDI.SIDIDOC1(IDIXJAVA)'" /u/hunter2/idixjava.jar
      /*
      //STDOUT DD SYSOUT=*
      //STDERR DD SYSOUT=*
    • ご使用のプロジェクト開発ディレクトリーにファイル IDI.SIDIDOC1 として IDIXJAVA(IDIXJAVA) をバイナリー FTP 転送します。
      注: IDI.SIDIDOC1(IDIXJAVA) データ・セットおよびメンバーは、Fault Analyzer SMP/E インストールの一部として作成されているので、別の高位修飾子が付いている可能性があります。
  2. 以下のいずれかを実行します。
    1. プロジェクト・ビルド・パスを構成して、外部 JAR ライブラリー依存として IDIXJAVA を組み込みます。
    2. ディレクトリー名およびファイル名を現行の ClassPath に追加します。

Fault Analyzer Java SVC ダンプ・タイトル

Fault Analyzer Java ダンプ・タイトルは、IDISNAP インターフェースまたは BPXBATCH インターフェースのどちらを使用してダンプが書き込まれるかによって異なります。
  • Java IDISNAP インターフェース SVC ダンプ・タイトル 。
    history-file-name(fault-id)^^SVCDUMP(0x asid).JAVA IDISNAP^
    注: ^ は非印字文字 X'00' を表します。
    次は Java IDISNAP インターフェース SVC ダンプ・タイトルの例です。
    TESTFA1.TEMP.DA5E1SP.DAJAVAZZ.JC83201.HIST(F00027).    .SVCDUMP(0x0138).JAVA IDISNAP.
  • Java BPXBATCH インターフェース SVC ダンプ・タイトル 。
    history-file-name(fault-id)^^SVCDUMP(0x asid).JAVA IDI0162I^
    注: ^ は非印字文字 X'00' を表します。
    次は Java BPXBATCH インターフェース SVC ダンプ・タイトルの例です。
    TESTFA1.TEMP.DA4E1SP.DAJAVAZZ.JZJ2CO2K.HIST(F00700).   .SVCDUMP(0x00DB).JAVA IDI0162I.