Apache Commons NET:我应该在每个连接上创建一个新的 FTPClient 对象还是重用一个?

Posted

技术标签:

【中文标题】Apache Commons NET:我应该在每个连接上创建一个新的 FTPClient 对象还是重用一个?【英文标题】:Apache Commons NET: Should I create a new FTPClient object on each connection or reuse one? 【发布时间】:2011-10-17 01:12:24 【问题描述】:

我只是想知道:在我的 Java 应用程序中,每次我需要连接到 FTP 服务器时,我应该创建一个新的 FTPClient 对象,还是应该创建一个 FTPClient() 对象并在每次我重用它时连接到 FTP 服务器?

【问题讨论】:

【参考方案1】:

两者都可以,但 apache commons.net 库是 not thread safe,因此如果您确实使用具有多个线程的客户端,请注意您必须同步对它的访问。

【讨论】:

【参考方案2】:

如果不确切知道您的代码必须做什么(连接频率、需要传输多少文件等),很难说。

我的个人意见是FTPClient(),但每次您需要做某事时都连接/验证/传输/断开连接(假设两者之间会有合理的差距)。原因是 FTP 会话通常具有相当短的不活动超时。

【讨论】:

【参考方案3】:

重用会更好,因为每次创建新连接时都不需要新实例,即使是到新服务器也是如此。因为 connect 和 disconnect 方法可以为您完成这项工作。

所以尽可能多地重用对象。

【讨论】:

谢谢你,只是确保:) 但是,如果您想同时建立连接,您可能需要多个实例。 您有关于创建新实例的成本的任何数据,还是只是猜测? 谢谢,但我一次只需要连接一个 FTP :)

以上是关于Apache Commons NET:我应该在每个连接上创建一个新的 FTPClient 对象还是重用一个?的主要内容,如果未能解决你的问题,请参考以下文章

Apache Commons Net FTPClient 中的文件名编码

如何导入 org.apache.commons.net.ftp.FTPClient

Apache Commons Net FTPClient 和 listFiles()

使用 org.apache.commons.net.ftp.FTPClient 保护 FTP

使用 apache commons-net FTPClient 传输原始二进制文件?

Apache Commons Net FTP 正在上传损坏的文件