クラス JtaTransactionManager
- 実装されたすべてのインターフェース:
SerializableSE
、InitializingBean
、ConfigurableTransactionManager
、TransactionFactory
、PlatformTransactionManager
、TransactionManager
PlatformTransactionManager
実装。これは通常、Jakarta EE サーバーのトランザクションコーディネーターに委譲するために使用されますが、アプリケーション内に埋め込まれたローカル JTA プロバイダーで構成することもできます。このトランザクションマネージャーは、分散トランザクション (複数のリソースにまたがるトランザクション) の処理や、アプリケーションサーバーリソース (たとえば、JNDI で使用可能な JDBC DataSources) でのトランザクションの制御に適しています。単一の JDBC DataSource の場合、DataSourceTransactionManager で十分であり、たとえば、Hibernate (トランザクションキャッシュを含む) を使用して単一のリソースにアクセスする場合は、HibernateTransactionManager が適しています。
典型的な JTA トランザクション(REQUIRED, SUPPORTS, MANDATORY, NEVER)では、プレーンな JtaTransactionManager 定義で十分であり、すべての Jakarta EE サーバー間で移植できます。これは、JTA UserTransaction の機能に対応し、Jakarta EE は標準の JNDI 名("java:comp/UserTransaction")を指定します。この種の JTA を使用するために、サーバー固有の TransactionManager ルックアップを構成する必要はありません。
トランザクションの停止 (REQUIRES_NEW、NOT_SUPPORTED) は、JTA TransactionManager が登録されている場合にのみ使用できます。共通の TransactionManager の場所は、"autodetectTransactionManager" フラグが "true" に設定されている場合 (デフォルト)、JtaTransactionManager によって自動検出されます。
メモ: Jakarta EE では、JTA TransactionManager インターフェースのサポートは必要ありません。ほとんどすべての Jakarta EE サーバーが公開していますが、EE の拡張機能として公開しています。TransactionManager インターフェースは JTA の一部ですが、互換性に課題がある可能性があります。
この純粋な JtaTransactionManager クラスはタイムアウトをサポートしますが、トランザクションごとの分離レベルはサポートしません。カスタムサブクラスは、この機能を提供するために、特定の JTA 拡張機能の doJtaBegin(org.springframework.transaction.jta.JtaTransactionObject, org.springframework.transaction.TransactionDefinition)
メソッドをオーバーライドする場合があります。特定の Jakarta EE トランザクションコーディネーター用のこのようなアダプターは、監視のためにトランザクション名を公開する場合もあります。標準の JTA では、トランザクション名は単純に無視されます。
JTA 1.1 は、標準の JTA UserTransaction ハンドルに加えて、パブリック Jakarta EE API として TransactionSynchronizationRegistry 機能を追加します。Spring 2.5 の時点で、この JtaTransactionManager は TransactionSynchronizationRegistry を自動検出し、既存の JTA トランザクション (たとえば、EJB CMT によって制御される) に参加するときに、Spring 管理の同期を登録するために使用します。TransactionSynchronizationRegistry が利用できない場合は、そのような同期は (非 EE) JTA TransactionManager ハンドルを介して登録されます。
このクラスは直列化可能です。ただし、アクティブな同期は直列化に耐えられません。
- 導入:
- 24.03.2003
- 作成者:
- Juergen Hoeller
- 関連事項:
ネストされたクラスのサマリー
クラス org.springframework.transaction.support.AbstractPlatformTransactionManager から継承されたネストクラス / インターフェース
AbstractPlatformTransactionManager.SuspendedResourcesHolder
フィールドサマリー
修飾子と型フィールド説明static final StringSE
JTA TransactionSynchronizationRegistry の標準 Jakarta EE JNDI ロケーション。static final StringSE
JTA UserTransaction のデフォルトの JNDI ロケーション。static final StringSE[]
JTA TransactionManager のフォールバック JNDI ロケーション。クラス org.springframework.transaction.support.AbstractPlatformTransactionManager から継承されたフィールド
logger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION
コンストラクターのサマリー
コンストラクター説明Bean として構成する新しい JtaTransactionManager インスタンスを作成します。JtaTransactionManager
(TransactionManagerEE transactionManager) 新しい JtaTransactionManager インスタンスを作成します。JtaTransactionManager
(UserTransactionEE userTransaction) 新しい JtaTransactionManager インスタンスを作成します。JtaTransactionManager
(UserTransactionEE userTransaction, TransactionManagerEE transactionManager) 新しい JtaTransactionManager インスタンスを作成します。メソッドのサマリー
修飾子と型メソッド説明void
UserTransaction および TransactionManager ハンドルを初期化します。protected void
applyIsolationLevel
(JtaTransactionObject txObject, int isolationLevel) 指定されたトランザクション分離レベルを適用します。protected void
applyTimeout
(JtaTransactionObject txObject, int timeout) 指定されたトランザクションタイムアウトを適用します。protected UserTransactionEE
buildUserTransaction
(TransactionManagerEE transactionManager) 指定された TransactionManager に基づいて UserTransaction ハンドルを作成します。protected void
標準の JTA 要件を想定して、UserTransaction ハンドルと TransactionManager ハンドルを確認します。createTransaction
(StringSE name, int timeout) 指定された名前とタイムアウトに基づいてアクティブな Transaction オブジェクトを作成します。protected void
doBegin
(ObjectSE transaction, TransactionDefinition definition) 指定されたトランザクション定義に従って、セマンティクスで新しいトランザクションを開始します。protected void
doCleanupAfterCompletion
(ObjectSE transaction) トランザクション完了後にリソースをクリーンアップします。protected void
doCommit
(DefaultTransactionStatus status) 指定されたトランザクションの実際のコミットを実行します。protected JtaTransactionObject
指定された現在の UserTransaction の JTA トランザクションオブジェクトを取得します。protected ObjectSE
この実装は、JTA UserTransaction の JtaTransactionObject インスタンスを返します。protected void
doJtaBegin
(JtaTransactionObject txObject, TransactionDefinition definition) JTA UserTransaction または TransactionManager で JTA 開始を実行します。protected void
doJtaResume
(JtaTransactionObject txObject, ObjectSE suspendedTransaction) JTA TransactionManager で JTA 履歴書を実行します。protected ObjectSE
doJtaSuspend
(JtaTransactionObject txObject) JTA TransactionManager で JTA サスペンドを実行します。protected void
doRegisterAfterCompletionWithJtaTransaction
(JtaTransactionObject txObject, ListSE<TransactionSynchronization> synchronizations) 指定された Spring TransactionSynchronizations でafterCompletion
を呼び出すために、JTA TransactionManager で JTA 同期を登録します。protected void
現在のトランザクションのリソースを再開します。protected void
doRollback
(DefaultTransactionStatus status) 指定されたトランザクションの実際のロールバックを実行します。protected void
指定されたトランザクションをロールバックのみに設定します。protected ObjectSE
現在のトランザクションのリソースを一時停止します。protected TransactionManagerEE
自動検出により JTA TransactionManager を見つけます。UserTransaction オブジェクトが TransactionManager を実装しているかどうかを確認し、フォールバック JNDI の場所を確認します。protected TransactionSynchronizationRegistryEE
自動検出を通じて JTA 1.1 TransactionSynchronizationRegistry を見つけます。UserTransaction オブジェクトまたは TransactionManager オブジェクトがそれを実装しているかどうかを確認し、Jakarta EE の標準 JNDI ロケーションを確認します。protected UserTransactionEE
デフォルトの JNDI ルックアップ "java:comp/UserTransaction" で JTA UserTransaction を見つけます。JNDI ルックアップに使用する JNDI 環境を返します。JNDI ルックアップに使用される JndiTemplate を返します。このトランザクションマネージャーが使用する JTA TransactionManager があれば、それを返します。このトランザクションマネージャーが使用する JTA 1.1 TransactionSynchronizationRegistry があれば、それを返します。このトランザクションマネージャーが使用する JTA UserTransaction を返します。protected void
可能な場合は、JTA 1.1 TransactionSynchronizationRegistry を初期化します。protected void
UserTransaction および TransactionManager ハンドルを初期化します。protected boolean
isExistingTransaction
(ObjectSE transaction) 指定されたトランザクションオブジェクトが既存のトランザクション(つまり、すでに開始されているトランザクション)を示しているかどうかを確認します。protected TransactionManagerEE
lookupTransactionManager
(StringSE transactionManagerName) 構成された名前を使用して、JNDI で JTA TransactionManager を検索します。protected TransactionSynchronizationRegistryEE
lookupTransactionSynchronizationRegistry
(StringSE registryName) 構成された名前を使用して、JNDI で JTA 1.1 TransactionSynchronizationRegistry を検索します。protected UserTransactionEE
lookupUserTransaction
(StringSE userTransactionName) 構成された名前を使用して、JNDI で JTA UserTransaction を検索します。protected void
registerAfterCompletionWithExistingTransaction
(ObjectSE transaction, ListSE<TransactionSynchronization> synchronizations) 指定されたトランザクション同期のリストを既存のトランザクションに登録します。protected TransactionManagerEE
サブクラスがベンダー固有の方法で JTA TransactionManager を取得できるようにします。protected TransactionSynchronizationRegistryEE
サブクラスがベンダー固有の方法で JTA 1.1 TransactionSynchronizationRegistry を取得できるようにします。protected UserTransactionEE
サブクラスがベンダー固有の方法で JTA UserTransaction を取得できるようにします。void
setAllowCustomIsolationLevels
(boolean allowCustomIsolationLevels) カスタム分離レベルの指定を許可するかどうかを設定します。void
setAutodetectTransactionManager
(boolean autodetectTransactionManager) JTA TransactionManager インターフェースも実装する JTA UserTransaction オブジェクトを自動検出するかどうかを設定します(つまりvoid
setAutodetectTransactionSynchronizationRegistry
(boolean autodetectTransactionSynchronizationRegistry) UserTransaction も JNDI から取得されている場合、デフォルトの JDNI ロケーション("java:comp/TransactionSynchronizationRegistry")で JTA 1.1 TransactionSynchronizationRegistry オブジェクトを自動検出するかどうか、および JTA UserTransaction/TransactionManager オブジェクトが JTA TransactionSynchronizationRegistry を実装しているかどうかのチェックにフォールバックするかどうかを設定します。インターフェースも。void
setAutodetectUserTransaction
(boolean autodetectUserTransaction) Jakarta EE で指定されているデフォルトの JNDI ロケーション "java:comp/UserTransaction" で JTA UserTransaction を自動検出するかどうかを設定します。void
setCacheUserTransaction
(boolean cacheUserTransaction) JNDI からフェッチされた JTA UserTransaction オブジェクトをキャッシュするかどうかを設定します。void
setJndiEnvironment
(PropertiesSE jndiEnvironment) JNDI ルックアップに使用する JNDI 環境を設定します。void
setJndiTemplate
(JndiTemplate jndiTemplate) JNDI ルックアップに使用する JndiTemplate を設定します。void
setTransactionManager
(TransactionManagerEE transactionManager) 直接参照として使用するように JTA TransactionManager を設定します。void
setTransactionManagerName
(StringSE transactionManagerName) JTA TransactionManager の JNDI 名を設定します。void
setTransactionSynchronizationRegistry
(TransactionSynchronizationRegistryEE transactionSynchronizationRegistry) JTA 1.1 TransactionSynchronizationRegistry を直接参照として使用するように設定します。void
setTransactionSynchronizationRegistryName
(StringSE transactionSynchronizationRegistryName) JTA 1.1 TransactionSynchronizationRegistry の JNDI 名を設定します。void
setUserTransaction
(UserTransactionEE userTransaction) 直接参照として使用するように JTA UserTransaction を設定します。void
setUserTransactionName
(StringSE userTransactionName) JTA UserTransaction の JNDI 名を設定します。protected boolean
この実装は "true" を返します: JTA コミットは、グローバルレベルでロールバックのみとマークされたトランザクションを適切に処理します。boolean
基になるトランザクションマネージャーがリソースアダプター(つまりprotected boolean
この実装は、既存のトランザクションにもかかわらず、doBegin をさらに呼び出すために false を返します。クラス org.springframework.transaction.support.AbstractPlatformTransactionManager から継承されたメソッド
commit, determineTimeout, getDefaultTimeout, getTransaction, getTransactionExecutionListeners, getTransactionSynchronization, invokeAfterCompletion, isFailEarlyOnGlobalRollbackOnly, isGlobalRollbackOnParticipationFailure, isNestedTransactionAllowed, isRollbackOnCommitFailure, isValidateExistingTransaction, prepareForCommit, prepareSynchronization, resume, rollback, setDefaultTimeout, setFailEarlyOnGlobalRollbackOnly, setGlobalRollbackOnParticipationFailure, setNestedTransactionAllowed, setRollbackOnCommitFailure, setTransactionExecutionListeners, setTransactionSynchronization, setTransactionSynchronizationName, setValidateExistingTransaction, suspend, triggerBeforeCommit, triggerBeforeCompletion
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース org.springframework.transaction.ConfigurableTransactionManager から継承されたメソッド
addListener
フィールドの詳細
DEFAULT_USER_TRANSACTION_NAME
JTA UserTransaction のデフォルトの JNDI ロケーション。多くの Jakarta EE サーバーは、JTA TransactionManager インターフェースのサポートも提供しています。FALLBACK_TRANSACTION_MANAGER_NAMES
JTA TransactionManager のフォールバック JNDI ロケーション。"autodetectTransactionManager" フラグが "true" の場合、JTA UserTransaction が JTA TransactionManager インターフェースを実装していない場合に適用されます。DEFAULT_TRANSACTION_SYNCHRONIZATION_REGISTRY_NAME
JTA TransactionSynchronizationRegistry の標準 Jakarta EE JNDI ロケーション。利用可能な場合は自動検出されます。- 関連事項:
コンストラクターの詳細
JtaTransactionManager
public JtaTransactionManager()新しい JtaTransactionManager インスタンスを作成し、Bean として構成します。afterPropertiesSet
を呼び出して構成をアクティブにします。JtaTransactionManager
新しい JtaTransactionManager インスタンスを作成します。- パラメーター:
userTransaction
- 直接参照として使用する JTA UserTransaction
JtaTransactionManager
public JtaTransactionManager(UserTransactionEE userTransaction, TransactionManagerEE transactionManager) 新しい JtaTransactionManager インスタンスを作成します。- パラメーター:
userTransaction
- 直接参照として使用する JTA UserTransactiontransactionManager
- 直接参照として使用する JTA TransactionManager
JtaTransactionManager
新しい JtaTransactionManager インスタンスを作成します。- パラメーター:
transactionManager
- 直接参照として使用する JTA TransactionManager
メソッドの詳細
setJndiTemplate
JNDI ルックアップに使用する JndiTemplate を設定します。設定しない場合は、デフォルトのものが使用されます。getJndiTemplate
JNDI ルックアップに使用される JndiTemplate を返します。setJndiEnvironment
JNDI ルックアップに使用する JNDI 環境を設定します。指定された環境設定で JndiTemplate を作成します。getJndiEnvironment
JNDI ルックアップに使用する JNDI 環境を返します。setUserTransaction
直接参照として使用するように JTA UserTransaction を設定します。通常、ローカルの JTA 設定にのみ使用されます。Jakarta EE 環境では、UserTransaction は常に JNDI からフェッチされます。
getUserTransaction
このトランザクションマネージャーが使用する JTA UserTransaction を返します。setUserTransactionName
JTA UserTransaction の JNDI 名を設定します。明示的に指定されていない場合、UserTransaction は Jakarta EE のデフォルトの場所 "java:comp/UserTransaction" で自動検出されることに注意してください。
setAutodetectUserTransaction
public void setAutodetectUserTransaction(boolean autodetectUserTransaction) Jakarta EE で指定されているデフォルトの JNDI ロケーション "java:comp/UserTransaction" で JTA UserTransaction を自動検出するかどうかを設定します。何も見つからなければ、UserTransaction なしで続行します。デフォルトは "true" で、明示的に指定されていない限り、UserTransaction を自動検出します。デフォルトの UserTransaction が使用可能であるにもかかわらず、JtaTransactionManager が TransactionManager に対してのみ動作できるようにするには、このフラグをオフにします。
setCacheUserTransaction
public void setCacheUserTransaction(boolean cacheUserTransaction) JNDI からフェッチされた JTA UserTransaction オブジェクトをキャッシュするかどうかを設定します。デフォルトは「true」: UserTransaction ルックアップは起動時にのみ発生し、すべてのスレッドのすべてのトランザクションに同じ UserTransaction ハンドルを再利用します。これは、共有 UserTransaction オブジェクトを提供するすべてのアプリケーションサーバーにとって最も効率的な選択です(一般的なケース)。
このフラグをオフにすると、トランザクションごとに UserTransaction の新しいルックアップが実行されます。これは、すべてのトランザクションに対して新しい UserTransaction を返し、状態を現在のスレッドではなく UserTransaction オブジェクト自体に関連付けたままにするアプリケーションサーバーでのみ必要です。
setTransactionManager
直接参照として使用するように JTA TransactionManager を設定します。UserTransaction インターフェースではサポートされていないため、トランザクションの中断と再開には TransactionManager が必要です。
JTA UserTransaction オブジェクトが JTA TransactionManager インターフェースも実装している場合、TransactionManager は自動検出され、既知のさまざまなフォールバック JNDI ロケーションで自動検出されることに注意してください。
getTransactionManager
このトランザクションマネージャーが使用する JTA TransactionManager があれば、それを返します。setTransactionManagerName
JTA TransactionManager の JNDI 名を設定します。UserTransaction インターフェースではサポートされていないため、トランザクションの中断と再開には TransactionManager が必要です。
JTA UserTransaction オブジェクトが JTA TransactionManager インターフェースも実装している場合、TransactionManager は自動検出され、既知のさまざまなフォールバック JNDI ロケーションで自動検出されることに注意してください。
setAutodetectTransactionManager
public void setAutodetectTransactionManager(boolean autodetectTransactionManager) JTA TransactionManager インターフェースも実装する JTAUserTransaction オブジェクトを自動検出するかどうかを設定します(つまり、TransactionManager の JNDI ロケーションは "java:comp/UserTransaction" であり、UserTransaction の場合と同じです)。また、フォールバック JNDI ロケーション "java:comp/TransactionManager" および "java:/TransactionManager"" もチェックします。何も見つからない場合は、TransactionManager なしで続行します。デフォルトは "true" で、明示的に指定されていない限り、TransactionManager を自動検出します。たとえば、サスペンド / レジュームに既知の課題があり、REQUIRES_NEW または NOT_SUPPORTED を使用しようとするとすぐに失敗する場合など、オフにして使用可能な TransactionManager を意図的に無視できます。
setTransactionSynchronizationRegistry
public void setTransactionSynchronizationRegistry(@Nullable TransactionSynchronizationRegistryEE transactionSynchronizationRegistry) JTA 1.1 TransactionSynchronizationRegistry を直接参照として使用するように設定します。TransactionSynchronizationRegistry は、JTA TransactionManager API の通常の登録メソッドの代替として、トランザクション同期の介在登録を可能にします。また、JTA TransactionManager 自体とは対照的に、Jakarta EE プラットフォームの公式部分です。
TransactionSynchronizationRegistry は JNDI で自動検出され、UserTransaction/TransactionManager オブジェクトからも自動検出されることに注意してください。
getTransactionSynchronizationRegistry
このトランザクションマネージャーが使用する JTA 1.1 TransactionSynchronizationRegistry があれば、それを返します。setTransactionSynchronizationRegistryName
public void setTransactionSynchronizationRegistryName(StringSE transactionSynchronizationRegistryName) JTA 1.1 TransactionSynchronizationRegistry の JNDI 名を設定します。明示的に指定されていない場合、TransactionSynchronizationRegistry は Jakarta EE のデフォルトの場所 "java:comp/TransactionSynchronizationRegistry" で自動検出されることに注意してください。
setAutodetectTransactionSynchronizationRegistry
public void setAutodetectTransactionSynchronizationRegistry(boolean autodetectTransactionSynchronizationRegistry) UserTransaction も JNDI から取得されている場合、デフォルトの JDNI ロケーション("java:comp/TransactionSynchronizationRegistry")で JTA 1.1 TransactionSynchronizationRegistry オブジェクトを自動検出するかどうか、および JTA UserTransaction/TransactionManager オブジェクトが JTA TransactionSynchronizationRegistry を実装しているかどうかのチェックにフォールバックするかどうかを設定します。インターフェースも。デフォルトは "true" で、明示的に指定されていない限り、TransactionSynchronizationRegistry を自動検出します。オフにすると、同期登録を通常の JTA TransactionManager API に委譲できます。
setAllowCustomIsolationLevels
public void setAllowCustomIsolationLevels(boolean allowCustomIsolationLevels) カスタム分離レベルの指定を許可するかどうかを設定します。デフォルトは "false" で、トランザクションにデフォルト以外の分離レベルが指定されている場合は例外がスローされます。影響を受けるリソースアダプターがスレッドにバインドされたトランザクションコンテキストをチェックし、指定された分離レベルを個別に適用する場合は (たとえば、IsolationLevelDataSourceAdapter を介して)、このフラグをオンにします。
afterPropertiesSet
UserTransaction および TransactionManager ハンドルを初期化します。- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
- 例外:
TransactionSystemException
- 関連事項:
initUserTransactionAndTransactionManager
UserTransaction および TransactionManager ハンドルを初期化します。- 例外:
TransactionSystemException
- 初期化に失敗した場合
checkUserTransactionAndTransactionManager
標準の JTA 要件を想定して、UserTransaction ハンドルと TransactionManager ハンドルを確認します。- 例外:
IllegalStateExceptionSE
- 十分なハンドルがない場合
initTransactionSynchronizationRegistry
protected void initTransactionSynchronizationRegistry()可能な場合は、JTA 1.1 TransactionSynchronizationRegistry を初期化します。UserTransaction および TransactionManager ハンドルをチェックする可能性があるため、
initUserTransactionAndTransactionManager()
の後に呼び出されます。- 例外:
TransactionSystemException
- 初期化に失敗した場合
buildUserTransaction
指定された TransactionManager に基づいて UserTransaction ハンドルを作成します。- パラメーター:
transactionManager
- TransactionManager- 戻り値:
- 対応する UserTransaction ハンドル
lookupUserTransaction
protected UserTransactionEE lookupUserTransaction(StringSE userTransactionName) throws TransactionSystemException 構成された名前を使用して、JNDI で JTA UserTransaction を検索します。直接 UserTransaction 参照が設定されていない場合、
afterPropertiesSet
によって呼び出されます。サブクラスでオーバーライドして、別の UserTransaction オブジェクトを提供できます。- パラメーター:
userTransactionName
- UserTransaction の JNDI 名- 戻り値:
- UserTransaction オブジェクト
- 例外:
TransactionSystemException
- JNDI ルックアップが失敗した場合- 関連事項:
lookupTransactionManager
protected TransactionManagerEE lookupTransactionManager(StringSE transactionManagerName) throws TransactionSystemException 構成された名前を使用して、JNDI で JTA TransactionManager を検索します。直接 TransactionManager 参照が設定されていない場合、
afterPropertiesSet
によって呼び出されます。サブクラスでオーバーライドして、別の TransactionManager オブジェクトを提供できます。- パラメーター:
transactionManagerName
- TransactionManager の JNDI 名- 戻り値:
- UserTransaction オブジェクト
- 例外:
TransactionSystemException
- JNDI ルックアップが失敗した場合- 関連事項:
lookupTransactionSynchronizationRegistry
protected TransactionSynchronizationRegistryEE lookupTransactionSynchronizationRegistry(StringSE registryName) throws TransactionSystemException 構成された名前を使用して、JNDI で JTA 1.1 TransactionSynchronizationRegistry を検索します。サブクラスでオーバーライドして、別の TransactionManager オブジェクトを提供できます。
- パラメーター:
registryName
- TransactionSynchronizationRegistry の JNDI 名- 戻り値:
- TransactionSynchronizationRegistry オブジェクト
- 例外:
TransactionSystemException
- JNDI ルックアップが失敗した場合- 関連事項:
retrieveUserTransaction
サブクラスがベンダー固有の方法で JTA UserTransaction を取得できるようにします。"userTransaction" または "userTransactionName" が指定されていない場合にのみ呼び出されます。デフォルトの実装は、単に
null
を返します。- 戻り値:
- 使用する JTA UserTransaction ハンドル。見つからない場合は
null
- 例外:
TransactionSystemException
- エラーの場合- 関連事項:
retrieveTransactionManager
@Nullable protected TransactionManagerEE retrieveTransactionManager() throws TransactionSystemExceptionサブクラスがベンダー固有の方法で JTA TransactionManager を取得できるようにします。"transactionManager" または "transactionManagerName" が指定されていない場合にのみ呼び出されます。デフォルトの実装は、単に
null
を返します。- 戻り値:
- 使用する JTA TransactionManager ハンドル。見つからない場合は
null
- 例外:
TransactionSystemException
- エラーの場合- 関連事項:
retrieveTransactionSynchronizationRegistry
@Nullable protected TransactionSynchronizationRegistryEE retrieveTransactionSynchronizationRegistry() throws TransactionSystemExceptionサブクラスがベンダー固有の方法で JTA 1.1 TransactionSynchronizationRegistry を取得できるようにします。デフォルトの実装は、単に
null
を返します。- 戻り値:
- 使用する JTA TransactionSynchronizationRegistry ハンドル。見つからない場合は
null
- 例外:
TransactionSystemException
- エラーの場合
findUserTransaction
デフォルトの JNDI ルックアップ "java:comp/UserTransaction" で JTA UserTransaction を見つけます。- 戻り値:
- JTA UserTransaction 参照。見つからない場合は
null
- 関連事項:
findTransactionManager
自動検出により JTA TransactionManager を見つけます。UserTransaction オブジェクトが TransactionManager を実装しているかどうかを確認し、フォールバック JNDI の場所を確認します。- パラメーター:
ut
- JTA UserTransaction オブジェクト- 戻り値:
- JTA TransactionManager 参照。見つからない場合は
null
- 関連事項:
findTransactionSynchronizationRegistry
@Nullable protected TransactionSynchronizationRegistryEE findTransactionSynchronizationRegistry(@Nullable UserTransactionEE ut, @Nullable TransactionManagerEE tm) throws TransactionSystemException 自動検出を通じて JTA 1.1 TransactionSynchronizationRegistry を見つけます。UserTransaction オブジェクトまたは TransactionManager オブジェクトがそれを実装しているかどうかを確認し、Jakarta EE の標準 JNDI ロケーションを確認します。デフォルトの実装は、単に
null
を返します。- パラメーター:
ut
- JTA UserTransaction オブジェクトtm
- JTA TransactionManager オブジェクト- 戻り値:
- 使用する JTA TransactionSynchronizationRegistry ハンドル。見つからない場合は
null
- 例外:
TransactionSystemException
- エラーの場合
doGetTransaction
この実装は、JTA UserTransaction の JtaTransactionObject インスタンスを返します。UserTransaction オブジェクトは、現在のトランザクションで新しく検索されるか、起動時に検索されたキャッシュ済みのオブジェクトが使用されます。後者がデフォルトです。ほとんどのアプリケーションサーバーは、キャッシュ可能な共有シングルトン UserTransaction を使用します。すべてのトランザクションで新しい検索を強制するには、"cacheUserTransaction" フラグをオフにします。
- 次で指定:
- クラス
AbstractPlatformTransactionManager
のdoGetTransaction
- 戻り値:
- 現在のトランザクションオブジェクト
- 関連事項:
doGetJtaTransaction
指定された現在の UserTransaction の JTA トランザクションオブジェクトを取得します。サブクラスはこれをオーバーライドして JtaTransactionObject サブクラスを提供できます。たとえば、必要な追加の JTA ハンドルを保持できます。
- パラメーター:
ut
- 現在のトランザクションに使用する UserTransaction ハンドル- 戻り値:
- UserTransaction を保持する JtaTransactionObject
isExistingTransaction
クラスからコピーされた説明:AbstractPlatformTransactionManager
指定されたトランザクションオブジェクトが既存のトランザクション(つまり、すでに開始されているトランザクション)を示しているかどうかを確認します。結果は、新しいトランザクションに対して指定された伝播動作に従って評価されます。既存のトランザクションが中断される(PROPAGATION_REQUIRES_NEW の場合)か、新しいトランザクションが既存のトランザクションに参加する可能性があります(PROPAGATION_REQUIRED の場合)。
デフォルト実装は
false
を返しますが、既存のトランザクションへの参加は一般にサポートされていないと想定しています。もちろん、サブクラスはそのようなサポートを提供することをお勧めします。- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のisExistingTransaction
- パラメーター:
transaction
- doGetTransaction によって返されるトランザクションオブジェクト- 戻り値:
- 既存のトランザクションがある場合
- 関連事項:
useSavepointForNestedTransaction
protected boolean useSavepointForNestedTransaction()この実装は、既存のトランザクションにもかかわらず、doBegin をさらに呼び出すために false を返します。JTA 実装は、さらに
UserTransaction.begin()
呼び出しを介してネストされたトランザクションをサポートする場合がありますが、セーブポイントをサポートすることはありません。doBegin
クラスからコピーされた説明:AbstractPlatformTransactionManager
指定されたトランザクション定義に従って、セマンティクスで新しいトランザクションを開始します。伝播動作の適用を気にする必要はありません。これは、この抽象マネージャーによってすでに処理されているためです。このメソッドは、トランザクションマネージャーが実際に新しいトランザクションを開始することを決定したときに呼び出されます。以前にトランザクションがなかったか、前のトランザクションが中断されています。
特別なシナリオは、セーブポイントのないネストされたトランザクションです:
useSavepointForNestedTransaction()
が "false" を返す場合、このメソッドは、必要に応じてネストされたトランザクションを開始するために呼び出されます。このようなコンテキストでは、アクティブなトランザクションがあります。このメソッドの実装はこれを検出し、適切なネストされたトランザクションを開始する必要があります。- 次で指定:
- クラス
AbstractPlatformTransactionManager
のdoBegin
- パラメーター:
transaction
-doGetTransaction
によって返されるトランザクションオブジェクトdefinition
- 伝播動作、分離レベル、読み取り専用フラグ、タイムアウト、トランザクション名を記述する TransactionDefinition インスタンス
doJtaBegin
protected void doJtaBegin(JtaTransactionObject txObject, TransactionDefinition definition) throws NotSupportedExceptionEE, SystemExceptionEE JTA UserTransaction または TransactionManager で JTA 開始を実行します。この実装では、標準の JTA 機能のみがサポートされます。つまり、トランザクションごとの分離レベルとトランザクション名はサポートされません。特定の JTA 実装のために、サブクラスでオーバーライドできます。
UserTransaction の
begin
メソッドを呼び出す前に、applyIsolationLevel
およびapplyTimeout
を呼び出します。- パラメーター:
txObject
- UserTransaction を含む JtaTransactionObjectdefinition
- TransactionDefinition インスタンス。伝播動作、分離レベル、読み取り専用フラグ、タイムアウト、トランザクション名を記述します- 例外:
NotSupportedExceptionEE
- JTA メソッドによってスローされた場合SystemExceptionEE
- JTA メソッドによってスローされた場合- 関連事項:
getUserTransaction()
getTransactionManager()
applyIsolationLevel(org.springframework.transaction.jta.JtaTransactionObject, int)
applyTimeout(org.springframework.transaction.jta.JtaTransactionObject, int)
JtaTransactionObject.getUserTransaction()
UserTransaction.setTransactionTimeout(int)
EEUserTransaction.begin()
EE
applyIsolationLevel
protected void applyIsolationLevel(JtaTransactionObject txObject, int isolationLevel) throws InvalidIsolationLevelException, SystemExceptionEE 指定されたトランザクション分離レベルを適用します。デフォルトの実装では、ISOLATION_DEFAULT 以外のレベルの例外がスローされます。完全な
doJtaBegin(org.springframework.transaction.jta.JtaTransactionObject, org.springframework.transaction.TransactionDefinition)
メソッドをオーバーライドする代わりに、特定の JTA 実装のサブクラスでオーバーライドされます。- パラメーター:
txObject
- UserTransaction を含む JtaTransactionObjectisolationLevel
- トランザクション定義から取得した分離レベル- 例外:
InvalidIsolationLevelException
- 指定された分離レベルを適用できない場合SystemExceptionEE
- JTA 実装によってスローされた場合- 関連事項:
applyTimeout
指定されたトランザクションタイムアウトを適用します。デフォルトの実装では、デフォルト以外のタイムアウト値に対してUserTransaction.setTransactionTimeout
を呼び出します。- パラメーター:
txObject
- UserTransaction を含む JtaTransactionObjecttimeout
- トランザクション定義から取得したタイムアウト値- 例外:
SystemExceptionEE
- JTA 実装によってスローされた場合- 関連事項:
doSuspend
クラスからコピーされた説明:AbstractPlatformTransactionManager
現在のトランザクションのリソースを一時停止します。トランザクションの同期はすでに中断されています。トランザクションの一時停止が一般的にサポートされていないと仮定すると、デフォルトの実装は TransactionSuspensionNotSupportedException をスローします。
- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のdoSuspend
- パラメーター:
transaction
-doGetTransaction
によって返されるトランザクションオブジェクト- 戻り値:
- 中断されたリソースを保持するオブジェクト (doResume に渡すために検査されないままになります)
- 関連事項:
doJtaSuspend
JTA TransactionManager で JTA サスペンドを実行します。特定の JTA 実装のために、サブクラスでオーバーライドできます。
- パラメーター:
txObject
- UserTransaction を含む JtaTransactionObject- 戻り値:
- 中断された JTA トランザクションオブジェクト
- 例外:
SystemExceptionEE
- JTA メソッドによってスローされた場合- 関連事項:
doResume
クラスからコピーされた説明:AbstractPlatformTransactionManager
現在のトランザクションのリソースを再開します。トランザクションの同期はその後再開されます。トランザクションの一時停止が一般的にサポートされていないと仮定すると、デフォルトの実装は TransactionSuspensionNotSupportedException をスローします。
- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のdoResume
- パラメーター:
transaction
-doGetTransaction
によって返されるトランザクションオブジェクトsuspendedResources
- doSuspend によって返される、中断されたリソースを保持するオブジェクト- 関連事項:
doJtaResume
protected void doJtaResume(@Nullable JtaTransactionObject txObject, ObjectSE suspendedTransaction) throws InvalidTransactionExceptionEE, SystemExceptionEE JTA TransactionManager で JTA 履歴書を実行します。特定の JTA 実装のために、サブクラスでオーバーライドできます。
- パラメーター:
txObject
- UserTransaction を含む JtaTransactionObjectsuspendedTransaction
- 中断された JTA トランザクションオブジェクト- 例外:
InvalidTransactionExceptionEE
- JTA メソッドによってスローされた場合SystemExceptionEE
- JTA メソッドによってスローされた場合- 関連事項:
shouldCommitOnGlobalRollbackOnly
protected boolean shouldCommitOnGlobalRollbackOnly()この実装は "true" を返します: JTA コミットは、グローバルレベルでロールバックのみとマークされたトランザクションを適切に処理します。- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のshouldCommitOnGlobalRollbackOnly
- 関連事項:
AbstractPlatformTransactionManager.doCommit(org.springframework.transaction.support.DefaultTransactionStatus)
DefaultTransactionStatus.isGlobalRollbackOnly()
AbstractTransactionStatus.isLocalRollbackOnly()
TransactionExecution.setRollbackOnly()
UnexpectedRollbackException
UserTransaction.commit()
EERollbackException
EE
doCommit
クラスからコピーされた説明:AbstractPlatformTransactionManager
指定されたトランザクションの実際のコミットを実行します。実装では、「新規トランザクション」フラグまたはロールバック専用フラグを確認する必要はありません。これはすでに以前に処理されています。通常、渡されたステータスに含まれるトランザクションオブジェクトに対してストレートコミットが実行されます。
- 次で指定:
- クラス
AbstractPlatformTransactionManager
のdoCommit
- パラメーター:
status
- トランザクションのステータス表現- 関連事項:
doRollback
クラスからコピーされた説明:AbstractPlatformTransactionManager
指定されたトランザクションの実際のロールバックを実行します。実装では、「新しいトランザクション」フラグを確認する必要はありません。これはすでに以前に処理されています。通常、渡されたステータスに含まれるトランザクションオブジェクトに対してストレートロールバックが実行されます。
- 次で指定:
- クラス
AbstractPlatformTransactionManager
のdoRollback
- パラメーター:
status
- トランザクションのステータス表現- 関連事項:
doSetRollbackOnly
クラスからコピーされた説明:AbstractPlatformTransactionManager
指定されたトランザクションをロールバックのみに設定します。現在のトランザクションが既存のトランザクションに参加している場合にのみ、ロールバック時に呼び出されます。既存のトランザクションへの参加は一般にサポートされていないと想定して、デフォルトの実装は IllegalTransactionStateException をスローします。もちろん、サブクラスはそのようなサポートを提供することをお勧めします。
- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のdoSetRollbackOnly
- パラメーター:
status
- トランザクションのステータス表現
registerAfterCompletionWithExistingTransaction
protected void registerAfterCompletionWithExistingTransaction(ObjectSE transaction, ListSE<TransactionSynchronization> synchronizations) クラスからコピーされた説明:AbstractPlatformTransactionManager
指定されたトランザクション同期のリストを既存のトランザクションに登録します。Spring トランザクションマネージャーの制御、すべての Spring トランザクションの同期が終了し、トランザクションがまだ完了していないときに呼び出されます。これは、たとえば、既存の JTA または EJB CMT トランザクションに参加する場合です。
デフォルトの実装は、"STATUS_UNKNOWN" を渡して、すぐに
afterCompletion
メソッドを呼び出すだけです。これは、外部トランザクションの実際の結果を判断する機会がない場合にできる最善の方法です。- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のregisterAfterCompletionWithExistingTransaction
- パラメーター:
transaction
-doGetTransaction
によって返されるトランザクションオブジェクトsynchronizations
- TransactionSynchronization オブジェクトのリスト- 関連事項:
doRegisterAfterCompletionWithJtaTransaction
protected void doRegisterAfterCompletionWithJtaTransaction(JtaTransactionObject txObject, ListSE<TransactionSynchronization> synchronizations) throws RollbackExceptionEE, SystemExceptionEE 指定された Spring TransactionSynchronizations でafterCompletion
を呼び出すために、JTA TransactionManager で JTA 同期を登録します。デフォルトの実装では、JTA 1.1 TransactionSynchronizationRegistry(利用可能な場合)または JTA TransactionManager の現在のトランザクション(利用可能な場合)に同期を登録します。2 つとも使用できない場合、警告がログに記録されます。
特定の JTA 実装のために、サブクラスでオーバーライドできます。
- パラメーター:
txObject
- 現在のトランザクションオブジェクトsynchronizations
- TransactionSynchronization オブジェクトのリスト- 例外:
RollbackExceptionEE
- JTA メソッドによってスローされた場合SystemExceptionEE
- JTA メソッドによってスローされた場合- 関連事項:
doCleanupAfterCompletion
クラスからコピーされた説明:AbstractPlatformTransactionManager
トランザクション完了後にリソースをクリーンアップします。doCommit
およびdoRollback
の実行後に、結果について呼び出されます。デフォルトの実装は何もしません。例外をスローするべきではなく、エラーに対して警告を発行するだけです。
- オーバーライド:
- クラス
AbstractPlatformTransactionManager
のdoCleanupAfterCompletion
- パラメーター:
transaction
-doGetTransaction
によって返されるトランザクションオブジェクト
createTransaction
public TransactionEE createTransaction(@Nullable StringSE name, int timeout) throws NotSupportedExceptionEE, SystemExceptionEE インターフェースからコピーされた説明:TransactionFactory
指定された名前とタイムアウトに基づいてアクティブな Transaction オブジェクトを作成します。- 次で指定:
- インターフェース
TransactionFactory
のcreateTransaction
- パラメーター:
name
- トランザクション名 (null
の場合があります)timeout
- トランザクションのタイムアウト (デフォルトのタイムアウトの場合は -1)- 戻り値:
- アクティブな Transaction オブジェクト (非
null
) - 例外:
NotSupportedExceptionEE
- トランザクションマネージャーが指定された型のトランザクションをサポートしていない場合SystemExceptionEE
- トランザクションマネージャーがトランザクションの作成に失敗した場合
supportsResourceAdapterManagedTransactions
public boolean supportsResourceAdapterManagedTransactions()インターフェースからコピーされた説明:TransactionFactory
基になるトランザクションマネージャーが、リソースアダプターによって管理される XA トランザクションをサポートするかどうかを決定します(つまり、明示的な XA リソースの登録なし)。通常は
false
です。無効な構成と有効な ResourceAdapter 管理のトランザクションを区別するために、AbstractMessageEndpointFactory
によってチェックされます。