本文介绍了使用连接池和JSCH的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用JSCH进行文件上传sftp。在当前状态下,每个线程在需要时打开和关闭连接。

I'm using JSCH for file upload ever sftp. In it's current state each thread opens and closes connection when needed.

如果可以使用与JSCH的连接池,以避免因大量连接打开和关闭而导致的开销?

If it possible to use connection pooling with JSCH in order to avoid overhead caused by large number of connection opening and closing?

以下是从线程内部调用的函数示例

Here is a example of function called from inside of thread

 public static void file_upload(String filename) throws IOException {
    JSch jsch = new JSch();
    Session session = null;
    try {
        session = jsch.getSession("user", "server_name", 22);
        session.setConfig("StrictHostKeyChecking", "no");
        session.setPassword("super_secre_password");
        session.connect();

        Channel channel = session.openChannel("sftp");
        channel.connect();
        ChannelSftp sftpChannel = (ChannelSftp) channel;

        FileInputStream inputSrr = new FileInputStream(filename);  
        try {  
            sftpChannel.put(inputSrr, "/var/temp/"+filename);  
        } catch (SftpException e) {  
            e.printStackTrace();  

        } finally {  
            if (inputSrr != null) {  
                inputSrr.close();  
            }  
        }  

        sftpChannel.exit();
        session.disconnect();
    } catch (JSchException e) {
        e.printStackTrace();
    } catch (SftpException e) {
        e.printStackTrace();
    }
}


推荐答案

我更喜欢。 ;)

这篇关于使用连接池和JSCH的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-22 22:49