无法使用Blueprint在Karaf OSGi中实例化ConfigurationAdmin

时间:2016-09-16 17:15:24

标签: java osgi apache-karaf blueprint-osgi

我正在尝试使用org.osgi.service.cm。ConfigurationAdmin来获取我班级的.cfg文件。使用此方法,我可以获取文件中的所有变量,而无需将其列在蓝图中的cm:property-placeholder标记中。

这个类的用法如下:

  System.out.println(configurationAdmin);
  try {
        System.out.println(
            configurationAdmin.getConfiguration("com.company.file").getProperties()
        );
  } 
  catch (IOException ex) {
       Logger.getLogger(MyAppManagerImpl.class.getName()).log(Level.SEVERE, null, ex);
  }

我在我的bean中传递了这个服务,如下所述:   

然后我收到了这些错误:Caused by: java.lang.Exception: Unable to convert value configurationAdmin to type interface org.osgi.service.cm.ConfigurationAdmin. Type interface org.osgi.service.cm.ConfigurationAdmin is an interface or an abstract class

下面列出了完整的日志跟踪:

    2016-09-16 18:51:27,977 | ERROR | Thread-14489     | BlueprintContainerImpl           | 287 - org.apache.aries.blueprint.core - 1.5.0 | Unable to start blueprint container for bundle       com.package.app.main/0.2.0.SNAPSHOT
    org.osgi.service.blueprint.container.ComponentDefinitionException: Error setting property: PropertyDescriptor <name: configurationAdmin, getter: class com.package.MyAppManagerImpll.getConfigurationAdmin(), setter: [class com.package.MyAppManagerImpl.setConfigurationAdmin(interface org.osgi.service.cm.ConfigurationAdmin)]
    at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:963)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:929)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRecipe.java:910)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:844)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:811)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)[287:org.apache.aries.blueprint.core:1.5.0]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_40]
    at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:255)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:186)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:712)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:399)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:273)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:294)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:263)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:253)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500)[309:org.apache.aries.util:1.1.1]

    at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433)[309:org.apache.aries.util:1.1.1]

    at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725)[309:org.apache.aries.util:1.1.1]
    at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463)[309:org.apache.aries.util:1.1.1]
    at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422)[309: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.karaf.bundle.core.internal.BundleWatcherImpl.run(BundleWatcherImpl.java:131)[365:org.apache.karaf.bundle.core:4.0.4]
    at java.lang.Thread.run(Thread.java:745)[:1.8.0_40]
    Caused by: java.lang.Exception: Unable to convert value configurationAdmin to type interface org.osgi.service.cm.ConfigurationAdmin. Type interface org.osgi.service.cm.ConfigurationAdmin is an interface or an abstract class
    at org.apache.aries.blueprint.container.AggregateConverter.createObject(AggregateConverter.java:310)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.AggregateConverter.convertFromString(AggregateConverter.java:304)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.AggregateConverter.convert(AggregateConverter.java:174)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BlueprintRepository.convert(BlueprintRepository.java:411)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.convert(ReflectionUtils.java:396)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.utils.ReflectionUtils$MethodPropertyDescriptor.internalSet(ReflectionUtils.java:630)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.set(ReflectionUtils.java:380)[287:org.apache.aries.blueprint.core:1.5.0]
    at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:961)[287:org.apache.aries.blueprint.core:1.5.0]
    ... 28 more

谢谢:)

0 个答案:

没有答案