Thanks Willem - what a relief... I eagerly await the results from your digging,
/Bengt 2010/6/10 Willem Jiang <willem.ji...@gmail.com> > I can reproduce the error that you met, there must be something wrong with > current OSGi refactoring, > I will keep digging to see if I can fix this issue soon. > > Willem > > > Bengt Rodehav wrote: > >> 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 >>>>> >>>>> >>>>> >> >