アノテーション型 TransactionScoped
@RetentionSE(RUNTIMESE) @TargetSE({TYPESE,METHODSE,FIELDSE}) @NormalScope(passivating=true) public @interface TransactionScoped
jakarta.transaction.TransactionScoped アノテーションは、標準の CDI スコープを指定して、ライフサイクルが現在アクティブな Jakarta Transactions トランザクションにスコープされている Bean インスタンスを定義する機能を提供します。このアノテーションは、Jakarta EE 仕様によってマネージド Bean として定義されているような非コンテキスト参照を持つクラスには影響しません。
トランザクションスコープは、UserTransaction.getStatus
またはTransactionManager.getStatus
への呼び出しからの戻りが次のいずれかの状態である場合にアクティブになります。- Status.STATUS_ACTIVE
- Status.STATUS_MARKED_ROLLBACK
- Status.STATUS_PREPARED
- Status.STATUS_UNKNOWN
- Status.STATUS_PREPARING
- Status.STATUS_COMMITTING
- Status.STATUS_ROLLING_BACK
TransactionScoped アノテーションに関連してここで定義されている「アクティブ」という用語は、この仕様の他の場所でメンションされているトランザクションコンテキスト、ライフサイクルなどに関連して使用する場合にも適用されることを意図していません。このアノテーションが付いたオブジェクトは、オブジェクトが使用されるときに、現在アクティブな Jakarta Transactions トランザクションに関連付けられます。この関連付けは、トランザクションの一時停止または再開の呼び出し、および
Synchronization.beforeCompletion
コールバックを通じて保持する必要があります。Synchronization.afterCompletion
メソッドは、未定義のコンテキストで呼び出されます。Jakarta Transactions トランザクションが開始および完了される方法(たとえば、UserTransaction、トランザクションインターセプターなどを介して)は重要ではありません。異なる Jakarta Transactions トランザクションで使用されるコンテキスト参照は異なります。コンテキスト参照の詳細については、CDI 仕様を参照してください。トランザクションコンテキストがアクティブでないときにこのアノテーションを持つオブジェクトが使用されると、jakarta.enterprise.context.ContextNotActiveException
がスローされます。- 導入:
- JTA 1.2
- バージョン:
- Jakarta Transactions 2.0