最新の安定バージョンについては、Spring Integration 7.0.4 を使用してください! |
FTP セッションキャッシング
Spring Integration 3.0 以降、セッションはデフォルトでキャッシュされなくなりました。cache-sessions 属性は、エンドポイントではサポートされなくなりました。セッションをキャッシュする場合は、CachingSessionFactory (次の例に示す)を使用する必要があります。 |
3.0 より前のバージョンでは、セッションはデフォルトで自動的にキャッシュされていました。cache-sessions 属性は自動キャッシュを無効にするために使用できましたが、そのソリューションは他のセッションキャッシュ属性を構成する方法を提供しませんでした。例: 作成されるセッションの数を制限できませんでした。その要件と他の構成オプションをサポートするために、CachingSessionFactory が追加されました。sessionCacheSize および sessionWaitTimeout プロパティを提供します。sessionCacheSize プロパティは、ファクトリがキャッシュに保持するアクティブセッションの数を制御します(デフォルトは無制限です)。sessionCacheSize しきい値に達した場合、キャッシュされたセッションのいずれかが使用可能になるか、セッションの待機時間が経過するまで(デフォルトの待機時間は Integer.MAX_VALUE)、別のセッションを取得しようとするとブロックされます。sessionWaitTimeout プロパティはその値を設定します。
セッションをキャッシュする場合は、前述のようにデフォルトのセッションファクトリを設定し、CachingSessionFactory のインスタンスにラップして、追加のプロパティを提供できます。次の例は、その方法を示しています。
<bean id="ftpSessionFactory" class="o.s.i.ftp.session.DefaultFtpSessionFactory">
<property name="host" value="localhost"/>
</bean>
<bean id="cachingSessionFactory" class="o.s.i.file.remote.session.CachingSessionFactory">
<constructor-arg ref="ftpSessionFactory"/>
<constructor-arg value="10"/>
<property name="sessionWaitTimeout" value="1000"/>
</bean> 上記の例は、sessionCacheSize を 10 に設定し、sessionWaitTimeout を 1 秒に設定して作成された CachingSessionFactory を示しています(その値はミリ秒単位です)。
Spring Integration 3.0 以降、CachingConnectionFactory は resetCache() メソッドを提供します。呼び出されると、すべてのアイドルセッションがすぐに閉じられ、使用中のセッションがキャッシュに戻されると閉じられます。セッションの新しいリクエストにより、必要に応じて新しいセッションが確立されます。
バージョン 5.1 以降、CachingSessionFactory には新しいプロパティ testSession があります。true の場合、NOOP コマンドを送信してセッションがテストされ、セッションがまだアクティブであることを確認します。そうでない場合、キャッシュから削除されます。アクティブなセッションがキャッシュにない場合、新しいセッションが作成されます。