【发布时间】:2021-10-13 12:15:56
【问题描述】:
我正在与兑现的 sftp 会话工厂作斗争。也就是说,我遇到了会话不可用的问题,因为我曾经在我的应用程序中使用过很多会话。目前我有一个默认的非兑现会话。它将文件写入 sftp 服务器,但在它们上设置了锁。因此,任何其他用户都无法读取它。我想避免它。完美,在单个文件上传后关闭锁定。有可能吗?
测试结构
- 开始轮询适配器
- 上传文件到远程
- 检查文件是否上传
- 停止轮询适配器
- 清理遥控器
【问题讨论】:
-
请分享更具体的信息,包括一些要复制的代码。 Spring Integration 不会对这些文件设置任何锁定。也许你的意思是在你打电话给
SftpSession.write(InputStream inputStream, String destination)之后没有关闭InputStream... -
事实并非如此。我正在使用
public String send(Message<?> message, String subDirectory, FileExistsMode... mode)。关闭兑现功能似乎一切正常。当我启用它时。删除较早上传的文件时测试失败。我收到的描述性错误SFTP error (SSH_FX_FAILURE): General failure java.io.UncheckedIOException: SFTP error (SSH_FX_FAILURE): General failure不是很清楚。我最初的猜测是会话没有关闭。因此,文件被阻止进行操作。你能给我建议如何更好地调试它吗? -
查看 JSCH 日志以更好地了解正在发生的事情:docs.spring.io/spring-integration/docs/current/reference/html/…。我们建议一直缓存。所以,你的服务器端出了点问题。
-
嘿@ArtemBilan,你是对的。我没有关闭 InputStream :// 我错过了。非常感谢您的时间和帮助
-
很高兴听到您已经弄清楚了。请考虑接受我的回答,以便我们的讨论对其他社区有用:stackoverflow.com/help/someone-answers
标签: spring-integration spring-integration-sftp