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()