检测或防止Commons NET FTPCLEINT在读取上阻止
-
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