Java try-catch ブロックからの Z Abend Investigator の起動

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

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

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

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

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

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

1. Syntax

1  com.hcl.zai.Snap.dump (" comment ");

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

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

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

Z Abend Investigator を起動するために使用できる 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. HFZ.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 HCL 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 HCL Support.
  *
  * @return The ID of the created Fault Entry, in the form <history file dataset>(<fault id>).
  * E.g. HFZ.HIST(F00001)
  */
public static String dump(String dumpTitle, Throwable e, boolean debug)

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

次では、HFZXJAxx は以下を指します。
  • バージョン 11 より前の Java を使用している場合は、HFZXJAVA
  • Java バージョン 11 以降を使用している場合は、HFZXJA11

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

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

Z Abend Investigator Java SVC ダンプ・タイトル

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