我正在使用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一起使用。

问候

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top