【发布时间】:2021-04-28 08:29:47
【问题描述】:
我使用 Spring Integration SFTP 将文件上传到 sftp 服务器。当我发送一些并发请求或大量文件时,我收到了 Socket Clode 异常。 但是当我使用简单的 Jsch 客户端直接发送相同的文件时,即使是并发调用,一切似乎都正常。
我对这两个库都使用默认配置。 Spring SFTP 使用 Jsch,它是否以可能导致错误的方式配置? Spring是否有特殊的配置或操作,但不是在默认配置或行为中而不是简单的Jsch?
【问题讨论】:
-
我刚刚在我的 spring 集成 sftp 配置中看到了 isSharedSession=true。但是直接使用jsch时默认为false。
-
解决了您的问题吗?
isSharedSession是DefaultSftpSessionFactory(因此是 Spring)选项。它与jsch客户端无关。看到原始 jsch 的配置和DefaultSftpSessionFactory的配置有所不同真是太好了... -
@ArtemBilan,是的,问题已解决。对不起,我之前的评论令人困惑。写得不好。当将 isSharedSession 设置为 true 时,Spring 不会关闭会话,该会话保留在池中以避免关闭/重新打开操作。它会导致某些 sftp 服务器出现一些“Socket Closed”错误(取决于它们的配置)。当使用带有专用会话 + 每个操作的通道的原始 jsch 客户端时,可以,使用 isSharedSession=false 也可以,因此在某种程度上,isSharedSession = false 可以被视为等同于每个操作打开/关闭的原始 jsch 操作。
-
知道了。您介意将其解释为您自己问题的答案吗?这将在未来帮助其他有类似问题的社区
-
@ArtemBilan,复制了我的评论作为答案。但我剩下的问题是为什么它失败了?您知道为什么某些服务器(取决于它们的配置)在将 isSharedSession 选项设置为 true 的 spring 客户端无法正常工作吗?
标签: spring-integration sftp jsch spring-integration-sftp