SFTP 会话缓存
从 Spring 集成版本 3.0 开始,默认情况下不再缓存会话。
终端节点不再支持该属性。
如果要缓存会话,则必须使用 (请参阅下一个示例)。cache-sessions CachingSessionFactory |
在 3.0 之前的版本中,默认情况下会自动缓存会话。
可以使用一个属性来禁用自动缓存,但该解决方案没有提供配置其他会话缓存属性的方法。
例如,您不能限制创建的会话数。
为了支持该要求和其他配置选项,我们添加了一个 .
它提供 和 properties.
顾名思义,该属性控制工厂在其缓存中维护多少个活动会话(默认是无界的)。
如果已达到阈值,则任何获取另一个会话的尝试都将阻止,直到其中一个缓存会话变为可用或会话的等待时间到期(默认等待时间为 )。
该属性启用等待时间的配置。cache-sessions
CachingSessionFactory
sessionCacheSize
sessionWaitTimeout
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>
前面的示例创建一个 设置为 且设置为 1 秒(1000 毫秒)。CachingSessionFactory
sessionCacheSize
10
sessionWaitTimeout
从 Spring 集成版本 3.0 开始,提供了一个方法。
调用时,所有空闲会话将立即关闭,而正在使用的会话将在返回到缓存时关闭。
使用 时,通道将关闭,并且共享会话仅在最后一个通道关闭时关闭。
对会话的新请求会根据需要建立新会话。CachingConnectionFactory
resetCache()
isSharedSession=true
从版本 5.1 开始,具有新属性 。
如果为 true,则将通过对空路径执行命令来测试会话,以确保它仍然处于活动状态;否则,将从缓存中删除它;如果缓存中没有活动会话,则会创建一个新会话。CachingSessionFactory
testSession
REALPATH