FTP客户端池 - Java

Sri*_*dhi 5 java multithreading connection-pooling ftp-client apache-commons-net

我正在编写一个连接到 FTP 服务器以读取一些文件的 Rest 服务,然后对读取的数据进行一些操作以服务于服务请求。我正在使用 Apache 公共资源FTPClient

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

是否已经存在任何这样的 ClientPools?

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

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

感谢和问候

Phi*_*use 2

客户端的空闲超时通常由服务器端确定。

以下是一些更不明显的客户端参数:

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

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

您使用 FTP 做什么 - 它通常不是一个时间关键的服务......