public class TransactionAwareConnectionFactoryProxy extends ObjectSE implements ConnectionFactoryEE, QueueConnectionFactoryEE, TopicConnectionFactoryEE
ConnectionFactory
EE のプロキシ。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, waitSE
public 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
JMSExceptionEE
public ConnectionEE createConnection(StringSE username, StringSE password) throws JMSExceptionEE
ConnectionFactoryEE
の createConnectionEE
JMSExceptionEE
public QueueConnectionEE createQueueConnection() throws JMSExceptionEE
QueueConnectionFactoryEE
の createQueueConnectionEE
JMSExceptionEE
public QueueConnectionEE createQueueConnection(StringSE username, StringSE password) throws JMSExceptionEE
QueueConnectionFactoryEE
の createQueueConnectionEE
JMSExceptionEE
public TopicConnectionEE createTopicConnection() throws JMSExceptionEE
TopicConnectionFactoryEE
の createTopicConnectionEE
JMSExceptionEE
public TopicConnectionEE createTopicConnection(StringSE username, StringSE password) throws JMSExceptionEE
TopicConnectionFactoryEE
の createTopicConnectionEE
JMSExceptionEE
public 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
- ラップする元の接続