Perfect!
2010/5/5 Guillaume Nodet <gno...@gmail.com>: > I've created https://issues.apache.org/activemq/browse/CAMEL-2693 for that. > > On Thu, Apr 29, 2010 at 14:06, Bengt Rodehav <be...@rodehav.com> wrote: > >> Hello Willem, >> >> Yeah, I guess it could potentially be a lot of service dependencies. >> Remember though that these dependencies are present regardless if we >> handle them or not. If I have routes referring to 10 components, then >> these components MUST be registered before I create my routes. Right? >> >> Today, there is no way of being informed when necessary registrations >> have been done in Camel. This means that one has to make sure, by >> other means, that every bundle that could potentially contain a >> required camel component must be resolved and started before trying to >> use those components. This is not an easy task in OSGI. Sure, I would >> like Karaf to be able to set startlevels per feature as a way to >> handle bundles that are not properly OSGI'ified. But I think that >> Camel is such a great integration platform that I want it to be >> properly OSGI'ified without having to rely on container specific >> features. >> >> In OSGI, it is common practice to be well aware of you service >> dependencies and handle them. Sometimes this is complex - yes - but it >> is still done. >> >> /Bengt >> >> >> 2010/4/29 Willem Jiang <willem.ji...@gmail.com>: >> > Bengt Rodehav wrote: >> >> >> >> This is exactly the way I was thinking: >> >> >> >> - Define a new interface representing a Camel component ( e g >> >> CamelComponentService) >> >> - Use a service property to identify the specific componente (e g >> >> "camel.component") >> >> >> >> This enables me to wait for a service with that specific service >> >> property to be available. E g in my case I'm using iPOJO to >> >> instantiate OSGI service and can use an annotation similar to the >> >> following: >> >> >> >> @Requires(filter={camel.component=file}) >> >> private CamelComponentService fileComponent; >> > >> > Yeah, it's much clear for me. >> > But if your camel route have to deal with more than ten camel components, >> > does it necessary to list all the dependencies with the iPOJO annotation? >> > >> > Willem >> > >> >> >> >> I didn't check that I used the right syntax above. However, the result >> >> is that my service will not be started until a CamelComponentService >> >> with the service property "camel.component" with the value "file" has >> >> been started. I think this would be very useful. It gives Camel a way >> >> to publish the availability of components to the outside world - and >> >> also a way to do it the OSGI way. >> >> >> >> /Bengt >> >> >> >> >> >> 2010/4/29 Guillaume Nodet <gno...@gmail.com>: >> >>> >> >>> We don't have to add anything to the component jars I think. It should >> >>> be >> >>> possible to extend camel-osgi bundle in the following way: >> >>> * when a bundle containing a component is started, register a service >> in >> >>> the osgi registry for the component. I think it should be a new >> >>> interface >> >>> which will allow the creation of components (a component factory) >> >>> registered with an asssociated property to identify the type of >> component >> >>> (file, jms, etc...) >> >>> * modify the osgi component resolver or camel context go to the >> registry >> >>> and wait for some time until all the components are available >> >>> The last part might be a bit more tricky, as we need to find a good >> >>> strategy >> >>> for that. It could also be configurable on the osgi component context >> to >> >>> some degree. >> >>> >> >>> On Thu, Apr 29, 2010 at 04:30, Willem Jiang <willem.ji...@gmail.com> >> >>> wrote: >> >>> >> >>>> Bengt Rodehav wrote: >> >>>> >> >>>>> Thanks for your reply Willem, >> >>>>> >> >>>>> I will try to the bundle dependency of camel-core to my route bundle >> >>>>> as you suggested - sounds like good advice. >> >>>>> >> >>>>> I wasn't sure what you mean by your last paragraph: >> >>>>> >> >>>>> If you need to dependent on some specify component interface will >> >>>>>> >> >>>>>> introduce >> >>>>>> the OSGi related dependency to the camel components. >> >>>>>> We need to find another way to do it. >> >>>>>> >> >>>>> I assume that there was a problem with my suggestion but I didn't >> >>>>> quite understand what. >> >>>>> >> >>>> Oh, that is if you want to publish the camel components into a OSGi >> >>>> service, you can do it in the BundleActivator, or write some XML >> >>>> configuration to leverage Spring DM or Blue Print to do it. >> >>>> >> >>>> If you are using BundleActivator, you will introduce some kind of >> >>>> compile >> >>>> time dependency of OSGi jar. As we also want camel components work >> well >> >>>> as a >> >>>> stand alone Java application, we should avoid introduce this kind of >> >>>> dependency. >> >>>> >> >>>> Maybe the xml configuration is a choice for us. >> >>>> >> >>>> This solution need to your start the Spring-DM or BluePrint container >> >>>> before your camel route bundle to let the container lookup the bundle >> >>>> context for the xml configuration. It seems we are back to your >> original >> >>>> question. And if you start the camel components bundles before you >> start >> >>>> up >> >>>> your camel route bundle, you will not hit this kind of issue. >> >>>> >> >>>> Willem >> >>>> >> >>>> >> >>>> >> >>>>> /Bengt >> >>>>> >> >>>>> >> >>>>> >> >>>>> 2010/4/28 Willem Jiang <willem.ji...@gmail.com>: >> >>>>> >> >>>>>> Hi >> >>>>>> >> >>>>>> Please see my comments in the mail. >> >>>>>> >> >>>>>> Bengt Rodehav wrote: >> >>>>>> >> >>>>>>> I'm using Karaf to deploy my Camel routes. However, I run into >> >>>>>>> problems during startup due to dependency ordering. Some of these >> >>>>>>> ordering problems are OSGI/Karaf specific and have nothing to do >> with >> >>>>>>> Camel. I've discussed them on the Felix user mailing list and I >> have >> >>>>>>> workarounds for that. The Camel problems remain though. >> >>>>>>> >> >>>>>>> When trying to deploy both my routes and the camel bundles in >> Karaf, >> >>>>>>> my routes fail to iniitialize because the referenced camel >> component >> >>>>>>> ("file:" in this case) is not registered in Camel yet. I've tried >> to >> >>>>>>> solve this with workarounds in Karaf. It is possible but not very >> >>>>>>> elegant at all. >> >>>>>>> >> >>>>>> Can you add the bundle dependency of camel-core to your route >> bundle? >> >>>>>> >> >>>>>>> Guillaume Nodet (via us...@felix.apache.org) suggested to me that >> >>>>>>> this >> >>>>>>> is more of a Camel problem than a Karaf problem. In his opinion >> (and >> >>>>>>> mine), it would be much better if Camel published components using >> >>>>>>> OSGI services. That way my services could have a service dependency >> >>>>>>> on >> >>>>>>> the Camel services so that my service would start when the Camel >> >>>>>>> service was available. As I understand it, today Camel just scans >> >>>>>>> bundles as they are started and updates its component registry. >> This >> >>>>>>> makes it impossible for dependent bundles (like my routes) to know >> >>>>>>> whether all the required prerequisites are in place before starting >> >>>>>>> the route. >> >>>>>>> >> >>>>>> That could be a solution of your issue. >> >>>>>> >> >>>>>>> If components were published using a component specific interface, >> I >> >>>>>>> could add a service dependency to that service and wait until it >> >>>>>>> becomes available before trying to start my routes. >> >>>>>>> >> >>>>>>> If you need to dependent on some specify component interface will >> >>>>>> >> >>>>>> introduce >> >>>>>> the OSGi related dependency to the camel components. >> >>>>>> We need to find another way to do it. >> >>>>>> >> >>>>>> Has anyone else had similar issues?What is the recommended >> >>>>>> workaround? >> >>>>>>> >> >>>>>>> Are there any plans for improvement? >> >>>>>>> >> >>>>>>> /Bengt >> >>>>>>> >> >>>>>>> >> >>>>>> Willem >> >>>>>> >> >>>>>> >> >>> >> >>> -- >> >>> Cheers, >> >>> Guillaume Nodet >> >>> ------------------------ >> >>> Blog: http://gnodet.blogspot.com/ >> >>> ------------------------ >> >>> Open Source SOA >> >>> http://fusesource.com >> >>> >> >> >> > >> > >> > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > ------------------------ > Open Source SOA > http://fusesource.com >