Hi - directory=false is on.

12:19:41,897 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

The path is correct.  The path is

/home/toor/newfile.txt

Note that when I'm logged into the machine as user 'toor' in my home dir:

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

The file does exist there.  And I can SFTP it using a windows SFTP
client.  I'll enable trace logging and see if there is any other clue.

Thanks

On Fri, Jan 9, 2009 at 1:00 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> 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/
>



-- 
Zeno Consulting, Inc.
http://www.zenoconsulting.biz
248.894.4922 phone
313.884.2977 fax

Reply via email to