コンテンツにスキップ

宣言型トランザクション

jvmguardのVMグループ設定でMatchedトランザクションを維持することは、開発ワークフローの追加ステップであり、実際のコードと簡単に同期しなくなる可能性があります。Matchedトランザクションは外部クラスには必要ですが、自分のコード内の対象のメソッドとクラスに直接アノテーションを付ける方がはるかに保守しやすいです。

この方法で定義されたトランザクションはDeclaredトランザクションと呼ばれます。jvmguardアノテーションを使ってソースコードで明示的に宣言するからです。

jvmguardアノテーションはJARファイルapi/jvmguard-annotations.jarにあります。このJARファイルをMavenまたはGradleでダウンロードする方法については、Javadocの概要を参照してください。

すべてのアノテーションにはクラス保持ポリシーがあります。これは、クラスファイルには存在しますが、JVMがメモリにロードしないことを意味します。特定のメソッドのランタイムアノテーションを照会するコードは、追加のjvmguardアノテーションによって混乱することはありません。これらはクラスロード段階でjvmguardによってのみ検出され、ロードされたクラスオブジェクトには現れないからです。

Declaredトランザクションの使用法は、@MethodTransactionアノテーションと@ClassTransactionアノテーションのJavadocに詳しく記載されています。Javadocは、jvmguardインストールのapi/docディレクトリにもあります。

Declaredトランザクションアノテーションは、トランザクションの命名のみを定義し、トランザクションのポリシーは定義しません。ポリシーは運用側に近く、本番環境で調整する必要があることがよくあります。

グループ名によって、jvmguard設定で異なるDeclaredトランザクションを選択することが可能です。各Declaredトランザクションアノテーションには「group」パラメータを設定でき、デフォルトでは空の文字列に設定されています。

設定されたグループの粒度が十分でない場合、または特定のクラスを単独で対象にしたい場合は、次のステップに進んでクラスフィルターを追加します。ここでは、選択したグループとクラスに由来するすべてのDeclaredトランザクションを破棄することも可能です。

ウィザードの最後のステップでは、選択したDeclaredトランザクションのポリシーを定義します。他のトランザクションタイプと同様に、下部にキャッチオールのトランザクション定義を保持し、上部により具体的なトランザクション定義を追加することが多くの場合意味があります。