【问题标题】:Is it possible to turn off lock on the file set up by SFTP Session Factory是否可以关闭 SFTP 会话工厂设置的文件的锁定
【发布时间】:2021-10-13 12:15:56
【问题描述】:

我正在与兑现的 sftp 会话工厂作斗争。也就是说,我遇到了会话不可用的问题,因为我曾经在我的应用程序中使用过很多会话。目前我有一个默认的非兑现会话。它将文件写入 sftp 服务器,但在它们上设置了锁。因此,任何其他用户都无法读取它。我想避免它。完美,在单个文件上传后关闭锁定。有可能吗?

测试结构

  1. 开始轮询适配器
  2. 上传文件到远程
  3. 检查文件是否上传
  4. 停止轮询适配器
  5. 清理遥控器

【问题讨论】:

  • 请分享更具体的信息,包括一些要复制的代码。 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


【解决方案1】:

当您处理通过网络传输的数据时,您需要确保释放您使用的资源。例如,一定要在向 SFTP 发送数据后关闭InputStream。这实际上不是自动关闭它的框架责任。此外,您可能已经不是InputStream,而是简单的byte[]。这只是我可以考虑类似锁定行为的一个原因。

【讨论】:

    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2015-08-22
    相关资源
    最近更新 更多