2017-03-09 65 views
0

我试图实现一个OSGI服务,它可以用作ConfigurationFactory,服务实现只有两个属性,如下所示。@Reference(“(service.label = TESTCALL)”)Felix SCR注释错误

@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]符号:方法值()[ERROR]的位置: @interface org.apache.felix.scr.annotations.Reference。

回答

0

对于AEM 6.x版本使用@Reference(target = "(service.label=TESTCALL)"),应该进行编译。我已经上传了我以前用在我的gourivar github和POC示例中的示例POC,您可以在我的aemvardhan.wordpress.com

+0

谢谢,它工作。和示例代码有帮助 – krish

0

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

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

    } 

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

+0

上找到同样的POC示例。我的服务已经包含了注释,并且在我将其用作**时使用它** @ Reference MyService myservice ; **,当我使用** @ Reference(“(service.label = TESTCALL)”)时,编译失败MyService myservice; **因为我想检索分离的配置数据(即所有配置数据是多个服务) – krish

+0

让我问另一种方式相同的问题,**如何检索工厂服务的多个配置数据**。任何代码片段都有帮助。 – krish

+0

你的方法很好,没有看代码片段(也许如果你可以要求它?)我看不到任何编译错误的原因。你可以尝试https://cqdump.wordpress.com/2014/08/05/managing-multiple-instances-of-services-osgi-service-factories/中的代码snipper并查看它是否正常工作,因为我只是在本地尝试它编译好(没有测试绑定,但我想这不是问题)。 –