Hi

If you are only polling a single file then you should set the
directory=false URI option. Then Camel knows it should poll a file
from the remote FTP server.
Make sure the path to the file is correct. Is the file in the home dir
of the user or in a sub folder etc.

You can enable TRACE logging on the
org.apache.camel.component.file=TRACE and have much more logging to
see what is going on


On Fri, Jan 9, 2009 at 6:34 PM, Davis Ford <davisf...@gmail.com> wrote:
> Hi Claus, thanks I will give it a try.  One more quick question.  I
> tried to take the route out of it entirely, and just force it via
> this:
>
> try {
>        Endpoint ftp = context.getEndpoint(url);
>        PollingConsumer consumer = ftp.createPollingConsumer();
>        consumer.start();
>        Exchange result = consumer.receive();
>        consumer.stop();
> } catch (Exception e) {
>
> This produces:
>
> 12:19:48,319 DEBUG [Thread: 1 RemoteFileComponent]
> impl.ScheduledPollConsumer (ScheduledPollConsumer.java:63) - Starting
> to poll: Endpoint[sftp://t...@198.180.208.188/home/toor/newfile.txt]
> 12:19:48,319 DEBUG [Thread: 1 RemoteFileComponent] remote.SftpConsumer
> (SftpConsumer.java:94) - Polling
> sftp://t...@198.180.208.188:22/home/toor/newfile.txt
> 12:19:48,319 DEBUG [Thread: 1 RemoteFileComponent] remote.SftpConsumer
> (SftpConsumer.java:71) - Session isn't connected, trying to recreate
> and connect.
> 12:19:49,881 DEBUG [Thread: 1 RemoteFileComponent] remote.SftpConsumer
> (SftpConsumer.java:75) - Channel isn't connected, trying to recreate
> and connect.
> 12:19:50,053 INFO  [Thread: 1 RemoteFileComponent] remote.SftpConsumer
> (SftpConsumer.java:78) - Connected to sftp://t...@198.180.208.188:22
> 12:19:50,069 WARN  [Thread: 1 RemoteFileComponent] remote.SftpConsumer
> (SftpConsumer.java:122) - Exception occured during polling:
> com.jcraft.jsch.SftpException message: No such file
> 12:19:50,069 DEBUG [Thread: 1 RemoteFileComponent] remote.SftpConsumer
> (SftpConsumer.java:83) - Disconnecting from
> sftp://t...@198.180.208.188:22
> 12:19:50,084 WARN  [Thread: 1 RemoteFileComponent]
> impl.ScheduledPollConsumer (ScheduledPollConsumer.java:68) - An
> exception occured while polling:
> Endpoint[sftp://t...@198.180.208.188/home/toor/newfile.txt]: No such
> file
> 2: No such file
>
> Is there something wrong with the remote endpoint path?  The file does
> indeed exist.  I can use http://winscp.net/eng/index.php to login via
> SFTP and download the file.
>
> On the remote host ->
>
> t...@xubuntu-oracle11g:~$ pwd
> /home/toor
> t...@xubuntu-oracle11g:~$ ls -al | grep newfile.txt
> -rw-r--r-- 1 toor toor   18 2009-01-09 11:46 newfile.txt
>
>
> On Fri, Jan 9, 2009 at 12:27 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
>> Hi
>>
>> Dynamically adding routes is not support (yet). So the addRouteBuilder
>> stuff is not quite possible.
>>
>> So instead have a route like this
>>
>> from(seda queue).process(your processor code below).to(file)
>>
>> And then in your processor you can set the target filename the file
>> should be saved in your local filesystem by adding a header to IN
>> message
>> org.apache.camel.file.name
>> There is also a constant for it at FileComponent
>>
>> Note: The file endpoint can be configured with a root path that the
>> filename should be stored relative to, such as
>> "file://mycoolapp/inbox/"
>>
>>
>>
>> On Fri, Jan 9, 2009 at 6:15 PM, Davis Ford <davisf...@gmail.com> wrote:
>>> Hi, I'm trying to do something fairly simple: copy a file via sftp to
>>> localhost.  I build a route with sftp and file components.  This is
>>> event driven, so I don't want to have a consumer constantly polling.
>>>
>>> I'm trying to follow the sample described at "Consuming a remote FTP
>>> server triggered by a route" http://activemq.apache.org/camel/ftp.html
>>> where it shows a message comes in from a seda queue that has the
>>> path/host to the file.
>>>
>>> I'm trying to do exactly the same thing without the seda queue.
>>>
>>> See the method below which will be executed when I receive an event
>>> that a file is ready to be downloaded.  context is CamelContext
>>> injected via spring so it should already be started.
>>>
>>>        @Override
>>>        public File download(String host, String localDirectory, String 
>>> remotePath) {
>>>                // the sftp url
>>>                final String url = getUrl(host, remotePath);
>>>                // path to local file
>>>                final String localFile = getLocalFilePath(localDirectory, 
>>> remotePath);
>>>                try {
>>>                        context.addRoutes(new RouteBuilder() {
>>>                                public void configure() {
>>>                                        from(url).process(new Processor() {
>>>                                                @Override
>>>                                                public void process(Exchange 
>>> exchange) throws Exception {
>>>                                                        Endpoint ftp = 
>>> context.getEndpoint(url);
>>>                                                        PollingConsumer 
>>> consumer = ftp.createPollingConsumer();
>>>                                                        consumer.start();
>>>                                                        Exchange result = 
>>> consumer.receive();
>>>                                                        
>>> exchange.getIn().setBody(result.getIn().getBody());
>>>                                                        consumer.stop();
>>>                                                }
>>>                                        }).to("file://"+localFile);
>>>                                }
>>>                        });
>>>                } catch (Exception e) {
>>>                        // TODO Auto-generated catch block
>>>                        e.printStackTrace();
>>>                }
>>>                return null;
>>>        }
>>>
>>> When I try this, the log messages indicate:
>>>
>>> remote endpoint is created ->
>>>
>>> 12:02:28,538 DEBUG [main] impl.DefaultCamelContext
>>> (DefaultCamelContext.java:333) -
>>> sftp://t...@198.180.208.188/home/toor/newfile.txt?password=password&binary=true&directory=false&consumer.delay=5000&consumer.deleteFile=true
>>> converted to endpoint:
>>> Endpoint[sftp://t...@198.180.208.188/home/toor/newfile.txt] by
>>> component: RemoteFileComponent
>>>
>>> local file endpoint is created ->
>>>
>>> 12:02:28,647 DEBUG [main] impl.DefaultComponentResolver
>>> (DefaultComponentResolver.java:67) - Found component: file via type:
>>> org.apache.camel.component.file.FileComponent via
>>> META-INF/services/org/apache/camel/component/file
>>> 12:02:28,663 DEBUG [main] impl.DefaultComponent
>>> (DefaultComponent.java:79) - Creating endpoint
>>> uri=[file://C:\SVN\.\target\newfile.txt],
>>> path=[C:\SVN\.\target\newfile.txt], parameters=[{}]
>>> 12:02:28,663 DEBUG [main] impl.DefaultCamelContext
>>> (DefaultCamelContext.java:333) - file://C:\SVN\.\target\newfile.txt
>>> converted to endpoint: Endpoint[file://C:\SVN\.\target\newfile.txt] by
>>> component: org.apache.camel.component.file.filecompon...@9b87f6
>>>
>>> consumer  is started ->
>>>
>>> 12:02:28,803 INFO  [main] remote.SftpConsumer (SftpConsumer.java:51) - 
>>> Starting
>>> 12:02:28,819 DEBUG [main] impl.DefaultCamelContext
>>> (DefaultCamelContext.java:401) - Adding routes from: Routes:
>>> [Route[[From[sftp://t...@198.180.208.188/home/toor/newfile.txt]] ->
>>> [Interceptor[Delegate(Pipeline[DeadLetterChannel[Delegate(sftpfiledownloader$...@8b6c39),
>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error]],
>>> DeadLetterChannel[Delegate(sendTo(Endpoint[file://C:\SVN\.\target\newfile.txt])),
>>> RecipientList[log:org.apache.camel.DeadLetterChannel?level=error]]])]]]]
>>> routes: []
>>>
>>> ...but nothing happens after that?  the file isn't copied, no
>>> exception is thrown, etc.  I call it from a JUnit test, and the test
>>> just exits.  I think I must be missing something simple?
>>>
>>> Regards,
>>> Davis
>>>
>>
>>
>>
>> --
>>
>> /Claus Ibsen
>> Apache Camel Committer
>> Blog: http://davsclaus.blogspot.com/
>>
>
>
>
> --
> Zeno Consulting, Inc.
> http://www.zenoconsulting.biz
> 248.894.4922 phone
> 313.884.2977 fax
>



-- 

/Claus Ibsen
Apache Camel Committer
Blog: http://davsclaus.blogspot.com/

Reply via email to