我正在尝试实现一个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。
答案 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