Frage

Ich benutze das Commons -Netz FTPClient Klasse, um eine FTP -Site regelmäßig zu befragen und eine Datei herunterzuladen. Gelegentlich blockiert der Thread auf unbestimmte Zeit, wenn er versucht, von der Website zu lesen, und ich fragte mich, ob jemand anderes auf dieses Problem gestoßen war und irgendwelche Problemumgehungen anbieten könnte.

Ich benutze FTPClient's retrieveFileStream(String) Methode, um einen Griff für einen Inputstream zu erhalten, aus dem ich dann versuche zu lesen. Unten finden Sie eine Teilstapelspur des blockierten Fadens.

"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)
War es hilfreich?

Lösung 2

Der hier verwendete Kludge sollte hier eine Aufgabe planen, um eine Warnung zu erhöhen, wenn die FTP -Operation länger als x Sekunden dauerte. Ich habe tatsächlich gefunden Javanioftp Auf SourceForge, aber in meiner Situation garantiert es den Entwicklungsaufwand beim Umschalten von Kunden nicht.

Andere Tipps

Java.io blockiert, Sie müssen das Java.nio -Paket verwenden. Nie FTP mit Java.nio verwendet, aber gehen Sie davon aus, dass es funktionieren muss, da HTTP mit Java.nio arbeiten kann.

Grüße

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top