FTP 会话缓存
从 Spring Integration 3.0 开始,默认情况下不再缓存会话。
这cache-sessions 属性。
您必须使用CachingSessionFactory (如以下示例所示)如果您希望缓存会话。 |
在 3.0 之前的版本中,默认情况下会自动缓存会话。
一个cache-sessions
属性可用于禁用自动缓存,但该解决方案未提供配置其他会话缓存属性的方法。
例如,您无法限制创建的会话数。
为了支持该要求和其他配置选项,一个CachingSessionFactory
已添加。
它提供sessionCacheSize
和sessionWaitTimeout
性能。
这sessionCacheSize
property 控制工厂在其缓存中维护多少个活动会话(默认值为 unbounded)。
如果sessionCacheSize
阈值,则任何获取另一个会话的尝试都会被阻止,直到其中一个缓存的会话变得可用或直到会话的等待时间到期(默认等待时间为Integer.MAX_VALUE
).
这sessionWaitTimeout
property 配置该值。
如果您希望缓存会话,请按照前面所述配置默认会话工厂,然后将其包装在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
设置为10
和sessionWaitTimeout
设置为 1 秒(其值以毫秒为单位)。
从 Spring Integration 3.0 开始,CachingConnectionFactory
提供resetCache()
方法。
调用时,所有空闲会话将立即关闭,而正在使用的会话将在返回到缓存时关闭。
对会话的新请求会根据需要建立新会话。
从版本 5.1 开始,CachingSessionFactory
具有新属性testSession
.
如果为 true,则将通过发送 NOOP 命令来测试会话,以确保它仍然处于活动状态;否则,将从缓存中删除它;如果缓存中没有活动会话,则会创建一个新会话。