Thanks for your reply Willem, I've tried various combinations of camel features. Right now I use the "camel" feature (plus camel-ftp since that's what I'm trying to test). In runtime I can see the camel-core, camel-spring and the camel-ftp bundles installed and active. I manage to create an OsgiDefaultCamelContext the following way:
mCamelContextFactory = new CamelContextFactory(); mCamelContextFactory.setBundleContext(theBundleContext); mCamelContext = mCamelContextFactory.createContext(); However, when I try to start the camel context I get the exception I mentioned above: Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: file://data/connect/test/sample/file2ftps?delay=1000&move=archive%2F%24% 7Bdate%3Anow%3AyyyyMMdd%7D%2F%24%7Bfile%3Aname%7D&moveFailed=failed%2F%24%7Bfile%3Aname.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(DefaultCamelContext.java:377) To me it sounds like the languages has not been registered properly. Looking through the code it looks like the OSGi "registration" part of camel has moved from camel-osgi to camel-core. Which I guess means that I should not be using camel-osgi anymore (just camel-core in combination with camel-spring). This is what I'm doing, but I still get the above exception. Could it be a problem with iPojo? I use iPOJO to create my OSGi services from configurations handled by file install. I noticed that the BundleContext I'm using is really an instance of org.apache.felix.ipojo.IPojoContext. Any clues? /Bengt 2010/6/10 Willem Jiang <willem.ji...@gmail.com> > Hi Bengt, > > Did you use the apache camel feature of the Camel 2.4-SNAPSHOT ? > If so, you just need to install the feature of camel, it includes the > camel-core feature and camel-spring feature. > > And you can still use org.apache.camel.osgi.CamelContextFactory to create > the camel context :) > > Willem > > > Bengt Rodehav wrote: > >> 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 >>> >>> >> >