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)