クラス TransactionAwareConnectionFactoryProxy
- 実装されているすべてのインターフェース:
jakarta.jms.ConnectionFactory, jakarta.jms.QueueConnectionFactory, jakarta.jms.TopicConnectionFactory
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 を作成します。TransactionAwareConnectionFactoryProxy(jakarta.jms.ConnectionFactory targetConnectionFactory) 新しい TransactionAwareConnectionFactoryProxy を作成します。メソッドのサマリー
修飾子と型メソッド説明jakarta.jms.Connectionjakarta.jms.ConnectioncreateConnection(StringSE username, StringSE password) jakarta.jms.JMSContextjakarta.jms.JMSContextcreateContext(int sessionMode) jakarta.jms.JMSContextcreateContext(StringSE userName, StringSE password) jakarta.jms.JMSContextcreateContext(StringSE userName, StringSE password, int sessionMode) jakarta.jms.QueueConnectionjakarta.jms.QueueConnectioncreateQueueConnection(StringSE username, StringSE password) jakarta.jms.TopicConnectionjakarta.jms.TopicConnectioncreateTopicConnection(StringSE username, StringSE password) protected jakarta.jms.ConnectionFactoryこの ConnectionFactory が委譲するターゲット ConnectionFactory を返します。protected jakarta.jms.ConnectiongetTransactionAwareConnectionProxy(jakarta.jms.Connection target) すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、トランザクション対応の方法でセッションのルックアップを処理します。protected booleanSpring 管理のトランザクションと同期するローカル JMS トランザクションを許可するかどうかを返します。voidsetSynchedLocalTransactionAllowed(boolean synchedLocalTransactionAllowed) Spring 管理のトランザクション(メイントランザクションは特定の DataSource の JDBC ベースのトランザクションなど)と同期するローカル JMS トランザクションを許可するかどうかを設定します。JMS トランザクションはメイントランザクションの直後にコミットします。final voidsetTargetConnectionFactory(jakarta.jms.ConnectionFactory targetConnectionFactory) この ConnectionFactory が委譲するターゲット ConnectionFactory を設定します。
コンストラクターの詳細
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.ConnectionFactoryのcreateConnection - 例外:
jakarta.jms.JMSException
createConnection
createQueueConnection
public jakarta.jms.QueueConnection createQueueConnection() throws jakarta.jms.JMSException- 次で指定:
- インターフェース
jakarta.jms.QueueConnectionFactoryのcreateQueueConnection - 例外:
jakarta.jms.JMSException
createQueueConnection
createTopicConnection
public jakarta.jms.TopicConnection createTopicConnection() throws jakarta.jms.JMSException- 次で指定:
- インターフェース
jakarta.jms.TopicConnectionFactoryのcreateTopicConnection - 例外:
jakarta.jms.JMSException
createTopicConnection
createContext
public jakarta.jms.JMSContext createContext()- 次で指定:
- インターフェース
jakarta.jms.ConnectionFactoryのcreateContext
createContext
createContext
createContext
public jakarta.jms.JMSContext createContext(int sessionMode) - 次で指定:
- インターフェース
jakarta.jms.ConnectionFactoryのcreateContext
getTransactionAwareConnectionProxy
protected jakarta.jms.Connection getTransactionAwareConnectionProxy(jakarta.jms.Connection target) すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、トランザクション対応の方法でセッションのルックアップを処理します。- パラメーター:
target- ラップする元の接続- 戻り値:
- ラップされた接続