Joseph Gagnon
Joseph Gagnon

Reputation: 2115

Apache Camel and Apache FTP Server on Windows - Can't find the "from" directory

I am trying to set up an FTP client using Apache Camel with the FTP component. I'm currently using Apache FTP Server (https://mina.apache.org/ftpserver-project/index.html) as the server implementation. I'm running the server with the provided standalone server. This is currently being done on a Windows 10 box, but will eventually be used in a Linux environment.

I run the server with the provided "typical" configuration, which allows anonymous login, on port 2121.

C:\Users\JO24447\Applications\apache-ftpserver-1.1.1\bin>ftpd.bat C:\Users\JO24447\Applications\apache-ftpserver-1.1.1\res\conf\ftpd-typical.xml
Using XML configuration file C:\Users\JO24447\Applications\apache-ftpserver-1.1.1\res\conf\ftpd-typical.xml...
FtpServer started

I have the FTP route set up as follows:

<route id="ftp-get">
  <from uri="ftp://{{ftp-client.server.host}}:{{ftp-client.server.port}}/{{ftp-client.source-dir}}?separator=Windows" />
  <log loggingLevel="INFO" message="start - ftp-get" />
  <to uri="file:{{ftp-client.dest-dir}}" />
  <log loggingLevel="INFO" message="end - ftp-get" />
</route>

Note: I've tried setting the separator to Auto and Windows, but had the same results.

I have properties set as follows (application.yml):

ftp-client:
  server:
    host: localhost
    port: 2121
  source-dir: C:\Users\JO24447\workspace\mission_services_camel\mission-services-camel\ftp-client\src\main\resources\source
  dest-dir: dest

When I run the client, I get errors indicating that it can't find the path. The FTP server log shows similar errors:

console:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.4.RELEASE)

[...]
2020-04-23 08:51:40.098  INFO 10440 --- [           main] o.a.c.i.e.AbstractCamelContext           : Route: ftp-get started and consuming from: ftp://localhost:2121/C:%5CUsers%5CJO24447%5Cworkspace%5Cmission_services_camel%5Cmission-services-camel%5Cftp-client%5Csrc%5Cmain%5Cresources%5Csource
2020-04-23 08:51:40.102  INFO 10440 --- [           main] o.a.c.i.e.AbstractCamelContext           : Total 1 routes, of which 1 are started
2020-04-23 08:51:40.102  INFO 10440 --- [           main] o.a.c.i.e.AbstractCamelContext           : Apache Camel 3.1.0 (CamelContext: FTPClient) started in 0.286 seconds
2020-04-23 08:51:40.111  INFO 10440 --- [           main] e.m.l.m.ApplicationMain                  : Started ApplicationMain in 2.933 seconds (JVM running for 5.057)
2020-04-23 08:51:41.102  WARN 10440 --- [ources%5Csource] .r.RemoteFilePollingConsumerPollStrategy : Trying to recover by force disconnecting from remote server and re-connecting at next poll: ftp://anonymous@localhost:2121
2020-04-23 08:51:41.106  WARN 10440 --- [ources%5Csource] o.a.c.c.f.r.FtpConsumer                  : Consumer FtpConsumer[ftp://localhost:2121/C:%5CUsers%5CJO24447%5Cworkspace%5Cmission_services_camel%5Cmission-services-camel%5Cftp-client%5Csrc%5Cmain%5Cresources%5Csource?separator=Windows] failed polling endpoint: ftp://localhost:2121/C:%5CUsers%5CJO24447%5Cworkspace%5Cmission_services_camel%5Cmission-services-camel%5Cftp-client%5Csrc%5Cmain%5Cresources%5Csource?separator=Windows. Will try again at next poll. Caused by: [org.apache.camel.component.file.GenericFileOperationFailedException - File operation failed: 550 No such directory.
 Cannot change directory to: C:. Code: 550]

