Scr*_*ape 2 java ftp apache-camel apache-commons-net
我正在尝试使用 Camel FTP Producer 将文件发送到第三方 ftp 服务器(由亚马逊托管,它会出现),并且遇到了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级别的日志,这是启用的。(虽然错误消息听起来更像是与活动模式问题有关)
该y.y.y.yIP地址是那些NSLOOKUP目标域上市之一,所以该位才有意义。但是,该x.x.x.xIP 与不同的 Amazon 托管服务器有关,因此我认为已经执行了某种切换或负载平衡,而 FTP 客户端不喜欢那样。
是否有某种方法可以配置 Camel FTP 以允许这样做(我假设这是一个安全功能),还是被动模式应该允许这样做?
我对 ftp 服务器提供商没有影响,所以很遗憾,除了我的客户端选项之外,我无法更改任何内容。
感谢您的关注!
在对 Apache Commons FTP 的源代码进行一些挖掘和 grep 之后,有问题的消息是由客户端中的验证引起的,该验证检查被动模式连接是否与初始服务器连接相同。
鉴于这似乎是一个负载平衡系统,被动模式数据连接是与目标 IP 不同的 IP,因此验证失败。
可以使用 Camel FTP 通过创建 FTPClient 的特定实例并将删除验证设置为关闭来修复它。
FTPClient ftp = new FTPClient();
ftp.setRemoteVerificationEnabled(false);
registry.put("FTPClient", ftp);
Run Code Online (Sandbox Code Playgroud)
然后在 FTP 的 URI 中引用此对象
FTPClient ftp = new FTPClient();
ftp.setRemoteVerificationEnabled(false);
registry.put("FTPClient", ftp);
Run Code Online (Sandbox Code Playgroud)
显然,通过禁用此远程验证测试,您会使自己更容易受到被重定向或拦截的 FTP 数据以及您的数据被发送到您不想要的地方的影响,但我想如果您担心自己不会使用首先仍然使用未加密的FTP。
| 归档时间: |
|
| 查看次数: |
2273 次 |
| 最近记录: |