2013-12-19 2 views
1

Spring MVC를 사용하여 응용 프로그램을 개발하고 있습니다. 비즈니스 프로세스에서는 응용 프로그램 서버에서 웹 서버로 검색해야하는 이미지 파일이 생성됩니다. 나는 간단한 방법으로 그것을하기 위해 commons-net api를 사용하고있다.다중 스레드, 다중 사용자 웹 응용 프로그램에서 java : FTP

public class FtpUtility{ 
private FTPClient ftpClient = new FTPClient(); 

public boolean retriveFileFromApp(String srcFile, String destFile){ 
    boolean flag = false; 
    try{ 
     connectToFtp() 
     File dest = new File(destFile); 

     if(!dest.exists()) 
      dest.mkdirs(); 
     if(dest.exists()) 
      dest.delete(); 
     FileOutputStream destStream = new FileOutputStream(dest); 
     ftpClient.retrieveFile(srcFile, destStream); 

    } 
    catch(Exception e){ 
     //exception handling 
    } 
    finally{ 
     disconnect(); 
    } 
    return flag; 
} 



private boolean connectToFtp(){ 
    boolean flag = false; 
    try{ 
     ftpClient.connect(appserverip); // connect to ftp 
     flag = ftpClient.login(ftpUserId, ftpPassword); 
    }   
    catch(Exception e){ 
     //exception handling 
    } 

    return flag; 
} 

private void disconnect(){ 
    try{ 
     ftpClient.logout(); 
     ftpClient.disconnect(); 
    } 
    catch(Exception e){ 
     //some exception handling 
    } 

} 
} 

이제 여러 사용자가이 응용 프로그램을 사용하는 동안이 클래스의 인스턴스를 사용하여 동시에 연결을 끊습니다. 단일 사용자라도 각 파일 전송에 대해 연결 및 연결 해제 중입니다.

  1. 어떻게 효과적으로 다음 번에 연결하는 모든 전송을 수행 한 후 분리, 개방하지 각각의 전송을위한 연결을 종료 같이이 작업을 수행 할 수 있습니다.

  2. 정적 도움말이 사용됩니까? 그렇다면 어떻게?

+0

ftp에 연결하고 연결을 해제하고 있습니다. 이 두 작업 사이에서 원하는만큼 파일을 전달할 수 있습니다. –

+0

실제로 모든 비즈니스 프로세스 중에 바코드를 생성하고 바코드가 웹 서버로 전송되어 웹 페이지에 표시됩니다. 한 비즈니스 프로세스에서 둘 이상의 파일을 전송할 수 없습니다. – ares

답변

0

이것은 작동하지 않습니다. FTP 클라이언트는 정적이며 한 번 연결하여 동기화를 통해 연속적으로 사용하거나 세션마다 있으며 각 세션은 자체적으로 세션을 만들고 연결하여 사용합니다. 둘 다 현재의 혼합은 작동하지 않습니다.

+0

죄송합니다. 코드를 붙여 넣을 때 정적을 제거하지 않았습니다. 나는 그 일을 시도했다. 질문이 편집되었습니다. – ares

관련 문제