4

我正在编写一个Rest服务,它连接到FTP服务器以读取一些文件,然后对读取的数据执行一些操作以提供服务请求。我正在使用Apache公用程序FTPClientFTPClient Pool - Java

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

是否有这样的ClientPools已经存在?

如果是,那么我应该选择什么?

如果否,实现的难度一旦创建并连接,apache FTPClient保持活动状态多久?为无限的时间? (我的意思是什么是FTPClient的默认保持活动时间 - 在客户端断开连接后的空闲时间 - 因为我在java文档中看到了各种各样的时间。:()接下来的问题是如何让它永远活着??(可发送定期后NOOPS在一个单独的线程?)任何有关我应该如何前进是真正有用样的帮助。

感谢&问候

回答

2

,为客户闲置超时一般是确定。服务器端

下面是一些较为明显的非客户端参数的:

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

从我使用FTP的经验,他们通常只是重新连接,如果连接关闭 - 这不是正常至关重要有不同于其他应用程序的恒定不间断的连接。

你在使用FTP的 - 它通常不是时间关键的服务...

+0

嗨菲利普,感谢您的回应。正如我所提到的 - 我的REST服务中的数据访问层与FTP Server.And会谈,对我来说非常重要,如果不是太重要的话。 – 2013-03-01 04:11:03

0

至于ClientPools,我正好写了一个示范项目。 commons-pool-ftp

我正在通过我们的经验ftp协议, 惹恼了一点点,就只是从池中获取客户端上进行测试时满足破裂的管道

testOnBorrow=true