2008-09-11 61 views
1

编辑:据悉,的Webmethods实际使用NLST,没有列出,如果该事项FTP超时上NLST当目录为空

我们的业务使用的WebMethods集成服务器来处理我们的大部分出站通信,它的FTP功能叶需要的东西。我们遇到的问题可能是WebMethods特有的,但如果任何人都能指出我可能导致这种情况的方向,我会很感激。

当轮询我们的两个合作伙伴的FTP服务器时,我们连接时没有问题,但是在空目录(无文件和无子目录)上执行NLST时,它会超时。实际的错误是:

com.wm.net.ftpCException:[ISC.0064.9010] java.net.SocketTimeoutException:接受超时

它正在pub.client的调用期间抛出.ftp:ls服务。我已经使用多个FTP客户端登录到同一个站点没有问题。我使用了Windows,FileZilla和lftp中的默认FTP客户端。一切都没有问题。这些服务器本身并不是我所知道的FTP服务器软件。一个是Microsoft FTP,另一个我不确定,但绝对不是微软。

任何想法可能导致FTP客户端在空目录上等待NLST响应时超时?来自FTP服务器的可见响应看起来是相同的,但NLST如何响应我不知道的空目录有什么不同?

这个问题在这两台服务器上是一致的。对于包含文件或子目录的目录,一切正常,但在空时不行。

任何想法或方向,将不胜感激。

谢谢!

埃里克Sipple

+0

WebMethods?我感到你的痛苦! – erickson 2008-09-11 18:35:22

回答

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与非空目录一起工作,它应该使用空目录。

所以我的猜测是,要么:

  • 你的WM版本有一个bug矿不
  • 你的FTP服务器有一个错误我的不
  • 有一个古怪的协议感知系统中的防火墙不喜欢没有数据的FTP数据套接字。

防火墙厂商都有点任性当涉及到FTP ... 当与其他客户端测试,确保它从哪个的WebMethods集成服务器运行在同一台机器的。

只是为了记录在案,这里是应该发生什么积极NLST

  • 客户端打开一个监听套接字,并发送与插座的细节
  • 客户端发送NLST命令
  • 服务器连接PORT命令到客户端的监听套接字(这是数据套接字)
  • 服务器传输列表数据套接字(在这种情况下,零字节)
  • 服务器关闭数据套接字

...在被动模式下

  • 客户端发送
  • 服务器打开一个监听套接字PASV命令,以包含其细节PASV响应
  • 客户端连接到监听套接字回复(这是数据套接字)
  • 客户端发送NLST命令
  • 服务器通过数据套接字传输列表(再次为零字节)
  • 服务器关闭数据套接字
2

我不知道这是否是同样的问题,但我有类似的症状前一阵子在Java中使用(commons.net)另一个FTP客户端。问题原来是由连接的主动/被动模式引起的。 对不起,我不能给你更多的细节,这就是我所能记得的......希望有所帮助。

2

Guillermo Vasconcelos在他的回答中是正确的。有两种FTP模式,主动和被动。默认FTP模式处于活动状态。活动要求服务器在某些TCP/IP端口上连接回客户端。这不适用于防火墙,因为这个端口很可能会被阻塞,或者如果您在具有NAT的路由器后面(未映射)。

如果您使用Passive(PASV)模式,则不应该挂起。

0

当我在这里完成维护时,我将运行一些新的测试设置为被动的明天,但我不确定这是问题所在。如果该目录中有文件或子目录,我们可以获取目录列表。它只在NLST所在的目录为空时失败。

主动/被动差异只会表现为空目录,还是存在另一种可能性?

0

FTP要求两个指定的端口和它上面的一个通过防火墙打开。当webMethods超时出现​​问题时,这是因为防火墙没有打开返回端口。

Howard