我正在使用骆驼版2.15.2
我有一个端点
data:[29.9, 71.5, 106.4, 129.2, 144.0,{y:176.0,dataLabels:{enabled:true}}]
我执行以下操作从SFTP中获取指定文件
final String endpoint = "sftp://myUsername@$myHost:22/test-dir/?connectTimeout=5000&password=MySuperSecretPassword&ignoreFileNotFoundOrPermissionError=false&fileName=FABT_Index_DE.xls&delete=false&localWorkDirectory=/test-dir/
当我在我的电脑上启动我的应用程序(OS = Windows)时...一切都很好。该文件从SFTP获取。我认为测试是一个好主意,如果应用程序在另一台机器上运行...所以我将我的jar复制到SFTP(OS = linux)并在那里运行...(它与文件所在的机器相同)放置)
现在我得到以下例外:
@Autowired
private CamelContext camelContext;
...some Stuff...
private Exchange fetchFile(final String enpoint, final long timeout) {
final ConsumerTemplate consumer = camelContext.createConsumerTemplate();
return consumer.receive(endpoint, timeout);
}
有谁可以告诉我为什么我得到这个例外 - 而不是从SFTP获取文件?
答案 0 :(得分:0)
我发现了以下内容:
我用端点和local-working-directory使用相同的String test-dir
。在一些实验之后,似乎对于端点定义
final String endpoint = "sftp://myUsername@$myHost:22/test-dir/?connect ...
test-dir
是相对路径。例如此目录位于/vol/usr/home/MyTestUser/test-dir
,/vol/usr/home/myUsername/
是SFTP用户的主目录(或通过ssh登录时获得的目录) - 可以定义端点与/test-dir/
但是对于选项localWorkDirectory
final String endpoint = " ... &localWorkDirectory=/test-dir/ ..."
似乎test-dir
是绝对路径。因为我尝试在SFTP上运行应用程序,所以我没有权限写入绝对目录/test-dir/
所以我将此目录更改为/vol/usr/home/myUsername/MyTempDirectory/
并添加选项&stepwise=false
。现在它起作用了。端点现在是:
final String endpoint = "sftp://myUsername@myHost:22/test-dir/connectTimeout=5000&password=MySuperSecretPassword&ignoreFileNotFoundOrPermissionError=false&fileName=FABT_Index_DE.xls&delete=false&localWorkDirectory=/vol/usr/home/myUsername/MyTempDirectory/&stepwise=false";
也许有人可以更准确地澄清它......