public class SingleConnectionFactory extends ObjectSE implements ConnectionFactoryEE, QueueConnectionFactoryEE, TopicConnectionFactoryEE, ExceptionListenerEE, InitializingBean, DisposableBean
createConnection()
呼び出しから同じ接続を返し、Connection.close()
EE への呼び出しを無視する JMS ConnectionFactory アダプター。JMS 接続モデルによると、これは完全にスレッドセーフです(JDBC などとは対照的)。例外が発生した場合、共有接続を自動的に回復できます。特定の JMS 接続を直接渡すか、このファクトリに特定のターゲット ConnectionFactory を介して遅延接続を作成させることができます。このファクトリは通常、JMS 1.1 と JMS 1.0.2 API で動作します。
JMS 1.0.2 API を使用する場合、この ConnectionFactory は実行時に使用される JMS API メソッドに従ってキュー / トピックモードに切り替わります。それぞれ createQueueConnection
および createTopicConnection
はキュー / トピックモードになります。一般的な createConnection
呼び出しは、両方のモードを提供できる JMS 1.1 接続につながります。
Spring Framework 5 の時点で、このクラスは JMS 2.0 JMSContext
呼び出しをサポートしているため、実行時に JMS 2.0 API が存在する必要があります。それでも、アプリケーションのセットアップによって実際の JMS 2.0 呼び出しがトリガーされない限り、JMS 1.1 ドライバー(JMS 2.0 API にバインドされている)に対して実行できます。
複数の JmsTemplate
呼び出しに同じ接続を使用し続け、そに ConnectionFactory をプールすることなく、テスト環境およびスタンドアロン環境で役立ちます。これは、トランザクションを同時に実行している場合でも、任意の数のトランザクションにまたがることがあります。
Spring のメッセージリスナーコンテナーは、各リスナーコンテナーインスタンス内での共有接続の使用をサポートすることに注意してください。SingleConnectionFactory を組み合わせて使用することは、 複数のリスナーコンテナー間で単一の JMS 接続を共有する場合にのみ意味があります。
JmsTemplate
, SimpleMessageListenerContainer
, DefaultMessageListenerContainer.setCacheLevel(int)
コンストラクターと説明 |
---|
SingleConnectionFactory() Bean スタイルの使用のために新しい SingleConnectionFactory を作成します。 |
SingleConnectionFactory(ConnectionEE targetConnection) 指定された接続を常に返す新しい SingleConnectionFactory を作成します。 |
SingleConnectionFactory(ConnectionFactoryEE targetConnectionFactory) 指定されたターゲット ConnectionFactory を介して遅延して作成される単一の接続を常に返す新しい SingleConnectionFactory を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() 接続または ConnectionFactory が設定されていることを確認します。 |
protected void | closeConnection(ConnectionEE con) 指定された接続を閉じます。 |
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) |
protected SessionEE | createSession(ConnectionEE con, IntegerSE mode) この ConnectionFactory のデフォルトセッションを作成し、必要に応じて JMS 1.0.2 スタイルのキュー / トピックモードに適応させます。 |
TopicConnectionEE | createTopicConnection() |
TopicConnectionEE | createTopicConnection(StringSE username, StringSE password) |
void | destroy() 基になる共有接続を閉じます。 |
protected ConnectionEE | doCreateConnection() このテンプレートの ConnectionFactory を介して JMS 接続を作成します。 |
protected StringSE | getClientId() この ConnectionFactory によって作成および公開された単一の接続の JMS クライアント ID を返します(ある場合)。 |
protected ConnectionEE | getConnection() 初期化された共有接続を取得します。 |
protected ExceptionListenerEE | getExceptionListener() このファクトリによって作成された単一の接続に登録する必要がある JMS ExceptionListener 実装を返します(ある場合)。 |
protected SessionEE | getSession(ConnectionEE con, IntegerSE mode) (キャッシュされる可能性のある)セッションを取得するためのテンプレートメソッド。 |
protected ConnectionEE | getSharedConnectionProxy(ConnectionEE target) すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、クローズ呼び出しを抑制します。 |
ConnectionFactoryEE | getTargetConnectionFactory() 存在する場合、単一の接続を遅延して作成するために使用されるターゲット ConnectionFactory を返します。 |
void | initConnection() 基になる共有接続を初期化します。 |
protected boolean | isReconnectOnException() 基本となる接続によって JMSException が報告されたときに、単一の接続を更新する必要があるかどうかを返します。 |
void | onException(JMSExceptionEE ex) 基になる単一の接続を更新する例外リスナーコールバック。 |
protected void | prepareConnection(ConnectionEE con) 公開する前に、所定の接続を準備します。 |
void | resetConnection() 基礎となる共有接続をリセットして、次のアクセスで再初期化します。 |
void | setClientId(StringSE clientId) この ConnectionFactory によって作成および公開された単一の接続の JMS クライアント ID を指定します。 |
void | setExceptionListener(ExceptionListenerEE exceptionListener) このファクトリによって作成された単一の接続に登録する必要がある JMS ExceptionListener 実装を指定します。 |
void | setReconnectOnException(boolean reconnectOnException) 基礎となる接続によって JMSException が報告されたときに、単一の接続をリセットする(後で更新する)かどうかを指定します。 |
void | setTargetConnectionFactory(ConnectionFactoryEE targetConnectionFactory) 単一の接続を遅延して作成するために使用されるターゲット ConnectionFactory を設定します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
protected final Log logger
public SingleConnectionFactory()
public SingleConnectionFactory(ConnectionEE targetConnection)
targetConnection
- 単一の接続 public SingleConnectionFactory(ConnectionFactoryEE targetConnectionFactory)
targetConnectionFactory
- ターゲット ConnectionFactorypublic void setTargetConnectionFactory(@Nullable ConnectionFactoryEE targetConnectionFactory)
@Nullable public ConnectionFactoryEE getTargetConnectionFactory()
public void setClientId(@Nullable StringSE clientId)
クライアント ID は、基盤となる JMS プロバイダーのすべてのアクティブな接続間で一意である必要があることに注意してください。さらに、クライアント ID は、元の ConnectionFactory がまだ割り当てていない場合にのみ割り当てることができます。
@Nullable protected StringSE getClientId()
public void setExceptionListener(@Nullable ExceptionListenerEE exceptionListener)
@Nullable protected ExceptionListenerEE getExceptionListener()
public void setReconnectOnException(boolean reconnectOnException)
デフォルトは "false" です。JMS プロバイダーの例外通知に基づいてリカバリを自動的にトリガーするには、これを "true" に切り替えます。
内部的には、これにより、特別な JMS ExceptionListener(この SingleConnectionFactory 自体)が基礎となる接続に登録されます。これは、必要に応じて、ユーザー指定の ExceptionListener と組み合わせることもできます。
protected boolean isReconnectOnException()
public void afterPropertiesSet()
InitializingBean
の afterPropertiesSet
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 getConnection() throws JMSExceptionEE
null
)JMSExceptionEE
- JMS API メソッドによってスローされた場合 initConnection()
public void initConnection() throws JMSExceptionEE
基礎となる接続がすでに存在する場合は、接続を閉じて再初期化します。
JMSExceptionEE
- JMS API メソッドによってスローされた場合 prepareConnection(javax.jms.Connection)
public void onException(JMSExceptionEE ex)
ExceptionListenerEE
の onExceptionEE
resetConnection()
public void destroy()
この Bean は DisposableBean を実装しているため、Bean ファクトリは、キャッシュされたシングルトンの破棄時にこれを自動的に呼び出します。
DisposableBean
の destroy
resetConnection()
public void resetConnection()
protected ConnectionEE doCreateConnection() throws JMSExceptionEE
JMSExceptionEE
- JMS API メソッドによってスローされた場合 protected void prepareConnection(ConnectionEE con) throws JMSExceptionEE
デフォルトの実装では、ExceptionListener とクライアント ID が適用されます。サブクラスでオーバーライドできます。
con
- 準備する接続 JMSExceptionEE
- JMS API メソッドによってスローされた場合 setExceptionListener(javax.jms.ExceptionListener)
, setReconnectOnException(boolean)
@Nullable protected SessionEE getSession(ConnectionEE con, IntegerSE mode) throws JMSExceptionEE
デフォルトの実装は常に null
を返します。サブクラスは、特定のセッションハンドルを公開するためにこれをオーバーライドし、ラップされてここから返される生のセッションオブジェクトの作成のために createSession(javax.jms.Connection, java.lang.Integer)
に委譲する場合があります。
con
- 操作する JMS 接続 mode
- セッション確認モード (Session.TRANSACTED
または共通モードの 1 つ)null
は生の標準セッションの作成を示します JMSExceptionEE
- JMS API によってスローされた場合 protected SessionEE createSession(ConnectionEE con, IntegerSE mode) throws JMSExceptionEE
con
- 操作する JMS 接続 mode
- セッション確認モード (Session.TRANSACTED
または共通モードの 1 つ)JMSExceptionEE
- JMS API によってスローされた場合 protected void closeConnection(ConnectionEE con)
con
- 閉じる接続 protected ConnectionEE getSharedConnectionProxy(ConnectionEE target)
target
- ラップする元の接続