O
- リソースホルダーの型 K
- リソースキー型 public abstract class ReactiveResourceSynchronization<O,K> extends ObjectSE implements TransactionSynchronization
TransactionSynchronizationManager
を介してバインドされたリソースオブジェクトを管理する TransactionSynchronization
実装。STATUS_COMMITTED, STATUS_ROLLED_BACK, STATUS_UNKNOWN
コンストラクターと説明 |
---|
ReactiveResourceSynchronization(O resourceObject, K resourceKey, TransactionSynchronizationManager synchronizationManager) 指定されたホルダーの新しい ReactiveResourceSynchronization を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
reactor.core.publisher.Mono<VoidSE> | afterCommit() トランザクションのコミット後に呼び出されます。 |
reactor.core.publisher.Mono<VoidSE> | afterCompletion(int status) トランザクションのコミット / ロールバック後に呼び出されます。 |
reactor.core.publisher.Mono<VoidSE> | beforeCommit(boolean readOnly) トランザクションのコミット前( "beforeCompletion" の前)に呼び出されます。 |
reactor.core.publisher.Mono<VoidSE> | beforeCompletion() トランザクションのコミット / ロールバックの前に呼び出されます。 |
protected reactor.core.publisher.Mono<VoidSE> | cleanupResource(O resourceHolder, K resourceKey, boolean committed) 指定されたリソース(スレッドにバインドされたまま)に対してクリーンアップを実行します。 |
protected reactor.core.publisher.Mono<VoidSE> | processResourceAfterCommit(O resourceHolder) 指定されたリソースホルダーのコミット後のコールバック。 |
protected reactor.core.publisher.Mono<VoidSE> | releaseResource(O resourceHolder, K resourceKey) 指定されたリソースを解放します(スレッドからバインド解除された後)。 |
reactor.core.publisher.Mono<VoidSE> | resume() この同期を再開します。 |
protected boolean | shouldReleaseAfterCompletion(O resourceHolder) トランザクションの完了後にこの所有者のリソースを解放する必要があるかどうかを返します( true )。 |
protected boolean | shouldReleaseBeforeCompletion() この所有者のリソースをトランザクション完了前( true )に解放するか、トランザクション完了後(false )に解放するかを返します。 |
protected boolean | shouldUnbindAtCompletion() このホルダーが完了時にバインド解除される(または、トランザクション後にスレッドにバインドされたままにする必要がある)かどうかを返します。 |
reactor.core.publisher.Mono<VoidSE> | suspend() この同期を一時停止します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public ReactiveResourceSynchronization(O resourceObject, K resourceKey, TransactionSynchronizationManager synchronizationManager)
resourceObject
- 管理するリソースオブジェクト resourceKey
- リソースオブジェクトをバインドするキー synchronizationManager
- 現在のトランザクションにバインドされた同期マネージャー TransactionSynchronizationManager.bindResource(java.lang.Object, java.lang.Object)
public reactor.core.publisher.Mono<VoidSE> suspend()
TransactionSynchronization
public reactor.core.publisher.Mono<VoidSE> resume()
TransactionSynchronization
public reactor.core.publisher.Mono<VoidSE> beforeCommit(boolean readOnly)
TransactionSynchronization
このコールバックは、トランザクションが実際にコミットされることを意味するものではありません。このメソッドが呼び出された後でも、ロールバックの決定が発生する可能性があります。このコールバックは、SQL ステートメントをデータベースにフラッシュするなど、コミットがまだ発生する可能性がある場合にのみ関連する作業を実行することを目的としています。
例外はコミット呼び出し元に伝播され、トランザクションのロールバックが発生することに注意してください。
TransactionSynchronization
の beforeCommit
readOnly
- トランザクションが読み取り専用トランザクションとして定義されているかどうか TransactionSynchronization.beforeCompletion()
public reactor.core.publisher.Mono<VoidSE> beforeCompletion()
TransactionSynchronization
beforeCommit
が例外をスローした場合でも、このメソッドは beforeCommit
の後に呼び出されます。このコールバックにより、トランザクションの完了前にリソースを閉じることができます。
public reactor.core.publisher.Mono<VoidSE> afterCommit()
TransactionSynchronization
できます。確認メッセージやメールなど、メイントランザクションが正常にコミットされた後に実行されるはずの操作をさらにコミットします。
注 : トランザクションはすでにコミットされていますが、トランザクションリソースはまだアクティブでアクセス可能です。結果として、この時点でトリガーされたデータアクセスコードは元のトランザクションに「参加」し、別のトランザクションで実行する必要があることを明示的に宣言しない限り、クリーンアップを実行できるようになります。、 ここから呼び出されるトランザクション操作には PROPAGATION_REQUIRES_NEW
を使用します。
TransactionSynchronization
の afterCommit
public reactor.core.publisher.Mono<VoidSE> afterCompletion(int status)
TransactionSynchronization
注 : トランザクションはすでにコミットまたはロールバックされていますが、トランザクションリソースはまだアクティブでアクセス可能です。結果として、この時点でトリガーされたデータアクセスコードは元のトランザクションに「参加」し、別のトランザクションで実行する必要があることを明示的に宣言しない限り、クリーンアップを実行できるようになります。、 ここから呼び出されるトランザクション操作には PROPAGATION_REQUIRES_NEW
を使用します。
TransactionSynchronization
の afterCompletion
status
- STATUS_*
定数に従った完了ステータス TransactionSynchronization.STATUS_COMMITTED
, TransactionSynchronization.STATUS_ROLLED_BACK
, TransactionSynchronization.STATUS_UNKNOWN
, TransactionSynchronization.beforeCompletion()
protected boolean shouldUnbindAtCompletion()
デフォルトの実装は true
を返します。
protected boolean shouldReleaseBeforeCompletion()
true
)に解放するか、トランザクション完了後(false
)に解放するかを返します。 リソースが解放されるのは、それらがスレッド(shouldUnbindAtCompletion()
)からバインド解除されている場合のみであることに注意してください。
デフォルトの実装は true
を返します。
protected boolean shouldReleaseAfterCompletion(O resourceHolder)
true
)。 デフォルトの実装は !shouldReleaseBeforeCompletion()
を返し、完了前に試行が行われなかった場合は完了後に解放します。
protected reactor.core.publisher.Mono<VoidSE> processResourceAfterCommit(O resourceHolder)
shouldReleaseBeforeCompletion()
)。resourceHolder
- 処理するリソースホルダー protected reactor.core.publisher.Mono<VoidSE> releaseResource(O resourceHolder, K resourceKey)
resourceHolder
- 処理するリソースホルダー resourceKey
- リソースオブジェクトがバインドされたキー