编辑:据悉,Webmethods实际上使用的是NLST,而不是LIST,如果重要的话
我们的业务使用WebMethods集成服务器来处理大部分出站通信,其FTP功能还有待改进。我们遇到的问题可能是WebMethods特有的,但如果有人能指出我可能会导致这种情况的方向,我会很感激。
在轮询我们的两个合作伙伴的FTP服务器时,我们连接没有问题,但是当在一个空的目录(没有文件和没有子目录)上进行NLST时,它会超时。实际错误是:
com.wm.net.ftpCException:[ISC.0064.9010] java.net.SocketTimeoutException:接受超时
在调用pub.client.ftp:ls服务期间抛出它。我已经使用许多FTP客户端登录到同一站点没有问题。我已经使用了Windows中的默认FTP客户端,FileZilla和lftp。一切都没有问题。从我所知道的,服务器本身并不是相同的FTP服务器软件。一个是微软FTP,另一个我不确定,但绝对不是微软。
在等待空目录上的NLST响应时,有什么可能导致FTP客户端超时的原因吗?来自FTP服务器的可见响应看起来是一样的,但NLST如何响应我不知道的空目录有什么不同?
这两个服务器上的问题是一致的。在包含文件或子目录的目录中,一切都能正常运行,但在空的情况下则不行。
任何想法或指示都将不胜感激。
谢谢!
Eric Sipple
答案 0 :(得分:2)
我不确定它是否是同一个问题,但我之前在Java(commons.net)中使用另一个FTP客户端时有类似的症状。问题原来是由连接的主动/被动模式引起的。 对不起,我不能给你更多的细节,这就是我所能记住的......希望有所帮助。
答案 1 :(得分:2)
Guillermo Vasconcelos的回答是正确的。有两种FTP模式,主动和被动。默认FTP模式处于活动状态。 Active要求服务器在某个TCP / IP端口上连接回客户端。这不适用于防火墙,因为可能会阻止此端口,或者如果您位于具有NAT的路由器后面,而不是映射。
如果使用Passive(PASV)模式,则不应该挂起。
答案 2 :(得分:2)
我在WebMethods IS 6.5版更新了WmPRT_6-5-1_SP1,IS_6-5_SP3。
第一次完美运作。
我打开了FTP服务器上的调试(Debian的默认ftpd)。 WebMethods的NLST尊重传递给它的主动/被动参数。
NLST命令没有什么特别之处,也没有关于空目录的正确行为 - 如果LIST有效,那么RETR,STOR和NLST也是如此。如果NLST与非空目录一起使用,它应该使用空目录。
所以我的猜测是:
防火墙厂商在FTP方面有点任性...... 在与其他客户端进行测试时,请确保它来自运行WebMethods Integration Server的同一台计算机。
仅供记录,以下是活动NLST应该发生的事情
......并处于被动模式
答案 3 :(得分:0)
我将在这里进行一些新的测试,将设置设置为被动,此时维护工作已完成,但我不确定是否存在问题。如果该目录中有文件或子目录,我们可以获得目录列表。它只在我们NLST-ing的目录为空时才会失败。
主动/被动差异只会表现为空目录,还是存在其他可能性?
答案 4 :(得分:0)
FTP要求指定的端口和上面的端口都通过防火墙打开。当我遇到webMethods超时的问题时,原因是防火墙没有打开返回端口。
霍华德