【发布时间】:2020-07-10 12:09:05
【问题描述】:
我正在使用 JSch 打开到远程服务器的 SFTP 通道。我使用以下代码打开连接并下载文件:
public org.springframework.core.io.Resource download(){
JSch jsch = new Jsch();
Session session = jsch.get("root", "192.168.1.10", 22);
session.setPassword("root");
session.setConfig("StrictHostKeyChecking","no");
session.connect();
ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
channelSftp.connect();
InputStream is = channelSftp.get("/root/example.mp4");
channelSftp.exit();
session.disconnect();
return new org.springframework.core.io.InputStreamResource(is);
}
问题是:
- 如果我使用
exit()和/或disconnect()方法,将会抛出Pipe closed异常 - 如果不这样做,我的方法会成功返回
Resource,但通道/会话仍处于connected状态。
所以我对这个实现有一个问题,是否有问题?如果没有,会话数量是否会增加,直到 SFTP 服务器拒绝或将来一次关闭,我该如何处理?
在此感谢您
【问题讨论】:
标签: java sftp inputstream jsch