【发布时间】:2018-05-15 09:06:58
【问题描述】:
我正在使用 jsch 发送文件。我有这段代码:
public boolean connect()
{
if (_connect()) return true;
else if (cons_attempts < 3)
{
cons_attempts ++;
try
{
Thread.sleep(3000);
}
catch (InterruptedException ex){}
finally
{
connect();
}
}
return false;
}
public boolean _connect()
{
try
{
session = jsch.getSession(user, host, port);
session.setTimeout(15000);
session.setConfig("StrictHostKeyChecking","no");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect(15000);
sftp = (ChannelSftp) channel;
return true;
}
catch (JSchException ex)
{
MyLogger.log(Level.SEVERE, ex.getMessage());
return false;
}
}
我的代码只有超时异常的问题。在此之前,我没有为 jsch 设置超时,日志是:
-- java.net.ConnectException: Connexion terminée par expiration du délai d'attente(连接超时)
--再见
它会记录超时:
-- 超时:未建立套接字
--再见
第一次超时并不是我真正的问题,但令人沮丧的是我不明白为什么我的程序仅在尝试 1 次连接后就退出了。
到目前为止,除了我捕获的所有其他异常,该程序确实尝试了 3 次。我错过了什么?我的代码没有尝试再连接 2 次的原因是什么?
谢谢
编辑: - 不确定它是否会有所帮助,但 .jar 在 .sh 中执行,该 .sh 由 cron 作业执行。
-服务器的操作系统也是Debian。
-根据我们的网络人员,我们自己的防火墙似乎不是超时的原因。
【问题讨论】:
标签: java recursion networking timeout jsch