对于最新稳定版本,请使用 Spring Integration 7.0.0spring-doc.cadn.net.cn

FTP 会话缓存

从 Spring Integration 3.0 开始,会话不再默认缓存。 这缓存会话属性不再支持端点。 你必须使用一个缓存会话工厂(下一个示例所示)如果你想缓存会话。

在3.0之前的版本中,会话默认会自动缓存。 一个缓存会话属性可用来禁用自动缓存,但该方案未提供配置其他会话缓存属性的方法。 例如,你无法限制创建会话的数量。 为了支持该需求及其他配置选项,需提供缓存会话工厂被添加。 它提供sessionCacheSizesessionWaitTimeout性能。 这sessionCacheSize属性控制工厂缓存中维护的活跃会话数量(默认为无界)。 如果sessionCacheSize一旦达到阈值,任何获取其他会话的尝试都会被阻塞,直到缓存会话中的任何一个可用,或会话的等待时间到期(默认等待时间为Integer.MAX价值). 这sessionWaitTimeout财产决定了这个价值。spring-doc.cadn.net.cn

如果你想缓存会话,按照前面描述配置默认会话工厂,然后在缓存会话工厂,你可以提供这些额外的属性。 以下示例展示了如何实现:spring-doc.cadn.net.cn

<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设置为一秒(其值单位为毫秒)。spring-doc.cadn.net.cn

从 Spring Integration 3.0 开始,缓存连接工厂提供resetCache()方法。 调用时,所有空闲会话立即关闭,正在使用的会话在返回缓存时关闭。 新的会议请求会根据需要设立新的会议。spring-doc.cadn.net.cn

从5.1版本开始,缓存会话工厂拥有一个新房产测试会话. 当为真时,会话将通过发送NOOP命令来测试,以确保会话仍然活跃;如果不存在,该缓存将被移除;如果缓存中没有活跃会话,则创建一个新会话。spring-doc.cadn.net.cn