Java 损坏的传输是否可以防止SFTP放置? 背景:

Java 损坏的传输是否可以防止SFTP放置? 背景:,java,sftp,Java,Sftp,我每天都在使用net.schmizz.sshj.sftp.SFTPClient来sftp大量文件-所有文件都到不同的目的地。所有的文件传输都没有错误,除了一个文件似乎在传输,然后在文件发送后抛出一个中断的传输异常(因此它被忽略) 检查日志,看起来这个文件——只有这个文件——每天都会引发断开的传输连接异常。但是,该文件仍在发送中(因为日志显示是这样的,并且客户已收到该文件) 问题: 昨天,客户声称他们没有收到该文件。因此,我想知道问题是否已经到了尽头,或者: 未能清理SFTP会话是否会导致文件无法

我每天都在使用
net.schmizz.sshj.sftp.SFTPClient
来sftp大量文件-所有文件都到不同的目的地。所有的文件传输都没有错误,除了一个文件似乎在传输,然后在文件发送后抛出一个中断的传输异常(因此它被忽略)

检查日志,看起来这个文件——只有这个文件——每天都会引发断开的传输连接异常。但是,该文件仍在发送中(因为日志显示是这样的,并且客户已收到该文件)

问题: 昨天,客户声称他们没有收到该文件。因此,我想知道问题是否已经到了尽头,或者:

未能清理SFTP会话是否会导致文件无法发送?即使在PUT成功后也是如此?我可以做些什么来防止此异常

代码(简化): 此代码块适用于除上述文件之外的所有文件

试试看{
sftpClient=sshClient.newSFTPClient();
//传输文件
if(getPut==SFTP.ACTION\u PUT){
sftpClient.put(srcFilename,dstFilename);
log.info(“已发送文件”);
}
}捕获(可丢弃的t){
日志错误(“失败”,t);
}最后{
试一试{
如果(sftpClient!=null){sftpClient.close();}
}捕获(可丢弃的t){
log.error(“无法清理SFTP会话”,t);
}
}
日志: 日志显示文件已发送,并且
sftpClient.put(srcFilename,dstFilename)已执行:

2020-03-04 17:38:36,398 [main] INFO  com.myPackage.SFTP - file sent
2020-03-02 17:42:04,690 [main] ERROR com.myPackage.SFTP - Could not clean up SFTP session
net.schmizz.sshj.connection.ConnectionException: Broken transport; encountered EOF
    at net.schmizz.sshj.connection.ConnectionException$1.chain(ConnectionException.java:32)
    at net.schmizz.sshj.connection.ConnectionException$1.chain(ConnectionException.java:26)
    at net.schmizz.concurrent.Promise.deliverError(Promise.java:95)
    at net.schmizz.concurrent.Event.deliverError(Event.java:74)
    at net.schmizz.concurrent.ErrorDeliveryUtil.alertEvents(ErrorDeliveryUtil.java:34)
    at net.schmizz.sshj.connection.channel.AbstractChannel.notifyError(AbstractChannel.java:238)
    at net.schmizz.sshj.connection.channel.direct.SessionChannel.notifyError(SessionChannel.java:229)
    at net.schmizz.sshj.common.ErrorNotifiable$Util.alertAll(ErrorNotifiable.java:35)
    at net.schmizz.sshj.connection.ConnectionImpl.notifyError(ConnectionImpl.java:258)
    at net.schmizz.sshj.transport.TransportImpl.die(TransportImpl.java:601)
    at net.schmizz.sshj.transport.Reader.run(Reader.java:65)
Caused by: net.schmizz.sshj.transport.TransportException: Broken transport; encountered EOF
    at net.schmizz.sshj.transport.Reader.run(Reader.java:57)

我怀疑客户可能在我有机会关闭客户端之前关闭了该客户端。请尝试sshClient.disconnect()而不是sftpClient.close()