クラス CachingConnectionFactory
- 実装されたすべてのインターフェース:
ConnectionFactoryEE
、ExceptionListenerEE
、QueueConnectionFactoryEE
、TopicConnectionFactoryEE
、DisposableBean
、InitializingBean
、Lifecycle
Session
EE キャッシングと MessageProducer
EE および MessageConsumer
EE キャッシングを追加する SingleConnectionFactory
サブクラス。この ConnectionFactory は、デフォルトで "reconnectOnException" property
を "true" に切り替え、基礎となる接続の自動回復を可能にします。 デフォルトでは、単一のセッションのみがキャッシュされ、リクエストされたセッションがさらに作成されてオンデマンドで破棄されます。同時実行性の高い環境の場合は、"sessionCacheSize" value
を上げることを検討してください。
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 にバインドされている)に対して実行できます。
注: この ConnectionFactory では、共有接続から取得したすべてのセッションを明示的に閉じる必要があります。これはネイティブ JMS アクセスコードの通常の推奨事項です。ただし、この ConnectionFactory では、セッションの再利用を実際に許可するために、その使用が必須です。
キャッシュされたセッションから取得された MessageConsumers は、セッションが最終的にプールから削除されるまで閉じられないことにも注意してください。これにより、意味上の副作用が発生する場合があります。永続サブスクライバーの場合、論理 Session.close()
呼び出しもサブスクリプションを閉じます。同じセッションハンドルで同じサブスクリプションの恒久コンシューマーを再登録することはサポートされていません。まず、キャッシュされたセッションを閉じて再取得します。
最後になりましたが、一時キューとトピックの MessageProducers と MessageConsumers(TemporaryQueue/TemporaryTopic)はキャッシュされません。残念ながら、WebLogic JMS は、通常の宛先実装に一時キュー / トピックインターフェースを実装しているため、宛先をキャッシュできないことを誤って示しています。WebLogic で別の接続プール / キャッシュを使用するか、WebLogic の目的でこのクラスをカスタマイズしてください。
- 導入:
- 2.5.3
- 作成者:
- Juergen Hoeller
- 関連事項:
フィールドサマリー
クラス org.springframework.jms.connection.SingleConnectionFactory から継承されたフィールド
logger
コンストラクターのサマリー
コンストラクター説明Bean スタイルの使用のために新しい CachingConnectionFactory を作成します。CachingConnectionFactory
(ConnectionFactoryEE targetConnectionFactory) 指定されたターゲット ConnectionFactory の新しい CachingConnectionFactory を作成します。メソッドのサマリー
修飾子と型メソッド説明int
現在のセッション数を返します。これは、この接続ファクトリによって現在キャッシュされているセッションの数を示します。protected SessionEE
getCachedSessionProxy
(SessionEE target, DequeSE<SessionEE> sessionList) 指定されたセッションを、すべてのメソッド呼び出しを委譲するがクローズ呼び出しを適応させるプロキシでラップします。protected SessionEE
getSession
(ConnectionEE con, IntegerSE mode) 指定されたモードのキャッシュされたセッションをチェックします。int
JMS セッションキャッシュに必要なサイズを返します(JMS セッション型ごと)。boolean
JMS セッションインスタンスごとに JMS MessageConsumers をキャッシュするかどうかを返します。boolean
JMS セッションインスタンスごとに JMS MessageProducers をキャッシュするかどうかを返します。void
セッションキャッシュもリセットします。void
setCacheConsumers
(boolean cacheConsumers) JMS セッションインスタンスごとに JMS MessageConsumers をキャッシュするかどうかを指定します(具体的には、宛先ごとに 1 つの MessageConsumer、セレクター文字列、セッション)。void
setCacheProducers
(boolean cacheProducers) JMS セッションインスタンスごとに JMS MessageProducers をキャッシュするかどうかを指定します(より具体的には、宛先とセッションごとに 1 つの MessageProducer)。void
setSessionCacheSize
(int sessionCacheSize) JMS セッションキャッシュに必要なサイズを指定します(JMS セッション型ごと)。クラス org.springframework.jms.connection.SingleConnectionFactory から継承されたメソッド
afterPropertiesSet, closeConnection, createConnection, createConnection, createContext, createContext, createContext, createContext, createQueueConnection, createQueueConnection, createSession, createTopicConnection, createTopicConnection, destroy, doCreateConnection, getClientId, getConnection, getExceptionListener, getSharedConnectionProxy, getTargetConnectionFactory, initConnection, isReconnectOnException, isRunning, onException, prepareConnection, setClientId, setExceptionListener, setReconnectOnException, setTargetConnectionFactory, start, stop
コンストラクターの詳細
CachingConnectionFactory
public CachingConnectionFactory()Bean スタイルの使用のために新しい CachingConnectionFactory を作成します。CachingConnectionFactory
指定されたターゲット ConnectionFactory の新しい CachingConnectionFactory を作成します。- パラメーター:
targetConnectionFactory
- ターゲット ConnectionFactory
メソッドの詳細
setSessionCacheSize
public void setSessionCacheSize(int sessionCacheSize) JMS セッションキャッシュに必要なサイズを指定します(JMS セッション型ごと)。このキャッシュサイズは、セッション確認応答型(auto、client、dups_ok、transacted)あたりのキャッシュされたセッション数の最大制限です。結果として、キャッシュされたセッションの実際の数は、指定された値の最大 4 倍になる可能性があります。異なる確認応答型を混合して一致させることはほとんどありません。
デフォルトは 1 です。: 単一のセッションをキャッシュし、必要に応じてさらにセッションを(再)作成します。キャッシュされたセッションの数を増やす場合は、10 などの数を指定します。ただし、同時実行性の低いシナリオでは 1 で十分な場合があります。
getSessionCacheSize
public int getSessionCacheSize()JMS セッションキャッシュに必要なサイズを返します(JMS セッション型ごと)。setCacheProducers
public void setCacheProducers(boolean cacheProducers) JMS セッションインスタンスごとに JMS MessageProducers をキャッシュするかどうかを指定します(より具体的には、宛先とセッションごとに 1 つの MessageProducer)。デフォルトは "true" です。常にオンデマンドで MessageProducers を再作成するには、これを "false" に切り替えます。
isCacheProducers
public boolean isCacheProducers()JMS セッションインスタンスごとに JMS MessageProducers をキャッシュするかどうかを返します。setCacheConsumers
public void setCacheConsumers(boolean cacheConsumers) JMS セッションインスタンスごとに JMS MessageConsumers をキャッシュするかどうかを指定します(具体的には、宛先ごとに 1 つの MessageConsumer、セレクター文字列、セッション)。永続サブスクライバーは、セッションハンドルが論理的に閉じるまでキャッシュされることに注意してください。デフォルトは "true" です。常にオンデマンドで MessageConsumers を再作成するには、これを "false" に切り替えます。
isCacheConsumers
public boolean isCacheConsumers()JMS セッションインスタンスごとに JMS MessageConsumers をキャッシュするかどうかを返します。getCachedSessionCount
public int getCachedSessionCount()現在のセッション数を返します。これは、この接続ファクトリによって現在キャッシュされているセッションの数を示します。- 導入:
- 5.3.7
resetConnection
public void resetConnection()セッションキャッシュもリセットします。getSession
指定されたモードのキャッシュされたセッションをチェックします。- オーバーライド:
- クラス
SingleConnectionFactory
のgetSession
- パラメーター:
con
- 操作する JMS 接続mode
- セッション確認モード (Session.TRANSACTED
または共通モードの 1 つ)- 戻り値:
- 使用するセッション、または
null
は生の標準セッションの作成を示します - 例外:
JMSExceptionEE
- JMS API によってスローされた場合
getCachedSessionProxy
指定されたセッションを、すべてのメソッド呼び出しを委譲するがクローズ呼び出しを適応させるプロキシでラップします。これは、アプリケーションコードが通常のセッションと同じように特別なフレームワークセッションを処理できるようにできます。- パラメーター:
target
- ラップする元のセッションsessionList
- 指定されたセッションが属するキャッシュされたセッションのリスト- 戻り値:
- ラップされたセッション