2010-07-01 14 views

Odpowiedz

5

dałem się na jsch - a jego niezwykle pomocne API i włączony do:

http://www.cleondris.ch/opensource/ssh2/

(Ganymede SSH2). Zrobiłem LOT z ssh w JVM i ponad miesiącem 24 godzinnego użytkowania ganymede okazało się dużo bardziej niezawodne. I przyjemniej. Mój główny pozostały problem polega na tym, że najwyraźniej nie mogę ustawić limitu czasu dla SCP.

+0

ja również zostały spalone przez jsch i to okropne api i ich dokumenty: "... i tylko po zamknięciu kanału (dokładniej, tuż przed zamknięciem kanału)." – Tnem

4

Cierpiałem ten sam problem i wtedy natknąłem to w changelogu jsch (http://www.jcraft.com/jsch/ChangeLog):

  • cecha: dodanej „Channel.isClosed () ". Channel.getExitStatus() powinien być wywoływany po Channel.isClosed() == true.

więc zapukał ten up: Musi być nazywany przed channel.disconnect(), inny jeszcze dostać -1 problem:

private static void waitForChannelClosure(ChannelExec ce, long maxwaitMs) { 

    log.info("waitForChannelClosure >>>"); 
    final long until = System.currentTimeMillis() + maxwaitMs; 

    try { 
     while (!ce.isClosed() && System.currentTimeMillis() < until) { 
      log.info("SFTP channel not closed .. waiting"); 
      Thread.sleep(250); 
     } 

    } catch (InterruptedException e) { 
     throw new RuntimeException("Interrupted", e); 
    } 

    if (!ce.isClosed()) { 
     throw new RuntimeException("Channel not closed in timely manner!"); 
    } 

}; 
+0

Dobrze wiedzieć! ale prawdopodobnie nie wracamy. Jest jeszcze kilka innych opcji (junty kasowe dla nich) –

Powiązane problemy