Claus,

I have now managed to build Camel version 2.4-SNAPSHOT. However, I can't get
my application to work on that version. I'm using Karaf 1.6.0 for deployment
and something has definitely changed in Camel regarding OSGi. I haven't
figured out how to use Camel 2.4-SNAPSHOT in Karaf yet. Maybe you (or
someone else reading this) can help out?

When using Camel 2.3, I create my camel context using
the org.apache.camel.osgi.CamelContextFactory class. In runtime, this class
is imported from the camel-spring-osgi bundle. The activator for this bundle
(org.apache.camel.osgi.Activator) seems to reside in the camel-osgi bundle
but that bundle also seems to be embedded in camel-spring-osgi. Have to
admit that this solution is far from pretty but it seems to work. The
activator keeps track of installed bundles and their camel resources (such
as components and languages).

When I switch to Camel 2.4-SNAPSHOT I get the following exception:

...
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to
resolve en
dpoint:
file://data/connect/sample/file2ftps?delay=1000&move=archive%2F%24%7Bdat
e%3Anow%3AyyyyMMdd%7D%2F%24%7Bfile%3Aname%7D&moveFailed=failed%2F%24%7Bfile%3Ana
me.noext%7D-%24%7Bdate%3Anow%3AyyyyMMddHHmmssSSS%7D.%24%7Bfile%3Aext%7D due
to:
No language could be found for: file
        at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelCon
text.java:377)
...

It seems like Camel cannot find the "file" language (which is supposed to be
mapped to the org.apache.camel.language.simple.SimpleLanguage class). I then
tried to find the proper activator to find out why the language doesn't seem
to be registered.

First, the camel-spring-osgi bundle does not seem to exist in camel anymore.
Instead, the CamelContextFactory is now imported from the camel-spring
bundle. camel-spring's activator (org.apache.camel.osgi.Activator) is now
part of the camel-spring component but when I look at it I can't see that it
keeps track of anything but it's own BundleContext and Bundle instance. Then
who keeps track of the registered components, type converters, languages and
so forth?

I must be missing something here. Can someone please explain to me how to
use Camel 2.4 in OSGi? I must say I've had a lot of problems with the
combination of camel and OSGi before as well but I was hoping for Camel's
OSGi support to get better - right now I'm a bit disillusioned :-(

I noticed that camel-osgi still exists in Camel 2.4 but it doesn't look like
a bundle anymore. Maybe there is a secret here that I haven't fully
understood.

/Bengt



2010/6/7 Claus Ibsen <claus.ib...@gmail.com>

