gpt4 book ai didi

java:多线程、多用户 Web 应用程序中的 FTP

转载 作者:太空宇宙 更新时间:2023-11-04 15:18:14 26 4
gpt4 key购买 nike

我正在使用 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
}

}
}

现在,当多个用户使用此应用程序时,他们同时使用此类的实例进行连接,然后断开连接。即使单个用户也会在每次文件传输时进行连接和断开连接。

  1. 如何有效地做到这一点,例如连接一次,然后进行所有传输,然后断开连接,而不是每次传输都打开和关闭连接。

  2. 使用静态会有帮助吗?如果是的话怎么办?

最佳答案

这行不通。 FTP 客户端要么是静态的,您连接一次并通过同步串行使用它,要么它是按 session 的,每个 session 同时创建、连接和使用自己的 session 。您目前的两者混合无法工作。

关于java:多线程、多用户 Web 应用程序中的 FTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20685358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com