![](/img/trans.png)
[英]Spring Integration DefaultFtpSessionFactory timeout parameters details
[英]What is the meaning of different timeout properties of Apache FTPClient (and DefaultFtpSessionFactory in Spring)?
有以下用於 FTP 通信的超時屬性:
您能否向 Java/Kotlin 開發人員解釋為什么要設置它們以及如果不設置它們會發生什么不好的事情?
添加一些上下文:我的服務器應用程序需要連接到 FTP 並列出/上傳/下載/刪除文件。 我想確保我連接或傳輸文件的嘗試不會永遠掛起,以防出現問題。
AbstractFtpSessionFactory
中的所有這些屬性都向下傳播到FTPClient
:
if (this.connectTimeout != null) {
client.setConnectTimeout(this.connectTimeout);
}
if (this.defaultTimeout != null) {
client.setDefaultTimeout(this.defaultTimeout);
}
if (this.dataTimeout != null) {
client.setDataTimeout(this.dataTimeout);
}
那邊的connectTimeout
有一個默認值private static final int DEFAULT_CONNECT_TIMEOUT = 60000;
. 所以,錯過它是可以的。 是的,當我們通過connect()
創建Socket
時會用到這個: _socket_.connect(new .netSocketAddress(host, port), connectTimeout);
defaultTimeout
向下傳播到_socket_.setSoTimeout(_timeout_);
這對套接字讀取操作有影響。 請參閱Socket.setSoTimeout()
JavaDocs。 是的,它的默認值為0
。 所以,也可以錯過它的配置。
dataTimeout
用於在ACTIVE_LOCAL_DATA_CONNECTION_MODE
中創建的服務器Socket
,用於類似的setSoTimeout()
選項。 默認值相同:0 - 無限等待讀取操作應答。
我從 Apache Commons Net 源代碼中得出所有這些。
看起來該項目本身並不提供有關此事的一些文檔: https://commons.apache.org/proper/commons.net/
所以,是的,一條經驗法則:始終使用合理的值配置這些道具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.