It seems like the Aries Blueprint bundle requires cglib (or asm) to be installed before Blueprint is activated. If I first install Blueprint, then cglib and then my bundle requiring transaction interceptors it fails with with following exception:
2010-09-25 18:10:24,998 | ERROR | rint Extender: 2 | BlueprintContainerImpl > | container.BlueprintContainerImpl 342 | Unable to start > blueprint container for bundle refdata org.osgi.service.blueprint.container.ComponentDefinitionException: > Interceptors have been configured but neither asm nor cglib are available at > org.apache.aries.blueprint.container.BeanRecipe.addInterceptors(BeanRecipe.java:694)[7:org.apache.aries.blueprint:0.2.0.incubating] at > org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:748)[7:org.apache.aries.blueprint:0.2.0.incubating] at > org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)[7:org.apache.aries.blueprint:0.2.0.incubating] at > org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:219)[7:org.apache.aries.blueprint:0.2.0.incubating] at > org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:147)[7:org.apache.aries.blueprint:0.2.0.incubating] at > org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:624)[7:org.apache.aries.blueprint:0.2.0.incubating] at > org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:315)[7:org.apache.aries.blueprint:0.2.0.incubating] at > org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:213)[7:org.apache.aries.blueprint:0.2.0.incubating] at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)[:1.6.0_18] at > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_18] at java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_18] at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)[:1.6.0_18] at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)[:1.6.0_18] at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_18] at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_18] at java.lang.Thread.run(Thread.java:619)[:1.6.0_18] Caused by: java.lang.ClassNotFoundException: net.sf.cglib.proxy.Enhancer at > org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:772)[org.apache.felix.framework-3.0.2.jar:] at > org.apache.felix.framework.ModuleImpl.access$200(ModuleImpl.java:73)[org.apache.felix.framework-3.0.2.jar:] at > org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1690)[org.apache.felix.framework-3.0.2.jar:] at java.lang.ClassLoader.loadClass(ClassLoader.java:248)[:1.6.0_18] at > org.apache.aries.blueprint.container.BeanRecipe.addInterceptors(BeanRecipe.java:691)[7:org.apache.aries.blueprint:0.2.0.incubating] ... 15 more If I make sure that cglib is started before Blueprint then everything works. Shouldn't it be enough that cglib is installed by the time I install my bundle requiring interceptors. Blueprint should pick up cglib when it is installed even if it happens after Blueprint itself is started. I use Karaf 2.1, Aries 0.2-incubating and the Servicemix packaging of cglib version 2.1_3_4. /Bengt
