我正在嘗試使用 Camel FTP Producer 將文件發送到第三方 ftp 服務器(由 Amazon 托管),但我遇到了以前從未見過的問題Writing File failed with: File operation failed... Host attempting data connection x.x.x.x is not the same as server y.y.y.y。生產者配置為被動模式,根據 TRACE 級別的日志,這是啟用的。(盡管錯誤消息聽起來更像是與活動模式問題有關)IPy.y.y.y地址是 nslookup 為目標域列出的 IP 地址之一,因此該位有意義。但是,x.x.x.xIP 與不同的 Amazon 托管服務器相關,因此我假設已經執行了某種切換或負載平衡,而 FTP 客戶端不喜歡這樣。是否有某種方法可以配置 Camel FTP 以允許這樣做(我假設這是一項安全功能),或者被動模式是否應該允許這樣做?我對 ftp 服務器提供商沒有影響,所以不幸的是,除了我的客戶端選項,我不能改變任何東西。感謝您的觀看!
1 回答

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
在對 Apache Commons FTP 的源代碼進行一些挖掘和 grep 之后,有問題的消息是由客戶端中的驗證引起的,該驗證檢查被動模式連接是否與初始服務器連接相同。
鑒于這似乎是一個負載平衡系統,被動模式數據連接是與目標 IP 不同的 IP,因此驗證失敗。
可以使用 Camel FTP 通過創建 FTPClient 的特定實例并設置刪除驗證來修復它。
FTPClient ftp = new FTPClient();
ftp.setRemoteVerificationEnabled(false);
registry.put("FTPClient", ftp);
然后在 FTP 的 URI 中引用這個對象
ftp://user@host:21/path?password=xxxx&passiveMode=true&tempPrefix=part.&ftpClient=#FTPClient
顯然,通過禁用此遠程驗證測試,您會使自己更容易受到重定向或攔截的 FTP 數據以及您的數據被發送到您不打算發送的地方的影響,但我想如果您擔心您不會使用仍然首先使用未加密的 FTP。
添加回答
舉報
0/150
提交
取消