Hello,

can somebody explain to me, why the following blueprint.xml leads to a
CircularDependencyException (I'd like to have a collector service for basic
services, which is updated when a basic service appears / disappears, and
provides this service collection to service consumers - the exception
appears as soon as I add the collector service AND use the
reference-listener in the reference-list AND declare the bean scope as
prototype):

<?xml version="1.0" encoding="UTF-8"?>
<blueprint
    xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";>

    <service
        interface="blueprinttest.service.ServiceCollectorIF"
        ref="servicecollector" />

    <bean
        id="servicecollector"
        class="blueprinttest.servicecollector.ServiceCollector"
        scope="prototype">
        <property
            name="serviceList"
            ref="services" />
    </bean>

    <reference-list
        id="services"
        interface="blueprinttest.service.ServiceIF">
        <reference-listener
            ref="servicecollector"
            bind-method="bind"
            unbind-method="unbind" />
    </reference-list>

</blueprint>


The Exception:

2015-02-17 05:54:58,184 | ERROR | Event Dispatcher |
BlueprintContainerImpl           | 1 - org.apache.aries.blueprint.core -
1.4.2 | Unable to start blueprint container for bundle
blueprinttest.servicecollector
org.osgi.service.blueprint.container.ComponentDefinitionException:
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable
to convert value BeanRecipe[name='#recipe-5'] to type class java.lang.Object
    at
org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:309)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:251)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.ServiceRecipe.internalCreate(ServiceRecipe.java:148)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[1:org.apache.aries.blueprint.core:1.4.2]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_51]
    at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:682)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:377)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:253)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)[14:org.apache.aries.util:1.1.0]
    at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)[14:org.apache.aries.util:1.1.0]
    at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)[14:org.apache.aries.util:1.1.0]
    at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[14:org.apache.aries.util:1.1.0]
    at
org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[14:org.apache.aries.util:1.1.0]
    at
org.eclipse.osgi.framework.internal.core.Framework$10.call(Framework.java:1605)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHookPrivileged(ServiceRegistry.java:1239)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHooksPrivileged(ServiceRegistry.java:1222)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.Framework.notifyEventHooksPrivileged(Framework.java:1602)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.Framework.publishBundleEventPrivileged(Framework.java:1557)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1504)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1499)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:391)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1176)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
    at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
Caused by:
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable
to convert value BeanRecipe[name='#recipe-5'] to type class java.lang.Object
    at
org.apache.aries.blueprint.di.CollectionRecipe.internalCreate(CollectionRecipe.java:92)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe.createListeners(AbstractServiceReferenceRecipe.java:278)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.ReferenceListRecipe.internalCreate(ReferenceListRecipe.java:77)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[1:org.apache.aries.blueprint.core:1.4.2]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)[:1.7.0_51]
    at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:933)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:907)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:888)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:820)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:284)[1:org.apache.aries.blueprint.core:1.4.2]
    ... 36 more
Caused by: org.apache.aries.blueprint.di.CircularDependencyException:
[BeanRecipe[name='servicecollector'], RefRecipe[name='#recipe-3',
idRef='services'], ReferenceListRecipe[name='services'],
CollectionRecipe[name='#recipe-4'], BeanRecipe[name='#recipe-5'],
RefRecipe[name='#recipe-6', idRef='servicecollector'],
BeanRecipe[name='servicecollector']]
    at
org.apache.aries.blueprint.container.BlueprintRepository.push(BlueprintRepository.java:343)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:71)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:933)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:907)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:888)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:820)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)[1:org.apache.aries.blueprint.core:1.4.2]
    at
org.apache.aries.blueprint.di.CollectionRecipe.internalCreate(CollectionRecipe.java:90)[1:org.apache.aries.blueprint.core:1.4.2]
    ... 53 more



Thanks in advance!

Best Regards,
Jochen

Reply via email to