public class CciLocalTransactionManager extends AbstractPlatformTransactionManager implements ResourceTransactionManager, InitializingBean
PlatformTransactionManager
実装。指定された ConnectionFactory からスレッドに CCI 接続をバインドし、ConnectionFactory ごとに 1 つのスレッドバインド接続を可能にします。 アプリケーションコードは、標準の Java EE スタイルの ConnectionFactory.getConnection()
EE 呼び出しではなく、ConnectionFactoryUtils.getConnection(ConnectionFactory)
を介して CCI 接続を取得するために必要です。CciTemplate
などの Spring クラスは、この戦略を暗黙的に使用します。このトランザクションマネージャーと組み合わせて使用しない場合、ConnectionFactoryUtils
ルックアップ戦略はネイティブ DataSource ルックアップとまったく同じように動作します。携帯用に使用できます。
または、アプリケーションコードが標準の Java EE ルックアップパターン ConnectionFactory.getConnection()
EE で動作するようにすることもできます。たとえば、Spring をまったく認識しないレガシーコードの場合です。その場合は、ターゲット ConnectionFactory の TransactionAwareConnectionFactoryProxy
を定義します。これは、Spring 管理のトランザクションに自動的に参加します。
AbstractPlatformTransactionManager.SuspendedResourcesHolder
logger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION
コンストラクターと説明 |
---|
CciLocalTransactionManager() 新しい CciLocalTransactionManager インスタンスを作成します。 |
CciLocalTransactionManager(ConnectionFactoryEE connectionFactory) 新しい CciLocalTransactionManager インスタンスを作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
protected void | doBegin(ObjectSE transaction, TransactionDefinition definition) 指定されたトランザクション定義に従って、セマンティクスで新しいトランザクションを開始します。 |
protected void | doCleanupAfterCompletion(ObjectSE transaction) トランザクション完了後にリソースをクリーンアップします。 |
protected void | doCommit(DefaultTransactionStatus status) 指定されたトランザクションの実際のコミットを実行します。 |
protected ObjectSE | doGetTransaction() 現在のトランザクション状態のトランザクションオブジェクトを返します。 |
protected void | doResume(ObjectSE transaction, ObjectSE suspendedResources) 現在のトランザクションのリソースを再開します。 |
protected void | doRollback(DefaultTransactionStatus status) 指定されたトランザクションの実際のロールバックを実行します。 |
protected void | doSetRollbackOnly(DefaultTransactionStatus status) 指定されたトランザクションをロールバックのみに設定します。 |
protected ObjectSE | doSuspend(ObjectSE transaction) 現在のトランザクションのリソースを一時停止します。 |
ConnectionFactoryEE | getConnectionFactory() このインスタンスがローカルトランザクションを管理する CCI ConnectionFactory を返します。 |
ObjectSE | getResourceFactory() このトランザクションマネージャーが動作するリソースファクトリを返します。 |
protected boolean | isExistingTransaction(ObjectSE transaction) 指定されたトランザクションオブジェクトが既存のトランザクション(つまり、すでに開始されているトランザクション)を示しているかどうかを確認します。 |
protected boolean | isRollbackOnly(ObjectSE transaction) |
void | setConnectionFactory(ConnectionFactoryEE cf) このインスタンスがローカルトランザクションを管理する CCI ConnectionFactory を設定します。 |
commit, determineTimeout, getDefaultTimeout, getTransaction, getTransactionSynchronization, invokeAfterCompletion, isFailEarlyOnGlobalRollbackOnly, isGlobalRollbackOnParticipationFailure, isNestedTransactionAllowed, isRollbackOnCommitFailure, isValidateExistingTransaction, newTransactionStatus, prepareForCommit, prepareSynchronization, prepareTransactionStatus, registerAfterCompletionWithExistingTransaction, resume, rollback, setDefaultTimeout, setFailEarlyOnGlobalRollbackOnly, setGlobalRollbackOnParticipationFailure, setNestedTransactionAllowed, setRollbackOnCommitFailure, setTransactionSynchronization, setTransactionSynchronizationName, setValidateExistingTransaction, shouldCommitOnGlobalRollbackOnly, suspend, triggerBeforeCommit, triggerBeforeCompletion, useSavepointForNestedTransaction
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
commit, getTransaction, rollback
public CciLocalTransactionManager()
public CciLocalTransactionManager(ConnectionFactoryEE connectionFactory)
connectionFactory
- ローカルトランザクションを管理する CCI ConnectionFactorypublic void setConnectionFactory(@Nullable ConnectionFactoryEE cf)
@Nullable public ConnectionFactoryEE getConnectionFactory()
public void afterPropertiesSet()
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
public ObjectSE getResourceFactory()
ResourceTransactionManager
このターゲットリソースファクトリは、通常、スレッドごとの TransactionSynchronizationManager
のリソースバインディングのリソースキーとして使用されます。
ResourceTransactionManager
の getResourceFactory
null
)TransactionSynchronizationManager.bindResource(java.lang.Object, java.lang.Object)
, TransactionSynchronizationManager.getResource(java.lang.Object)
protected ObjectSE doGetTransaction()
AbstractPlatformTransactionManager
返されるオブジェクトは通常、具体的なトランザクションマネージャーの実装に固有のものであり、対応するトランザクション状態を変更可能な形式で保持します。このオブジェクトは、他のテンプレートメソッド (doBegin や doCommit など) に直接、または DefaultTransactionStatus インスタンスの一部として渡されます。
返されるオブジェクトには、既存のトランザクション、つまり、トランザクションマネージャーでの現在の getTransaction
呼び出しの前にすでに開始されているトランザクションに関する情報が含まれている必要があります。その結果、doGetTransaction
実装は通常、既存のトランザクションを探し、返されたトランザクションオブジェクトに対応する状態を格納します。
AbstractPlatformTransactionManager
の doGetTransaction
AbstractPlatformTransactionManager.doBegin(java.lang.Object, org.springframework.transaction.TransactionDefinition)
, AbstractPlatformTransactionManager.doCommit(org.springframework.transaction.support.DefaultTransactionStatus)
, AbstractPlatformTransactionManager.doRollback(org.springframework.transaction.support.DefaultTransactionStatus)
, DefaultTransactionStatus.getTransaction()
protected boolean isExistingTransaction(ObjectSE transaction)
AbstractPlatformTransactionManager
結果は、新しいトランザクションに対して指定された伝播動作に従って評価されます。既存のトランザクションが中断される(PROPAGATION_REQUIRES_NEW の場合)か、新しいトランザクションが既存のトランザクションに参加する可能性があります(PROPAGATION_REQUIRED の場合)。
デフォルト実装は false
を返しますが、既存のトランザクションへの参加は一般にサポートされていないと想定しています。もちろん、サブクラスはそのようなサポートを提供することをお勧めします。
AbstractPlatformTransactionManager
の isExistingTransaction
transaction
- doGetTransaction によって返されるトランザクションオブジェクト AbstractPlatformTransactionManager.doGetTransaction()
protected void doBegin(ObjectSE transaction, TransactionDefinition definition)
AbstractPlatformTransactionManager
このメソッドは、トランザクションマネージャーが実際に新しいトランザクションを開始することを決定したときに呼び出されます。以前にトランザクションがなかったか、前のトランザクションが中断されています。
特別なシナリオは、セーブポイントのないネストされたトランザクションです: useSavepointForNestedTransaction()
が "false" を返す場合、このメソッドは、必要に応じてネストされたトランザクションを開始するために呼び出されます。このようなコンテキストでは、アクティブなトランザクションがあります。このメソッドの実装はこれを検出し、適切なネストされたトランザクションを開始する必要があります。
AbstractPlatformTransactionManager
の doBegin
transaction
- doGetTransaction
によって返されたトランザクションオブジェクト definition
- 伝播動作、分離レベル、読み取り専用フラグ、タイムアウト、トランザクション名を記述する TransactionDefinition インスタンス protected ObjectSE doSuspend(ObjectSE transaction)
AbstractPlatformTransactionManager
トランザクションの一時停止が一般的にサポートされていないと仮定すると、デフォルトの実装は TransactionSuspensionNotSupportedException をスローします。
AbstractPlatformTransactionManager
の doSuspend
transaction
- doGetTransaction
によって返されたトランザクションオブジェクト AbstractPlatformTransactionManager.doResume(java.lang.Object, java.lang.Object)
protected void doResume(@Nullable ObjectSE transaction, ObjectSE suspendedResources)
AbstractPlatformTransactionManager
トランザクションの一時停止が一般的にサポートされていないと仮定すると、デフォルトの実装は TransactionSuspensionNotSupportedException をスローします。
AbstractPlatformTransactionManager
の doResume
transaction
- doGetTransaction
によって返されたトランザクションオブジェクト suspendedResources
- doSuspend によって返される、中断されたリソースを保持するオブジェクト AbstractPlatformTransactionManager.doSuspend(java.lang.Object)
protected boolean isRollbackOnly(ObjectSE transaction) throws TransactionException
protected void doCommit(DefaultTransactionStatus status)
AbstractPlatformTransactionManager
実装では、「新規トランザクション」フラグまたはロールバック専用フラグを確認する必要はありません。これはすでに以前に処理されています。通常、渡されたステータスに含まれるトランザクションオブジェクトに対してストレートコミットが実行されます。
AbstractPlatformTransactionManager
の doCommit
status
- トランザクションのステータス表現 DefaultTransactionStatus.getTransaction()
protected void doRollback(DefaultTransactionStatus status)
AbstractPlatformTransactionManager
実装では、「新しいトランザクション」フラグを確認する必要はありません。これはすでに以前に処理されています。通常、渡されたステータスに含まれるトランザクションオブジェクトに対してストレートロールバックが実行されます。
AbstractPlatformTransactionManager
の doRollback
status
- トランザクションのステータス表現 DefaultTransactionStatus.getTransaction()
protected void doSetRollbackOnly(DefaultTransactionStatus status)
AbstractPlatformTransactionManager
既存のトランザクションへの参加は一般にサポートされていないと想定して、デフォルトの実装は IllegalTransactionStateException をスローします。もちろん、サブクラスはそのようなサポートを提供することをお勧めします。
AbstractPlatformTransactionManager
の doSetRollbackOnly
status
- トランザクションのステータス表現 protected void doCleanupAfterCompletion(ObjectSE transaction)
AbstractPlatformTransactionManager
doCommit
および doRollback
の実行後に、結果について呼び出されます。デフォルトの実装は何もしません。
例外をスローするべきではなく、エラーに対して警告を発行するだけです。
AbstractPlatformTransactionManager
の doCleanupAfterCompletion
transaction
- doGetTransaction
によって返されたトランザクションオブジェクト