public class WebSphereUowTransactionManager extends JtaTransactionManager implements CallbackPreferringPlatformTransactionManager
UOWManager インスタンスに委譲する WebSphere 固有の PlatformTransactionManager 実装。これにより、Spring は、公式にサポートされている WebSphere API に完全に準拠した方法で、トランザクションの一時停止を含む WebSphere トランザクションコーディネーターの全機能を活用できます。 このクラスによって実装される CallbackPreferringPlatformTransactionManager インターフェースは、呼び出し側が execute(org.springframework.transaction.TransactionDefinition, org.springframework.transaction.support.TransactionCallback<T>) メソッドを介して TransactionCallback を渡す必要があることを示します。これは、標準の JTA API(UserTransaction/TransactionManager)ではなく、コールバックベースの WebSphere UOWManager API を介して処理されます。これにより、WebSphere で非公開の javax.transaction.TransactionManager API を使用せずに、サポートされている WebSphere API 境界内にとどまります。
このトランザクションマネージャーの実装は、Spring の標準 JtaTransactionManager から派生し、TransactionCallback ベースの execute(org.springframework.transaction.TransactionDefinition, org.springframework.transaction.support.TransactionCallback<T>) メソッドを使用しない呼び出し元に対して、JTA UserTransaction ハンドルを介した getTransaction / commit / rollback 呼び出しを介したプログラムによるトランザクション境界をサポートする機能を継承しています。ただし、この getTransaction スタイルではトランザクションの一時停止はサポートされていません(公式の WebSphere の推奨事項にかかわらず、JtaTransactionManager.setTransactionManager(javax.transaction.TransactionManager) 参照を明示的に指定しない限り)。トランザクションの一時停止が必要になる可能性のあるコードには、execute(org.springframework.transaction.TransactionDefinition, org.springframework.transaction.support.TransactionCallback<T>) スタイルを使用します。
このトランザクションマネージャーは、WebSphere、6.1.0.9 およびそれ以降と互換性があります。UOWManager のデフォルトの JNDI の場所は、"java:comp/websphere/UOWManager" です。場所が WebSphere ドキュメントと異なる場合は、このトランザクションマネージャーの "uowManagerName" Bean プロパティを使用して実際の場所を指定するだけです。
NOTE: この JtaTransactionManager は、Spring 側の特定のトランザクション区分動作を改善することを目的としています。永続性プロバイダーで個別に構成された WebSphere トランザクション戦略と共存でき、それらのセットアップを何らかの方法で具体的に接続する必要はありません。
setUowManager(com.ibm.wsspi.uow.UOWManager), setUowManagerName(java.lang.String), UOWManager, 連載形式 AbstractPlatformTransactionManager.SuspendedResourcesHolder| 修飾子と型 | フィールドと説明 |
|---|---|
static StringSE | DEFAULT_UOW_MANAGER_NAMEWebSphere UOWManager のデフォルトの JNDI ロケーション。 |
DEFAULT_TRANSACTION_SYNCHRONIZATION_REGISTRY_NAME, DEFAULT_USER_TRANSACTION_NAME, FALLBACK_TRANSACTION_MANAGER_NAMESlogger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION| コンストラクターと説明 |
|---|
WebSphereUowTransactionManager() 新しい WebSphereUowTransactionManager を作成します。 |
WebSphereUowTransactionManager(com.ibm.wsspi.uow.UOWManager uowManager) 指定された UOWManager の新しい WebSphereUowTransactionManager を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | afterPropertiesSet()UserTransaction および TransactionManager ハンドルを初期化します。 |
protected void | doRegisterAfterCompletionWithJtaTransaction(JtaTransactionObject txObject, ListSE<TransactionSynchronization> synchronizations) 同期を、挿入された JTA 同期として UOWManager に登録します。 |
<T> T | execute(TransactionDefinition definition, TransactionCallback<T> callback) トランザクション内で、指定されたコールバックオブジェクトによって指定されたアクションを実行します。 |
protected com.ibm.wsspi.uow.UOWManager | lookupDefaultUowManager() デフォルトの JNDI ロケーション "java:comp/websphere/UOWManager" から WebSphere UOWManager を取得します。 |
protected com.ibm.wsspi.uow.UOWManager | lookupUowManager(StringSE uowManagerName) 設定された名前を使用して、JNDI で WebSphere UOWManager を検索します。 |
void | setUowManager(com.ibm.wsspi.uow.UOWManager uowManager) 直接参照として使用する WebSphere UOWManager を設定します。 |
void | setUowManagerName(StringSE uowManagerName)WebSphere UOWManager の JNDI 名を設定します。 |
boolean | supportsResourceAdapterManagedTransactions()WebSphere ResourceAdapters(JNDI で公開)は、MessageEndpointFactory の isDeliveryTransacted メソッドが true を返す場合、暗黙的にトランザクション登録を実行するため、true を返します。 |
applyIsolationLevel, applyTimeout, buildUserTransaction, checkUserTransactionAndTransactionManager, createTransaction, doBegin, doCleanupAfterCompletion, doCommit, doGetJtaTransaction, doGetTransaction, doJtaBegin, doJtaResume, doJtaSuspend, doResume, doRollback, doSetRollbackOnly, doSuspend, findTransactionManager, findTransactionSynchronizationRegistry, findUserTransaction, getJndiEnvironment, getJndiTemplate, getTransactionManager, getTransactionSynchronizationRegistry, getUserTransaction, initTransactionSynchronizationRegistry, initUserTransactionAndTransactionManager, isExistingTransaction, lookupTransactionManager, lookupTransactionSynchronizationRegistry, lookupUserTransaction, registerAfterCompletionWithExistingTransaction, retrieveTransactionManager, retrieveTransactionSynchronizationRegistry, retrieveUserTransaction, setAllowCustomIsolationLevels, setAutodetectTransactionManager, setAutodetectTransactionSynchronizationRegistry, setAutodetectUserTransaction, setCacheUserTransaction, setJndiEnvironment, setJndiTemplate, setTransactionManager, setTransactionManagerName, setTransactionSynchronizationRegistry, setTransactionSynchronizationRegistryName, setUserTransaction, setUserTransactionName, shouldCommitOnGlobalRollbackOnly, useSavepointForNestedTransactioncommit, determineTimeout, getDefaultTimeout, getTransaction, getTransactionSynchronization, invokeAfterCompletion, isFailEarlyOnGlobalRollbackOnly, isGlobalRollbackOnParticipationFailure, isNestedTransactionAllowed, isRollbackOnCommitFailure, isValidateExistingTransaction, newTransactionStatus, prepareForCommit, prepareSynchronization, prepareTransactionStatus, resume, rollback, setDefaultTimeout, setFailEarlyOnGlobalRollbackOnly, setGlobalRollbackOnParticipationFailure, setNestedTransactionAllowed, setRollbackOnCommitFailure, setTransactionSynchronization, setTransactionSynchronizationName, setValidateExistingTransaction, suspend, triggerBeforeCommit, triggerBeforeCompletioncloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEcommit, getTransaction, rollbackpublic static final StringSE DEFAULT_UOW_MANAGER_NAME
public WebSphereUowTransactionManager()
public WebSphereUowTransactionManager(com.ibm.wsspi.uow.UOWManager uowManager)
uowManager - 直接参照として使用する WebSphere UOWManagerpublic void setUowManager(com.ibm.wsspi.uow.UOWManager uowManager)
通常、テストのセットアップにのみ使用されます。Java EE 環境では、UOWManager は常に JNDI からフェッチされます。
public void setUowManagerName(StringSE uowManagerName)
public void afterPropertiesSet()
throws TransactionSystemExceptionJtaTransactionManagerInitializingBean の afterPropertiesSet JtaTransactionManager の afterPropertiesSet TransactionSystemExceptionJtaTransactionManager.initUserTransactionAndTransactionManager()protected com.ibm.wsspi.uow.UOWManager lookupUowManager(StringSE uowManagerName) throws TransactionSystemException
uowManagerName - UOWManager の JNDI 名 TransactionSystemException - JNDI ルックアップが失敗した場合 JtaTransactionManager.setJndiTemplate(org.springframework.jndi.JndiTemplate), setUowManagerName(java.lang.String)protected com.ibm.wsspi.uow.UOWManager lookupDefaultUowManager()
throws TransactionSystemExceptionTransactionSystemException - JNDI ルックアップが失敗した場合 JtaTransactionManager.setJndiTemplate(org.springframework.jndi.JndiTemplate)protected void doRegisterAfterCompletionWithJtaTransaction(JtaTransactionObject txObject, ListSE<TransactionSynchronization> synchronizations)
JtaTransactionManager の doRegisterAfterCompletionWithJtaTransaction txObject - 現在のトランザクションオブジェクト synchronizations - TransactionSynchronization オブジェクトのリスト JtaTransactionManager.getTransactionManager(), Transaction.registerSynchronization(javax.transaction.Synchronization)SE, TransactionSynchronizationRegistry.registerInterposedSynchronization(javax.transaction.Synchronization)SEpublic boolean supportsResourceAdapterManagedTransactions()
isDeliveryTransacted メソッドが true を返す場合、暗黙的にトランザクション登録を実行するため、true を返します。その場合は、JtaTransactionManager.createTransaction(java.lang.String, int) 呼び出しを単にスキップします。TransactionFactory の supportsResourceAdapterManagedTransactions JtaTransactionManager の supportsResourceAdapterManagedTransactions MessageEndpointFactory.isDeliveryTransacted(java.lang.reflect.Method)EE, AbstractMessageEndpointFactory, TransactionFactory.createTransaction(java.lang.String, int)@Nullable public <T> T execute(@Nullable TransactionDefinition definition, TransactionCallback<T> callback) throws TransactionException
CallbackPreferringPlatformTransactionManagerトランザクション内で作成された結果オブジェクト、つまりドメインオブジェクトまたはドメインオブジェクトのコレクションを返すことができます。コールバックによってスローされた RuntimeException は、ロールバックを強制する致命的な例外として扱われます。このような例外は、テンプレートの呼び出し元に伝播されます。
CallbackPreferringPlatformTransactionManager の execute definition - コールバックをラップするトランザクションの定義 callback - トランザクションアクションを指定するコールバックオブジェクト null TransactionException - 初期化、ロールバック、システムエラーの場合