2.2.8 トランザクションブランチの属性の設定
トランザクションブランチとして動作するアプリケーションの開発方法について説明します。
トランザクションブランチとして動作するアプリケーションは、Entity-Service、TCC-Participantのアプリケーションで実装してください。
また、@PctoBranchRollbackForアノテーションを使用してトランザクションブランチの属性を設定する方法を説明します。@PctoBranchRollbackForアノテーションのAPI仕様の詳細については、「6. API」を参照してください。@PctoBranchRollbackForアノテーションを付与したメソッドは、別のクラスから呼び出してください。同一クラスの別メソッドから呼び出した場合、HMP-PCTOの機能は正しく動作しません。
@PctoBranchRollbackForアノテーションを使用しない場合でも、ライブラリの組み込みは必要です。
(1) ライブラリの組み込み
トランザクションブランチとして動作するアプリケーションには、hmppcto-entity-serviceライブラリとjavax.ws.rs-apiライブラリをアプリケーションに組み込む必要があります。Gradleで組み込む記載例を次に示します。
dependencies {
implementation 'jp.co.Hitachi.soft.hmppcto:hmppcto-entity-service:<version>'
implementation 'javax.ws.rs:javax.ws.rs-api:2.1'
}
(2) コーディング例
@PctoBranchRollbackForアノテーションを使用してトランザクションブランチの属性を設定するコーディング例を次に示します。@PctoBranchRollbackForアノテーションを使用するメソッドのアクセス制御修飾子は、private以外にしてください。privateとした場合は、HMP-PCTOの機能は正しく動作しません。
@PctoBranchRollbackFor(rollbackOn = {},rollbackOnFamily = {Family.CLIENT_ERROR, Family.SERVER_ERROR})
public void service() {
// 業務処理
}
(3) エラーハンドリング
@PctoBranchRollbackForアノテーションの設定によって、アプリケーションでエラーハンドリングが必要なエラーが発生することはありません。
Entity-Serviceのルートとなるメソッドが例外を送出した場合、HMP-PCTOがHTTPステータスを500に設定します。Spring Bootの機能によってエラーページ(/error)へ遷移する前に、HMP-PCTOでHTTPステータスを設定するため、エラーページをカスタマイズしていた場合でもHTTPステータスは500になります。
なお、Entity-Serviceのルートとなるメソッドが例外を送出した場合は、HMP-PCTOのフィルタ実行時にはHTTPステータスが設定されていないためトランザクションがロールバックするかの判定には利用しません。
Entity-Serviceのルートとなるメソッドが例外を送出した場合にトランザクションをロールバックしたい場合は、Orchestratorのアプリケーションでトランザクションがロールバックする例外を送出してください。
(4) Spring Bootの機能を使用する場合の制限事項
HTTPステータスコードの設定する手段としてSpring Bootの@ResponseStatusアノテーションは使用しないでください。サーブレットの機能であるHttpServletResponseインタフェースを使用してHTTPレスポンスを設定するか、HMP-ADIFの機能を使用して設定してください。