ポリシー
ポリシーは、トランザクションに関する異常な状態を検出します。各トランザクション定義には、関連付けられたポリシー定義があります。
ポリシーは、次の異常なトランザクション状態を作成します。
- 低速: トランザクションが低速と分類されるしきい値は、絶対時間として、またはこのトランザクション定義によって生成されるトランザクションの平均時間に対する相対的なパーセント値として指定できます。
- 非常に低速: 「低速」と同様の時間ベースのしきい値ですが、より深刻なカテゴリ向けです。「低速」と「非常に低速」を分割して、「低速」トランザクションは通知なしで発生でき、「非常に低速」トランザクションが通知をトリガーするようにできます。
- 期限超過: 通常は絶対時間で「非常に低速」しきい値よりもはるかに大きい3番目の時間ベースのしきい値を超えると、トランザクションをデッドロックまたはハングしていると見なすことができます。
- エラー: エラーになったトランザクションには特別な注意が必要です。エラーには2つの発生元があります。
- 例外:
java.lang.Error由来の例外(エラー)、java.lang.RuntimeException由来の例外(ランタイム例外)、java.lang.Exception由来の例外(チェック例外)を個別に有効にできます。チェック例外は通常アプリケーションによって処理され、必ずしもトランザクションエラーになるとは限りません。 - ログに出力されたエラー: アプリケーションがロギングフレームワークでエラーをログに出力した場合、jvmguardはトランザクションにエラーのマークを付けることができます。jvmguardは
java.util.logging、log4j、JBoss logging、Logbackをサポートしています。オプションで、警告もトランザクションエラーになるように設定できます。
- 例外:
トランザクション定義にポリシーが定義されていない場合、jvmguardはポリシー定義が有効になっている一致するエントリが見つかるまでトランザクション定義のリストを進みます。これにより、複数のトランザクション定義に同じポリシーを定義できます。最も極端なケースでは、命名定義を持たずポリシー定義のみを持つ「キャッチオール」エントリを使えます。
逆に、単一のトランザクション定義内の特定のトランザクションに対して、より詳細なポリシーを定義したい場合もあります。例えば、広範な呼び出しをキャプチャする単一のトランザクション定義があるとします。許容される時間がトランザクション名に依存する場合、ポリシー特殊化を定義して、トランザクション定義とその命名スキームを複数回追加し直す必要をなくせます。

この場合クラスをフィルターする親のトランザクション定義とは異なり、ポリシー特殊化はトランザクション命名の結果をフィルターします。

コールツリー内のポリシー
Section titled “コールツリー内のポリシー”トランザクションデータビューには3つのタブがあります。コールツリー、ホットスポット、期限超過です。コールツリーとホットスポットでは、各トランザクションがポリシー状態を色とプレフィックスで示すため、どのトランザクションが低速、非常に低速、またはエラーであるかを一目で確認できます。「期限超過」タブには、ポリシーの期限超過しきい値を超えたトランザクション、つまりハングまたはデッドロックしているトランザクションのみが表示されます。
特定のポリシー状態に注目するには、フィルターバー(漏斗アイコン)でトランザクション状態フィルターを開き、「低速」、「非常に低速」、または「エラー」を選択します。ツリーは、一致するトランザクションとその祖先ノードに絞り込まれるため、コンテキストが保持されます。フィルターテキストも入力した場合、一致するトランザクションのみがそのテキストで検索されます。