2016-06-30 8 views
0

Я использую Apache Camel 2.13.2 и пытаюсь подключиться к sftp, который имеет специальные символы в имени пользователя. Имя пользователя - это что-то вроде «XXX \ XX-XXXXXXX». URL-адрес верблюда в конце преобразуется в нечто вроде ниже, и аутентификация не работает. Может ли кто-нибудь пролить свет на то, как бороться с этими специальными символами в имени пользователя?camel sftp специальные символы в имени пользователя

Endpoint[sftp://XXX%[email protected]:22//folder_Test/?binary=true&consumer.bridgeErrorHandler=true&delay=15000&idempotent=true&idempotentKey=%24%7Bfile%3Aname%7D-%24%7Bfile%3Asize%7D-%24%7Bfile%3Amodified%7D&include=.*Test.*&maxMessagesPerPoll=30&password=xxxxxx&pollStrategy=%23FTPPollingConsumerPollStrategy&readLock=changed&sendEmptyMessageWhenIdle=true&stepwise=false&throwExceptionOnConnectFailed=true] 

Ниже приведено исключение, которое я вижу в журналах.

org.apache.camel.component.file.GenericFileOperationFailedException: Cannot connect to sftp://XXX\[email protected]:22 
    at org.apache.camel.component.file.remote.SftpOperations.connect(SftpOperations.java:143) 
    at org.apache.camel.component.file.remote.RemoteFileConsumer.connectIfNecessary(RemoteFileConsumer.java:154) 
    at org.apache.camel.component.file.remote.RemoteFileConsumer.recoverableConnectIfNecessary(RemoteFileConsumer.java:145) 
    at org.apache.camel.component.file.remote.RemoteFileConsumer.prePollCheck(RemoteFileConsumer.java:55) 
    at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:106) 
    at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:187) 
    at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:114) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source) 
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(Unknown Source) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Unknown Source) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: com.jcraft.jsch.JSchException: Auth fail 
    at com.jcraft.jsch.Session.connect(Session.java:512) 
    at org.apache.camel.component.file.remote.SftpOperations.connect(SftpOperations.java:115) 
    ... 15 more 

Те же учетные данные для работы sftp при использовании fileZilla или Apache FTP Utilities.

ответ

1

См. Документацию по настройке конечных точек, особенно о паролях: http://camel.apache.org/how-do-i-configure-endpoints.html, где вам необходимо использовать синтаксис RAW. Синтаксис RAW можно использовать для указания имени пользователя/пароля как параметра uri, а не в начале uri.

+0

Я попытался использовать RAW для имени пользователя, но он не работал, давая мне ту же ошибку аутентификации. Любые другие идеи, которые я мог бы попробовать? – Ravi

+0

Использование RAW с именем пользователя в качестве параметра работает, то есть вместо использования имени пользователя @ sftp: // host: port, если вы используете sftp: // host: port? Username = RAW (XXXX), он работает. Но все же символ «\» по-прежнему остается проблемой даже при использовании RAW, он не аутентифицируется. Liked Camel до сих пор, но только для этого сценария мне пришлось бы найти другой способ подключения, загрузки и выгрузки файлов :( – Ravi

Смежные вопросы