如何在 CQ5 中配置声明性服务



如何在CQ5中通过OSGI控制台配置声明式服务。我能够构建示例服务,捆绑代码,我得到了jar并通过捆绑包安装自OSGI 控制台

第一步是定义服务具有配置参数。 你可能有这样的东西:

package com.sample.osgi;
import java.util.Map;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Modified;
import org.apache.felix.scr.annotations.Property;
@Component(label = "Service Label", description = "Service Description", metatype = true, immediate = true)
public class ConfigurableService {
    @Property(value="default value", label = "Sample Parameter", description = "Example of a component parameter")  
    private static final String SAMPLE_PARAM_NAME = "param.one"; 
    @Activate
    protected void activate(final Map<String, Object> props) {
        this.update(props);
    }
    @Modified
    protected void update(final Map<String, Object> props) {        
        System.out.println(props.get(SAMPLE_PARAM_NAME));
    }
}

获得服务后,应使用 maven 生成 scr 描述符,创建捆绑包并将其部署到本地服务器。 本页对此进行了描述。

部署后,您应该能够在服务器上的 felix 控制台中看到您的服务。 例如:

http://localhost:4502/system/console/configMgr/com.sample.osgi.ConfigurableService

当我们添加具有@Modified注释的更新方法时,您的组件将在调用该方法时收到对配置值的更新。

您可以在felix网站上找到有关SCR注释的更多信息

最新更新