SFTP 会话缓存

从 Spring 集成版本 3.0 开始,默认情况下不再缓存会话。 这cache-sessions属性。 如果您希望缓存会话,则必须使用CachingSessionFactory(请参阅下一个示例)。

在 3.0 之前的版本中,默认情况下会自动缓存会话。 一个cache-sessions属性可用于禁用自动缓存,但该解决方案没有提供配置其他会话缓存属性的方法。 例如,您不能限制创建的会话数。 为了支持该要求和其他配置选项,我们添加了一个CachingSessionFactory. 它提供sessionCacheSizesessionWaitTimeout性能。 顾名思义,sessionCacheSizeproperty 控制工厂在其缓存中维护多少个活动会话(默认值为 unbounded)。 如果sessionCacheSize阈值,则任何获取另一个会话的尝试都会被阻止,直到其中一个缓存的会话变得可用或直到会话的等待时间到期(默认等待时间为Integer.MAX_VALUE). 这sessionWaitTimeout属性启用等待时间的配置。spring-doc.cadn.net.cn

如果你希望缓存你的会话,请配置你的默认会话工厂(如前所述),然后将其包装在CachingSessionFactory其中,你可以提供这些附加属性。 以下示例显示了如何执行此作:spring-doc.cadn.net.cn

<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>

前面的示例创建了一个CachingSessionFactory及其sessionCacheSize设置为10及其sessionWaitTimeout设置为 1 秒(1000 毫秒)。spring-doc.cadn.net.cn

从 Spring Integration 版本 3.0 开始,CachingConnectionFactory提供resetCache()方法。 调用时,所有空闲会话将立即关闭,而正在使用的会话将在返回到缓存时关闭。 使用isSharedSession=true,则仅当最后一个通道关闭时,通道将关闭,并且共享会话才会关闭。 对会话的新请求会根据需要建立新会话。spring-doc.cadn.net.cn

从版本 5.1 开始,CachingSessionFactory具有新属性testSession. 如果为 true,则将通过执行REALPATH命令为空路径,以确保它仍然处于活动状态;否则,将从缓存中删除它;如果缓存中没有活动会话,则会创建一个新会话。spring-doc.cadn.net.cn


APP信息