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

时间:2015-09-14 13:51:40

标签: osgi apache-felix osgi-bundle

我有一个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

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

现在,我可以使用" +"为此课程提供多种配置。登录felix控制台。如果我有" N"配置数量,吊索实例化我的StaticLinkRewriter类的N个对象。

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

1 个答案:

答案 0 :(得分:0)

我认为此组件不是由 Sling 实例化的,而是由声明性服务实例化。

如果实施activate方法,则可以获取配置。 E.g:

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

有关更多信息,请参阅OSGi Compendium规范的 112声明服务规范章节。