如何知道jsch会话是否已关闭?

时间:2017-07-02 08:33:08

标签: linux session ssh jsch

我使用以下代码来获取jsch会话:

JSch jsch = new JSch();
String user = "test";
String host = "172.23.54.253";
String password = "paas@tju";
int port = 22;
Session session = jsch.getSession(user,host,port);
UserInfo userInfo = new MyUserInfo(null);
session.setUserInfo(userInfo);
session.setPassword(password);
session.connect();

大约3个小时后,我执行以下代码:

if(session.isConnected())
{
    System.out.println("Session is still connected!");
}
else
{
    System.out.println("Session is disconnected!);
}

我发现jsch会话仍然连接!但是当我检查/ var / log / secure文件时,我发现会话已经关闭了! 如果我用3小时前创建的jsch会话打开一个频道, 将抛出JSchException,如下所示:

com.jcraft.jsch.JSchException: session is down
at com.jcraft.jsch.Channel.sendChannelOpen(Channel.java:762)
at com.jcraft.jsch.Channel.connect(Channel.java:151)
at com.jcraft.jsch.Channel.connect(Channel.java:145)
at com.inspur.jobSchedule.test.PressureTest.test(PressureTest.java:117)
at com.inspur.jobSchedule.test.PressureTest.main(PressureTest.java:138)

我知道Linux上的tcp连接的保持活动时间是2小时。但为什么 当我调用会话的“isConnected”方法时,它返回true?

0 个答案:

没有答案