使用JSch库在Java中获取会话和SFTP通道

时间:2017-11-23 09:28:14

标签: java refactoring sftp jsch code-duplication

我正在为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

0 个答案:

没有答案