2017-08-03 2 views
0

Ich muss eine Datei vom SFTP-Server lesen. Aber beim Lesen es Kamel wirft com.jcraft.jsch.SftpException: Permission denied. Aber ich habe Lese- und Schreibrechte für den Ordner und die Dateien darin. Ich habe versucht, die Datei in den Ordner .done mit filezilla zu verschieben, und es funktioniert.Apache Camel wirft Erlaubnis verweigert für SFTP-Verbindung

Route:

sftp://[email protected]_ADDRESS:PORT/path?password=MY_PASSWORD&move=.done&binary=true&disconnect=true&include=FILENAME_(2\\d{3})(\\d{2})(\\d{2}).txt 

File Permissions

Stacktrace

o.a.c.c.file.remote.SftpConsumer   : Error processing file RemoteFile[FILENAME_20170802.txt] due to Cannot retrieve file: path/FILENAME_20170802.txt. Caused by: [org.apache.camel.component.file.GenericFileOperationFailedException - Cannot retrieve file: path/FILENAME_20170802.txt] 

org.apache.camel.component.file.GenericFileOperationFailedException: Cannot retrieve file: path/FILENAME_20170802.txt 
    at org.apache.camel.component.file.remote.SftpOperations.retrieveFileToStreamInBody(SftpOperations.java:704) ~[camel-ftp-2.19.1.jar:2.19.1] 
    at org.apache.camel.component.file.remote.SftpOperations.retrieveFile(SftpOperations.java:648) ~[camel-ftp-2.19.1.jar:2.19.1] 
    at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:408) [camel-core-2.19.1.jar:2.19.1] 
    at org.apache.camel.component.file.remote.RemoteFileConsumer.processExchange(RemoteFileConsumer.java:137) [camel-ftp-2.19.1.jar:2.19.1] 
    at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:218) [camel-core-2.19.1.jar:2.19.1] 
    at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:182) [camel-core-2.19.1.jar:2.19.1] 
    at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174) [camel-core-2.19.1.jar:2.19.1] 
    at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101) [camel-core-2.19.1.jar:2.19.1] 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_131] 
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_131] 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_131] 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_131] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] 
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131] 
Caused by: com.jcraft.jsch.SftpException: Permission denied 
    at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2873) ~[jsch-0.1.54.jar:na] 
    at com.jcraft.jsch.ChannelSftp._stat(ChannelSftp.java:2225) ~[jsch-0.1.54.jar:na] 
    at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:1318) ~[jsch-0.1.54.jar:na] 
    at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:1290) ~[jsch-0.1.54.jar:na] 
    at org.apache.camel.component.file.remote.SftpOperations.retrieveFileToStreamInBody(SftpOperations.java:689) ~[camel-ftp-2.19.1.jar:2.19.1] 
    ... 14 common frames omitted 
+0

wenn Kamel werfen Erlaubnis abgelehnt. es wäre sicherlich ein mit der Erlaubnis zusammenhängendes Problem. Überprüfen Sie, wie Sie Ihre Anmeldeinformationen weitergeben. Die in real bereitgestellten Anmeldeinformationen haben diese Rechte. Überprüfen Sie die camel ftp-Syntax, die für die Verbindung mit Ihrem FTP-Server verwendet wird. – sakura

+0

Überprüfen Sie, ob der Ordner vorhanden ist und der Pfad des Ordners in der Kamelroute (d. H. Syntax) korrekt angegeben wurde. Versuchen Sie es mit ./done. Stellen Sie außerdem sicher, dass die Quelldatei 'FILENAME.txt' existiert. Sie haben einige Muster mit Dateiname verbunden, aber ich sehe keine Sache in dem Namen für Dateinamen angehängt. – sakura

+0

@sakura Aktualisierter Dateiname. Die Datei existiert in SFTP und druckt auch den richtigen Dateinamen aus dem richtigen Pfad. In SFTP haben angegebene Berechtigungsnachweise die Berechtigung zum Lesen und Schreiben von Dateien (geprüft mit filezilla). Aber ich bekomme immer noch diesen Fehler – Ibrahim

Antwort

0

Der Verzeichnispfad, der Ihnen zur Verfügung gestellten ist relativ, nicht absolut. Nur bestätigen, wenn das das Problem ist.

Standardmäßig wird Camel nach/home/{username}/directory gehen. Nicht das Stammverzeichnis "\".

Ich hoffe, es hilft.