java - FTP 客户端池 - Java

标签 java multithreading connection-pooling ftp-client apache-commons-net

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

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

是否已经存在任何此类 ClientPools?

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

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

感谢和问候

最佳答案

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

下面是一些不太明显的客户端参数:

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

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

您使用 FTP 做什么 - 它通常不是时间紧迫的服务......

关于java - FTP 客户端池 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15134475/

相关文章:

javascript - 休息服务 骚扰电话

java - 虚拟自动售货机

java - '线程 "main"java.util.NoSuchElementException : No line found' When iterating through a loop reading a file 中出现异常

c# - TPL 数据流 block 在 UI 线程上运行

postgresql - Sqlalchemy:当池溢出时连接不会关闭

java - 获取已保存图像文件的 Uri

multithreading - 在perl中将线程队列对象作为对象变量传递

java - 如何在不同线程中执行接受同一类的可运行实例的两个方法?

oracle - 如何在连接错误时清除 ODP.NET 连接池?

mysql - "ER_CON_COUNT_ERROR: Too many connections"从 node.js 到 mysql 的池连接出错