如何读取我的 OSGI 实例的出厂配置

How can I read factory configurations for my OSGI instance

我有一个由 sling 实例化的 OSGi Transformer 组件。在我的 OSGi 组件中,我有以下注释:

@Component(configurationFactory = true, metatype = true, policy =       ConfigurationPolicy.REQUIRE, label = "CDN Link Rewriter", description = "Rewrites links to all static files to use configurable CDN")
@Service(value = TransformerFactory.class)
public class StaticLinkTransformer implements Transformer,
    TransformerFactory

我有一些属性被注释为@属性

@Property(label = "CDN Url prefix", description = "CDN URL prefix", value = "")
private static final String CDN_URL_PREFIX = "cdn_url_prefix";

现在我可以在 felix 控制台中使用“+”符号为此 class 提供多种配置。如果我有 "N" 个配置,sling 正在实例化我的 StaticLinkRewriter class.

的 N 个对象

问题:如何获得实例化对象的正确配置?我的意思是,当 sling 实例化我的对象时,我如何获得实例化对象的配置?

我认为这个组件不是由 Sling 实例化的,而是由 Declarative Services.

实例化的

实现activate方法即可获取配置。例如:

@Activate
void activate(ComponentContext ctx) {
   Dictionary configuration = ctx.getProperties();
   // use your configuration
}

有关详细信息,请参阅 OSGi Compendium 规范的 112 声明性服务规范 一章。