クラス JtaTransactionManager

実装されたすべてのインターフェース:
SerializableSEInitializingBeanConfigurableTransactionManagerTransactionFactoryPlatformTransactionManagerTransactionManager

public class JtaTransactionManager extends AbstractPlatformTransactionManager implements TransactionFactory, InitializingBean, SerializableSE
バックエンド JTA プロバイダーに委譲する、JTA の 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 が登録されている場合にのみ利用できます。"autodetectTransactionManager" フラグが "true" (デフォルト)に設定されている場合、一般的な TransactionManager の場所は 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
関連事項:
  • フィールドの詳細

  • コンストラクターの詳細

  • メソッドの詳細

    • setJndiTemplate

      public void setJndiTemplate(JndiTemplate jndiTemplate)
      JNDI ルックアップに使用する JndiTemplate を設定します。設定しない場合は、デフォルトのものが使用されます。
    • getJndiTemplate

      public JndiTemplate getJndiTemplate()
      JNDI ルックアップに使用される JndiTemplate を返します。
    • setJndiEnvironment

      public void setJndiEnvironment(@Nullable PropertiesSE jndiEnvironment)
      JNDI ルックアップに使用する JNDI 環境を設定します。指定された環境設定で JndiTemplate を作成します。
      関連事項:
    • getJndiEnvironment

      @Nullable public PropertiesSE getJndiEnvironment()
      JNDI ルックアップに使用する JNDI 環境を返します。
    • setUserTransaction

      public void setUserTransaction(@Nullable UserTransactionEE userTransaction)
      直接参照として使用するように JTA UserTransaction を設定します。

      通常、ローカルの JTA 設定にのみ使用されます。Jakarta EE 環境では、UserTransaction は常に JNDI からフェッチされます。

      関連事項:
    • getUserTransaction

      @Nullable public UserTransactionEE getUserTransaction()
      このトランザクションマネージャーが使用する JTA UserTransaction を返します。
    • setUserTransactionName

      public void setUserTransactionName(StringSE userTransactionName)
      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

      public void setTransactionManager(@Nullable TransactionManagerEE transactionManager)
      直接参照として使用するように JTA TransactionManager を設定します。

      UserTransaction インターフェースではサポートされていないため、トランザクションの中断と再開には TransactionManager が必要です。

      JTA UserTransaction オブジェクトが JTA TransactionManager インターフェースも実装している場合、TransactionManager は自動検出され、既知のさまざまなフォールバック JNDI ロケーションで自動検出されることに注意してください。

      関連事項:
    • getTransactionManager

      @Nullable public TransactionManagerEE getTransactionManager()
      このトランザクションマネージャーが使用する JTA TransactionManager があれば、それを返します。
    • setTransactionManagerName

      public void setTransactionManagerName(StringSE transactionManagerName)
      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

      @Nullable public TransactionSynchronizationRegistryEE 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

      public void afterPropertiesSet() throws TransactionSystemException
      UserTransaction および TransactionManager ハンドルを初期化します。
      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
      例外:
      TransactionSystemException
      関連事項:
    • initUserTransactionAndTransactionManager

      protected void initUserTransactionAndTransactionManager() throws TransactionSystemException
      UserTransaction および TransactionManager ハンドルを初期化します。
      例外:
      TransactionSystemException - 初期化に失敗した場合
    • checkUserTransactionAndTransactionManager

      protected void checkUserTransactionAndTransactionManager() throws IllegalStateExceptionSE
      標準の JTA 要件を想定して、UserTransaction ハンドルと TransactionManager ハンドルを確認します。
      例外:
      IllegalStateExceptionSE - 十分なハンドルがない場合
    • initTransactionSynchronizationRegistry

      protected void initTransactionSynchronizationRegistry()
      可能な場合は、JTA 1.1 TransactionSynchronizationRegistry を初期化します。

      UserTransaction および TransactionManager ハンドルをチェックする可能性があるため、initUserTransactionAndTransactionManager() の後に呼び出されます。

      例外:
      TransactionSystemException - 初期化に失敗した場合
    • buildUserTransaction

      protected UserTransactionEE buildUserTransaction(TransactionManagerEE transactionManager)
      指定された 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

      @Nullable protected UserTransactionEE retrieveUserTransaction() throws TransactionSystemException
      サブクラスがベンダー固有の方法で 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

      @Nullable protected UserTransactionEE findUserTransaction()
      デフォルトの JNDI ルックアップ "java:comp/UserTransaction" で JTA UserTransaction を見つけます。
      戻り値:
      JTA UserTransaction 参照。見つからない場合は null 
      関連事項:
    • findTransactionManager

      @Nullable protected TransactionManagerEE findTransactionManager(@Nullable UserTransactionEE ut)
      自動検出により JTA TransactionManager を見つけます。UserTransaction オブジェクトが TransactionManager を実装しているかどうかを確認し、フォールバック JNDI の場所を確認します。
      パラメーター:
      ut - JTA UserTransaction オブジェクト
      戻り値:
      JTA TransactionManager 参照。見つからない場合は null 
      関連事項:
    • findTransactionSynchronizationRegistry

      自動検出を通じて JTA 1.1 TransactionSynchronizationRegistry を見つけます。UserTransaction オブジェクトまたは TransactionManager オブジェクトがそれを実装しているかどうかを確認し、Jakarta EE の標準 JNDI ロケーションを確認します。

      デフォルトの実装は、単に null を返します。

      パラメーター:
      ut - JTA UserTransaction オブジェクト
      tm - JTA TransactionManager オブジェクト
      戻り値:
      使用する JTA TransactionSynchronizationRegistry ハンドル。見つからない場合は null 
      例外:
      TransactionSystemException - エラーの場合
    • doGetTransaction

      protected ObjectSE doGetTransaction()
      この実装は、JTA UserTransaction の JtaTransactionObject インスタンスを返します。

      UserTransaction オブジェクトは、現在のトランザクション用に新しく検索されるか、起動時に検索されたキャッシュされたものが使用されます。後者がデフォルトです。ほとんどのアプリケーションサーバーは、キャッシュ可能な共有シングルトン UserTransaction を使用します。"cacheUserTransaction" フラグをオフにして、すべてのトランザクションに対して最新のルックアップを適用します。

      次で指定:
      クラス AbstractPlatformTransactionManagerdoGetTransaction 
      戻り値:
      現在のトランザクションオブジェクト
      関連事項:
    • doGetJtaTransaction

      protected JtaTransactionObject doGetJtaTransaction(UserTransactionEE ut)
      指定された現在の UserTransaction の JTA トランザクションオブジェクトを取得します。

      サブクラスはこれをオーバーライドして JtaTransactionObject サブクラスを提供できます。たとえば、必要な追加の JTA ハンドルを保持できます。

      パラメーター:
      ut - 現在のトランザクションに使用する UserTransaction ハンドル
      戻り値:
      UserTransaction を保持する JtaTransactionObject
    • isExistingTransaction

      protected boolean isExistingTransaction(ObjectSE transaction)
      クラスからコピーされた説明: AbstractPlatformTransactionManager
      指定されたトランザクションオブジェクトが既存のトランザクション(つまり、すでに開始されているトランザクション)を示しているかどうかを確認します。

      結果は、新しいトランザクションに対して指定された伝播動作に従って評価されます。既存のトランザクションが中断される(PROPAGATION_REQUIRES_NEW の場合)か、新しいトランザクションが既存のトランザクションに参加する可能性があります(PROPAGATION_REQUIRED の場合)。

      デフォルト実装は false を返しますが、既存のトランザクションへの参加は一般にサポートされていないと想定しています。もちろん、サブクラスはそのようなサポートを提供することをお勧めします。

      オーバーライド:
      クラス AbstractPlatformTransactionManagerisExistingTransaction 
      パラメーター:
      transaction - doGetTransaction によって返されるトランザクションオブジェクト
      戻り値:
      既存のトランザクションがある場合
      関連事項:
    • useSavepointForNestedTransaction

      protected boolean useSavepointForNestedTransaction()
      この実装は false を返し、既存のトランザクションにもかかわらず、doBegin をさらに呼び出します。

      JTA 実装は、さらに UserTransaction.begin() 呼び出しを介してネストされたトランザクションをサポートする場合がありますが、セーブポイントをサポートすることはありません。

      オーバーライド:
      クラス AbstractPlatformTransactionManageruseSavepointForNestedTransaction 
      関連事項:
    • doBegin

      protected void doBegin(ObjectSE transaction, TransactionDefinition definition)
      クラスからコピーされた説明: AbstractPlatformTransactionManager
      指定されたトランザクション定義に従って、セマンティクスで新しいトランザクションを開始します。伝播動作の適用を気にする必要はありません。これは、この抽象マネージャーによってすでに処理されているためです。

      このメソッドは、トランザクションマネージャーが実際に新しいトランザクションを開始することを決定したときに呼び出されます。以前にトランザクションがなかったか、前のトランザクションが中断されています。

      特別なシナリオは、セーブポイントのないネストされたトランザクションです: useSavepointForNestedTransaction() が "false" を返す場合、このメソッドは、必要に応じてネストされたトランザクションを開始するために呼び出されます。このようなコンテキストでは、アクティブなトランザクションがあります。このメソッドの実装はこれを検出し、適切なネストされたトランザクションを開始する必要があります。

      次で指定:
      クラス AbstractPlatformTransactionManagerdoBegin 
      パラメーター:
      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 を含む JtaTransactionObject
      definition - TransactionDefinition インスタンス。伝播動作、分離レベル、読み取り専用フラグ、タイムアウト、トランザクション名を記述します
      例外:
      NotSupportedExceptionEE - JTA メソッドによってスローされた場合
      SystemExceptionEE - JTA メソッドによってスローされた場合
      関連事項:
    • 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 を含む JtaTransactionObject
      isolationLevel - トランザクション定義から取得した分離レベル
      例外:
      InvalidIsolationLevelException - 指定された分離レベルを適用できない場合
      SystemExceptionEE - JTA 実装によってスローされた場合
      関連事項:
    • applyTimeout

      protected void applyTimeout(JtaTransactionObject txObject, int timeout) throws SystemExceptionEE
      指定されたトランザクションタイムアウトを適用します。デフォルトの実装では、デフォルト以外のタイムアウト値に対して UserTransaction.setTransactionTimeout を呼び出します。
      パラメーター:
      txObject - UserTransaction を含む JtaTransactionObject
      timeout - トランザクション定義から取得したタイムアウト値
      例外:
      SystemExceptionEE - JTA 実装によってスローされた場合
      関連事項:
    • doSuspend

      protected ObjectSE doSuspend(ObjectSE transaction)
      クラスからコピーされた説明: AbstractPlatformTransactionManager
      現在のトランザクションのリソースを一時停止します。トランザクションの同期はすでに中断されています。

      トランザクションの一時停止が一般的にサポートされていないと仮定すると、デフォルトの実装は TransactionSuspensionNotSupportedException をスローします。

      オーバーライド:
      クラス AbstractPlatformTransactionManagerdoSuspend 
      パラメーター:
      transaction - doGetTransaction によって返されるトランザクションオブジェクト
      戻り値:
      中断されたリソースを保持するオブジェクト (doResume に渡すために未検査のままになります)
      関連事項:
    • doJtaSuspend

      protected ObjectSE doJtaSuspend(JtaTransactionObject txObject) throws SystemExceptionEE
      JTA TransactionManager で JTA サスペンドを実行します。

      特定の JTA 実装のために、サブクラスでオーバーライドできます。

      パラメーター:
      txObject - UserTransaction を含む JtaTransactionObject
      戻り値:
      中断された JTA トランザクションオブジェクト
      例外:
      SystemExceptionEE - JTA メソッドによってスローされた場合
      関連事項:
    • doResume

      protected void doResume(@Nullable ObjectSE transaction, ObjectSE suspendedResources)
      クラスからコピーされた説明: AbstractPlatformTransactionManager
      現在のトランザクションのリソースを再開します。トランザクションの同期はその後再開されます。

      トランザクションの一時停止が一般的にサポートされていないと仮定すると、デフォルトの実装は TransactionSuspensionNotSupportedException をスローします。

      オーバーライド:
      クラス AbstractPlatformTransactionManagerdoResume 
      パラメーター:
      transaction - doGetTransaction によって返されるトランザクションオブジェクト
      suspendedResources - doSuspend によって返される、中断されたリソースを保持するオブジェクト
      関連事項:
    • doJtaResume

      protected void doJtaResume(@Nullable JtaTransactionObject txObject, ObjectSE suspendedTransaction) throws InvalidTransactionExceptionEE, SystemExceptionEE
      JTA TransactionManager で JTA 履歴書を実行します。

      特定の JTA 実装のために、サブクラスでオーバーライドできます。

      パラメーター:
      txObject - UserTransaction を含む JtaTransactionObject
      suspendedTransaction - 中断された JTA トランザクションオブジェクト
      例外:
      InvalidTransactionExceptionEE - JTA メソッドによってスローされた場合
      SystemExceptionEE - JTA メソッドによってスローされた場合
      関連事項:
    • shouldCommitOnGlobalRollbackOnly

      protected boolean shouldCommitOnGlobalRollbackOnly()
      この実装は "true" を返します: JTA コミットは、グローバルレベルでロールバックのみとマークされたトランザクションを適切に処理します。
      オーバーライド:
      クラス AbstractPlatformTransactionManagershouldCommitOnGlobalRollbackOnly 
      関連事項:
    • doCommit

      protected void doCommit(DefaultTransactionStatus status)
      クラスからコピーされた説明: AbstractPlatformTransactionManager
      指定されたトランザクションの実際のコミットを実行します。

      実装では、「新規トランザクション」フラグまたはロールバック専用フラグを確認する必要はありません。これはすでに以前に処理されています。通常、渡されたステータスに含まれるトランザクションオブジェクトに対してストレートコミットが実行されます。

      次で指定:
      クラス AbstractPlatformTransactionManagerdoCommit 
      パラメーター:
      status - トランザクションのステータス表現
      関連事項:
    • doRollback

      protected void doRollback(DefaultTransactionStatus status)
      クラスからコピーされた説明: AbstractPlatformTransactionManager
      指定されたトランザクションの実際のロールバックを実行します。

      実装では、「新しいトランザクション」フラグを確認する必要はありません。これはすでに以前に処理されています。通常、渡されたステータスに含まれるトランザクションオブジェクトに対してストレートロールバックが実行されます。

      次で指定:
      クラス AbstractPlatformTransactionManagerdoRollback 
      パラメーター:
      status - トランザクションのステータス表現
      関連事項:
    • doSetRollbackOnly

      protected void doSetRollbackOnly(DefaultTransactionStatus status)
      クラスからコピーされた説明: AbstractPlatformTransactionManager
      指定されたトランザクションをロールバックのみに設定します。現在のトランザクションが既存のトランザクションに参加している場合にのみ、ロールバック時に呼び出されます。

      既存のトランザクションへの参加は一般にサポートされていないと想定して、デフォルトの実装は IllegalTransactionStateException をスローします。もちろん、サブクラスはそのようなサポートを提供することをお勧めします。

      オーバーライド:
      クラス AbstractPlatformTransactionManagerdoSetRollbackOnly 
      パラメーター:
      status - トランザクションのステータス表現
    • registerAfterCompletionWithExistingTransaction

      protected void registerAfterCompletionWithExistingTransaction(ObjectSE transaction, ListSE<TransactionSynchronization> synchronizations)
      クラスからコピーされた説明: AbstractPlatformTransactionManager
      指定されたトランザクション同期のリストを既存のトランザクションに登録します。

      Spring トランザクションマネージャーの制御、すべての Spring トランザクションの同期が終了し、トランザクションがまだ完了していないときに呼び出されます。これは、たとえば、既存の JTA または EJB CMT トランザクションに参加する場合です。

      デフォルトの実装は、"STATUS_UNKNOWN" を渡して、すぐに afterCompletion メソッドを呼び出すだけです。これは、外部トランザクションの実際の結果を判断する機会がない場合にできる最善の方法です。

      オーバーライド:
      クラス AbstractPlatformTransactionManagerregisterAfterCompletionWithExistingTransaction 
      パラメーター:
      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

      protected void doCleanupAfterCompletion(ObjectSE transaction)
      クラスからコピーされた説明: AbstractPlatformTransactionManager
      トランザクション完了後にリソースをクリーンアップします。

      doCommit および doRollback の実行後に、結果について呼び出されます。デフォルトの実装は何もしません。

      例外をスローするべきではなく、エラーに対して警告を発行するだけです。

      オーバーライド:
      クラス AbstractPlatformTransactionManagerdoCleanupAfterCompletion 
      パラメーター:
      transaction - doGetTransaction によって返されるトランザクションオブジェクト
    • createTransaction

      public TransactionEE createTransaction(@Nullable StringSE name, int timeout) throws NotSupportedExceptionEE, SystemExceptionEE
      インターフェースからコピーされた説明: TransactionFactory
      指定された名前とタイムアウトに基づいてアクティブな Transaction オブジェクトを作成します。
      次で指定:
      インターフェース TransactionFactorycreateTransaction 
      パラメーター:
      name - トランザクション名 (null の場合があります)
      timeout - トランザクションのタイムアウト (デフォルトのタイムアウトの場合は -1)
      戻り値:
      アクティブな Transaction オブジェクト (非 null)
      例外:
      NotSupportedExceptionEE - トランザクションマネージャーが指定された型のトランザクションをサポートしていない場合
      SystemExceptionEE - トランザクションマネージャーがトランザクションの作成に失敗した場合
    • supportsResourceAdapterManagedTransactions

      public boolean supportsResourceAdapterManagedTransactions()
      インターフェースからコピーされた説明: TransactionFactory
      基になるトランザクションマネージャーが、リソースアダプターによって管理される XA トランザクションをサポートするかどうかを決定します(つまり、明示的な XA リソースの登録なし)。

      通常は false です。無効な構成と有効な ResourceAdapter 管理のトランザクションを区別するために、AbstractMessageEndpointFactory によってチェックされます。

      次で指定:
      インターフェース TransactionFactorysupportsResourceAdapterManagedTransactions 
      関連事項: