Commons Net ftpclient를 검출하거나 방지하여 읽기에서 차단하지 않습니다.
-
20-09-2019 - |
문제
나는 Commons Net을 사용하고 있습니다 FTPClient
FTP 사이트를 정기적으로 설문 조사하고 파일을 다운로드하려고 시도합니다. 때때로 사이트에서 읽으려고 할 때 스레드가 무기한 차단되고 있으며 다른 사람 이이 문제에 직면하여 해결 방법을 제공 할 수 있는지 궁금했습니다.
사용 중입니다 FTPClient
'에스 retrieveFileStream(String)
메소드 입력 스트림을 처리 한 다음 읽으려고합니다. 아래는 차단 된 스레드의 부분 스택 추적입니다.
"FTP File Poll Thread" prio=10 tid=0x083b0800 nid=0x6324 runnable [0x65b5b000..0x65b5beb0]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
- locked <0x5c851928> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at java.io.PushbackInputStream.read(PushbackInputStream.java:122)
at org.apache.commons.net.io.FromNetASCIIInputStream.__read(FromNetASCIIInputStream.java:75)
at org.apache.commons.net.io.FromNetASCIIInputStream.read(FromNetASCIIInputStream.java:170)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
해결책 2
여기서 사용한 Kludge는 FTP 작업이 x 초 이상이 걸렸을 때 경고를 제기하는 작업을 예약하는 것이 었습니다. 나는 실제로 찾았다 Javanioftp Sourceforge에서는 내 상황에서는 클라이언트를 전환하는 데있어 개발 간접비를 보증하지 않습니다.
다른 팁
java.io가 차단되고 있으며 Java.nio 패키지를 사용해야합니다. java.nio와 함께 FTP를 사용한 적이 없지만 HTTP가 Java.nio와 함께 작동 할 수 있기 때문에 작동해야한다고 가정합니다.
문안 인사
제휴하지 않습니다 StackOverflow