public class TransactionAwareConnectionFactoryProxy extends ObjectSE implements ConnectionFactoryEE, QueueConnectionFactoryEE, TopicConnectionFactoryEE
ConnectionFactoryEE のプロキシ。Spring 管理のトランザクションの認識を追加します。Java 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 にバインドされている)に対して実行できます。
UserCredentialsConnectionFactoryAdapter, SingleConnectionFactory| コンストラクターと説明 |
|---|
TransactionAwareConnectionFactoryProxy() 新しい TransactionAwareConnectionFactoryProxy を作成します。 |
TransactionAwareConnectionFactoryProxy(ConnectionFactoryEE targetConnectionFactory) 新しい TransactionAwareConnectionFactoryProxy を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
ConnectionEE | createConnection() |
ConnectionEE | createConnection(StringSE username, StringSE password) |
JMSContextEE | createContext() |
JMSContextEE | createContext(int sessionMode) |
JMSContextEE | createContext(StringSE userName, StringSE password) |
JMSContextEE | createContext(StringSE userName, StringSE password, int sessionMode) |
QueueConnectionEE | createQueueConnection() |
QueueConnectionEE | createQueueConnection(StringSE username, StringSE password) |
TopicConnectionEE | createTopicConnection() |
TopicConnectionEE | createTopicConnection(StringSE username, StringSE password) |
protected ConnectionFactoryEE | getTargetConnectionFactory() この ConnectionFactory が委譲するターゲット ConnectionFactory を返します。 |
protected ConnectionEE | getTransactionAwareConnectionProxy(ConnectionEE target) すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、トランザクション対応の方法でセッションのルックアップを処理します。 |
protected boolean | isSynchedLocalTransactionAllowed()Spring 管理のトランザクションと同期するローカル JMS トランザクションを許可するかどうかを返します。 |
void | setSynchedLocalTransactionAllowed(boolean synchedLocalTransactionAllowed)Spring 管理のトランザクション(メイントランザクションは特定の DataSource の JDBC ベースのトランザクションなど)と同期するローカル JMS トランザクションを許可するかどうかを設定します。JMS トランザクションはメイントランザクションの直後にコミットします。 |
void | setTargetConnectionFactory(ConnectionFactoryEE targetConnectionFactory) この ConnectionFactory が委譲するターゲット ConnectionFactory を設定します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic TransactionAwareConnectionFactoryProxy()
public TransactionAwareConnectionFactoryProxy(ConnectionFactoryEE targetConnectionFactory)
targetConnectionFactory - ターゲット ConnectionFactorypublic final void setTargetConnectionFactory(ConnectionFactoryEE targetConnectionFactory)
protected ConnectionFactoryEE getTargetConnectionFactory()
public void setSynchedLocalTransactionAllowed(boolean synchedLocalTransactionAllowed)
デフォルトは「false」: 基になる JMS ConnectionFactory を含むマネージトランザクション内にない場合、標準のセッションが返されます。このフラグをオンにすると、ローカル JMS トランザクションがメイントランザクションと同期され、Spring 管理のトランザクションに参加できるようになります。
protected boolean isSynchedLocalTransactionAllowed()
public ConnectionEE createConnection() throws JMSExceptionEE
ConnectionFactoryEE 内の createConnectionEE JMSExceptionEEpublic ConnectionEE createConnection(StringSE username, StringSE password) throws JMSExceptionEE
ConnectionFactoryEE 内の createConnectionEE JMSExceptionEEpublic QueueConnectionEE createQueueConnection() throws JMSExceptionEE
QueueConnectionFactoryEE 内の createQueueConnectionEE JMSExceptionEEpublic QueueConnectionEE createQueueConnection(StringSE username, StringSE password) throws JMSExceptionEE
QueueConnectionFactoryEE 内の createQueueConnectionEE JMSExceptionEEpublic TopicConnectionEE createTopicConnection() throws JMSExceptionEE
TopicConnectionFactoryEE 内の createTopicConnectionEE JMSExceptionEEpublic TopicConnectionEE createTopicConnection(StringSE username, StringSE password) throws JMSExceptionEE
TopicConnectionFactoryEE 内の createTopicConnectionEE JMSExceptionEEpublic JMSContextEE createContext()
ConnectionFactoryEE 内の createContextEE public JMSContextEE createContext(StringSE userName, StringSE password)
ConnectionFactoryEE 内の createContextEE public JMSContextEE createContext(StringSE userName, StringSE password, int sessionMode)
ConnectionFactoryEE 内の createContextEE public JMSContextEE createContext(int sessionMode)
ConnectionFactoryEE 内の createContextEE protected ConnectionEE getTransactionAwareConnectionProxy(ConnectionEE target)
target - ラップする元の接続