从 Spring Integration 3.0 开始,默认情况下不再缓存会话。 终端节点不再支持该属性。 如果您希望缓存会话,则必须使用 a(如下例所示)。cache-sessionsCachingSessionFactory
从 Spring Integration 3.0 开始,默认情况下不再缓存会话。 终端节点不再支持该属性。 如果您希望缓存会话,则必须使用 a(如下例所示)。cache-sessionsCachingSessionFactory

在 3.0 之前的版本中,默认情况下会自动缓存会话。 可以使用一个属性来禁用自动缓存,但该解决方案没有提供配置其他会话缓存属性的方法。 例如,您无法限制创建的会话数。 为了支持该要求和其他配置选项,添加了 a。 它提供 和 properties. 该属性控制工厂在其缓存中维护的活动会话数(默认值为无界)。 如果已达到阈值,则任何获取另一个会话的尝试都将阻止,直到其中一个缓存会话变为可用或会话的等待时间到期(默认等待时间为 )。 该属性配置该值。cache-sessionsCachingSessionFactorysessionCacheSizesessionWaitTimeoutsessionCacheSizesessionCacheSizeInteger.MAX_VALUEsessionWaitTimeoutspring-doc.cn

如果要缓存会话,请按照前面所述配置默认会话工厂,然后将其包装在 的实例中,您可以在其中提供这些附加属性。 以下示例显示了如何执行此操作:CachingSessionFactoryspring-doc.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>

前面的示例显示了一个 created,设置为 to 并将 设置为 1 秒(其值以毫秒为单位)。CachingSessionFactorysessionCacheSize10sessionWaitTimeoutspring-doc.cn

从 Spring Integration 3.0 开始,它提供了一个方法。 调用时,所有空闲会话将立即关闭,而正在使用的会话将在返回到缓存时关闭。 对会话的新请求会根据需要建立新会话。CachingConnectionFactoryresetCache()spring-doc.cn

从版本 5.1 开始,具有新属性 。 如果为 true,则将通过发送 NOOP 命令来测试会话,以确保它仍然处于活动状态;否则,将从缓存中删除它;如果缓存中没有活动会话,则会创建一个新会话。CachingSessionFactorytestSessionspring-doc.cn