Hello,  

First, my apologies if this is the wrong forum.  I have a bundle with two 
blueprint XML files,  one contains a Camel context, and another one defines 
beans.  I want to share the beans across other Camel contexts, but for now, I 
am only testing with one.  In the beans XML, I am defining a custom error 
handler:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xmlns:camel="http://camel.apache.org/schema/blueprint"; 
        xsi:schemaLocation="
             http://www.osgi.org/xmlns/blueprint/v1.0.0 
https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>

<bean id=“myErrorHandler" class="org.apache.camel.builder.LoggingErrorHandler">
        <property name="level" value="INFO"/>
</bean>

</blueprint>

In the other blueprint XML the camel route references the error handler:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
        xmlns:camel="http://camel.apache.org/schema/blueprint"; 
        xsi:schemaLocation="
             http://www.osgi.org/xmlns/blueprint/v1.0.0 
https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>

        <camelContext 
        trace="true” 
        errorHandlerRef=“myErrorHandler” 
        streamCache="false” 
        xmlns="http://camel.apache.org/schema/blueprint”>
...


When I deploy my bundle in Karaf, I get this error:

org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to 
load class org.apache.camel.builder.LoggingErrorHandler from recipe 
BeanRecipe[name='myErrorHandler']
        at 
org.apache.aries.blueprint.di.AbstractRecipe.doLoadType(AbstractRecipe.java:195)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.di.AbstractRecipe.loadType(AbstractRecipe.java:161)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BeanRecipe.loadClass(BeanRecipe.java:250)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BeanRecipe.getType(BeanRecipe.java:917)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BeanRecipe.getInstanceFromType(BeanRecipe.java:341)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:282)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:830)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:811)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[32:org.apache.aries.blueprint.core:1.4.5]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_45]
        at 
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:247)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:688)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:383)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:270)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_45]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_45]
        at 
org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_45]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_45]
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)[:1.8.0_45]
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)[:1.8.0_45]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_45]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_45]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_45]
Caused by: java.lang.ClassNotFoundException: 
org.apache.camel.builder.LoggingErrorHandler not found by 
org.apache.camel.camel-core [45]
        at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1574)[org.apache.felix.framework-5.4.0.jar:]
        at 
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)[org.apache.felix.framework-5.4.0.jar:]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)[org.apache.felix.framework-5.4.0.jar:]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_45]
        at 
org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1415)[org.apache.felix.framework-5.4.0.jar:]
        at 
org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1595)[org.apache.felix.framework-5.4.0.jar:]
        at 
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1525)[org.apache.felix.framework-5.4.0.jar:]
        at 
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)[org.apache.felix.framework-5.4.0.jar:]
        at 
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)[org.apache.felix.framework-5.4.0.jar:]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_45]
        at 
org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1925)[org.apache.felix.framework-5.4.0.jar:]
        at 
org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:978)[org.apache.felix.framework-5.4.0.jar:]
        at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.loadClass(BlueprintContainerImpl.java:439)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.BlueprintRepository.loadClass(BlueprintRepository.java:410)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.container.GenericType.parse(GenericType.java:113)[32:org.apache.aries.blueprint.core:1.4.5]
        at 
org.apache.aries.blueprint.di.AbstractRecipe.doLoadType(AbstractRecipe.java:168)[32:org.apache.aries.blueprint.core:1.4.5]
        ... 26 more


I checked the OSGI manifest, and it does import the  org.apache.camel.builder  
package:

Import-Package: org.apache.camel.builder;version="[2.17,3)”

 Any ideas?

Best regards,
Alex soto



Reply via email to