我正在编写一个连接到FTP服务器读取一些文件的Rest服务,然后对读取的数据执行一些操作以满足服务请求。
作为一个临时的解决方案,我将在一个方法中创建一个FTPClient
对象,然后连接它,再使用凭据登录(客户端位于此方法的本地-这样做是因为FTPClient
不是线程安全的),然后在退出方法之前断开连接(即读取文件后)。问题是,FTPClient
需要大约3 - 7秒的登录时间,这是非常高的。所以我正在考虑实现一个FTPClientPool
,它可以在数据访问方法中提供一个已经准备好的客户端。
是否已存在任何此类客户端池?
如果是,我应该选择哪一个?
如果没有,实现的困难是一旦创建和连接,Apache FTPClient保持活动多久?无限时间??(我的意思是什么是FTPClient的默认保持活动时间-空闲时间后,客户端断开连接-因为我看到各种各样的时间在java文档.:()和下一个问题是你如何保持它始终活动??(可能是发送NOOPS后,定期间隔在一个单独的线程??)任何类型的帮助,我应该如何向前迈进真的很有帮助.
感谢与问候
3条答案
按热度按时间gudnpqoy1#
客户端的空闲超时通常由服务器端确定。
下面是一些不太明显的客户端参数:
从我使用FTP的经验来看,它们通常只是在连接关闭时重新连接--与其他应用程序不同,拥有一个持续不间断的连接通常并不重要。
你用FTP做什么--它通常不是一个时间关键的服务......
mfuanj7w2#
至于ClientPools,我碰巧编写了一个演示项目。commons-pool-ftp
我对ftp协议有点恼火,根据我们的经验,在刚从池中获取的客户端上测试时,它会遇到 * 管道中断 *。
第一个月
cigdeys33#
设定
然后用途:
然后在每种方法中添加:
并且在完成时精细: