同一个组件中的几种配置(@Meta.OCD接口)

Several configurations (@Meta.OCD interface) in the same component

我有一个组件 MyComponent 需要访问 AConfiguration 和 BConfiguration:

my.MyComponent:

@Component(
    configurationPid = "[my.AConfiguration,my.BConfiguration]"
)
public class MyComponent {
    @Activate
    @Modified
    protected void activate(Map<String, Object> properties) {
        _aConfiguration = ConfigurableUtil
            .createConfigurable(AConfiguration.class, properties);
        _bConfiguration = ConfigurableUtil
            .createConfigurable(BConfiguration.class, properties);
    }

    public void hello() {
        System.out.println("A:" + _sConfiguration.valueA());
        System.out.println("B:" + _sConfiguration.valueB());
    }
}

my.AConfiguration:

@Meta.OCD(
    id = "my.AConfiguration"
)
public interface AConfiguration {
    @Meta.AD(deflt = "6")
    public long valueA();
}

my.BConfiguration:

@Meta.OCD(
    id = "my.BConfiguration"
)
public interface BConfiguration {
    @Meta.AD(deflt = "6")
    public long valueB();
}

问题:使用Liferay的配置UI将valueA和valueB配置为7没有效果,MyComponent.hello()仍然看到默认值6.

我做错了什么?
让我的组件使用来自多个配置接口的配置信息的正确方法是什么?

用例:我的组件进行一些业务处理并将结果保存到远程服务器。一个配置界面包含业务处理设置,一个配置界面包含URL到远程服务器

@Component 注释上的 configurationPid 属性格式错误。应该是:

configurationPid = { "my.AConfiguration", "my.BConfiguration" }

这将创建一个包含两个条目的字符串数组值,my.AConfigurationmy.BConfiguration。相反,您使用了:

configurationPid = "[my.AConfiguration,my.BConfiguration]"

... 创建一个 单个 字面值 [my.AConfiguration,my.BConfiguration] 的字符串,这几乎肯定不是您想要的。