Обнаружение или предотвращение блокировки Commons net ftpClient.

StackOverflow https://stackoverflow.com/questions/1741378

Вопрос

Я использую сеть Commons FTPClient Класс, чтобы периодически опрашивать сайт FTP и попытаться загрузить файл. Время от времени нить блокирует бесконечно, когда пытается читать с сайта, и я подумал, столкнулся ли кто -нибудь еще эту проблему, и может предложить какие -либо обходные пути?

я использую FTPClientS. 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. Никогда не использовал ftp с java.nio, но предположим, что он должен работать, потому что HTTP может работать с java.nio.

С Уважением

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top