1

編集:それが重要な場合、Webmethodsは実際にはLISTではなくNLSTを使用することを学びました

私たちのビジネスでは、WebMethods統合サーバーを使用してほとんどのアウトバウンド通信を処理していますが、そのFTP機能にはまだまだ足りないものがあります。WebMethodsに固有の問題が発生していますが、どのようなことが原因であるかを誰かに教えてもらえれば幸いです。

パートナーの2つのFTPサーバーをポーリングする場合、問題なく接続しますが、空のディレクトリ(ファイルやサブディレクトリがない)でNLSTを実行すると、タイムアウトになります。実際のエラーは次のとおりです。

com.wm.net.ftpCException:[ISC.0064.9010] java.net.SocketTimeoutException:受け入れがタイムアウトしました

pub.client.ftp:lsサービスの呼び出し中にスローされます。同じサイトに問題なく多数のFTPクライアントでログインしました。Windows、FileZilla、lftpにあるデフォルトのFTPクライアントを使用しました。すべて問題なく。サーバー自体は、私が知る限り、同じFTPサーバーソフトウェアではありません。1つはMicrosoftFTPで、もう1つは私にはわかりませんが、間違いなくMicrosoftではありません。

空のディレクトリでNLST応答を待機しているときに、FTPクライアントがタイムアウトする原因は何でしょうか。FTPサーバーからの表示される応答は同じように見えますが、私が気付いていない空のディレクトリに対するNLSTの応答方法に違いはありますか?

この問題は、これら2つのサーバーで一貫しています。ファイルまたはサブディレクトリが含まれるディレクトリではすべて正常に機能しますが、空の場合は機能しません。

任意の考えや方向性をいただければ幸いです。

ありがとう!

エリック・シップル

4

5 に答える 5

2

同じ問題かどうかはわかりませんが、Java で別の FTP クライアント (commons.net) を使用して少し前に同様の症状がありました。この問題は、接続のアクティブ/パッシブ モードが原因であることが判明しました。詳細をお伝えできず申し訳ありません。覚えているのはこれだけです...お役に立てば幸いです。

于 2008-09-11T18:48:50.397 に答える
2

Guillermo Vasconcelos の答えは正しかった。アクティブとパッシブの 2 つの FTP モードがあります。デフォルトのFTPモードはアクティブです。Active では、サーバーが何らかの TCP/IP ポートでクライアントに接続する必要があります。これはファイアウォールでは機能しません。これは、このポートがブロックされる可能性があるか、NAT を備えたルーターの背後にいる場合はマップされていない可能性があるためです。

代わりにパッシブ (PASV) モードを使用すると、ハングすることはありません。

于 2008-09-11T19:47:35.513 に答える
2

WebMethods IS Version 6.5 Updates WmPRT_6-5-1_SP1、IS_6-5_SP3 でこれを試しました。

初めて完全に機能しました。

FTP サーバー (Debian のデフォルトの ftpd) でのデバッグをオンにしました。WebMethods の NLST は、渡されたアクティブ/パッシブ パラメータを尊重します。

NLST コマンドや、空のディレクトリでの正しい動作について特別なことはありません。LIST が機能する場合は、RETR、STOR、および NLST も機能するはずです。NLST が空でないディレクトリで機能する場合は、空のディレクトリでも機能するはずです。

したがって、私の推測では、次のいずれかです。

  • お使いのバージョンの WM にはバグがありますが、鉱山にはありません
  • あなたの FTP サーバーにはバグがあります。
  • お使いのシステムには、データのない FTP データ ソケットを好まない風変わりなプロトコル対応ファイアウォールがあります。

ファイアウォール ベンダーは、FTP に関しては少し気まぐれです... 他のクライアントでテストするときは、WebMethods Integration Server が実行されているマシンと同じマシンからのものであることを確認してください。

記録のために、アクティブな NLST で何が起こるかを次に示します。

  • クライアントはリスニング ソケットを開き、そのソケットの詳細を含む PORT コマンドを送信します
  • クライアントが NLST コマンドを送信
  • サーバーはクライアントのリッスン ソケットに接続します (これはデータ ソケットです)。
  • サーバーはデータ ソケットを介してリストを送信します (この場合はゼロ バイト)
  • サーバーはデータソケットを閉じます

...そしてパッシブモードで

  • クライアントがPASVコマンドを送信
  • サーバーはリッスン ソケットを開き、その詳細を含む PASV 応答で応答します
  • クライアントはリッスン ソケットに接続します (これはデータ ソケットです)。
  • クライアントが NLST コマンドを送信
  • サーバーはデータソケットを介してリストを送信します (再びゼロバイト)
  • サーバーはデータソケットを閉じます
于 2008-09-18T10:15:10.993 に答える
0

FTP では、指定されたポートとその上のポートの両方がファイアウォールを介して開かれている必要があります。webMethods のタイムアウトで問題が発生したのは、ファイアウォールがリターン ポートを開いていなかったことが原因でした。

ハワード

于 2009-06-05T22:17:05.843 に答える
0

明日ここでメンテナンスが行われるときにパッシブに設定していくつかの新しいテストを実行する予定ですが、それが問題かどうかはわかりません。そのディレクトリにファイルまたはサブディレクトリがある場合、ディレクトリの一覧を取得できます。NLST を実行しているディレクトリが空の場合にのみ失敗します。

アクティブ/パッシブの違いは、空のディレクトリに対してのみ現れるのでしょうか、それとも別の可能性がありますか?

于 2008-09-11T19:53:10.087 に答える