SFTP Mule客户端Java API - 用户登录超时问题
问题描述:
我正在研究Java代码到SFTP文件以远离HDFS文件系统。它适用于小于200 MB的文件。对于大文件,我收到以下错误。SFTP Mule客户端Java API - 用户登录超时问题
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:验证:错误。我已经在必要时添加了钥匙。我该如何解决这个问题
ERROR sftp.SftpClient: Error during login to [email protected]
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)
答
它看起来像4个原因:
1)你写
2)文件路径(或名称)在空间上的文件夹的权限。
3)文件路径中有斜杠。同时读取或写入大文件
4)超时问题发生..
我也去它..如何处理第四选项... – Karthi
我歌厅用户超时会话,因为我已经更新了我的问题的内容和我如何解决它。 – Karthi
请检查jsch 0.1.50修复了这个问题。 jsch下载页面 - http://www.jcraft.com/jsch/ – siranjeevi