跳到主要内容
版本:7.0.2

FTP 会话缓存

DeepSeek V3 中英对照 FTP Session Caching

important

从 Spring Integration 3.0 开始,默认不再缓存会话。端点不再支持 cache-sessions 属性。如果您希望缓存会话,必须使用 CachingSessionFactory(如下一个示例所示)。

在3.0之前的版本中,会话默认会自动缓存。虽然可以通过cache-sessions属性来禁用自动缓存,但该方案无法配置其他会话缓存属性。例如,无法限制创建的会话数量。为支持该需求及其他配置选项,我们新增了CachingSessionFactory。它提供了sessionCacheSizesessionWaitTimeout属性。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>

前面的示例展示了如何创建一个 CachingSessionFactory,其中 sessionCacheSize 设置为 10sessionWaitTimeout 设置为 1 秒(其值以毫秒为单位)。

自 Spring Integration 3.0 起,CachingConnectionFactory 提供了 resetCache() 方法。调用此方法时,所有空闲会话会立即关闭,而正在使用的会话则会在返回缓存时关闭。新的会话请求将根据需要建立新的会话。

从 5.1 版本开始,CachingSessionFactory 新增了一个属性 testSession。当设置为 true 时,将通过发送 NOOP 命令来测试会话是否仍处于活动状态;如果会话已失效,则会将其从缓存中移除;若缓存中没有活动会话,则会创建一个新的会话。