SFTP 會話快取

從 Spring Integration 3.0 版本開始,會話不再預設快取。端點上不再支援 cache-sessions 屬性。如果您希望快取會話,則必須使用 CachingSessionFactory(請參閱下一個示例)。

在 3.0 之前的版本中,會話預設自動快取。提供了 cache-sessions 屬性以停用自動快取,但該解決方案無法配置其他會話快取屬性。例如,您無法限制建立的會話數量。為了支援該要求和其他配置選項,我們添加了 CachingSessionFactory。它提供 sessionCacheSizesessionWaitTimeout 屬性。顧名思義,sessionCacheSize 屬性控制工廠在其快取中維護的活動會話數量(預設是無限制)。如果已達到 sessionCacheSize 閾值,則任何嘗試獲取另一個會話的嘗試都將阻塞,直到快取中的一個會話可用或會話的等待時間過期(預設等待時間為 Integer.MAX_VALUE)。sessionWaitTimeout 屬性允許配置等待時間。

如果您希望快取會話,請配置您的預設會話工廠(如前文所述),然後將其封裝在 CachingSessionFactory 例項中,您可以在其中提供這些附加屬性。以下示例演示瞭如何操作

<bean id="sftpSessionFactory"
    class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
    <property name="host" value="localhost"/>
</bean>

<bean id="cachingSessionFactory"
    class="org.springframework.integration.file.remote.session.CachingSessionFactory">
    <constructor-arg ref="sftpSessionFactory"/>
    <constructor-arg value="10"/>
    <property name="sessionWaitTimeout" value="1000"/>
</bean>

前面的示例建立了一個 CachingSessionFactory,其 sessionCacheSize 設定為 10,其 sessionWaitTimeout 設定為一秒(1000 毫秒)。

從 Spring Integration 3.0 版本開始,CachingConnectionFactory 提供了一個 resetCache() 方法。呼叫時,所有空閒會話都會立即關閉,正在使用的會話在返回到快取時關閉。當使用 isSharedSession=true 時,通道關閉,並且僅當最後一個通道關閉時才關閉共享會話。新的會話請求會根據需要建立新的會話。

從 5.1 版本開始,CachingSessionFactory 有一個新屬性 testSession。當為 true 時,會話將透過對空路徑執行 REALPATH 命令來測試,以確保它仍然處於活動狀態;如果不是,它將從快取中移除;如果快取中沒有活動會話,則會建立一個新會話。

© . This site is unofficial and not affiliated with VMware.