문제

편집하다:Webmethods가 실제로 LIST가 아닌 NLST를 사용한다는 사실을 배웠습니다.

우리 회사는 WebMethods 통합 서버를 사용하여 대부분의 아웃바운드 통신을 처리하지만 FTP 기능에는 아쉬운 점이 있습니다.WebMethods와 관련된 문제가 있습니다. 그러나 어떤 종류의 원인으로 인해 이 문제가 발생할 수 있는지 알려주시면 감사하겠습니다.

두 파트너의 FTP 서버를 폴링할 때 문제 없이 연결되지만 비어 있는 디렉터리(파일 및 하위 디렉터리 없음)에서 NLST를 수행하면 시간이 초과됩니다.실제 오류는 다음과 같습니다.

com.wm.net.ftpC예외:[ISC.0064.9010] java.net.SocketTimeoutException:승인 시간이 초과되었습니다.

pub.client.ftp:ls 서비스를 호출하는 동안 발생합니다.동일한 사이트에 문제 없이 여러 FTP 클라이언트로 로그인했습니다.나는 Windows, FileZilla 및 lftp에 기본 FTP 클라이언트가 무엇이든 사용했습니다.문제없이 모두.서버 자체는 내가 알 수 있는 것과 동일한 FTP 서버 소프트웨어가 아닙니다.하나는 Microsoft FTP이고, 다른 하나는 확실하지 않지만 확실히 Microsoft는 아닙니다.

빈 디렉터리에서 NLST 응답을 기다릴 때 FTP 클라이언트가 시간 초과되는 원인이 무엇인지 아시나요?FTP 서버에서 보이는 응답은 동일한 것처럼 보이지만, 내가 알지 못하는 빈 디렉토리에 대해 NLST가 응답하는 방식에 차이가 있습니까?

이 문제는 두 서버에서 일관되게 나타납니다.파일이나 하위 디렉터리가 있는 디렉터리에서는 모든 것이 잘 작동하지만 비어 있는 경우에는 작동하지 않습니다.

어떤 생각이나 지시라도 주시면 감사하겠습니다.

감사해요!

에릭 시플

도움이 되었습니까?

해결책

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 버전에는 내 버그가 없습니다.
  • 귀하의 FTP 서버에는 제가 가지고 있지 않은 버그가 있습니다.
  • 시스템에는 데이터가 없는 FTP 데이터 소켓을 좋아하지 않는 이상한 프로토콜 인식 방화벽이 있습니다.

FTP와 관련하여 방화벽 공급업체는 약간 엉뚱합니다.다른 클라이언트로 테스트할 때 WebMethods Integration Server가 실행 중인 동일한 시스템에 있는지 확인하십시오.

기록을 위해 활성 NLST에 대해 다음과 같은 일이 발생해야 합니다.

  • 클라이언트는 청취 소켓을 열고 해당 소켓의 세부 정보와 함께 PORT 명령을 보냅니다.
  • 클라이언트가 NLST 명령을 보냅니다.
  • 서버는 클라이언트의 청취 소켓(데이터 소켓)에 연결됩니다.
  • 서버는 데이터 소켓(이 경우 0바이트)을 통해 목록을 전송합니다.
  • 서버가 데이터 소켓을 닫습니다

...그리고 패시브 모드에서는

  • 클라이언트가 PASV 명령을 보냅니다.
  • 서버는 청취 소켓을 열고 세부 정보가 포함된 PASV 응답으로 응답합니다.
  • 클라이언트는 청취 소켓(데이터 소켓)에 연결됩니다.
  • 클라이언트가 NLST 명령을 보냅니다.
  • 서버는 데이터 소켓을 통해 목록을 전송합니다(다시 0바이트).
  • 서버가 데이터 소켓을 닫습니다

다른 팁

동일한 문제인지는 확실하지 않지만 얼마 전에 Java(commons.net)의 다른 FTP 클라이언트를 사용하여 비슷한 증상이 나타났습니다.이 문제는 연결의 활성/수동 모드로 인해 발생한 것으로 밝혀졌습니다.더 자세한 내용을 알려드릴 수 없어서 죄송합니다. 제가 기억하는 것은 그게 전부입니다...도움이 되길 바랍니다.

Guillermo Vasconcelos의 대답은 정확했습니다.FTP 모드에는 활성 및 수동의 두 가지가 있습니다.기본값 FTP 모드가 활성화되었습니다.Active를 사용하려면 서버가 일부 TCP/IP 포트에서 클라이언트에 다시 연결되어야 합니다.이 포트가 차단되거나 매핑되지 않은 NAT가 있는 라우터 뒤에 있을 가능성이 있기 때문에 방화벽에서는 작동하지 않습니다.

대신 패시브(PASV) 모드를 사용하면 중단되지 않습니다.

내일 여기서 유지 관리가 완료되면 패시브로 설정하여 몇 가지 새로운 테스트를 실행할 예정이지만 그게 문제인지는 잘 모르겠습니다.해당 디렉토리에 파일이나 하위 디렉토리가 있으면 디렉토리 목록을 얻을 수 있습니다.NLST를 수행하는 디렉터리가 비어 있는 경우에만 실패합니다.

활성/수동 차이는 빈 디렉터리에만 나타납니까, 아니면 다른 가능성이 있습니까?

FTP에서는 지정된 포트와 그 위의 포트가 모두 방화벽을 통해 열려야 합니다.webMethods 시간 초과 문제가 발생한 이유는 방화벽에 반환 포트가 열려 있지 않았기 때문이었습니다.

하워드

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top