|
对于最新稳定版本,请使用 Spring Integration 7.0.0! |
FTP 会话缓存
从 Spring Integration 3.0 开始,会话不再默认缓存。
这缓存会话属性不再支持端点。
你必须使用一个缓存会话工厂(下一个示例所示)如果你想缓存会话。 |
在3.0之前的版本中,会话默认会自动缓存。
一个缓存会话属性可用来禁用自动缓存,但该方案未提供配置其他会话缓存属性的方法。
例如,你无法限制创建会话的数量。
为了支持该需求及其他配置选项,需提供缓存会话工厂被添加。
它提供sessionCacheSize和sessionWaitTimeout性能。
这sessionCacheSize属性控制工厂缓存中维护的活跃会话数量(默认为无界)。
如果sessionCacheSize一旦达到阈值,任何获取其他会话的尝试都会被阻塞,直到缓存会话中的任何一个可用,或会话的等待时间到期(默认等待时间为Integer.MAX价值).
这sessionWaitTimeout财产决定了这个价值。
如果你想缓存会话,按照前面描述配置默认会话工厂,然后在缓存会话工厂,你可以提供这些额外的属性。
以下示例展示了如何实现:
<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 Integration 3.0 开始,缓存连接工厂提供resetCache()方法。
调用时,所有空闲会话立即关闭,正在使用的会话在返回缓存时关闭。
新的会议请求会根据需要设立新的会议。
从5.1版本开始,缓存会话工厂拥有一个新房产测试会话.
当为真时,会话将通过发送NOOP命令来测试,以确保会话仍然活跃;如果不存在,该缓存将被移除;如果缓存中没有活跃会话,则创建一个新会话。