我正在使用Spring MVC开发一个应用程序。在业务流程中,生成需要从应用程序服务器检索到Web服务器的映像文件。我正在使用commons-net api以简单的方式完成它。
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
}
}
}
现在,当多个用户正在使用此应用程序时,他们同时使用此类的实例进行连接,然后断开连接。即使是单个用户也在连接和断开每个文件传输。
如何有效地执行此操作,例如连接一次,然后执行全部转移然后断开连接,而不是为每次转移打开和关闭连接。
会使用静态帮助吗?如果是,如何?
答案 0 :(得分:0)
这不起作用。 FTP客户端是静态的,您连接一次并通过同步串行使用它,或者它是每个会话,每个会话创建并连接并同时使用它自己。你现在的混合物都无法发挥作用。