> On Mon, Jun 7, 2010 at 4:30 PM, Bengt Rodehav <be...@rodehav.com> wrote:
> > Claus,
> >
> > I have now tested my version using both passive and active (which
> requires a
> > certificate) mode. I've tested against a free ftp server - Filezilla -
> and a
> > commercial ftp server (that we often use) - Serv-u. It works fine.
> >
> > I haven't tested your version yet because it requires me to build my
> > application against Camel version 2.4-SNAPSHOT instead of Camel version
> > 2.3.0. To get this to work I need to get all the 2-4-SNAPSHOT artifacts
> into
> > my local Maven repository. I tried to do this by building Camel locally
> but
> > I never seem to get it to build. Right now, I'm stuck with the following
> > Maven error message (I'm usng Maven 2.0.11):
> >
>
> You can just cd into camel-ftp and build that jar. And then you grab
> the camel-core jar as well.
> And if you use spring then camel-spring .jar as well. Then you got
> what you need for 2.4-SNAPSHOTs.
>
>
> Yeah Maven can be strange. Sometimes you need to nuke you local m2 repo
> cache.
> And I use maven 2.0.9.
>
>
>
> > [INFO] Writing OBR metadata
> > [INFO]
> > ------------------------------------------------------------------------
> > [INFO] Building Camel :: Jetty
> > [INFO]    task-segment: [clean, install]
> > [INFO]
> > ------------------------------------------------------------------------
> > [INFO] [clean:clean]
> > Downloading:
> > https://repository.apache.org/content/repositories/releases//com/su
> > n/mail/all/1.4.3/all-1.4.3.pom
> > [INFO] Unable to find resource 'com.sun.mail:all:pom:1.4.3' in repository
> > apache
> > .releases (https://repository.apache.org/content/repositories/releases/)
> > Downloading:
> > http://svn.apache.org/repos/asf/servicemix/m2-repo/com/sun/mail/all
> > /1.4.3/all-1.4.3.pom
> > [INFO] Unable to find resource 'com.sun.mail:all:pom:1.4.3' in repository
> > servic
> > emix (http://svn.apache.org/repos/asf/servicemix/m2-repo)
> > Downloading:
> > http://jansi.fusesource.org/repo/release/com/sun/mail/all/1.4.3/all
> > -1.4.3.pom
> > [INFO] Unable to find resource 'com.sun.mail:all:pom:1.4.3' in repository
> > jansi.
> > release.m2 (http://jansi.fusesource.org/repo/release)
> > Downloading:
> > http://repository.ops4j.org/maven2/com/sun/mail/all/1.4.3/all-1.4.3
> > .pom
> > [INFO] Unable to find resource 'com.sun.mail:all:pom:1.4.3' in repository
> > ops4j
> > (http://repository.ops4j.org/maven2)
> > Downloading:
> > http://repo1.maven.org/maven2/com/sun/mail/all/1.4.3/all-1.4.3.pom
> > [INFO] Unable to find resource 'com.sun.mail:all:pom:1.4.3' in repository
> > centra
> > l (http://repo1.maven.org/maven2)
> > [INFO]
> > ------------------------------------------------------------------------
> > [ERROR] BUILD ERROR
> > [INFO]
> > ------------------------------------------------------------------------
> > [INFO] Error building POM (may not be this project's POM).
> >
> >
> > Project ID: javax.mail:mail:jar:null
> >
> > Reason: Cannot find parent: com.sun.mail:all for project:
> > javax.mail:mail:jar:nu
> > ll for project javax.mail:mail:jar:null
> >
> >
> > [INFO]
> > ------------------------------------------------------------------------
> > [INFO] For more information, run Maven with the -e switch
> > [INFO]
> > ------------------------------------------------------------------------
> > [INFO] Total time: 4 minutes 26 seconds
> > [INFO] Finished at: Mon Jun 07 12:59:05 CEST 2010
> > [INFO] Final Memory: 231M/483M
> > [INFO]
> > ------------------------------------------------------------------------
> >
> >
> > /Bengt
> >
> > 2010/6/5 Bengt Rodehav <be...@rodehav.com>
> >
> >> God you're fast. I made my own attempts and attached diff files to the
> JIRA
> >> issue you created. I also added a couple of comments/suggestions to the
> >> issue.
> >>
> >> In short I believe that it is probably easier for the user/developer if
> it
> >> is enough to specify whether a secure data channel should be used or not
> >> (the default should be true). Adding more detailed options, like you
> did, is
> >> of course just a benefit as long as it is possible to also configure it
> the
> >> easy way (like I described).
> >>
> >> I haven't tested your changes yet - will do. I have done some limited
> >> testing with my own version, but only in passive mode. If you use a
> secure
> >> data channel in active mode one must first create a public/private key
> pair
> >> for the ftps client to use and I haven't gotten around to testing that
> yet.
> >>
> >> /Bengt
> >>
> >> 2010/6/4 Claus Ibsen <claus.ib...@gmail.com>
> >>
> >>> Hi
> >>>
> >>> On Fri, Jun 4, 2010 at 3:42 PM, Bengt Rodehav <be...@rodehav.com>
> wrote:
> >>> > OK, will try to do that sometime this weekend.
> >>> >
> >>> > Will be in touch,
> >>> >
> >>>
> >>> I was one step ahead of you. I created the ticket and took a stab at
> >>> resolving it.
> >>> https://issues.apache.org/activemq/browse/CAMEL-2790
> >>>
> >>> Can you try with the latest source code? And maybe if there is still
> >>> some issue then work on a patch from there.
> >>> Would be lovely with an unit test, but the test ftp server we use
> >>> cannot understand the secure data transfer.
> >>>
> >>> Anyway would be awesome if you could test it on your real systems.
> >>>
> >>>
> >>>
> >>> > /Bengt
> >>> >
> >>> > 2010/6/4 Claus Ibsen <claus.ib...@gmail.com>
> >>> >
> >>> >> Hi
> >>> >>
> >>> >> Well spotted. Do you mind creating a JIRA ticket and link to this
> post
> >>> >> using nabble etc.
> >>> >> And you may even want to contribute a patch :)
> >>> >>
> >>> >>
> >>> >> On Fri, Jun 4, 2010 at 11:34 AM, Bengt Rodehav <be...@rodehav.com>
> >>> wrote:
> >>> >> > I'm using camel-ftp for secure ftps communication. I need to be
> able
> >>> to
> >>> >> > connect to a wide range of ftps servers in both explicit and
> implicit
> >>> >> mode.
> >>> >> > I have encountered problems using camel-ftp for ftps communication
> in
> >>> >> > implicit mode.
> >>> >> >
> >>> >> > Some ftps servers require that the file transfer is encrypted (not
> >>> just
> >>> >> the
> >>> >> > commands). This is of course very natural and is the reason why
> ftps
> >>> is
> >>> >> > chosen in the first place. However, commons-net (which camel-ftp
> >>> uses)
> >>> >> does
> >>> >> > (for some reason) not by default setup a secure channel for file
> >>> >> transfers.
> >>> >> > It has to be requested by code similar to the following:
> >>> >> >
> >>> >> >  ftpsClient.execPBSZ(0);
> >>> >> >  ftpsClient.execPROT("P");
> >>> >> >
> >>> >> > I suggest to add an option to camel-ftp, regarding ftps, to make
> it
> >>> >> possible
> >>> >> > to specify whether the data channel will be encrypted or not.
> >>> Encrypted
> >>> >> > should be default.
> >>> >> >
> >>> >> > When looking at the code in camel-ftp it seems like there is no
> >>> special
> >>> >> > handling during connect for ftps compared to ftp. Thus there is no
> >>> >> natural
> >>> >> > place to put the above code. One way is to add something like the
> >>> >> following
> >>> >> > at the end of the method "connect" in the class "FtpOperations":
> >>> >> >
> >>> >> >  if(client instanceof FTPSClient) {
> >>> >> >    FTPSClient ftpsClient = (FTPSClient)client;
> >>> >> >    try {
> >>> >> >      if (useSecureDataChannel) { // useSecureDataChannel should be
> >>> >> > initialized from the configuration somehow
> >>> >> >        ftpsClient.execPBSZ(0);
> >>> >> >        ftpsClient.execPROT("P");
> >>> >> >      }
> >>> >> >    } catch (SSLException e) {
> >>> >> >      throw new
> >>> GenericFileOperationFailedException(client.getReplyCode(),
> >>> >> > client.getReplyString(), e.getMessage(), e);
> >>> >> >    } catch (IOException e) {
> >>> >> >      throw new
> >>> GenericFileOperationFailedException(client.getReplyCode(),
> >>> >> > client.getReplyString(), e.getMessage(), e);
> >>> >> >    }
> >>> >> >  }
> >>> >> >
> >>> >> > Am I the only one having problems with this? Maybe there is a
> >>> workaround
> >>> >> > that I haven't figured out.
> >>> >> >
> >>> >> > /Bengt
> >>> >> >
> >>> >>
> >>> >>
> >>> >>
> >>> >> --
> >>> >> Claus Ibsen
> >>> >> Apache Camel Committer
> >>> >>
> >>> >> Author of Camel in Action: http://www.manning.com/ibsen/
> >>> >> Open Source Integration: http://fusesource.com
> >>> >> Blog: http://davsclaus.blogspot.com/
> >>> >> Twitter: http://twitter.com/davsclaus
> >>> >>
> >>> >
> >>>
> >>>
> >>>
> >>> --
> >>> Claus Ibsen
> >>> Apache Camel Committer
> >>>
> >>> Author of Camel in Action: http://www.manning.com/ibsen/
> >>> Open Source Integration: http://fusesource.com
> >>> Blog: http://davsclaus.blogspot.com/
> >>> Twitter: http://twitter.com/davsclaus
> >>>
> >>
> >>
> >
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Author of Camel in Action: http://www.manning.com/ibsen/
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>

Reply via email to