org.apache.camel.component.file.GenericFileOperationFailedException: File operation failed: 550 No such directory.
 Cannot change directory to: C:. Code: 550
    at org.apache.camel.component.file.remote.FtpOperations.doChangeDirectory(FtpOperations.java:877) ~[camel-ftp-3.1.0.jar:3.1.0]
    at org.apache.camel.component.file.remote.FtpOperations.changeCurrentDirectory(FtpOperations.java:855) ~[camel-ftp-3.1.0.jar:3.1.0]
    at org.apache.camel.component.file.remote.FtpConsumer.doPollDirectory(FtpConsumer.java:135) ~[camel-ftp-3.1.0.jar:3.1.0]
    at org.apache.camel.component.file.remote.FtpConsumer.pollDirectory(FtpConsumer.java:103) ~[camel-ftp-3.1.0.jar:3.1.0]
    at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:133) ~[camel-file-3.1.0.jar:3.1.0]
    at org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:187) [camel-support-3.1.0.jar:3.1.0]
    at org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:106) [camel-support-3.1.0.jar:3.1.0]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_241]
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_241]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_241]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_241]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_241]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_241]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_241]

FTP server log:

[ INFO] 2020-04-23 08:53:38,062 [] [127.0.0.1] CREATED
[ INFO] 2020-04-23 08:53:38,063 [] [127.0.0.1] OPENED
[ INFO] 2020-04-23 08:53:38,064 [] [127.0.0.1] SENT: 220 Service ready for new user.

[ INFO] 2020-04-23 08:53:38,065 [] [127.0.0.1] RECEIVED: USER anonymous
[ INFO] 2020-04-23 08:53:38,066 [anonymous] [127.0.0.1] SENT: 331 Guest login okay, send your complete e-mail address as password.

[ INFO] 2020-04-23 08:53:38,067 [anonymous] [127.0.0.1] RECEIVED: PASS 
[ INFO] 2020-04-23 08:53:38,067 [anonymous] [127.0.0.1] Anonymous login success - null
[ INFO] 2020-04-23 08:53:38,068 [anonymous] [127.0.0.1] SENT: 230 User logged in, proceed.

[ INFO] 2020-04-23 08:53:38,068 [anonymous] [127.0.0.1] RECEIVED: TYPE A
[ INFO] 2020-04-23 08:53:38,068 [anonymous] [127.0.0.1] SENT: 200 Command TYPE okay.

[ INFO] 2020-04-23 08:53:38,069 [anonymous] [127.0.0.1] RECEIVED: PWD
[ INFO] 2020-04-23 08:53:38,069 [anonymous] [127.0.0.1] SENT: 257 "/" is current directory.

[ INFO] 2020-04-23 08:53:38,069 [anonymous] [127.0.0.1] RECEIVED: CWD C:\Users\JO24447\workspace\mission_services_camel\mission-services-camel\ftp-client\src\main\resources\source
[ INFO] 2020-04-23 08:53:38,070 [anonymous] [127.0.0.1] SENT: 550 No such directory.

[ INFO] 2020-04-23 08:53:38,070 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users\JO24447\workspace\mission_services_camel\mission-services-camel\ftp-client\src\main\resources\source
[ INFO] 2020-04-23 08:53:38,071 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users/JO24447/workspace/mission_services_camel/mission-services-camel/ftp-client/src/main/resources/source.

[ INFO] 2020-04-23 08:53:38,071 [anonymous] [127.0.0.1] RECEIVED: MKD C:
[ INFO] 2020-04-23 08:53:38,072 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:.

[ INFO] 2020-04-23 08:53:38,072 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users
[ INFO] 2020-04-23 08:53:38,073 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users.

[ INFO] 2020-04-23 08:53:38,073 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users\JO24447
[ INFO] 2020-04-23 08:53:38,073 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users/JO24447.

[ INFO] 2020-04-23 08:53:38,074 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users\JO24447\workspace
[ INFO] 2020-04-23 08:53:38,074 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users/JO24447/workspace.

