Question

J'utilise la classe Commons Net FTPClient au sondage périodiquement un site ftp et tenter de télécharger un fichier. De temps en temps le fil bloque indéfiniment en essayant de lire à partir du site et je me demandais si quelqu'un d'autre avait rencontré ce problème et pourrait offrir aucune solution de contournement?

J'utilise la méthode de FTPClient de retrieveFileStream(String) pour obtenir une poignée à un InputStream, que je tente alors de lire. Ci-dessous une trace de la pile partielle du fil bloqué.

"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)
Était-ce utile?

La solution 2

Le bidouille je me suis retrouvé à l'aide ici était de planifier une tâche à déclencher une alerte si l'opération FTP a pris plus de temps que X secondes. Je ne trouve en fait javanioftp sur Sourceforge, mais dans ma situation, il ne justifie pas les frais généraux de développement dans la commutation clients.

Autres conseils

java.io bloque, vous devez utiliser le package java.nio. Jamais utilisé ftp avec java.nio, mais supposons qu'il faut travailler parce que http peut travailler avec java.nio.

Cordialement

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top