@Reference(“(service.label = TESTCALL)”)Felix SCR注释错误

时间:2017-03-09 05:15:05

标签: osgi cq5 aem apache-felix

我正在尝试实现一个OSGI服务,它可以作为ConfigurationFactory服务实现只有两个属性,如下所示。

@Property(value="this is service variable property value")
static final String MY_SERVICE_VARIABLE = "service.variable";

@Property(description="Label for this MyService")
private static final String MY_SERVICE_LABEL = "service.label";

我正在从OSGI servlet中检索这个服务配置数据,我试图通过下面的代码调用这个服务,这些代码编译得很好并从多个服务配置中随机检索数据。

@Reference
MyService myservice;

但是,当我想使用service.label获取每个配置数据并使用我的OSGI servlet中的下面的代码片段调用该服务时,正在编译面临下面的错误。

@Reference("(service.label=TESTCALL)")
MyService myservice;
  

找不到符号[ERROR]符号:方法值()[错误]位置:   @interface org.apache.felix.scr.annotations.Reference。

2 个答案:

答案 0 :(得分:0)

您的服务很可能缺少Service Factory注释。类似的东西:

    @Service
    @Component(
        metatype=true,label="my service", 
        description="sample my service implementation",
        configurationFactory=true)
        public class MyServiceImpl implements MyService { 

    } 

请注意 configurationFactory=true 属性。这使服务具有多种配置。

答案 1 :(得分:0)

对AEM 6.x版本使用@Reference(target = "(service.label=TESTCALL)"),它应该编译。我已经上传了我之前在gourivar github使用过的样本POC以及您在aemvardhan.wordpress.com

找到的同一个POC示例