如何在CQ5中通过OSGI控制台配置声明性服务。 我能够构建样本服务,捆绑代码我得到jar并通过捆绑安装 OSGI控制台
答案 0 :(得分:4)
第一步是定义您的服务具有配置参数。你可能有这样的事情:
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描述符,创建捆绑包并将其部署到本地服务器。这在this page上进行了描述。
部署后,您应该能够在服务器上的felix控制台中看到您的服务。例如:
http://localhost:4502/system/console/configMgr/com.sample.osgi.ConfigurableService
当我们使用@Modified批注添加更新方法时,您的组件将通过调用该方法来接收已配置值的更新。
您可以找到有关SCR注释on the felix site
的更多信息