Ftp 다운로드 독립 실행 형 응용 프로그램을 사용해 보았는데 정상적으로 작동합니다. 그러나 웹 애플리케이션의 Quartz 스케쥴러에이를 포함 시켰을 때, 그것은 붙어 있습니다.Quartz scheduler로 FTP를 통해 파일을 다운로드하십시오.
내가 한 일은 다음과 같습니다. 내가 서버를 시작하면
public class FtpTransfer implements StatefulJob {
public void execute(JobExecutionContext arg0) throws JobExecutionException {
FTPClient ftp = new FTPClient();
FileOutputStream br = null;
try
{
ftp.connect("localhost");
ftp.login("admin", "admin");
String path = "alfresco/MYPUB/Admin/TMM/Pickup";
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.changeWorkingDirectory(path);
System.out.println("After Changing Directory path");
FTPFile[] ftpFile = ftp.listFiles(path);
System.out.println("After getting list of files");
System.out.println("Length : "+ftpFile.length);
System.out.println("----------------- Downloaded -------------");
for(FTPFile tempFtpFiles : ftpFile) {
br = new FileOutputStream("e:\\Downloaded\\"+tempFtpFiles.getName());
ftp.retrieveFile(tempFtpFiles.getName(), br);
System.out.println(tempFtpFiles.getName());
}
System.out.println("------------------------------------------");
}
catch(Exception exception) {
System.out.println("Error : "+exception);
} finally {
try {
if(br!=null){
br.close();
}
ftp.disconnect();
} catch(IOException e) {
e.printStackTrace();
System.out.println("Error : "+e);
}
}
}
}
은, 그것은
After Changing Directory path
After Changing Directory path
After Changing Directory path
마다 10 초를 인쇄합니다. 그러나 주어진 경로에서 파일을 다운로드하지는 않습니다. Mailnly 프로그램이 FTPFile [] ftpFile = ftp.listFiles (path) 라인을 넘지 않았습니다. 나는 무엇을 잘못 했는가?
활성 또는 수동 ftp를 사용해야하는지 여부를 확인하십시오. 방화벽/net 게이트웨이가 활성 FTP를 차단하고 있다면 차단하고 결국 시간 초과 될 것입니다. 수동 FTP로 전환하는 것이 일반적으로 해당됩니다. – nos
nos와 동의하면 다음 FTPClient 메소드가 도움이되는지 확인하십시오. http://commons.apache.org/net/api/org/apache/commons/net/ftp/FTPClient.html#enterLocalPassiveMode%28%29 – kvista