我正在使用SSH Ganymed庫別名Trilead別名Orion。Java Ganymed Trlead Orion ssh會話超時
我想了解會議的具體行爲,因爲我需要保持開了很長時間的ssh連接(也許永遠),只是當我的JVM發生故障或者這樣的事情來關閉它。
所以,我的問題是這樣的。假設我做這樣的事情:
Connection conn = new Connection(this.hostName, this.port);
conn.addConnectionMonitor(new ConnectionMonitor()
{
@Override
public void connectionLost(Throwable reason)
{
System.out.println("Connection Lost " reason.getMessage());
}
});
conn.connect(null, 1000, 20000);
conn.authenticateWithPublicKey(this.user, keyfile, this.password);
Thread.sleep(30000); //sleep the Thread for 30 seconds
Session sess = conn.openSession();
sess.execCommand("ls");
conn.close();
而且,當線程處於休眠狀態那30秒,我斷開我的網絡接口,用於模擬網絡問題。
1)斷開事件不被connectionMonitor截取並且不打印連接丟失消息 2)當執行
Session sess = conn.openSession();
,處理塊並沒有任何反應,直到我不不能連接網絡接口再次。 這是因爲,看着Ganymed代碼,似乎由於沒有檢測到斷開連接事件,所以會話打開並且有一個鎖打開會話,直到它成功。
所以我的問題是: 1)這種行爲是通緝還是這是一個錯誤? 2)有什麼辦法可以在Connection.openSession()方法和Connection.connect()方法中設置超時?
在此先感謝。