java: FTP dans une application web multi-thread, multi-utilisateur


Je développe une application utilisant Spring MVC. Dans un processus métier, un fichier image est généré qui doit être récupéré sur le serveur Web à partir du serveur d'applications. J'utilise l'api commons-net pour le faire de manière simple.

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   
    }

}
}

Maintenant, alors que plusieurs utilisateurs utilisent cette application, ils se connectent simultanément à l'aide d'une instance de cette classe, puis se déconnectent. Même un seul utilisateur se connecte et se déconnecte pour chaque transfert de fichier.

  1. Comment puis-je faites-le efficacement comme vous connecter une fois, puis faire le tout transfert, puis déconnecter, ne pas ouvrir et fermer la connexion pour chaque transfert.

  2. L'utilisation de l'aide statique? Si oui, comment?

Author: ares, 2013-12-19

1 answers

Ça ne va pas marcher. Soit le client FTP est statique et vous le connectez une fois et l'utilisez en série via la synchronisation, soit il est par session et chaque session crée, se connecte et utilise la sienne simultanément. Votre mélange actuel des deux ne peut pas fonctionner.

 0
Author: user207421, 2013-12-20 08:48:35