Как решить «Невозможно изменить каталог на: /» при передаче файла с компьютера с Windows на сервер SFTP с использованием Apache Camel? - PullRequest
0 голосов
/ 08 января 2019

Я настроил свой код для передачи файлов между машиной Windows и SFTP-сервером (и туда и сюда) с помощью методов from (). To () в Apache Camel.

Во время выполнения я получаю сообщение об ошибке «Причина: org.apache.camel.component.file.GenericFileOperationFailedException - Невозможно изменить каталог на: /".

Первоначально я столкнулся с этой ошибкой при передаче файлов с SFTP-сервера на локальную машину Windows. После исследования я вставил «stepwise = false» в тело from (), что, похоже, устранило проблему для передачи именно в этом конкретном направлении.

Тем не менее, я получаю ту же ошибку, когда пытаюсь передать файлы в обратном направлении, то есть с моего локального компьютера с Windows на сервер SFTP. Ниже приведен фрагмент кода.

from("file:D://camel//folder1?noop=true")
.to("sftp://username@hostaddress//testfolder/?password=password&PreferredAuthentications=publickey,keyboard-interactive,password&autoCreate=true&stepwise=false&passiveMode=true&ignoreFileNotFoundOrPermissionError=true&disconnect=true");

Я публикую здесь сообщения об ошибках.

INFO: Connected to sftp://username@hostaddress:22
Jan 08, 2019 2:18:16 PM org.apache.camel.component.file.remote.RemoteFileProducer handleFailedWrite
WARNING: Writing file failed with: Cannot change directory to: /
<Jan 8, 2019 2:18:16 PM IST> <Warning> <org.apache.camel.component.file.remote.RemoteFileProducer> <BEA-000000> <Writing file failed with: Cannot change directory to: /> 
Jan 08, 2019 2:18:16 PM org.apache.camel.component.file.remote.SftpOperations$JSchLogger log
INFO: JSCH -> Disconnecting from xxx.xxx.xxx.xxx port 22
Jan 08, 2019 2:18:16 PM org.apache.camel.component.file.GenericFileOnCompletion processStrategyRollback
WARNING: Rollback file strategy: org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy@142d263c for file: GenericFile[D:\camel\folder1\samplefile.txt]
<Jan 8, 2019 2:18:16 PM IST> <Warning> <org.apache.camel.component.file.GenericFileOnCompletion> <BEA-000000> <Rollback file strategy: org.apache.camel.component.file.strategy.GenericFileRenameProcessStrategy@142d263c for file: GenericFile[D:\camel\folder1\samplefile.txt]> 


Jan 08, 2019 2:18:16 PM org.apache.camel.util.CamelLogger log
SEVERE: Failed delivery for (MessageId: ID-CW072202-45306-1546937295106-0-1 on ExchangeId: ID-CW072202-45306-1546937295106-0-2). Exhausted after delivery attempt: 1 caught: org.apache.camel.component.file.GenericFileOperationFailedException: Cannot change directory to: /

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                                                                        Elapsed (ms)
[route1            ] [route1            ] [file://D:/camel/folder1?antInclude=samplefile.txt%2CTesdt.txt%2C&noop=] [       183]
[route1            ] [to1               ] [sftp://username@hostaddress//testfolder?password=xxxxxx&Pr] [       176]

Exchange
---------------------------------------------------------------------------------------------------------------------------------------
Exchange[
Id                  ID-CW072202-45306-1546937295106-0-2
ExchangePattern     InOnly
Headers             {breadcrumbId=ID-CW072202-45306-1546937295106-0-1, CamelFileAbsolute=true, CamelFileAbsolutePath=D:\camel\folder1\samplefile.txt, CamelFileContentType=text/plain, CamelFileLastModified=1546937281742, CamelFileLength=6, CamelFileName=samplefile.txt, CamelFileNameConsumed=samplefile.txt, CamelFileNameOnly=samplefile.txt, CamelFileParent=D:\camel\folder1, CamelFilePath=D:\camel\folder1\samplefile.txt, CamelFileRelativePath=samplefile.txt, CamelRedelivered=false, CamelRedeliveryCounter=0}
BodyType            org.apache.camel.component.file.GenericFile
Body                [Body is file based: GenericFile[D:\camel\folder1\samplefile.txt]]
]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.component.file.GenericFileOperationFailedException: Cannot change directory to: /
at org.apache.camel.component.file.remote.SftpOperations.doChangeDirectory(SftpOperations.java:542)
at org.apache.camel.component.file.remote.SftpOperations.changeCurrentDirectory(SftpOperations.java:499)
at org.apache.camel.component.file.remote.SftpOperations.buildDirectory(SftpOperations.java:438)
at org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer.java:266)
at org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:165)
at org.apache.camel.component.file.remote.RemoteFileProducer.process(RemoteFileProducer.java:56)
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
at org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:157)
at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:304)
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:152)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:448)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:433)
at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:211)
at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:175)
at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174)
at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: 3: Permission denied.
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2833)
at com.jcraft.jsch.ChannelSftp._stat(ChannelSftp.java:2185)
at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:343)
at org.apache.camel.component.file.remote.SftpOperations.doChangeDirectory(SftpOperations.java:540)
... 25 more

Я не уверен, что я не вижу здесь. Буду очень признателен за некоторое движение в правильном направлении, которое может решить проблему.

...