On Wed, Apr 28, 2010 at 17:30, Bengt Rodehav <be...@rodehav.com> 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. > This won't work I think. The reason is that a camel component will only be used if the bundle containing the component is started. However, there is no way to express such a dependency on a "started" bundle in OSGi. Adding a bundle dependency will only ensure the bundle is resolved. > > 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. > > /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