クラス SingleConnectionFactory

java.lang.ObjectSE
org.springframework.jms.connection.SingleConnectionFactory
実装されているすべてのインターフェース:
jakarta.jms.ConnectionFactory, jakarta.jms.ExceptionListener, jakarta.jms.QueueConnectionFactory, jakarta.jms.TopicConnectionFactory, DisposableBean, InitializingBean, Lifecycle
既知の直属サブクラス
CachingConnectionFactory

public class SingleConnectionFactory extends ObjectSE implements jakarta.jms.ConnectionFactory, jakarta.jms.QueueConnectionFactory, jakarta.jms.TopicConnectionFactory, jakarta.jms.ExceptionListener, InitializingBean, DisposableBean, Lifecycle
すべての 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
関連事項:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected final org.apache.commons.logging.Log
  • コンストラクターの概要

    コンストラクター
    コンストラクター
    説明
    Bean スタイルの使用のために新しい SingleConnectionFactory を作成します。
    SingleConnectionFactory(jakarta.jms.Connection targetConnection)
    指定された接続を常に返す新しい SingleConnectionFactory を作成します。
    SingleConnectionFactory(jakarta.jms.ConnectionFactory targetConnectionFactory)
    指定されたターゲット ConnectionFactory を介して遅延して作成される単一の接続を常に返す新しい SingleConnectionFactory を作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    接続または ConnectionFactory が設定されていることを確認します。
    protected void
    closeConnection(jakarta.jms.Connection con)
    指定された接続を閉じます。
    jakarta.jms.Connection
    jakarta.jms.Connection
    createConnection(StringSE username, StringSE password)
    jakarta.jms.JMSContext
    jakarta.jms.JMSContext
    createContext(int sessionMode)
    jakarta.jms.JMSContext
    createContext(StringSE userName, StringSE password)
    jakarta.jms.JMSContext
    createContext(StringSE userName, StringSE password, int sessionMode)
    jakarta.jms.QueueConnection
    jakarta.jms.QueueConnection
    protected jakarta.jms.Session
    createSession(jakarta.jms.Connection con, IntegerSE mode)
    この ConnectionFactory のデフォルトセッションを作成し、必要に応じて JMS 1.0.2 スタイルのキュー / トピックモードに適応させます。
    jakarta.jms.TopicConnection
    jakarta.jms.TopicConnection
    void
    基になる共有接続を閉じます。
    protected jakarta.jms.Connection
    このテンプレートの ConnectionFactory を介して JMS 接続を作成します。
    この ConnectionFactory によって作成および公開された単一の接続の JMS クライアント ID を返します(ある場合)。
    protected jakarta.jms.Connection
    初期化された共有接続を取得します。
    protected @Nullable jakarta.jms.ExceptionListener
    このファクトリによって作成された単一の接続に登録する必要がある JMS ExceptionListener 実装を返します(ある場合)。
    protected @Nullable jakarta.jms.Session
    getSession(jakarta.jms.Connection con, IntegerSE mode)
    (キャッシュされる可能性のある)セッションを取得するためのテンプレートメソッド。
    protected jakarta.jms.Connection
    getSharedConnectionProxy(jakarta.jms.Connection target)
    すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、クローズ呼び出しを抑制します。
    @Nullable jakarta.jms.ConnectionFactory
    存在する場合、単一の接続を遅延して作成するために使用されるターゲット ConnectionFactory を返します。
    void
    基になる共有接続を初期化します。
    protected boolean
    基本となる接続によって JMSException が報告されたときに、単一の接続を更新する必要があるかどうかを返します。
    boolean
    現在基礎となる接続があるかどうかを確認します。
    void
    onException(jakarta.jms.JMSException ex)
    基になる単一の接続を更新する例外リスナーコールバック。
    protected void
    prepareConnection(jakarta.jms.Connection con)
    公開する前に、所定の接続を準備します。
    void
    基礎となる共有接続をリセットして、次のアクセスで再初期化します。
    void
    この ConnectionFactory によって作成および公開された単一の接続の JMS クライアント ID を指定します。
    void
    setExceptionListener(@Nullable jakarta.jms.ExceptionListener exceptionListener)
    このファクトリによって作成された単一の接続に登録する必要がある JMS ExceptionListener 実装を指定します。
    void
    setReconnectOnException(boolean reconnectOnException)
    基礎となる接続によって JMSException が報告されたときに、単一の接続をリセットする(後で更新する)かどうかを指定します。
    void
    setTargetConnectionFactory(@Nullable jakarta.jms.ConnectionFactory targetConnectionFactory)
    単一の接続を遅延して作成するために使用されるターゲット ConnectionFactory を設定します。
    void
    開始時に基礎となる共有接続を初期化します。
    void
    停止時に基礎となる共有接続をリセットします。

    クラス ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

    • 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

      public @Nullable jakarta.jms.ConnectionFactory getTargetConnectionFactory()
      存在する場合、単一の接続を遅延して作成するために使用されるターゲット ConnectionFactory を返します。
    • setClientId

      public void setClientId(@Nullable StringSE clientId)
      この ConnectionFactory によって作成および公開された単一の接続の JMS クライアント ID を指定します。

      クライアント ID は、基盤となる JMS プロバイダーのすべてのアクティブな接続間で一意である必要があることに注意してください。さらに、クライアント ID は、元の ConnectionFactory がまだ割り当てていない場合にのみ割り当てることができます。

      関連事項:
    • getClientId

      protected @Nullable StringSE getClientId()
      この ConnectionFactory によって作成および公開された単一の接続の JMS クライアント ID を返します(ある場合)。
    • setExceptionListener

      public void setExceptionListener(@Nullable jakarta.jms.ExceptionListener exceptionListener)
      このファクトリによって作成された単一の接続に登録する必要がある JMS ExceptionListener 実装を指定します。
      関連事項:
    • getExceptionListener

      protected @Nullable jakarta.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 が設定されていることを確認します。
      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
    • createConnection

      public jakarta.jms.Connection createConnection() throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateConnection 
      例外:
      jakarta.jms.JMSException
    • createConnection

      public jakarta.jms.Connection createConnection(StringSE username, StringSE password) throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateConnection 
      例外:
      jakarta.jms.JMSException
    • createQueueConnection

      public jakarta.jms.QueueConnection createQueueConnection() throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.QueueConnectionFactorycreateQueueConnection 
      例外:
      jakarta.jms.JMSException
    • createQueueConnection

      public jakarta.jms.QueueConnection createQueueConnection(StringSE username, StringSE password) throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.QueueConnectionFactorycreateQueueConnection 
      例外:
      jakarta.jms.JMSException
    • createTopicConnection

      public jakarta.jms.TopicConnection createTopicConnection() throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.TopicConnectionFactorycreateTopicConnection 
      例外:
      jakarta.jms.JMSException
    • createTopicConnection

      public jakarta.jms.TopicConnection createTopicConnection(StringSE username, StringSE password) throws jakarta.jms.JMSException
      次で指定:
      インターフェース jakarta.jms.TopicConnectionFactorycreateTopicConnection 
      例外:
      jakarta.jms.JMSException
    • createContext

      public jakarta.jms.JMSContext createContext()
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateContext 
    • createContext

      public jakarta.jms.JMSContext createContext(StringSE userName, StringSE password)
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateContext 
    • createContext

      public jakarta.jms.JMSContext createContext(StringSE userName, StringSE password, int sessionMode)
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateContext 
    • createContext

      public jakarta.jms.JMSContext createContext(int sessionMode)
      次で指定:
      インターフェース jakarta.jms.ConnectionFactorycreateContext 
    • 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.ExceptionListeneronException 
      関連事項:
    • destroy

      public void destroy()
      基になる共有接続を閉じます。この ConnectionFactory のプロバイダーは、適切なシャットダウンを行う必要があります。

      この Bean は DisposableBean を実装しているため、Bean ファクトリは、キャッシュされたシングルトンの破棄時にこれを自動的に呼び出します。

      次で指定:
      インターフェース DisposableBeandestroy 
      関連事項:
    • start

      public void start()
      開始時に基礎となる共有接続を初期化します。
      次で指定:
      インターフェース Lifecyclestart 
      導入:
      6.1
      関連事項:
    • stop

      public void stop()
      停止時に基礎となる共有接続をリセットします。
      次で指定:
      インターフェース Lifecyclestop 
      導入:
      6.1
      関連事項:
    • isRunning

      public boolean isRunning()
      現在基礎となる接続があるかどうかを確認します。
      次で指定:
      インターフェース LifecycleisRunning 
      戻り値:
      コンポーネントが現在実行中かどうか
      導入:
      6.1
      関連事項:
    • 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 - 閉じる接続
    • getSharedConnectionProxy

      protected jakarta.jms.Connection getSharedConnectionProxy(jakarta.jms.Connection target)
      すべてのメソッド呼び出しを委譲するプロキシを使用して、指定された接続をラップしますが、クローズ呼び出しを抑制します。これは、JMS ConnectionFactory からの通常の接続と同じように、アプリケーションコードが特別なフレームワーク接続を処理できるようにできます。
      パラメーター:
      target - ラップする元の接続
      戻り値:
      ラップされた接続