为了账号安全,请及时绑定邮箱和手机立即绑定

FTP apache FTPClient组件 连接池

FTP apache FTPClient组件 连接池

慕标5832272 2019-04-24 18:19:27
各位好,我做了一个apache FTPClient的连接池,目前碰到一个问题:1.从池中取FTPClient对象之前,如何判断该对象是可用的?就好像刚刚new 一个FTPClient对象一样?使用完的FTPClient对象会放到池中,由于JVM的垃圾回收或者FTP服务器的原因,FTPClient对象会失效。我测试了一下,休眠一段时间后从池中取FTPClient对象,isConnected() isAvaliable()两个方法都返回true,但是下载还是失败.对FTP不是很了解,期望给予支持!
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

ftp 链接有超时设置。
因此要维持链接的话需要发送nop指令。
再开一个线程,定时遍历池中链接,发送nop指令吧。

查看完整回答
反对 回复 2019-05-06
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

几年前使用过这个,是可以做池化处理的,但是需要注意:

FTPClient实际上是有状态的,因此在归还的时候需要做相应的处理(比如当前路径清空到根目录等),如果使用完了就直接放到对象池里面,应该会有问题;

FTPClient是不能多线程共享的,原因也是因为状态的特性。

如果不是因为状态清理的问题,需要具体的错误信息分析才能给出具体的结论。


查看完整回答
反对 回复 2019-05-06
  • 2 回答
  • 0 关注
  • 1205 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信