クラス SingleConnectionFactory

java.lang.ObjectSE
org.springframework.jms.connection.SingleConnectionFactory
実装されたすべてのインターフェース:
ConnectionFactoryEEExceptionListenerEEQueueConnectionFactoryEETopicConnectionFactoryEEDisposableBeanInitializingBeanLifecycle
既知の直属サブクラス
CachingConnectionFactory

すべての 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 接続共有する場合にのみ意味があります。

導入:
1.1
作成者:
Juergen Hoeller, Mark Pollack
関連事項:
  • フィールドの詳細

    • logger

      protected final Log logger
  • コンストラクターの詳細

    • SingleConnectionFactory

      public SingleConnectionFactory()
      Bean スタイルの使用のために新しい SingleConnectionFactory を作成します。
      関連事項:
    • SingleConnectionFactory

      public SingleConnectionFactory(ConnectionEE targetConnection)
      指定された接続を常に返す新しい SingleConnectionFactory を作成します。
      パラメーター:
      targetConnection - 単一の接続
    • SingleConnectionFactory

      public SingleConnectionFactory(ConnectionFactoryEE targetConnectionFactory)
      指定されたターゲット ConnectionFactory を介して遅延して作成される単一の接続を常に返す新しい SingleConnectionFactory を作成します。
      パラメーター:
      targetConnectionFactory - ターゲット ConnectionFactory
  • メソッドの詳細

    • setTargetConnectionFactory

      public void setTargetConnectionFactory(@Nullable ConnectionFactoryEE targetConnectionFactory)
      単一の接続を遅延して作成するために使用されるターゲット ConnectionFactory を設定します。
    • getTargetConnectionFactory

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

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

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

      関連事項:
    • getClientId

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

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

      @Nullable protected ExceptionListenerEE 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 ConnectionEE createConnection() throws JMSExceptionEE
      次で指定:
      インターフェース ConnectionFactoryEEcreateConnectionEE 
      例外:
      JMSExceptionEE
    • createConnection

      public ConnectionEE createConnection(StringSE username, StringSE password) throws JMSExceptionEE
      次で指定:
      インターフェース ConnectionFactoryEEcreateConnectionEE 
      例外:
      JMSExceptionEE
    • createQueueConnection

      public QueueConnectionEE createQueueConnection() throws JMSExceptionEE
      次で指定:
      インターフェース QueueConnectionFactoryEEcreateQueueConnectionEE 
      例外:
      JMSExceptionEE
    • createQueueConnection

      public QueueConnectionEE createQueueConnection(StringSE username, StringSE password) throws JMSExceptionEE
      次で指定:
      インターフェース QueueConnectionFactoryEEcreateQueueConnectionEE 
      例外:
      JMSExceptionEE
    • createTopicConnection

      public TopicConnectionEE createTopicConnection() throws JMSExceptionEE
      次で指定:
      インターフェース TopicConnectionFactoryEEcreateTopicConnectionEE 
      例外:
      JMSExceptionEE
    • createTopicConnection

      public TopicConnectionEE createTopicConnection(StringSE username, StringSE password) throws JMSExceptionEE
      次で指定:
      インターフェース TopicConnectionFactoryEEcreateTopicConnectionEE 
      例外:
      JMSExceptionEE
    • createContext

      public JMSContextEE createContext()
      次で指定:
      インターフェース ConnectionFactoryEEcreateContextEE 
    • createContext

      public JMSContextEE createContext(StringSE userName, StringSE password)
      次で指定:
      インターフェース ConnectionFactoryEEcreateContextEE 
    • createContext

      public JMSContextEE createContext(StringSE userName, StringSE password, int sessionMode)
      次で指定:
      インターフェース ConnectionFactoryEEcreateContextEE 
    • createContext

      public JMSContextEE createContext(int sessionMode)
      次で指定:
      インターフェース ConnectionFactoryEEcreateContextEE 
    • getConnection

      protected ConnectionEE getConnection() throws JMSExceptionEE
      初期化された共有接続を取得します。
      戻り値:
      接続 (非 null)
      例外:
      JMSExceptionEE - JMS API メソッドによってスローされた場合
      関連事項:
    • onException

      public void onException(JMSExceptionEE ex)
      基になる単一の接続を更新する例外リスナーコールバック。
      次で指定:
      インターフェース ExceptionListenerEEonExceptionEE 
      関連事項:
    • 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 JMSExceptionEE
      基になる共有接続を初期化します。

      基礎となる接続がすでに存在する場合は、接続を閉じて再初期化します。

      例外:
      JMSExceptionEE - JMS API メソッドによってスローされた場合
      関連事項:
    • doCreateConnection

      protected ConnectionEE doCreateConnection() throws JMSExceptionEE
      このテンプレートの ConnectionFactory を介して JMS 接続を作成します。
      戻り値:
      新しい JMS 接続
      例外:
      JMSExceptionEE - JMS API メソッドによってスローされた場合
    • prepareConnection

      protected void prepareConnection(ConnectionEE con) throws JMSExceptionEE
      公開する前に、所定の接続を準備します。

      デフォルトの実装では、ExceptionListener とクライアント ID が適用されます。サブクラスでオーバーライドできます。

      パラメーター:
      con - 準備する接続
      例外:
      JMSExceptionEE - JMS API メソッドによってスローされた場合
      関連事項:
    • getSession

      @Nullable protected SessionEE getSession(ConnectionEE con, IntegerSE mode) throws JMSExceptionEE
      (キャッシュされる可能性のある)セッションを取得するためのテンプレートメソッド。

      デフォルトの実装は常に null を返します。サブクラスは、特定のセッションハンドルを公開するためにこれをオーバーライドし、ラップされてここから返される生のセッションオブジェクトの作成のために createSession(jakarta.jms.Connection, java.lang.Integer) に委譲する場合があります。

      パラメーター:
      con - 操作する JMS 接続
      mode - セッション確認モード (Session.TRANSACTED または共通モードの 1 つ)
      戻り値:
      使用するセッション、または null は生の標準セッションの作成を示します
      例外:
      JMSExceptionEE - JMS API によってスローされた場合
    • createSession

      protected SessionEE createSession(ConnectionEE con, IntegerSE mode) throws JMSExceptionEE
      この ConnectionFactory のデフォルトセッションを作成し、必要に応じて JMS 1.0.2 スタイルのキュー / トピックモードに適応させます。
      パラメーター:
      con - 操作する JMS 接続
      mode - セッション確認モード (Session.TRANSACTED または共通モードの 1 つ)
      戻り値:
      新しく作成されたセッション
      例外:
      JMSExceptionEE - JMS API によってスローされた場合
    • resetConnection

      public void resetConnection()
      基礎となる共有接続をリセットして、次のアクセスで再初期化します。
      関連事項:
    • closeConnection

      protected void closeConnection(ConnectionEE con)
      指定された接続を閉じます。
      パラメーター:
      con - 閉じる接続
    • getSharedConnectionProxy

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