FTPClient池 – Java

我正在编写一个Rest服务,它连接到FTP服务器以读取一些文件,然后对读取数据执行一些操作以服务于服务请求.我正在使用Apache commons FTPClient.

作为一个临时解决方案,我正在创建一个FTPClient对象 – 然后连接它 – 然后使用凭据登录 – 在我的数据访问层中的方法(客户端是此方法的本地 – 这样做,因为FTPClient不是线程安全的)然后在退出方法之前断开它(即…在读取文件后).问题是,FTPClient需要大约3-7秒才能登录,这非常高.所以我正在考虑实现一个FTPClientPool,它可以在数据访问方法中提供已经准备好的客户端.

是否已存在任何此类ClientPools?

如果是,那么我应该选择哪一个?

如果不是,实现的难度一旦创建并连接,apache FTPClient保持活动多长时间?无限时间? (我的意思是什么是FTPClient的默认保持活动时间 – 客户端断开连接之后的空闲时间 – 因为我在java文档中看到了各种各样的时间.:()接下来的问题是如何保持它始终存在??(可能会在一个单独的线程中定期发送NOOPS ??)关于我应该如何前进的任何形式的帮助都非常有帮助.

谢谢&问候

最佳答案 客户端的空闲超时通常由服务器端确定.

以下是一些非显而易见的客户端参数:

> soTimeout – 确定客户端阻塞等待消息的时间.通常,您经常轮询一个套接字,这决定了您在轮询期间等待的时间.
> soLinger – 确定调用close()后保持连接的时间.

根据我使用FTP的经验,如果连接关闭,它们通常只是重新连接 – 与其他应用程序不同,持续不间断连接通常并不重要.

你在使用FTP做什么 – 通常不是时间关键的服务……

点赞