如何将对osgi config的更新也同步到CRXDE?

时间:2018-08-10 23:52:07

标签: osgi aem

我可以看到configMgr enter image description here

中反映的更新

crx-quickstart \ launchpad \ config,enter image description here

以及日志enter image description here

但是crxde仍然具有旧值enter image description here我是否缺少某些东西?

我尝试过的 ConfigurationServiceImpl.java:

package org.bundle.services.impl;
@Service({ConfigurationServiceImpl.class})
@Component(immediate=true, metatype=true)
public class ConfigurationServiceImpl
{
@Reference
private ConfigurationAdmin configAdmin;
private static final String 
CONFIG_PID="org.bundle.services.impl.ConfigurationServiceImpl";
private static final Log _logger = LogFactory.getLog(ConfigurationServiceImpl.class);
public static final String LOG_LEVEL = "logLevel";

@Activate
protected void activate(Map<String, Object> properties) throws IOException
{
    _logger.info("[*** AEM ConfigurationService]: activating configuration service");
    initializeConfig(properties);
    readProperties(properties);
}

private void initializeConfig(Map<String, Object> properties) throws IOException {

    Configuration configNode = configAdmin.getConfiguration(CONFIG_PID);

    if (configNode != null && configNode.getProperties() != null) {

        @SuppressWarnings("unchecked")
        Dictionary<String, Object> config = configNode.getProperties();     

        if (config.get(LOG_LEVEL) != null) {
            config.put(LOG_LEVEL, "debug");
        }

        configNode.update(config);
    }
}

protected void readProperties(Map<String, Object> properties) throws IOException
{
    _logger.info(properties.toString());
    Configuration pdConfig = configAdmin.getConfiguration(CONFIG_PID);
    @SuppressWarnings("unchecked")
    Dictionary<String, Object> configProps = config.getProperties();
    String  logLevel = (String) configProps.get("logLevel");
    _logger.info("LOG LEVEL: " + logLevel);
}
}

2 个答案:

答案 0 :(得分:0)

通过配置控制台进行的更改将写回到存储库中,通常保存在“ / apps / system / config”下。如果配置已经绑定到其他配置文件,则可以更改此设置。阅读https://helpx.adobe.com/experience-manager/6-3/sites/deploying/using/configuring-osgi.html#ConfigurationPersistence

您所做的更改肯定会保存,这与查找配置文件的创建位置有关。在crxde搜索框中使用PID进行搜索通常会有所帮助。

另一方面,样本中的“ initializeConfig”用法看起来很奇怪,当服务将始终通过Activate方法获取最新配置时,无需使用Config Admin来获取配置属性。

答案 1 :(得分:0)

此外,您可以将带有配置的文件添加到代码中,并在部署代码时将其应用。