crx-quickstart \ launchpad \ config,
我尝试过的 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);
}
}
答案 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)
此外,您可以将带有配置的文件添加到代码中,并在部署代码时将其应用。