SFTP Mule客户端Java API - 用户登录超时问题

时间:2017-08-08 10:38:52

标签: java mule sftp

我正在处理一个Java代码到SFTP文件到远程HDFS文件系统。它适用于小于200 MB的smallers文件。对于大文件,我收到以下错误。

     17/08/08 02:44:49 ERROR sftp.SftpClient: Error writing data over SFTP   service, error was: Failure
4: Failure
    at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2289)
    at com.jcraft.jsch.ChannelSftp.checkStatus(ChannelSftp.java:1937)
    at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:541)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:439)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:406)

我的代码如下:

            public static void sendFile(String targetDirectory, String   sourceFileWithFullPath) throws IOException {
    SftpClient client = new SftpClient("karthick");
    BufferedInputStream bis = null;
    Configuration conf = new Configuration();
    FileSystem fs = FileSystem.get(conf);
    FSDataInputStream fsdisPath = null;
    String filePath = null;
    try {

        filePath=sourceFileWithFullPath;
        Path inputPath = new Path(filePath);
        fsdisPath = fs.open(inputPath);
        bis = new BufferedInputStream(fsdisPath);
        client.login("karthick","/karthick/id_rsa", null);
        client.changeWorkingDirectory(targetDirectory);
        client.storeFile(inputPath.getName(), bis);
        System.out.println("The actual path is" + client.getAbsolutePath(sourceFileWithFullPath));

    }
    finally {
        if (client != null) {
            client.disconnect();
        }
        if (bis != null) {
            bis.close();
        }
    }
}

我确保我有足够的磁盘空间,没有内存问题和所有必需的权限。可能有什么其他可能的方法来避免这个问题。我打算让这个实用程序复制500GB文件。我现在开始学习java并学习基础知识。任何建议都将不胜感激。

更新:我收到此错误以及com.jcraft.jsch.JSchException:verify:false。我已经在必要时添加了密钥。我该如何解决这个问题

    ERROR sftp.SftpClient: Error during login to karthick@karthick
    com.jcraft.jsch.JSchException: verify: false
    at com.jcraft.jsch.Session.connect(Session.java:295)
    at com.jcraft.jsch.Session.connect(Session.java:150)
    at org.mule.transport.sftp.SftpClient.login(SftpClient.java:178)

1 个答案:

答案 0 :(得分:1)

看起来有四个原因之一:
1)您要写入的文件夹的权限
2)文件路径(或名称)上的空格。
3)文件路径中的斜杠错误。
4)读取或写入巨大的文件时会发生超时问题..