Java Aries托管服务工厂是否也管理属性?

Java Aries托管服务工厂是否也管理属性?,java,apache,osgi,blueprint,aries,Java,Apache,Osgi,Blueprint,Aries,我正在Servicemix 4.3.1中使用ApacheAries 0.2并创建一个cm:managed服务工厂。使用.cfg文件创建服务可以正常工作(除了),但是.cfg文件中的属性不会被注入到服务对象中。它们确实在ConfigAdmin中得到了正确的设置,只是我的bean setter方法从未被调用用于配置文件中的值 我想我应该使用一个cm:managed属性或者类似的嵌套在托管服务工厂中的东西,但是这需要一个单独的pid,所以看起来不太合适 如果我不把属性标记放进去,那么就不会设置任何值。

我正在Servicemix 4.3.1中使用ApacheAries 0.2并创建一个cm:managed服务工厂。使用.cfg文件创建服务可以正常工作(除了),但是.cfg文件中的属性不会被注入到服务对象中。它们确实在ConfigAdmin中得到了正确的设置,只是我的bean setter方法从未被调用用于配置文件中的值

我想我应该使用一个cm:managed属性或者类似的嵌套在托管服务工厂中的东西,但是这需要一个单独的pid,所以看起来不太合适

如果我不把属性标记放进去,那么就不会设置任何值。使用属性标记,则只设置默认值,而不设置实际的配置文件值

我找不到任何使用Aries CM子项目的文档,除了,它不显示托管服务工厂内的托管属性。我真的一直在尝试使用Servicemix,但在每个角落都有丢失的文档、损坏或丢失的特性,或者影响核心功能的bug

和文档都表明它们的托管服务工厂实现也应该作为托管属性运行

<service-properties>
    <entry key="key" value="foo3" />
    <cm:cm-properties persistent-id="" update="true"/>
</service-properties>

foo.xml:

<blueprint>
  <cm:managed-service-factory id="myfoo-msf" factory-pid="my.msf" interface="my.IFoo">
    <cm:managed-component class="my.Foo"> 
      <property name="name" value="default />
    </cm:managed-component>
  </cm:managed-service-factory>
</blueprint>

Foo.java

package my;
public class Foo implements IFoo {
  private String name;
  public void setName(String name) {
    this.name = name;
    System.out.println("name set to: " + name);
  }
  public String getName() {
    return name;
  }
}

my.msf-1.cfg

name=name1

my.msf-2.cfg

name=name2

系统输出

name set to default
name set to default

配置:proplist

service.pid = my.msf.xxxxxxx-xx-xx-xxxxxxxxxxxxxxx
name = name1
service.factoryPid = my.msf

service.pid = my.msf.yyyyyyy-yy-yy-yyyyyyyyyyyyyyy
name = name2
service.factoryPid = my.msf

我认为您必须在托管组件元素中添加一行额外的内容

<blueprint>
  <cm:managed-service-factory id="myfoo-msf" factory-pid="my.msf" interface="my.IFoo">
    <cm:managed-component class="my.Foo"> 
      <cm:managed-properties persistent-id="" update-strategy="container-managed"/>
      <property name="name" value="default />
    </cm:managed-component>
  </cm:managed-service-factory>
</blueprint>


我使用Spring进行了尝试,并使用setter方法将属性从配置文件正确加载到我的服务中。。。我甚至不需要把财产标签放进去。那么,我会使用Spring,但我不能使用Spring来创建服务属性:(…Spring#OSGI-747)。为什么没有一个可以工作的实现。我尝试了DS,但它似乎可以工作。我找到了您在这里提到的示例:
<service-properties>
    <entry key="key" value="foo3" />
    <cm:cm-properties persistent-id="" update="true"/>
</service-properties>