blusewang
2013-11-18 09:14
浏览 636
已采纳

FTP apache FTPClient组件 连接池

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • iteye_7589 2013-11-20 04:58
    已采纳

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

    点赞 评论
  • mingxuxu 2013-11-18 11:07

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

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

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

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

    点赞 评论

相关推荐 更多相似问题