Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


7.2.8 @PctoTransactionalアノテーション

説明

トランザクション境界を設定し、トランザクションの属性を設定するアノテーションです。このアノテーションを指定したメソッドの呼び出し前にトランザクションを開始し、メソッドの終了後にトランザクションを終了します。このアノテーションを指定したメソッドから呼び出され、同じスレッドで動作するメソッドはトランザクションの範囲内です。トランザクションの範囲内でこのアノテーションを指定したメソッドがネストしている場合は、ネストしている指定を無視します(元のトランザクションの範囲内です)。クラスレベルで指定することもできますが、メソッドレベルでの指定を推奨します。

このアノテーションを設定したメソッドの実行後に動作するHMP-PCTOのインタセプタが、アプリケーションが送出した例外をキャッチして、トランザクションにロールバックのマークを付けるか判定し、Mediatorにトランザクションの決着をリクエストします。

トランザクションがロールバックに決着した場合、および通信障害によってMediatorからトランザクションの決着結果を受け取れなかった場合は、このアノテーションを指定したメソッドの呼び出し元に例外を送出します。サービスのルートとなるメソッドにこのアノテーションを指定した場合、例外がどのようなエラー処理にマッピングされるかは、使用しているフレームワーク、APサーバの仕様に依存します。そのため、このアノテーションはルートとなるメソッド以外に設定してアプリケーションでエラーハンドリングすることを推奨します。

rollbackOn属性を設定して、インタセプタがトランザクションにロールバックのマークを付ける必要がある例外を示すことができます。

逆に、dontRollbackOn属性を設定して、インタセプタがトランザクションにロールバックのマークを付けてはならない例外を示すことができます。設定しなかった例外の場合にロールバックのマークを付けます。

これらの属性に設定した例外クラスのサブクラスにも同じ属性が適用されます。

両方の属性が指定されている場合、dontRollbackOnが優先されます。

両方の属性を省略した場合、java.io.IOExceptionとそのサブクラスをロールバックにマークします。

なお、java.lang.RuntimeExceptionとそのサブクラスは、属性の設定に関係なくロールバックのマークを付けます。

適用可能要素

クラス、メソッド

属性

@PctoTransactionalアノテーションの属性の一覧を次の表に示します。

表7‒7 @PctoTransactionalアノテーションの属性の一覧

属性名

説明

必須/任意

デフォルト値

dontRollbackOn

トランザクションにロールバックのマークを付けてはならない例外を指定します。

任意

Class<?>[]

なし

rollbackOn

トランザクションにロールバックのマークを付ける必要がある例外を指定します。

任意

Class<?>[]

{java.io.IOException}

パッケージ名称
jp.co.Hitachi.soft.hmppcto.transaction.api