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