クラス SingleConnectionFactory
- 実装されているすべてのインターフェース:
jakarta.jms.ConnectionFactory, jakarta.jms.ExceptionListener, jakarta.jms.QueueConnectionFactory, jakarta.jms.TopicConnectionFactory, DisposableBean, InitializingBean, Lifecycle
- 既知の直属サブクラス
CachingConnectionFactory
createConnection() 呼び出しから同じ Connection を返し、Connection.close() 呼び出しを無視する JMS ConnectionFactory アダプター。JMS Connection モデルによれば、これは完全にスレッドセーフです(たとえば JDBC とは対照的です)。共有 Connection は、例外が発生した場合に自動的に回復されます。特定の 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 接続を共有する場合にのみ意味があります。
- 導入:
- 1.1
- 作成者:
- Juergen Hoeller, Mark Pollack
- 関連事項:
フィールドのサマリー
フィールドコンストラクターの概要
コンストラクターコンストラクター説明Bean スタイルの使用のために新しい SingleConnectionFactory を作成します。SingleConnectionFactory(jakarta.jms.Connection targetConnection) 指定された接続を常に返す新しい SingleConnectionFactory を作成します。SingleConnectionFactory(jakarta.jms.ConnectionFactory targetConnectionFactory) 指定されたターゲット ConnectionFactory を介して遅延して作成される単一の接続を常に返す新しい SingleConnectionFactory を作成します。メソッドのサマリー
修飾子と型メソッド説明void接続または ConnectionFactory が設定されていることを確認します。protected voidcloseConnection(jakarta.jms.Connection con) 指定された接続を閉じます。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) protected jakarta.jms.SessioncreateSession(jakarta.jms.Connection con, IntegerSE mode) この ConnectionFactory のデフォルトセッションを作成し、必要に応じて JMS 1.0.2 スタイルのキュー / トピックモードに適応させます。jakarta.jms.TopicConnectionjakarta.jms.TopicConnectioncreateTopicConnection(StringSE username, StringSE password) voiddestroy()基になる共有接続を閉じます。protected jakarta.jms.Connectionこのテンプレートの ConnectionFactory を介して JMS 接続を作成します。この ConnectionFactory によって作成および公開された単一の接続の JMS クライアント ID を返します(ある場合)。protected jakarta.jms.Connection初期化された共有接続を取得します。protected @Nullable jakarta.jms.ExceptionListenerこのファクトリによって作成された単一の接続に登録する必要がある JMS ExceptionListener 実装を返します(ある場合)。protected @Nullable jakarta.jms.SessiongetSession(jakarta.jms.Connection con, IntegerSE mode) (キャッシュされる可能性のある)セッションを取得するためのテンプレートメソッド。protected jakarta.jms.ConnectiongetSharedConnectionProxy(jakarta.jms.Connection target) すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、クローズ呼び出しを抑制します。@Nullable jakarta.jms.ConnectionFactory存在する場合、単一の接続を遅延して作成するために使用されるターゲット ConnectionFactory を返します。void基になる共有接続を初期化します。protected boolean基本となる接続によって JMSException が報告されたときに、単一の接続を更新する必要があるかどうかを返します。boolean現在基礎となる接続があるかどうかを確認します。voidonException(jakarta.jms.JMSException ex) 基になる単一の接続を更新する例外リスナーコールバック。protected voidprepareConnection(jakarta.jms.Connection con) 公開する前に、所定の接続を準備します。void基礎となる共有接続をリセットして、次のアクセスで再初期化します。voidsetClientId(@Nullable StringSE clientId) この ConnectionFactory によって作成および公開された単一の接続の JMS クライアント ID を指定します。voidsetExceptionListener(@Nullable jakarta.jms.ExceptionListener exceptionListener) このファクトリによって作成された単一の接続に登録する必要がある JMS ExceptionListener 実装を指定します。voidsetReconnectOnException(boolean reconnectOnException) 基礎となる接続によって JMSException が報告されたときに、単一の接続をリセットする(後で更新する)かどうかを指定します。voidsetTargetConnectionFactory(@Nullable jakarta.jms.ConnectionFactory targetConnectionFactory) 単一の接続を遅延して作成するために使用されるターゲット ConnectionFactory を設定します。voidstart()開始時に基礎となる共有接続を初期化します。voidstop()停止時に基礎となる共有接続をリセットします。
フィールドの詳細
logger
protected final org.apache.commons.logging.Log logger
コンストラクターの詳細
SingleConnectionFactory
public SingleConnectionFactory()Bean スタイルの使用のために新しい SingleConnectionFactory を作成します。- 関連事項:
SingleConnectionFactory
public SingleConnectionFactory(jakarta.jms.Connection targetConnection) 指定された接続を常に返す新しい SingleConnectionFactory を作成します。- パラメーター:
targetConnection- 単一の接続
SingleConnectionFactory
public SingleConnectionFactory(jakarta.jms.ConnectionFactory targetConnectionFactory) 指定されたターゲット ConnectionFactory を介して遅延して作成される単一の接続を常に返す新しい SingleConnectionFactory を作成します。- パラメーター:
targetConnectionFactory- ターゲット ConnectionFactory
メソッドの詳細
setTargetConnectionFactory
public void setTargetConnectionFactory(@Nullable jakarta.jms.ConnectionFactory targetConnectionFactory) 単一の接続を遅延して作成するために使用されるターゲット ConnectionFactory を設定します。getTargetConnectionFactory
存在する場合、単一の接続を遅延して作成するために使用されるターゲット ConnectionFactory を返します。setClientId
getClientId
setExceptionListener
このファクトリによって作成された単一の接続に登録する必要がある JMS ExceptionListener 実装を指定します。- 関連事項:
getExceptionListener
このファクトリによって作成された単一の接続に登録する必要がある JMS ExceptionListener 実装を返します(ある場合)。setReconnectOnException
public void setReconnectOnException(boolean reconnectOnException) 基礎となる接続によって JMSException が報告されたときに、単一の接続をリセットする(後で更新する)かどうかを指定します。デフォルトは "false" です。JMS プロバイダーの例外通知に基づいてリカバリを自動的にトリガーするには、これを "true" に切り替えます。
内部的には、これにより、特別な JMS ExceptionListener(この SingleConnectionFactory 自体)が基礎となる接続に登録されます。これは、必要に応じて、ユーザー指定の ExceptionListener と組み合わせることもできます。
- 関連事項:
isReconnectOnException
protected boolean isReconnectOnException()基本となる接続によって JMSException が報告されたときに、単一の接続を更新する必要があるかどうかを返します。afterPropertiesSet
public void afterPropertiesSet()接続または ConnectionFactory が設定されていることを確認します。- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet
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
getConnection
protected jakarta.jms.Connection getConnection() throws jakarta.jms.JMSException初期化された共有接続を取得します。- 戻り値:
- 接続 (非
null) - 例外:
jakarta.jms.JMSException- JMS API メソッドによってスローされた場合- 関連事項:
onException
public void onException(jakarta.jms.JMSException ex) 基になる単一の接続を更新する例外リスナーコールバック。- 次で指定:
- インターフェース
jakarta.jms.ExceptionListenerのonException - 関連事項:
destroy
public void destroy()基になる共有接続を閉じます。この ConnectionFactory のプロバイダーは、適切なシャットダウンを行う必要があります。この Bean は DisposableBean を実装しているため、Bean ファクトリは、キャッシュされたシングルトンの破棄時にこれを自動的に呼び出します。
- 次で指定:
- インターフェース
DisposableBeanのdestroy - 関連事項:
start
stop
isRunning
initConnection
public void initConnection() throws jakarta.jms.JMSException基になる共有接続を初期化します。基礎となる接続がすでに存在する場合は、接続を閉じて再初期化します。
- 例外:
jakarta.jms.JMSException- JMS API メソッドによってスローされた場合- 関連事項:
doCreateConnection
protected jakarta.jms.Connection doCreateConnection() throws jakarta.jms.JMSExceptionこのテンプレートの ConnectionFactory を介して JMS 接続を作成します。- 戻り値:
- 新しい JMS 接続
- 例外:
jakarta.jms.JMSException- JMS API メソッドによってスローされた場合
prepareConnection
protected void prepareConnection(jakarta.jms.Connection con) throws jakarta.jms.JMSException 公開する前に、所定の接続を準備します。デフォルトの実装では、ExceptionListener とクライアント ID が適用されます。サブクラスでオーバーライドできます。
- パラメーター:
con- 準備する接続- 例外:
jakarta.jms.JMSException- JMS API メソッドによってスローされた場合- 関連事項:
getSession
protected @Nullable jakarta.jms.Session getSession(jakarta.jms.Connection con, IntegerSE mode) throws jakarta.jms.JMSException (キャッシュされる可能性のある)セッションを取得するためのテンプレートメソッド。デフォルトの実装は常に
nullを返します。サブクラスは、特定のセッションハンドルを公開するためにこれをオーバーライドし、ラップされてここから返される生のセッションオブジェクトの作成のためにcreateSession(Connection, Integer)に委譲する場合があります。- パラメーター:
con- 操作する JMS 接続mode- セッション確認モード (Session.TRANSACTEDまたは共通モードの 1 つ)- 戻り値:
- 使用するセッション、または
nullは生の標準セッションの作成を示します - 例外:
jakarta.jms.JMSException- JMS API によってスローされた場合
createSession
protected jakarta.jms.Session createSession(jakarta.jms.Connection con, IntegerSE mode) throws jakarta.jms.JMSException この ConnectionFactory のデフォルトセッションを作成し、必要に応じて JMS 1.0.2 スタイルのキュー / トピックモードに適応させます。- パラメーター:
con- 操作する JMS 接続mode- セッション確認モード (Session.TRANSACTEDまたは共通モードの 1 つ)- 戻り値:
- 新しく作成されたセッション
- 例外:
jakarta.jms.JMSException- JMS API によってスローされた場合
resetConnection
public void resetConnection()基礎となる共有接続をリセットして、次のアクセスで再初期化します。- 関連事項:
closeConnection
protected void closeConnection(jakarta.jms.Connection con) 指定された接続を閉じます。- パラメーター:
con- 閉じる接続