我正在为SFTP使用JSch库。我需要在SFTP服务器上进行多项操作,比如在其他目录中移动远程文件,拉取文件等。对于所有这些操作,我需要Session
并从中获取Channel
然后将其转换为{{ 1}}。这是多余的步骤。所以我想把它抽象成ChannelSftp
方法。
private
但是在SFTP操作之后我需要断开与频道和会话的连接。
使用上面的方法,虽然我可以在调用方法中与private ChannelSftp getChannelSftp() throws JSchException
{
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
Session session;
session = jsch.getSession(VENDOR1_USERID, VENDOR1_SERVER, VENDOR1_PORT);
session.setPassword(VENDOR1_PASSWORD);
session.setConfig(config);
session.connect();
ChannelSftp channelSftp = null;
Channel channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
return channelSftp;
}
断开连接,但我无法与Channel
断开连接,因为我没有可能是泄漏的实例,所以我现在将其分隔为{ {1}}方法和现在Session
创建在所有方法中都是重复的。
设计/重构 的更好方法是什么?
getSession()
调用方法示例: - 指示重复的代码
ChannelSftp