[ INFO] 2020-04-23 08:53:38,074 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users\JO24447\workspace\mission_services_camel
[ INFO] 2020-04-23 08:53:38,075 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users/JO24447/workspace/mission_services_camel.

[ INFO] 2020-04-23 08:53:38,075 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users\JO24447\workspace\mission_services_camel\mission-services-camel
[ INFO] 2020-04-23 08:53:38,076 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users/JO24447/workspace/mission_services_camel/mission-services-camel.

[ INFO] 2020-04-23 08:53:38,076 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users\JO24447\workspace\mission_services_camel\mission-services-camel\ftp-client
[ INFO] 2020-04-23 08:53:38,077 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users/JO24447/workspace/mission_services_camel/mission-services-camel/ftp-client.

[ INFO] 2020-04-23 08:53:38,077 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users\JO24447\workspace\mission_services_camel\mission-services-camel\ftp-client\src
[ INFO] 2020-04-23 08:53:38,077 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users/JO24447/workspace/mission_services_camel/mission-services-camel/ftp-client/src.

[ INFO] 2020-04-23 08:53:38,078 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users\JO24447\workspace\mission_services_camel\mission-services-camel\ftp-client\src\main
[ INFO] 2020-04-23 08:53:38,078 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users/JO24447/workspace/mission_services_camel/mission-services-camel/ftp-client/src/main.

[ INFO] 2020-04-23 08:53:38,078 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users\JO24447\workspace\mission_services_camel\mission-services-camel\ftp-client\src\main\resources
[ INFO] 2020-04-23 08:53:38,079 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users/JO24447/workspace/mission_services_camel/mission-services-camel/ftp-client/src/main/resources.

[ INFO] 2020-04-23 08:53:38,079 [anonymous] [127.0.0.1] RECEIVED: MKD C:\Users\JO24447\workspace\mission_services_camel\mission-services-camel\ftp-client\src\main\resources\source
[ INFO] 2020-04-23 08:53:38,080 [anonymous] [127.0.0.1] SENT: 550 No permission to create /C:/Users/JO24447/workspace/mission_services_camel/mission-services-camel/ftp-client/src/main/resources/source.

[ INFO] 2020-04-23 08:53:38,080 [anonymous] [127.0.0.1] RECEIVED: CWD /
[ INFO] 2020-04-23 08:53:38,081 [anonymous] [127.0.0.1] SENT: 250 Directory changed to /

[ INFO] 2020-04-23 08:53:39,082 [anonymous] [127.0.0.1] RECEIVED: NOOP
[ INFO] 2020-04-23 08:53:39,083 [anonymous] [127.0.0.1] SENT: 200 Command NOOP okay.

[ INFO] 2020-04-23 08:53:39,083 [anonymous] [127.0.0.1] RECEIVED: PWD
[ INFO] 2020-04-23 08:53:39,084 [anonymous] [127.0.0.1] SENT: 257 "/" is current directory.

[ INFO] 2020-04-23 08:53:39,084 [anonymous] [127.0.0.1] RECEIVED: CWD C:
[ INFO] 2020-04-23 08:53:39,085 [anonymous] [127.0.0.1] SENT: 550 No such directory.

[ INFO] 2020-04-23 08:53:39,086 [anonymous] [127.0.0.1] RECEIVED: QUIT
[ INFO] 2020-04-23 08:53:39,087 [anonymous] [127.0.0.1] SENT: 221 Goodbye.

[ INFO] 2020-04-23 08:53:39,087 [anonymous] [127.0.0.1] CLOSED

There are a number of components involved, many of which are new to me. A couple of questions that come up are:

Upvotes: 0

Views: 997

Answers (1)

Claus Ibsen
Claus Ibsen

Reputation: 55750

You cannot use windows style paths with drive letters - its not a FTP standard. So remove the c: prefix off the path. And also mind the path is relative to the home directory of the user logging into the FTP server. So typically you wont have a path or you have a small path like /inbox or /acme/download (where acme is a client name etc).

Upvotes: 1

Related Questions