Detectar ou impedir que o FtpClient da NET Commons bloqueie em leitura
-
20-09-2019 - |
Pergunta
Estou usando a rede do Commons FTPClient
Classe para pesquisar periodicamente um site FTP e tentar baixar um arquivo. Ocasionalmente, o tópico está bloqueando indefinidamente ao tentar ler do site e me perguntei se alguém mais havia encontrado esse problema e poderia oferecer alguma solução alternativa?
estou a usar FTPClient
's retrieveFileStream(String)
Método para obter um identificador para um inseto, da qual tento ler. Abaixo está um rastreamento parcial da pilha do fio bloqueado.
"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)
Solução 2
O Kludge que acabei usando aqui foi agendar uma tarefa para aumentar um alerta se a operação FTP levou mais de x segundos. Eu realmente encontrei Javanioftp No Sourceforge, mas na minha situação, isso não garante a sobrecarga de desenvolvimento na troca de clientes.
Outras dicas
Java.io está bloqueando, você precisa usar o pacote java.nio. Nunca usei FTP com java.nio, mas assuma que deve funcionar porque o HTTP pode funcionar com o java.nio.
Cumprimentos