Camel 2.10.x is only tested with Karaf 2.2.x. Sent from a mobile device Am 01.05.2013 10:41 schrieb "Tobias Hofer" <tobias.ho...@basis06.ch>:
> Hi > > > Yeah would assume depends-on attributes ought to tell blueprint in > > which order to shutdown its beans etc. > > Or somehow you can try to get <camelContext> as being the first > > "bean" > > blueprint should try to shutdown, as then Camel will complete all its > > inflight messages first, and hence the <beans> should be shutdown > > later. > Exactly. Blueprint is responsible for computing the dependency order. On > shutdown, the deconstruction must be done in reverse order. > > Therefore I tried to explicitly declare the dependency from CamelContext > to Bean in order to get the CamelContext deconstructed first. > > Is Blueprint able to compute the dependencies for a CamelContext? Has it > any clue about the referenced beans? > > Does the CamelContext shutdown synchronously to the deconstruction > request of Blueprint? If not, that could be a possible cause, that > dependent Beans get destroyed even if CamelContext is still alive. > > > > You can also enable cache on the bean endpoint to avoid the lookups > > > > <bean uri="ref:myBean?cache=true" /> > > > Yes this helps, but only for beans (component instances). If the > bean endpoint calls a OSGi service reference then call will fail caused > by a ServiceUnavailableException. > > > > And when you see this error, does that only happen if the aggregator > > has messages that hasn't been fully aggregated, but are forced to be > > completed when stopping? eg this doesn't happen when stopping and the > > aggregator is empty? > Stopping it without any inflight and pending exchanges works. In other > words, there error does not occur, if the aggregator did never aggregate > a message, or if all messages has been aggregated before shutdown. > > I'm able to stop the CamelContext manually at any time successfully. Even > if there are pending messages that are forced to be completed when > stopping. > > The error occurs only if I stop the whole Bundle. > > > > > > > > > > > On Tue, Apr 30, 2013 at 1:25 PM, Tobias Hofer > > <tobias.ho...@basis06.ch> wrote: > > > Hi all, > > > > > > I'm running Camel 2.10.4 in Karaf 2.3.1 and get > > > NoSuchComponentException > > > during the shutdown process. > > > > > > My blueprint configuration file declares a bean which is a Camel > > > Processor > > > > > > <bean id="myBean" class="org.example.MyBean" /> > > > > > > The CamelContext contains a route that aggregates incoming messages > > > and > > > which forces a completion on stop. > > > > > > <route> > > > <from uri="direct:aggregate" /> > > > <aggregate strategyRef="aggregationStrategy" > > > forceCompletionOnStop="true" ...> > > > ... > > > <to uri="direct:onCompletion" /> > > > </aggregate> > > > </route> > > > > > > The second route contains the bean invocation > > > > > > <route> > > > <from uri="direct:onCompletion" /> > > > ... > > > <bean ref="myBean" /> > > > ... > > > </route> > > > > > > During shutdown the bean invocation in the second route fails > > > > > > org.apache.camel.RuntimeCamelException: > > > org.osgi.service.blueprint.container.NoSuchComponentException: No > > > component with id > > > 'myBean' could be found > > > at > > > > org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1316) > > > at > > > > org.apache.camel.impl.PropertyPlaceholderDelegateRegistry.lookup(PropertyPlaceholderDelegateRegistry.java:51) > > > at > > > > org.apache.camel.component.bean.RegistryBean.lookupBean(RegistryBean.java:136) > > > at > > > > org.apache.camel.component.bean.RegistryBean.getBean(RegistryBean.java:62) > > > at > > > > org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:77) > > > at > > > > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) > > > ... > > > Caused by: > > > org.osgi.service.blueprint.container.NoSuchComponentException: No > > > component with id 'myBean' could be found > > > at > > > > org.apache.aries.blueprint.container.BlueprintContainerImpl.getComponentInstance(BlueprintContainerImpl.java:742) > > > at > > > > org.apache.camel.blueprint.BlueprintContainerRegistry.lookup(BlueprintContainerRegistry.java:41) > > > at > > > > org.apache.camel.impl.CompositeRegistry.lookup(CompositeRegistry.java:68) > > > at > > > > org.apache.camel.impl.PropertyPlaceholderDelegateRegistry.lookup(PropertyPlaceholderDelegateRegistry.java:49) > > > > > > I tried to add a 'depends-on' property on the CamelContext > > > declaration but > > > this seems not to help. > > > > > > It looks like that the Blueprint Container is no longer available. > > > > > > Any suggestions? > > > > > > Regards, > > > Tobias Hofer > > > > > > > > > > > > > > > > > > > > > > > -- > > Claus Ibsen > > ----------------- > > Red Hat, Inc. > > FuseSource is now part of Red Hat > > Email: cib...@redhat.com > > Web: http://fusesource.com > > Twitter: davsclaus > > Blog: http://davsclaus.com > > Author of Camel in Action: http://www.manning.com/ibsen > > >