2010-07-01 36 views

Trả lời

5

tôi đã lên trên Jsch - và API vô cùng vô ích của nó và chuyển sang:

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

(Ganymede SSH2). Tôi làm một LOT với ssh trong JVM và hơn tháng sử dụng 24 giờ ganymede đã được chứng minh đáng tin cậy hơn nhiều. Và dễ chịu hơn. Kẹp chính còn lại của tôi là xung quanh dường như không thể đặt thời gian chờ cho SCP.

+0

Tôi cũng đã được đốt cháy bởi JSch và đó là khủng khiếp api và tài liệu của họ: "... và chỉ sau khi kênh đã bị đóng (chính xác hơn, ngay trước khi kênh bị đóng)." – Tnem

4

tôi phải chịu đựng cùng một vấn đề và sau đó đi qua này trong changelog Jsch (http://www.jcraft.com/jsch/ChangeLog):

  • tính năng: thêm 'Channel.isClosed () '. Channel.getExitStatus() phải là được gọi sau Channel.isClosed() == true.

Vì vậy, gõ này lên: Nhu cầu được gọi là trước channel.disconnect(), khác vẫn nhận được -1 vấn đề:

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

Điều cần biết! nhưng có lẽ không quay lại. Có một số tùy chọn khác hiện có (thanh toán jclouds cho họ) –

Các vấn đề liên quan