FTP apache FTPClient组件 连接池

各位好,我做了一个apache FTPClient的连接池,目前碰到一个问题:
1.从池中取FTPClient对象之前,如何判断该对象是可用的?就好像刚刚new 一个FTPClient对象一样?

使用完的FTPClient对象会放到池中,由于JVM的垃圾回收或者FTP服务器的原因,FTPClient对象会失效。我测试了一下,休眠一段时间后从池中取FTPClient对象,isConnected() isAvaliable()两个方法都返回true,但是下载还是失败.

对FTP不是很了解,期望给予支持!


慕标5832272
浏览 1206回答 2
2回答

哆啦的时光机

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

慕勒3428872

几年前使用过这个,是可以做池化处理的,但是需要注意:FTPClient实际上是有状态的,因此在归还的时候需要做相应的处理(比如当前路径清空到根目录等),如果使用完了就直接放到对象池里面,应该会有问题;FTPClient是不能多线程共享的,原因也是因为状态的特性。如果不是因为状态清理的问题,需要具体的错误信息分析才能给出具体的结论。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java