Nikolay Voskresenskiy created ARIES-1731: --------------------------------------------
Summary: Error using Blueprint Spring when Spring 3.x bundles are installed in container Key: ARIES-1731 URL: https://issues.apache.org/jira/browse/ARIES-1731 Project: Aries Issue Type: Bug Affects Versions: blueprint-spring-0.4.0 Reporter: Nikolay Voskresenskiy Hi, When attempting to use Blueprint Spring 0.4.0 with karaf container version 4.0.x i've encountered the following exceptions: {code} 2017-07-21 09:31:44,693 | WARN | pool-29-thread-3 | Activator | 32 - org.apache.aries.blueprint.spring - 0.4.0 | Error starting extension: org.apache.servicemix.bundles.spring-jms/4.2.5.RELEASE_1 java.lang.ClassCastException: org.springframework.jms.config.JmsNamespaceHandler cannot be cast to org.springframework.beans.factory.xml.NamespaceHandler at org.apache.aries.blueprint.spring.SpringExtension.start(SpringExtension.java:64)[32:org.apache.aries.blueprint.spring:0.4.0] at org.apache.felix.utils.extender.AbstractExtender$1.run(AbstractExtender.java:265)[32:org.apache.aries.blueprint.spring:0.4.0] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)[:1.8.0_20] at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_20] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)[:1.8.0_20] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)[:1.8.0_20] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_20] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_20] at java.lang.Thread.run(Thread.java:745)[:1.8.0_20] {code} {code} 2017-07-21 10:07:13,802 | ERROR | pool-8-thread-1 | BlueprintContainerImpl | 30 - org.apache.aries.blueprint.core - 1.6.2 | Unable to start blueprint container for bundle cash-settlement-services/1.0.0.SNAPSHOT java.lang.IllegalAccessError: tried to access method org.springframework.beans.factory.xml.XmlBeanDefinitionReader.createReaderContext(Lorg/springframework/core/io/Resource;)Lorg/springframework/beans/factory/xml/XmlReaderContext; from class org.apache.aries.blueprint.spring.BlueprintNamespaceHandler at org.apache.aries.blueprint.spring.BlueprintNamespaceHandler.createSpringParserContext(BlueprintNamespaceHandler.java:260) at org.apache.aries.blueprint.spring.BlueprintNamespaceHandler.getOrCreateParserContext(BlueprintNamespaceHandler.java:159) at org.apache.aries.blueprint.spring.BlueprintNamespaceHandler.parse(BlueprintNamespaceHandler.java:104) at org.apache.aries.blueprint.parser.Parser.parseCustomElement(Parser.java:1369)[30:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.blueprint.parser.Parser.loadComponents(Parser.java:427)[30:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.blueprint.parser.Parser.populate(Parser.java:331)[30:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:349)[30:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:276)[30:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:300)[30:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:269)[30:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:265)[30:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:255)[30:org.apache.aries.blueprint.core:1.6.2] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)[43:org.apache.aries.util:1.1.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)[43:org.apache.aries.util:1.1.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)[43:org.apache.aries.util:1.1.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[43:org.apache.aries.util:1.1.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[43:org.apache.aries.util:1.1.1] at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179)[org.apache.felix.framework-5.4.0.jar:] at org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:731)[org.apache.felix.framework-5.4.0.jar:] at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:486)[org.apache.felix.framework-5.4.0.jar:] at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4541)[org.apache.felix.framework-5.4.0.jar:] at org.apache.felix.framework.Felix.startBundle(Felix.java:2172)[org.apache.felix.framework-5.4.0.jar:] at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)[org.apache.felix.framework-5.4.0.jar:] at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)[org.apache.felix.framework-5.4.0.jar:] at org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1286)[8:org.apache.karaf.features.core:4.0.7] at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:846)[8:org.apache.karaf.features.core:4.0.7] at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1176)[8:org.apache.karaf.features.core:4.0.7] at org.apache.karaf.features.internal.service.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:1074)[8:org.apache.karaf.features.core:4.0.7] at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_20] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_20] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_20] at java.lang.Thread.run(Thread.java:745)[:1.8.0_20] {code} The root cause for these exception is that the bundle attempts to use spring-beans version 3.x instead of 4.x. Spring 3.x was present in the container in my case.due to another dependency (e.g. camel-jms/2.16.3). Spring 3 beans are apparently incompatible with the code of Blueprint Spring extender, and consequently i propose to set the correct package filter in the OSGI package imports of blueprint-spring module to avoid this issue The current workaround is to explicitly ban spring 3.x from the container assembly through karaf assembly configuration, which is far from ideal -- This message was sent by Atlassian JIRA (v6.4.14#64029)