クラス TransactionAwareConnectionFactoryProxy

java.lang.ObjectSE
org.springframework.jms.connection.TransactionAwareConnectionFactoryProxy
実装されているすべてのインターフェース:
jakarta.jms.ConnectionFactory, jakarta.jms.QueueConnectionFactory, jakarta.jms.TopicConnectionFactory

public class TransactionAwareConnectionFactoryProxy extends ObjectSE implements jakarta.jms.ConnectionFactory, jakarta.jms.QueueConnectionFactory, jakarta.jms.TopicConnectionFactory
ターゲット JMS ConnectionFactory のプロキシ。Spring 管理のトランザクションを認識できるようになります。Jakarta EE アプリケーションサーバーが提供するトランザクション対応 JNDI ConnectionFactory に類似しています。

Spring の JMS サポートを認識しないままにする必要があるメッセージングコードは、このプロキシと連携して、Spring 管理のトランザクションにシームレスに参加できます。トランザクションマネージャー、たとえば JmsTransactionManager 、このプロキシではなく、基礎となる ConnectionFactory で動作する必要があることに注意してください。

TransactionAwareConnectionFactoryProxy が ConnectionFactory プロキシ / アダプターのチェーンの最も外側の ConnectionFactory であることを確認してください。TransactionAwareConnectionFactoryProxy は、ターゲットファクトリに直接委譲することも、UserCredentialsConnectionFactoryAdapter などの中間アダプターに委譲することもできます。

JmsTransactionManager によって管理されているスレッドバインドされたトランザクションに自動的に参加するための ConnectionFactoryUtils へのデリゲート。返されたセッションの createSession 呼び出しと close 呼び出しは、トランザクション内で適切に動作します。つまり、常にトランザクションセッションで動作します。トランザクション内にない場合、通常の ConnectionFactory の動作が適用されます。

トランザクション JMS セッションは、接続ごとに登録されることに注意してください。トランザクション間で同じ JMS セッションを共有するには、ハンドルを再利用するか、その SingleConnectionFactory を構成することにより、同じ JMS 接続ハンドルを操作するようにしてください。

返されるトランザクションセッションプロキシは、基礎となるターゲットセッションへのアクセスを可能にするために、SessionProxy インターフェースを実装します。これは、ベンダー固有のセッション API へのアクセス、またはテスト目的 (たとえば、手動のトランザクション制御の実行) のみを対象としています。一般的なアプリケーションの目的では、標準の JMS セッションインターフェースを使用するだけです。

Spring Framework 5 の時点で、このクラスは JMS 2.0 JMSContext 呼び出しを委譲するため、実行時に JMS 2.0 API が存在する必要があります。それでも、アプリケーションのセットアップによって実際の JMS 2.0 呼び出しがトリガーされない限り、JMS 1.1 ドライバー(JMS 2.0 API にバインドされている)に対して実行できます。

導入:
2.0
作成者:
Juergen Hoeller
関連事項:
  • コンストラクターの詳細

    • TransactionAwareConnectionFactoryProxy

      public TransactionAwareConnectionFactoryProxy()
      新しい TransactionAwareConnectionFactoryProxy を作成します。
    • TransactionAwareConnectionFactoryProxy

      public TransactionAwareConnectionFactoryProxy(jakarta.jms.ConnectionFactory targetConnectionFactory)
      新しい TransactionAwareConnectionFactoryProxy を作成します。
      パラメーター:
      targetConnectionFactory - ターゲット ConnectionFactory
  • メソッドの詳細

    • setTargetConnectionFactory

      public final void setTargetConnectionFactory(jakarta.jms.ConnectionFactory targetConnectionFactory)
      この ConnectionFactory が委譲するターゲット ConnectionFactory を設定します。
    • getTargetConnectionFactory

      protected jakarta.jms.ConnectionFactory getTargetConnectionFactory()
      この ConnectionFactory が委譲するターゲット ConnectionFactory を返します。
    • setSynchedLocalTransactionAllowed

      public void setSynchedLocalTransactionAllowed(boolean synchedLocalTransactionAllowed)
      Spring 管理のトランザクション(メイントランザクションは特定の DataSource の JDBC ベースのトランザクションなど)と同期するローカル JMS トランザクションを許可するかどうかを設定します。JMS トランザクションはメイントランザクションの直後にコミットします。許可されていない場合、指定された ConnectionFactory はカバーでトランザクション登録を処理する必要があります。

      デフォルトは「false」: 基になる JMS ConnectionFactory を含むマネージトランザクション内にない場合、標準のセッションが返されます。このフラグをオンにすると、ローカル JMS トランザクションがメイントランザクションと同期され、Spring 管理のトランザクションに参加できるようになります。

    • isSynchedLocalTransactionAllowed

      protected boolean isSynchedLocalTransactionAllowed()
      Spring 管理のトランザクションと同期するローカル JMS トランザクションを許可するかどうかを返します。
    • createConnection

      public jakarta.jms.Connection createConnection() throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateConnection 
      例外:
      jakarta.jms.JMSException
    • createConnection

      public jakarta.jms.Connection createConnection(StringSE username, StringSE password) throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateConnection 
      例外:
      jakarta.jms.JMSException
    • createQueueConnection

      public jakarta.jms.QueueConnection createQueueConnection() throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.QueueConnectionFactorycreateQueueConnection 
      例外:
      jakarta.jms.JMSException
    • createQueueConnection

      public jakarta.jms.QueueConnection createQueueConnection(StringSE username, StringSE password) throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.QueueConnectionFactorycreateQueueConnection 
      例外:
      jakarta.jms.JMSException
    • createTopicConnection

      public jakarta.jms.TopicConnection createTopicConnection() throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.TopicConnectionFactorycreateTopicConnection 
      例外:
      jakarta.jms.JMSException
    • createTopicConnection

      public jakarta.jms.TopicConnection createTopicConnection(StringSE username, StringSE password) throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.TopicConnectionFactorycreateTopicConnection 
      例外:
      jakarta.jms.JMSException
    • createContext

      public jakarta.jms.JMSContext createContext()
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateContext 
    • createContext

      public jakarta.jms.JMSContext createContext(StringSE userName, StringSE password)
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateContext 
    • createContext

      public jakarta.jms.JMSContext createContext(StringSE userName, StringSE password, int sessionMode)
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateContext 
    • createContext

      public jakarta.jms.JMSContext createContext(int sessionMode)
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateContext 
    • getTransactionAwareConnectionProxy

      protected jakarta.jms.Connection getTransactionAwareConnectionProxy(jakarta.jms.Connection target)
      すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、トランザクション対応の方法でセッションのルックアップを処理します。
      パラメーター:
      target - ラップする元の接続
      戻り値:
      ラップされた接続