我已经使用 Apache MINA SSHD 版本 2.1.0 设置了 SFTPGateway。用户身份验证并建立连接后,我想在执行 PUT 操作时捕获/监听 Connection Abort 事件(通过按 Ctrl+C)。有人可以帮我吗?
我尝试在 AbstractSftpEventListenerAdapter 类中覆盖 public void closed(ServerSession serverSession, String remoteHandle, Handle localHandle, Throwable throw) 方法。但它不仅在文件完全上传并关闭以进行 IO 操作时调用,而且在文件完全上传之前连接中止时调用。所以我不能依靠这种方法来完成文件上传。
要求是在文件上传完全完成后触发一些操作,而不是在 PUT 操作期间中止连接并且文件上传未 100% 完成时触发。那么如何在 Apache MINA SSHD 服务器中捕获文件上传完成情况呢?
我相信早些时候在早期版本 0.13 和 0.14 中有一个接口 FileUploadAware 可以达到此目的。
public class MySFTPEventListener extends AbstractSftpEventListenerAdapter {
.....
....
@Override
public void closed(ServerSession serverSession, String remoteHandle, Handle localHandle, Throwable thrown) {
File closedFile = localHandle.getFile().toFile();
log.info(String.format("User %s closed file: %s with Active session %d", serverSession.getUsername(),
closedFile.getAbsolutePath(), serverSession.getActiveSessionCountForUser(serverSession.getUsername())));
}
}
如何在 PUT(上传)操作期间收听 Apache SSHD SFTP 中的 Connection Abort 事件?